commit 823c4d1433659f304e71895097a08ac24e980254 Author: SouthFox-D Date: Wed Mar 16 22:24:24 2022 +0800 new init diff --git a/.github/workflows/backup-img.yml b/.github/workflows/backup-img.yml new file mode 100644 index 0000000..d3d4fd0 --- /dev/null +++ b/.github/workflows/backup-img.yml @@ -0,0 +1,45 @@ +name: Backup Blog Img + +on: + push: + branches: [ hexo ] + +jobs: + build: + + runs-on: ubuntu-latest + strategy: + fail-fast: false + + steps: + - uses: actions/checkout@v2 + - name: Set up Python 3.9 + uses: actions/setup-python@v2 + with: + python-version: 3.9 + + - name: Install dependencies + run: | + sudo apt-get install wget + python -m pip install --upgrade pip + python -m pip install fonttools brotli requests + git config --global user.name "SouthFox-D" + git config --global user.email "southfoxdreamer@gmail.com" + + - name: Check Img + run: | + wget https://raw.githubusercontent.com/SouthFox-D/blog_img/main/imgList.json + python3 utils.py -b + + - name: Backup + env: + DEPLOY_KEY: ${{ secrets.HEXO_DEPLOY }} + run: | + rm -rf .git + git clone https://github.com/SouthFox-D/blog_img.git blog_img + cp -frp newimg/* blog_img/ + cd blog_img + git add . + git diff --exit-code || git commit -am "Auto backup" + git push --force https://$DEPLOY_KEY@github.com/SouthFox-D/blog_img.git + diff --git a/.github/workflows/deploy.yml b/.github/workflows/deploy.yml new file mode 100644 index 0000000..9d5f49e --- /dev/null +++ b/.github/workflows/deploy.yml @@ -0,0 +1,52 @@ +name: Hexo Deploy + +on: + push: + branches: [ hexo ] + +jobs: + build: + + runs-on: ubuntu-latest + strategy: + fail-fast: false + + steps: + - uses: actions/checkout@v2 + - name: Set up Python 3.9 + uses: actions/setup-python@v2 + with: + python-version: 3.9 + + - name: Set up Node.js + uses: actions/setup-node@v1 + with: + node-version: 17 + + - name: Install dependencies + run: | + python -m pip install --upgrade pip + python -m pip install fonttools brotli requests + npm install -g hexo-cli + npm install + git config --global user.name "SouthFox-D" + git config --global user.email "southfoxdreamer@gmail.com" + + - name: Deploy + env: + DEPLOY_KEY: ${{ secrets.HEXO_DEPLOY }} + DISCUSSIONS_TOKEN: ${{ secrets.DISCUSSIONS_TOKEN }} + run: | + hexo clean + hexo generate + python3 utils.py -d + pyftsubset Zpix.ttf --text-file=strdb.txt + fonttools ttLib.woff2 compress -o Zpix.woff2 Zpix.subset.ttf + mv Zpix.woff2 ./public/css/fonts + mv Zpix.subset.ttf ./public/css/fonts/Zpix.ttf + cd ./public + git init + git add --all . + git commit -m "GitHub action Auto Builder" + git push --quiet --force https://$DEPLOY_KEY@github.com/SouthFox-D/SouthFox-D.github.io.git master + diff --git a/.gitignore b/.gitignore new file mode 100644 index 0000000..14d0eae --- /dev/null +++ b/.gitignore @@ -0,0 +1,8 @@ +.DS_Store +Thumbs.db +db.json +strdb.txt +*.log +node_modules/ +public/ +.deploy*/ \ No newline at end of file diff --git a/README.md b/README.md new file mode 100644 index 0000000..02b37e1 --- /dev/null +++ b/README.md @@ -0,0 +1 @@ +# TODO diff --git a/Zpix.ttf b/Zpix.ttf new file mode 100644 index 0000000..06ac2f9 Binary files /dev/null and b/Zpix.ttf differ diff --git a/_config.yml b/_config.yml new file mode 100644 index 0000000..1552d2c --- /dev/null +++ b/_config.yml @@ -0,0 +1,115 @@ +# Hexo Configuration +## Docs: https://hexo.io/docs/configuration.html +## Source: https://github.com/hexojs/hexo/ + +# Site +title: Foxhole +subtitle: '狐狸反走矣' +description: '' +keywords: +author: SouthFox +language: zh-CN +timezone: '' + +# URL +## If your site is put in a subdirectory, set url as 'http://yoursite.com/child' and root as '/child/' +url: https://blog.southfox.me/ +root: / +permalink: :title/ +permalink_defaults: +pretty_urls: + trailing_index: true # Set to false to remove trailing 'index.html' from permalinks + trailing_html: true # Set to false to remove trailing '.html' from permalinks + +# Directory +source_dir: source +public_dir: public +tag_dir: tags +archive_dir: archives +category_dir: categories +code_dir: downloads/code +i18n_dir: :lang +skip_render: + +# Writing +new_post_name: :title.md # File name of new posts +default_layout: post +titlecase: false # Transform title into titlecase +external_link: + enable: true # Open external links in new tab + field: site # Apply to the whole site + exclude: '' +filename_case: 0 +render_drafts: false +post_asset_folder: false +relative_link: true +future: true +highlight: + enable: true + line_number: true + auto_detect: false + tab_replace: '' + wrap: true + hljs: false + +# Home page setting +# path: Root path for your blogs index page. (default = '') +# per_page: Posts displayed per page. (0 = disable pagination) +# order_by: Posts order. (Order by date descending by default) +index_generator: + path: '' + per_page: 10 + order_by: -date + +# Category & Tag +default_category: uncategorized +category_map: +tag_map: + +# Metadata elements +## https://developer.mozilla.org/en-US/docs/Web/HTML/Element/meta +meta_generator: true + +# Date / Time format +## Hexo uses Moment.js to parse and display date +## You can customize the date format as defined in +## http://momentjs.com/docs/#/displaying/format/ +date_format: YYYY-MM-DD +time_format: HH:mm:ss +## Use post's date for updated date unless set in front-matter +updated_option: 'date' + +# Pagination +## Set per_page to 0 to disable pagination +per_page: 10 +pagination_dir: page + +# Include / Exclude file(s) +## include:/exclude: options only apply to the 'source/' folder +include: +exclude: +ignore: + +# Extensions +## Plugins: https://hexo.io/plugins/ +## Themes: https://hexo.io/themes/ +theme: freemind + +plugins: + hexo-generator-feed +#Feed +feed: + type: rss2 + path: rss2.xml + limit: 20 + +search: + path: search.xml + field: post + +# Deployment +## Docs: https://hexo.io/docs/deployment.html +deploy: + type: git + repo: https://github.com/SouthFox09/SouthFox09.github.io.git + branch: master diff --git a/giscus.json b/giscus.json new file mode 100644 index 0000000..1ab17b4 --- /dev/null +++ b/giscus.json @@ -0,0 +1,3 @@ +{ + "defaultCommentOrder": "newest" + } \ No newline at end of file diff --git a/package-lock.json b/package-lock.json new file mode 100644 index 0000000..3d0c2bb --- /dev/null +++ b/package-lock.json @@ -0,0 +1,3752 @@ +{ + "name": "hexo-site", + "version": "0.0.0", + "lockfileVersion": 2, + "requires": true, + "packages": { + "": { + "name": "hexo-site", + "version": "0.0.0", + "dependencies": { + "hexo": "^5.4.1", + "hexo-cli": "^4.3.0", + "hexo-deployer-git": "^3.0.0", + "hexo-generator-archive": "^1.0.0", + "hexo-generator-category": "^1.0.0", + "hexo-generator-feed": "^3.0.0", + "hexo-generator-index": "^1.0.0", + "hexo-generator-search": "^2.4.3", + "hexo-generator-tag": "^1.0.0", + "hexo-renderer-ejs": "^1.0.0", + "hexo-renderer-marked": "^2.0.0", + "hexo-renderer-stylus": "^1.1.0", + "hexo-server": "^1.0.0", + "markdown-it": "^12.3.2" + } + }, + "node_modules/a-sync-waterfall": { + "version": "1.0.1", + "resolved": "https://registry.npmjs.org/a-sync-waterfall/-/a-sync-waterfall-1.0.1.tgz", + "integrity": "sha512-RYTOHHdWipFUliRFMCS4X2Yn2X8M87V/OpSqWzKKOGhzqyUxzyVmhHDH9sAvG+ZuQf/TAOFsLCpMw09I1ufUnA==" + }, + "node_modules/abbrev": { + "version": "1.1.1", + "resolved": "https://registry.npmjs.org/abbrev/-/abbrev-1.1.1.tgz", + "integrity": "sha512-nne9/IiQ/hzIhY6pdDnbBtz7DjPTKrY00P/zvPSm5pOFkl6xuGrGnXn/VtTNNfNtAfZ9/1RtehkszU9qcTii0Q==" + }, + "node_modules/accepts": { + "version": "1.3.7", + "resolved": "https://registry.npmjs.org/accepts/-/accepts-1.3.7.tgz", + "integrity": "sha512-Il80Qs2WjYlJIBNzNkK6KYqlVMTbZLXgHx2oT0pU/fjRHyEp+PEfEPY0R3WCwAGVOtauxh1hOxNgIf5bv7dQpA==", + "dependencies": { + "mime-types": "~2.1.24", + "negotiator": "0.6.2" + }, + "engines": { + "node": ">= 0.6" + } + }, + "node_modules/amdefine": { + "version": "1.0.1", + "resolved": "https://registry.npmjs.org/amdefine/-/amdefine-1.0.1.tgz", + "integrity": "sha1-SlKCrBZHKek2Gbz9OtFR+BfOkfU=", + "engines": { + "node": ">=0.4.2" + } + }, + "node_modules/ansi-regex": { + "version": "5.0.1", + "resolved": "https://registry.npmjs.org/ansi-regex/-/ansi-regex-5.0.1.tgz", + "integrity": "sha512-quJQXlTSUGL2LH9SUXo8VwsY4soanhgo6LNSm84E1LBcE8s3O0wpdiRzyR9z/ZZJMlMWv37qOOb9pdJlMUEKFQ==", + "engines": { + "node": ">=8" + } + }, + "node_modules/ansi-styles": { + "version": "4.3.0", + "resolved": "https://registry.npmjs.org/ansi-styles/-/ansi-styles-4.3.0.tgz", + "integrity": "sha512-zbB9rCJAT1rbjiVDb2hqKFHNYLxgtk8NURxZ3IZwD3F6NtxbXZQCnnSi1Lkx+IDohdPlFp222wVALIheZJQSEg==", + "dependencies": { + "color-convert": "^2.0.1" + }, + "engines": { + "node": ">=8" + }, + "funding": { + "url": "https://github.com/chalk/ansi-styles?sponsor=1" + } + }, + "node_modules/anymatch": { + "version": "3.1.1", + "resolved": "https://registry.npmjs.org/anymatch/-/anymatch-3.1.1.tgz", + "integrity": "sha512-mM8522psRCqzV+6LhomX5wgp25YVibjh8Wj23I5RPkPppSVSjyKD2A2mBJmWGa+KN7f2D6LNh9jkBCeyLktzjg==", + "dependencies": { + "normalize-path": "^3.0.0", + "picomatch": "^2.0.4" + }, + "engines": { + "node": ">= 8" + } + }, + "node_modules/archy": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/archy/-/archy-1.0.0.tgz", + "integrity": "sha1-+cjBN1fMHde8N5rHeyxipcKGjEA=" + }, + "node_modules/argparse": { + "version": "1.0.10", + "resolved": "https://registry.npmjs.org/argparse/-/argparse-1.0.10.tgz", + "integrity": "sha512-o5Roy6tNG4SL/FOkCAN6RzjiakZS25RLYFrcMttJqbdd8BWrnA+fGz57iN5Pb06pvBGvl5gQ0B48dJlslXvoTg==", + "dependencies": { + "sprintf-js": "~1.0.2" + } + }, + "node_modules/asap": { + "version": "2.0.6", + "resolved": "https://registry.npmjs.org/asap/-/asap-2.0.6.tgz", + "integrity": "sha1-5QNHYR1+aQlDIIu9r+vLwvuGbUY=" + }, + "node_modules/atob": { + "version": "2.1.2", + "resolved": "https://registry.npmjs.org/atob/-/atob-2.1.2.tgz", + "integrity": "sha512-Wm6ukoaOGJi/73p/cl2GvLjTI5JM1k/O14isD73YML8StrH/7/lRFgmg8nICZgD3bZZvjwCGxtMOD3wWNAu8cg==", + "bin": { + "atob": "bin/atob.js" + }, + "engines": { + "node": ">= 4.5.0" + } + }, + "node_modules/balanced-match": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/balanced-match/-/balanced-match-1.0.0.tgz", + "integrity": "sha1-ibTRmasr7kneFk6gK4nORi1xt2c=" + }, + "node_modules/basic-auth": { + "version": "2.0.1", + "resolved": "https://registry.npmjs.org/basic-auth/-/basic-auth-2.0.1.tgz", + "integrity": "sha512-NF+epuEdnUYVlGuhaxbbq+dvJttwLnGY+YixlXlME5KpQ5W3CnXA5cVTneY3SPbPDRkcjMbifrwmFYcClgOZeg==", + "dependencies": { + "safe-buffer": "5.1.2" + }, + "engines": { + "node": ">= 0.8" + } + }, + "node_modules/binary-extensions": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/binary-extensions/-/binary-extensions-2.0.0.tgz", + "integrity": "sha512-Phlt0plgpIIBOGTT/ehfFnbNlfsDEiqmzE2KRXoX1bLIlir4X/MR+zSyBEkL05ffWgnRSf/DXv+WrUAVr93/ow==", + "engines": { + "node": ">=8" + } + }, + "node_modules/bluebird": { + "version": "3.7.2", + "resolved": "https://registry.npmjs.org/bluebird/-/bluebird-3.7.2.tgz", + "integrity": "sha512-XpNj6GDQzdfW+r2Wnn7xiSAd7TM3jzkxGXBGTtWKuSXv1xUV+azxAm8jdWZN06QTQk+2N2XB9jRDkvbmQmcRtg==" + }, + "node_modules/brace-expansion": { + "version": "1.1.11", + "resolved": "https://registry.npmjs.org/brace-expansion/-/brace-expansion-1.1.11.tgz", + "integrity": "sha512-iCuPHDFgrHX7H2vEI/5xpz07zSHB00TpugqhmYtVmMO6518mCuRMoOYFldEBl0g187ufozdaHgWKcYFb61qGiA==", + "dependencies": { + "balanced-match": "^1.0.0", + "concat-map": "0.0.1" + } + }, + "node_modules/braces": { + "version": "3.0.2", + "resolved": "https://registry.npmjs.org/braces/-/braces-3.0.2.tgz", + "integrity": "sha512-b8um+L1RzM3WDSzvhm6gIz1yfTbBt6YTlcEKAvsmqCZZFw46z626lVj9j1yEPW33H5H+lBQpZMP1k8l+78Ha0A==", + "dependencies": { + "fill-range": "^7.0.1" + }, + "engines": { + "node": ">=8" + } + }, + "node_modules/bytes": { + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/bytes/-/bytes-3.0.0.tgz", + "integrity": "sha1-0ygVQE1olpn4Wk6k+odV3ROpYEg=", + "engines": { + "node": ">= 0.8" + } + }, + "node_modules/camel-case": { + "version": "4.1.1", + "resolved": "https://registry.npmjs.org/camel-case/-/camel-case-4.1.1.tgz", + "integrity": "sha512-7fa2WcG4fYFkclIvEmxBbTvmibwF2/agfEBc6q3lOpVu0A13ltLsA+Hr/8Hp6kp5f+G7hKi6t8lys6XxP+1K6Q==", + "dependencies": { + "pascal-case": "^3.1.1", + "tslib": "^1.10.0" + } + }, + "node_modules/chalk": { + "version": "4.1.0", + "resolved": "https://registry.npmjs.org/chalk/-/chalk-4.1.0.tgz", + "integrity": "sha512-qwx12AxXe2Q5xQ43Ac//I6v5aXTipYrSESdOgzrN+9XjgEpyjpKuvSGaN4qE93f7TQTlerQQ8S+EQ0EyDoVL1A==", + "dependencies": { + "ansi-styles": "^4.1.0", + "supports-color": "^7.1.0" + }, + "engines": { + "node": ">=10" + }, + "funding": { + "url": "https://github.com/chalk/chalk?sponsor=1" + } + }, + "node_modules/chokidar": { + "version": "3.4.0", + "resolved": "https://registry.npmjs.org/chokidar/-/chokidar-3.4.0.tgz", + "integrity": "sha512-aXAaho2VJtisB/1fg1+3nlLJqGOuewTzQpd/Tz0yTg2R0e4IGtshYvtjowyEumcBv2z+y4+kc75Mz7j5xJskcQ==", + "dependencies": { + "anymatch": "~3.1.1", + "braces": "~3.0.2", + "glob-parent": "~5.1.0", + "is-binary-path": "~2.1.0", + "is-glob": "~4.0.1", + "normalize-path": "~3.0.0", + "readdirp": "~3.4.0" + }, + "engines": { + "node": ">= 8.10.0" + }, + "optionalDependencies": { + "fsevents": "~2.1.2" + } + }, + "node_modules/color-convert": { + "version": "2.0.1", + "resolved": "https://registry.npmjs.org/color-convert/-/color-convert-2.0.1.tgz", + "integrity": "sha512-RRECPsj7iu/xb5oKYcsFHSppFNnsj/52OVTRKb4zP5onXwVF3zVmmToNcOfGC+CRDpfK/U584fMg38ZHCaElKQ==", + "dependencies": { + "color-name": "~1.1.4" + }, + "engines": { + "node": ">=7.0.0" + } + }, + "node_modules/color-name": { + "version": "1.1.4", + "resolved": "https://registry.npmjs.org/color-name/-/color-name-1.1.4.tgz", + "integrity": "sha512-dOy+3AuW3a2wNbZHIuMZpTcgjGuLU/uBL/ubcZF9OXbDo8ff4O8yVp5Bf0efS8uEoYo5q4Fx7dY9OgQGXgAsQA==" + }, + "node_modules/command-exists": { + "version": "1.2.9", + "resolved": "https://registry.npmjs.org/command-exists/-/command-exists-1.2.9.tgz", + "integrity": "sha512-LTQ/SGc+s0Xc0Fu5WaKnR0YiygZkm9eKFvyS+fRsU7/ZWFF8ykFM6Pc9aCVf1+xasOOZpO3BAVgVrKvsqKHV7w==" + }, + "node_modules/commander": { + "version": "3.0.2", + "resolved": "https://registry.npmjs.org/commander/-/commander-3.0.2.tgz", + "integrity": "sha512-Gar0ASD4BDyKC4hl4DwHqDrmvjoxWKZigVnAbn5H1owvm4CxCPdb0HQDehwNYMJpla5+M2tPmPARzhtYuwpHow==" + }, + "node_modules/compressible": { + "version": "2.0.18", + "resolved": "https://registry.npmjs.org/compressible/-/compressible-2.0.18.tgz", + "integrity": "sha512-AF3r7P5dWxL8MxyITRMlORQNaOA2IkAFaTr4k7BUumjPtRpGDTZpl0Pb1XCO6JeDCBdp126Cgs9sMxqSjgYyRg==", + "dependencies": { + "mime-db": ">= 1.43.0 < 2" + }, + "engines": { + "node": ">= 0.6" + } + }, + "node_modules/compression": { + "version": "1.7.4", + "resolved": "https://registry.npmjs.org/compression/-/compression-1.7.4.tgz", + "integrity": "sha512-jaSIDzP9pZVS4ZfQ+TzvtiWhdpFhE2RDHz8QJkpX9SIpLq88VueF5jJw6t+6CUQcAoA6t+x89MLrWAqpfDE8iQ==", + "dependencies": { + "accepts": "~1.3.5", + "bytes": "3.0.0", + "compressible": "~2.0.16", + "debug": "2.6.9", + "on-headers": "~1.0.2", + "safe-buffer": "5.1.2", + "vary": "~1.1.2" + }, + "engines": { + "node": ">= 0.8.0" + } + }, + "node_modules/compression/node_modules/debug": { + "version": "2.6.9", + "resolved": "https://registry.npmjs.org/debug/-/debug-2.6.9.tgz", + "integrity": "sha512-bC7ElrdJaJnPbAP+1EotYvqZsb3ecl5wi6Bfi6BJTUcNowp6cvspg0jXznRTKDjm/E7AdgFBVeAPVMNcKGsHMA==", + "dependencies": { + "ms": "2.0.0" + } + }, + "node_modules/compression/node_modules/ms": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/ms/-/ms-2.0.0.tgz", + "integrity": "sha1-VgiurfwAvmwpAd9fmGF4jeDVl8g=" + }, + "node_modules/concat-map": { + "version": "0.0.1", + "resolved": "https://registry.npmjs.org/concat-map/-/concat-map-0.0.1.tgz", + "integrity": "sha1-2Klr13/Wjfd5OnMDajug1UBdR3s=" + }, + "node_modules/connect": { + "version": "3.7.0", + "resolved": "https://registry.npmjs.org/connect/-/connect-3.7.0.tgz", + "integrity": "sha512-ZqRXc+tZukToSNmh5C2iWMSoV3X1YUcPbqEM4DkEG5tNQXrQUZCNVGGv3IuicnkMtPfGf3Xtp8WCXs295iQ1pQ==", + "dependencies": { + "debug": "2.6.9", + "finalhandler": "1.1.2", + "parseurl": "~1.3.3", + "utils-merge": "1.0.1" + }, + "engines": { + "node": ">= 0.10.0" + } + }, + "node_modules/connect/node_modules/debug": { + "version": "2.6.9", + "resolved": "https://registry.npmjs.org/debug/-/debug-2.6.9.tgz", + "integrity": "sha512-bC7ElrdJaJnPbAP+1EotYvqZsb3ecl5wi6Bfi6BJTUcNowp6cvspg0jXznRTKDjm/E7AdgFBVeAPVMNcKGsHMA==", + "dependencies": { + "ms": "2.0.0" + } + }, + "node_modules/connect/node_modules/ms": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/ms/-/ms-2.0.0.tgz", + "integrity": "sha1-VgiurfwAvmwpAd9fmGF4jeDVl8g=" + }, + "node_modules/cross-spawn": { + "version": "7.0.2", + "resolved": "https://registry.npmjs.org/cross-spawn/-/cross-spawn-7.0.2.tgz", + "integrity": "sha512-PD6G8QG3S4FK/XCGFbEQrDqO2AnMMsy0meR7lerlIOHAAbkuavGU/pOqprrlvfTNjvowivTeBsjebAL0NSoMxw==", + "dependencies": { + "path-key": "^3.1.0", + "shebang-command": "^2.0.0", + "which": "^2.0.1" + }, + "engines": { + "node": ">= 8" + } + }, + "node_modules/css": { + "version": "2.2.4", + "resolved": "https://registry.npmjs.org/css/-/css-2.2.4.tgz", + "integrity": "sha512-oUnjmWpy0niI3x/mPL8dVEI1l7MnG3+HHyRPHf+YFSbK+svOhXpmSOcDURUh2aOCgl2grzrOPt1nHLuCVFULLw==", + "dependencies": { + "inherits": "^2.0.3", + "source-map": "^0.6.1", + "source-map-resolve": "^0.5.2", + "urix": "^0.1.0" + } + }, + "node_modules/css-parse": { + "version": "1.7.0", + "resolved": "https://registry.npmjs.org/css-parse/-/css-parse-1.7.0.tgz", + "integrity": "sha1-Mh9s9zeCpv91ERE5D8BeLGV9jJs=" + }, + "node_modules/css/node_modules/source-map": { + "version": "0.6.1", + "resolved": "https://registry.npmjs.org/source-map/-/source-map-0.6.1.tgz", + "integrity": "sha512-UjgapumWlbMhkBgzT7Ykc5YXUT46F0iKu8SGXq0bcwP5dz/h0Plj6enJqjz1Zbq2l5WaqYnrVbwWOWMyF3F47g==", + "engines": { + "node": ">=0.10.0" + } + }, + "node_modules/cuid": { + "version": "2.1.8", + "resolved": "https://registry.npmjs.org/cuid/-/cuid-2.1.8.tgz", + "integrity": "sha512-xiEMER6E7TlTPnDxrM4eRiC6TRgjNX9xzEZ5U/Se2YJKr7Mq4pJn/2XEHjl3STcSh96GmkHPcBXLES8M29wyyg==" + }, + "node_modules/debug": { + "version": "4.1.1", + "resolved": "https://registry.npmjs.org/debug/-/debug-4.1.1.tgz", + "integrity": "sha512-pYAIzeRo8J6KPEaJ0VWOh5Pzkbw/RetuzehGM7QRRX5he4fPHx2rdKMB256ehJCkX+XRQm16eZLqLNS8RSZXZw==", + "deprecated": "Debug versions >=3.2.0 <3.2.7 || >=4 <4.3.1 have a low-severity ReDos regression when used in a Node.js environment. It is recommended you upgrade to 3.2.7 or 4.3.1. (https://github.com/visionmedia/debug/issues/797)", + "dependencies": { + "ms": "^2.1.1" + } + }, + "node_modules/decode-uri-component": { + "version": "0.2.0", + "resolved": "https://registry.npmjs.org/decode-uri-component/-/decode-uri-component-0.2.0.tgz", + "integrity": "sha1-6zkTMzRYd1y4TNGh+uBiEGu4dUU=", + "engines": { + "node": ">=0.10" + } + }, + "node_modules/deepmerge": { + "version": "4.2.2", + "resolved": "https://registry.npmjs.org/deepmerge/-/deepmerge-4.2.2.tgz", + "integrity": "sha512-FJ3UgI4gIl+PHZm53knsuSFpE+nESMr7M4v9QcgB7S63Kj/6WqMiFQJpBBYz1Pt+66bZpP3Q7Lye0Oo9MPKEdg==", + "engines": { + "node": ">=0.10.0" + } + }, + "node_modules/depd": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/depd/-/depd-2.0.0.tgz", + "integrity": "sha512-g7nH6P6dyDioJogAAGprGpCtVImJhpPk/roCzdb3fIh61/s/nPsfR6onyMwkCAR/OlC3yBC0lESvUoQEAssIrw==", + "engines": { + "node": ">= 0.8" + } + }, + "node_modules/destroy": { + "version": "1.0.4", + "resolved": "https://registry.npmjs.org/destroy/-/destroy-1.0.4.tgz", + "integrity": "sha1-l4hXRCxEdJ5CBmE+N5RiBYJqvYA=" + }, + "node_modules/dom-serializer": { + "version": "0.2.2", + "resolved": "https://registry.npmjs.org/dom-serializer/-/dom-serializer-0.2.2.tgz", + "integrity": "sha512-2/xPb3ORsQ42nHYiSunXkDjPLBaEj/xTwUO4B7XCZQTRk7EBtTOPaygh10YAAh2OI1Qrp6NWfpAhzswj0ydt9g==", + "dependencies": { + "domelementtype": "^2.0.1", + "entities": "^2.0.0" + } + }, + "node_modules/domelementtype": { + "version": "2.0.1", + "resolved": "https://registry.npmjs.org/domelementtype/-/domelementtype-2.0.1.tgz", + "integrity": "sha512-5HOHUDsYZWV8FGWN0Njbr/Rn7f/eWSQi1v7+HsUVwXgn8nWWlL64zKDkS0n8ZmQ3mlWOMuXOnR+7Nx/5tMO5AQ==" + }, + "node_modules/domhandler": { + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/domhandler/-/domhandler-3.0.0.tgz", + "integrity": "sha512-eKLdI5v9m67kbXQbJSNn1zjh0SDzvzWVWtX+qEI3eMjZw8daH9k8rlj1FZY9memPwjiskQFbe7vHVVJIAqoEhw==", + "dependencies": { + "domelementtype": "^2.0.1" + }, + "engines": { + "node": ">= 4" + } + }, + "node_modules/domutils": { + "version": "2.1.0", + "resolved": "https://registry.npmjs.org/domutils/-/domutils-2.1.0.tgz", + "integrity": "sha512-CD9M0Dm1iaHfQ1R/TI+z3/JWp/pgub0j4jIQKH89ARR4ATAV2nbaOQS5XxU9maJP5jHaPdDDQSEHuE2UmpUTKg==", + "dependencies": { + "dom-serializer": "^0.2.1", + "domelementtype": "^2.0.1", + "domhandler": "^3.0.0" + } + }, + "node_modules/ee-first": { + "version": "1.1.1", + "resolved": "https://registry.npmjs.org/ee-first/-/ee-first-1.1.1.tgz", + "integrity": "sha1-WQxhFWsK4vTwJVcyoViyZrxWsh0=" + }, + "node_modules/ejs": { + "version": "2.7.4", + "resolved": "https://registry.npmjs.org/ejs/-/ejs-2.7.4.tgz", + "integrity": "sha512-7vmuyh5+kuUyJKePhQfRQBhXV5Ce+RnaeeQArKu1EAMpL3WbgMt5WG6uQZpEVvYSSsxMXRKOewtDk9RaTKXRlA==", + "hasInstallScript": true, + "engines": { + "node": ">=0.10.0" + } + }, + "node_modules/encodeurl": { + "version": "1.0.2", + "resolved": "https://registry.npmjs.org/encodeurl/-/encodeurl-1.0.2.tgz", + "integrity": "sha1-rT/0yG7C0CkyL1oCw6mmBslbP1k=", + "engines": { + "node": ">= 0.8" + } + }, + "node_modules/entities": { + "version": "2.0.2", + "resolved": "https://registry.npmjs.org/entities/-/entities-2.0.2.tgz", + "integrity": "sha512-dmD3AvJQBUjKpcNkoqr+x+IF0SdRtPz9Vk0uTy4yWqga9ibB6s4v++QFWNohjiUGoMlF552ZvNyXDxz5iW0qmw==" + }, + "node_modules/escape-html": { + "version": "1.0.3", + "resolved": "https://registry.npmjs.org/escape-html/-/escape-html-1.0.3.tgz", + "integrity": "sha1-Aljq5NPQwJdN4cFpGI7wBR0dGYg=" + }, + "node_modules/escape-string-regexp": { + "version": "1.0.5", + "resolved": "https://registry.npmjs.org/escape-string-regexp/-/escape-string-regexp-1.0.5.tgz", + "integrity": "sha1-G2HAViGQqN/2rjuyzwIAyhMLhtQ=", + "engines": { + "node": ">=0.8.0" + } + }, + "node_modules/esprima": { + "version": "4.0.1", + "resolved": "https://registry.npmjs.org/esprima/-/esprima-4.0.1.tgz", + "integrity": "sha512-eGuFFw7Upda+g4p+QHvnW0RyTX/SVeJBDM/gCtMARO0cLuT2HcEKnTPvhjV6aGeqrCB/sbNop0Kszm0jsaWU4A==", + "bin": { + "esparse": "bin/esparse.js", + "esvalidate": "bin/esvalidate.js" + }, + "engines": { + "node": ">=4" + } + }, + "node_modules/etag": { + "version": "1.8.1", + "resolved": "https://registry.npmjs.org/etag/-/etag-1.8.1.tgz", + "integrity": "sha1-Qa4u62XvpiJorr/qg6x9eSmbCIc=", + "engines": { + "node": ">= 0.6" + } + }, + "node_modules/fill-range": { + "version": "7.0.1", + "resolved": "https://registry.npmjs.org/fill-range/-/fill-range-7.0.1.tgz", + "integrity": "sha512-qOo9F+dMUmC2Lcb4BbVvnKJxTPjCm+RRpe4gDuGrzkL7mEVl/djYSu2OdQ2Pa302N4oqkSg9ir6jaLWJ2USVpQ==", + "dependencies": { + "to-regex-range": "^5.0.1" + }, + "engines": { + "node": ">=8" + } + }, + "node_modules/finalhandler": { + "version": "1.1.2", + "resolved": "https://registry.npmjs.org/finalhandler/-/finalhandler-1.1.2.tgz", + "integrity": "sha512-aAWcW57uxVNrQZqFXjITpW3sIUQmHGG3qSb9mUah9MgMC4NeWhNOlNjXEYq3HjRAvL6arUviZGGJsBg6z0zsWA==", + "dependencies": { + "debug": "2.6.9", + "encodeurl": "~1.0.2", + "escape-html": "~1.0.3", + "on-finished": "~2.3.0", + "parseurl": "~1.3.3", + "statuses": "~1.5.0", + "unpipe": "~1.0.0" + }, + "engines": { + "node": ">= 0.8" + } + }, + "node_modules/finalhandler/node_modules/debug": { + "version": "2.6.9", + "resolved": "https://registry.npmjs.org/debug/-/debug-2.6.9.tgz", + "integrity": "sha512-bC7ElrdJaJnPbAP+1EotYvqZsb3ecl5wi6Bfi6BJTUcNowp6cvspg0jXznRTKDjm/E7AdgFBVeAPVMNcKGsHMA==", + "dependencies": { + "ms": "2.0.0" + } + }, + "node_modules/finalhandler/node_modules/ms": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/ms/-/ms-2.0.0.tgz", + "integrity": "sha1-VgiurfwAvmwpAd9fmGF4jeDVl8g=" + }, + "node_modules/fresh": { + "version": "0.5.2", + "resolved": "https://registry.npmjs.org/fresh/-/fresh-0.5.2.tgz", + "integrity": "sha1-PYyt2Q2XZWn6g1qx+OSyOhBWBac=", + "engines": { + "node": ">= 0.6" + } + }, + "node_modules/fs.realpath": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/fs.realpath/-/fs.realpath-1.0.0.tgz", + "integrity": "sha1-FQStJSMVjKpA20onh8sBQRmU6k8=" + }, + "node_modules/fsevents": { + "version": "2.1.3", + "resolved": "https://registry.npmjs.org/fsevents/-/fsevents-2.1.3.tgz", + "integrity": "sha512-Auw9a4AxqWpa9GUfj370BMPzzyncfBABW8Mab7BGWBYDj4Isgq+cDKtx0i6u9jcX9pQDnswsaaOTgTmA5pEjuQ==", + "deprecated": "\"Please update to latest v2.3 or v2.2\"", + "hasInstallScript": true, + "optional": true, + "os": [ + "darwin" + ], + "engines": { + "node": "^8.16.0 || ^10.6.0 || >=11.0.0" + } + }, + "node_modules/function-bind": { + "version": "1.1.1", + "resolved": "https://registry.npmjs.org/function-bind/-/function-bind-1.1.1.tgz", + "integrity": "sha512-yIovAzMX49sF8Yl58fSCWJ5svSLuaibPxXQJFLmBObTuCr0Mf1KiPopGM9NiFjiYBCbfaa2Fh6breQ6ANVTI0A==" + }, + "node_modules/glob-parent": { + "version": "5.1.2", + "resolved": "https://registry.npmjs.org/glob-parent/-/glob-parent-5.1.2.tgz", + "integrity": "sha512-AOIgSQCepiJYwP3ARnGx+5VnTu2HBYdzbGP45eLw1vr3zB3vZLeyed1sC9hnbcOc9/SrMyM5RPQrkGz4aS9Zow==", + "dependencies": { + "is-glob": "^4.0.1" + }, + "engines": { + "node": ">= 6" + } + }, + "node_modules/graceful-fs": { + "version": "4.2.6", + "resolved": "https://registry.npmjs.org/graceful-fs/-/graceful-fs-4.2.6.tgz", + "integrity": "sha512-nTnJ528pbqxYanhpDYsi4Rd8MAeaBA67+RZ10CM1m3bTAVFEDcd5AuA4a6W5YkGZ1iNXHzZz8T6TBKLeBuNriQ==" + }, + "node_modules/has": { + "version": "1.0.3", + "resolved": "https://registry.npmjs.org/has/-/has-1.0.3.tgz", + "integrity": "sha512-f2dvO0VU6Oej7RkWJGrehjbzMAjFp5/VKPp5tTpWIV4JHHZK1/BxbFRtf/siA2SWTe09caDmVtYYzWEIbBS4zw==", + "dependencies": { + "function-bind": "^1.1.1" + }, + "engines": { + "node": ">= 0.4.0" + } + }, + "node_modules/has-flag": { + "version": "4.0.0", + "resolved": "https://registry.npmjs.org/has-flag/-/has-flag-4.0.0.tgz", + "integrity": "sha512-EykJT/Q1KjTWctppgIAgfSO0tKVuZUjhgMr17kqTumMl6Afv3EISleU7qZUzoXDFTAHTDC4NOoG/ZxU3EvlMPQ==", + "engines": { + "node": ">=8" + } + }, + "node_modules/hexo": { + "version": "5.4.1", + "resolved": "https://registry.npmjs.org/hexo/-/hexo-5.4.1.tgz", + "integrity": "sha512-20tyZB8TfaddneySZZ40mGFsN/V9nlolToUnA2KhRVl1wl6uWT10mnziVjLMhQfaYddqCwD36NvOamGS3DOLhQ==", + "dependencies": { + "abbrev": "^1.1.1", + "archy": "^1.0.0", + "bluebird": "^3.5.2", + "chalk": "^4.0.0", + "hexo-cli": "^4.0.0", + "hexo-front-matter": "^2.0.0", + "hexo-fs": "^3.1.0", + "hexo-i18n": "^1.0.0", + "hexo-log": "^2.0.0", + "hexo-util": "^2.4.0", + "js-yaml": "^4.0.0", + "js-yaml-js-types": "^1.0.0", + "micromatch": "^4.0.2", + "moment": "^2.22.2", + "moment-timezone": "^0.5.21", + "nunjucks": "^3.2.1", + "pretty-hrtime": "^1.0.3", + "resolve": "^1.8.1", + "strip-ansi": "^6.0.0", + "text-table": "^0.2.0", + "tildify": "^2.0.0", + "titlecase": "^1.1.2", + "warehouse": "^4.0.0" + }, + "bin": { + "hexo": "bin/hexo" + }, + "engines": { + "node": ">=10.13.0" + }, + "funding": { + "type": "opencollective", + "url": "https://opencollective.com/hexo" + } + }, + "node_modules/hexo-cli": { + "version": "4.3.0", + "resolved": "https://registry.npmjs.org/hexo-cli/-/hexo-cli-4.3.0.tgz", + "integrity": "sha512-lr46h1tK1RNQJAQZbzKYAWGsmqF5DLrW6xKEakqv/o9JqgdeempBjIm7HqjcZEUBpWij4EO65X6YJiDmT9LR7g==", + "dependencies": { + "abbrev": "^1.1.1", + "bluebird": "^3.5.5", + "chalk": "^4.0.0", + "command-exists": "^1.2.8", + "hexo-fs": "^3.0.1", + "hexo-log": "^2.0.0", + "hexo-util": "^2.0.0", + "minimist": "^1.2.5", + "resolve": "^1.11.0", + "tildify": "^2.0.0" + }, + "bin": { + "hexo": "bin/hexo" + }, + "engines": { + "node": ">=10.13.0" + } + }, + "node_modules/hexo-deployer-git": { + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/hexo-deployer-git/-/hexo-deployer-git-3.0.0.tgz", + "integrity": "sha512-U2Xewjab+rvUDNTcuYYnOxitkDXL3f5VMUH32jKDHs3OC4YFVGRoEaTTDVHskqr3KRi78Wohjc6BSRHOoG3oxA==", + "dependencies": { + "bluebird": "^3.5.0", + "chalk": "^4.0.0", + "hexo-fs": "^3.0.1", + "hexo-util": "^2.1.0", + "moment": "^2.18.0", + "nunjucks": "^3.2.1" + }, + "engines": { + "node": ">=8.6.0" + } + }, + "node_modules/hexo-front-matter": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/hexo-front-matter/-/hexo-front-matter-2.0.0.tgz", + "integrity": "sha512-IR3tjAyK2Ga/0a/WDAoNy5+n3ju2/mkuAsCDEeGgGLf5+7kkiOkkG/FrnueuYgz0h2MPfWDLBiDsSTCmB0sLCA==", + "dependencies": { + "js-yaml": "^3.13.1" + }, + "engines": { + "node": ">=10.13.0" + } + }, + "node_modules/hexo-front-matter/node_modules/js-yaml": { + "version": "3.14.1", + "resolved": "https://registry.npmjs.org/js-yaml/-/js-yaml-3.14.1.tgz", + "integrity": "sha512-okMH7OXXJ7YrN9Ok3/SXrnu4iX9yOk+25nqX4imS2npuvTYDmo/QEZoqwZkYaIDk3jVvBOTOIEgEhaLOynBS9g==", + "dependencies": { + "argparse": "^1.0.7", + "esprima": "^4.0.0" + }, + "bin": { + "js-yaml": "bin/js-yaml.js" + } + }, + "node_modules/hexo-fs": { + "version": "3.1.0", + "resolved": "https://registry.npmjs.org/hexo-fs/-/hexo-fs-3.1.0.tgz", + "integrity": "sha512-SfoDH7zlU9Iop+bAfEONXezbNIkpVX1QqjNCBYpapilZR+xVOCfTEdlNixanrKBbLGPb2fXqrdDBFgrKuiVGQQ==", + "dependencies": { + "bluebird": "^3.5.1", + "chokidar": "^3.0.0", + "graceful-fs": "^4.1.11", + "hexo-util": "^2.0.0" + }, + "engines": { + "node": ">=10.13.0" + } + }, + "node_modules/hexo-generator-archive": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/hexo-generator-archive/-/hexo-generator-archive-1.0.0.tgz", + "integrity": "sha512-24TeanDGpMBUIq37DHpSESQbeN6ssZ06edsGSI76tN4Yit50TgsgzP5g5DSu0yJk0jUtHJntysWE8NYAlFXibA==", + "dependencies": { + "hexo-pagination": "1.0.0" + }, + "engines": { + "node": ">=8.6.0" + } + }, + "node_modules/hexo-generator-category": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/hexo-generator-category/-/hexo-generator-category-1.0.0.tgz", + "integrity": "sha512-kmtwT1SHYL2ismbGnYQXNtqLFSeTdtHNbJIqno3LKROpCK8ybST5QVXF1bZI9LkFcXV/H8ilt8gfg4/dNNcQQQ==", + "dependencies": { + "hexo-pagination": "1.0.0" + }, + "engines": { + "node": ">=8.6.0" + } + }, + "node_modules/hexo-generator-feed": { + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/hexo-generator-feed/-/hexo-generator-feed-3.0.0.tgz", + "integrity": "sha512-Jo35VSRSNeMitS2JmjCq3OHAXXYU4+JIODujHtubdG/NRj2++b3Tgyz9pwTmROx6Yxr2php/hC8og5AGZHh8UQ==", + "dependencies": { + "hexo-util": "^2.1.0", + "nunjucks": "^3.0.0" + }, + "engines": { + "node": ">=10.13.0" + } + }, + "node_modules/hexo-generator-feed/node_modules/hexo-util": { + "version": "2.4.0", + "resolved": "https://registry.npmjs.org/hexo-util/-/hexo-util-2.4.0.tgz", + "integrity": "sha512-IPQvAyn0cznYMU2gskMiZ6LZEvN7wHNusrJoYxrir4f7S7POpZeDTBswiko9R1qqd+/hu07wUYZdm4ceTTCEaA==", + "dependencies": { + "bluebird": "^3.5.2", + "camel-case": "^4.0.0", + "cross-spawn": "^7.0.0", + "deepmerge": "^4.2.2", + "highlight.js": "^10.0.0", + "htmlparser2": "^4.0.0", + "prismjs": "^1.17.1", + "strip-indent": "^3.0.0", + "striptags": "^3.1.1" + }, + "engines": { + "node": ">=10.13.0" + } + }, + "node_modules/hexo-generator-feed/node_modules/highlight.js": { + "version": "10.4.0", + "resolved": "https://registry.npmjs.org/highlight.js/-/highlight.js-10.4.0.tgz", + "integrity": "sha512-EfrUGcQ63oLJbj0J0RI9ebX6TAITbsDBLbsjr881L/X5fMO9+oadKzEF21C7R3ULKG6Gv3uoab2HiqVJa/4+oA==", + "deprecated": "Potential vulnerability. Please upgrade to @latest", + "engines": { + "node": "*" + } + }, + "node_modules/hexo-generator-index": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/hexo-generator-index/-/hexo-generator-index-1.0.0.tgz", + "integrity": "sha512-L25MdZ7e5ar/F8lIW+zBNNlA4f5A8CBUOYi1IQZCgL3wPVW+AWn66RSM5UVBAbiw5yxDeTHdk0sJYXbhSBaOFQ==", + "dependencies": { + "hexo-pagination": "1.0.0" + }, + "engines": { + "node": ">=8.6.0" + } + }, + "node_modules/hexo-generator-search": { + "version": "2.4.3", + "resolved": "https://registry.npmjs.org/hexo-generator-search/-/hexo-generator-search-2.4.3.tgz", + "integrity": "sha512-Z5hfZq2g3np/Tgdp2q9HobfIvU6Pdz89tnTurc1IIq/vW0MHgDynk0Aiv6kvMtKWthnZ5l0iEMT3YLN35NdYwQ==", + "dependencies": { + "nunjucks": "^3.0.1", + "utils-merge": "^1.0.0" + }, + "engines": { + "node": ">= 0.10.0" + } + }, + "node_modules/hexo-generator-tag": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/hexo-generator-tag/-/hexo-generator-tag-1.0.0.tgz", + "integrity": "sha512-JDoB2T1EncRlyGSjuAhkGxRfKkN8tq0i8tFlk9I4q2L6iYxPaUnFenhji0oxufTADC16/IchuPjmMk//dt8Msg==", + "dependencies": { + "hexo-pagination": "1.0.0" + }, + "engines": { + "node": ">=8.6.0" + } + }, + "node_modules/hexo-i18n": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/hexo-i18n/-/hexo-i18n-1.0.0.tgz", + "integrity": "sha512-yw90JHr7ybUHN/QOkpHmlWJj1luVk5/v8CUU5NRA0n4TFp6av8NT7ujZ10GDawgnQEdMHnN5PUfAbNIVGR6axg==", + "dependencies": { + "sprintf-js": "^1.0.3" + }, + "engines": { + "node": ">=8.6.0" + } + }, + "node_modules/hexo-log": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/hexo-log/-/hexo-log-2.0.0.tgz", + "integrity": "sha512-U7zdDae74pXcyhQEyNmpJdq3UI6zWKxQ7/zLoMr/d3CBRdIfB5yO8DWqKUnewfibYv0gODyTWUIhxQDWuwloow==", + "dependencies": { + "chalk": "^4.0.0" + }, + "engines": { + "node": ">=10.13.0" + } + }, + "node_modules/hexo-pagination": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/hexo-pagination/-/hexo-pagination-1.0.0.tgz", + "integrity": "sha512-miEVFgxchPr2qNWxw0JWpJ9R/Yaf7HjHBZVjvCCcqfbsLyYtCvIfJDxcEwz1sDOC/fLzYPqNnhUI73uNxBHRSA==", + "engines": { + "node": ">=8.6.0" + } + }, + "node_modules/hexo-renderer-ejs": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/hexo-renderer-ejs/-/hexo-renderer-ejs-1.0.0.tgz", + "integrity": "sha512-O925i69FG4NYO62oWORcPhRZZX0sPx1SXGKUS5DaR/lzajyiXH5i2sqnkj0ya0rNLXIy/D7Xmt7WbFyuQx/kKQ==", + "dependencies": { + "ejs": "^2.6.1" + }, + "engines": { + "node": ">=8.6.0" + } + }, + "node_modules/hexo-renderer-marked": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/hexo-renderer-marked/-/hexo-renderer-marked-2.0.0.tgz", + "integrity": "sha512-+LMjgPkJSUAOlWYHJnBXxUHwGqemGNlK/I+JNO4zA5rEHWNWZ9wNAZKd5g0lEVdMAZzAV54gCylXGURgMO4IAw==", + "dependencies": { + "hexo-util": "1.0.0", + "marked": "^0.7.0", + "strip-indent": "^3.0.0" + }, + "engines": { + "node": ">=8.6.0" + } + }, + "node_modules/hexo-renderer-marked/node_modules/camel-case": { + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/camel-case/-/camel-case-3.0.0.tgz", + "integrity": "sha1-yjw2iKTpzzpM2nd9xNy8cTJJz3M=", + "dependencies": { + "no-case": "^2.2.0", + "upper-case": "^1.1.1" + } + }, + "node_modules/hexo-renderer-marked/node_modules/cross-spawn": { + "version": "6.0.5", + "resolved": "https://registry.npmjs.org/cross-spawn/-/cross-spawn-6.0.5.tgz", + "integrity": "sha512-eTVLrBSt7fjbDygz805pMnstIs2VTBNkRm0qxZd+M7A5XDdxVRWO5MxGBXZhjY4cqLYLdtrGqRf8mBPmzwSpWQ==", + "dependencies": { + "nice-try": "^1.0.4", + "path-key": "^2.0.1", + "semver": "^5.5.0", + "shebang-command": "^1.2.0", + "which": "^1.2.9" + }, + "engines": { + "node": ">=4.8" + } + }, + "node_modules/hexo-renderer-marked/node_modules/hexo-util": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/hexo-util/-/hexo-util-1.0.0.tgz", + "integrity": "sha512-oV1/Y7ablc7e3d2kFFvQ/Ypi/BfL/uDSc1oNaMcxqr/UOH8F0QkHZ0Dmv+yLrEpFNYrrhBA0uavo3e+EqHNjnQ==", + "dependencies": { + "bluebird": "^3.5.2", + "camel-case": "^3.0.0", + "cross-spawn": "^6.0.5", + "highlight.js": "^9.13.1", + "html-entities": "^1.2.1", + "striptags": "^3.1.1" + }, + "engines": { + "node": ">=8.6.0" + } + }, + "node_modules/hexo-renderer-marked/node_modules/lower-case": { + "version": "1.1.4", + "resolved": "https://registry.npmjs.org/lower-case/-/lower-case-1.1.4.tgz", + "integrity": "sha1-miyr0bno4K6ZOkv31YdcOcQujqw=" + }, + "node_modules/hexo-renderer-marked/node_modules/no-case": { + "version": "2.3.2", + "resolved": "https://registry.npmjs.org/no-case/-/no-case-2.3.2.tgz", + "integrity": "sha512-rmTZ9kz+f3rCvK2TD1Ue/oZlns7OGoIWP4fc3llxxRXlOkHKoWPPWJOfFYpITabSow43QJbRIoHQXtt10VldyQ==", + "dependencies": { + "lower-case": "^1.1.1" + } + }, + "node_modules/hexo-renderer-marked/node_modules/path-key": { + "version": "2.0.1", + "resolved": "https://registry.npmjs.org/path-key/-/path-key-2.0.1.tgz", + "integrity": "sha1-QRyttXTFoUDTpLGRDUDYDMn0C0A=", + "engines": { + "node": ">=4" + } + }, + "node_modules/hexo-renderer-marked/node_modules/shebang-command": { + "version": "1.2.0", + "resolved": "https://registry.npmjs.org/shebang-command/-/shebang-command-1.2.0.tgz", + "integrity": "sha1-RKrGW2lbAzmJaMOfNj/uXer98eo=", + "dependencies": { + "shebang-regex": "^1.0.0" + }, + "engines": { + "node": ">=0.10.0" + } + }, + "node_modules/hexo-renderer-marked/node_modules/shebang-regex": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/shebang-regex/-/shebang-regex-1.0.0.tgz", + "integrity": "sha1-2kL0l0DAtC2yypcoVxyxkMmO/qM=", + "engines": { + "node": ">=0.10.0" + } + }, + "node_modules/hexo-renderer-marked/node_modules/which": { + "version": "1.3.1", + "resolved": "https://registry.npmjs.org/which/-/which-1.3.1.tgz", + "integrity": "sha512-HxJdYWq1MTIQbJ3nw0cqssHoTNU267KlrDuGZ1WYlxDStUtKUhOaJmh112/TZmHxxUfuJqPXSOm7tDyas0OSIQ==", + "dependencies": { + "isexe": "^2.0.0" + }, + "bin": { + "which": "bin/which" + } + }, + "node_modules/hexo-renderer-stylus": { + "version": "1.1.0", + "resolved": "https://registry.npmjs.org/hexo-renderer-stylus/-/hexo-renderer-stylus-1.1.0.tgz", + "integrity": "sha512-aXfMuro2aQOvpM5pyPEModAPvqYi73VN4t37vGMQCbT0QTmw8YohEmUpO/G/1k6j88ong6344v+A0xrpUGQRnQ==", + "dependencies": { + "nib": "^1.1.2", + "stylus": "^0.54.5" + }, + "engines": { + "node": ">=8.6.0" + } + }, + "node_modules/hexo-server": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/hexo-server/-/hexo-server-1.0.0.tgz", + "integrity": "sha512-eSY+a5oiGCG/3T6FrdrNRBkttMLJkM+oitY6ZMFowjcBiG2VNEhQmfWUDOykfvApZs4wPYBb//uXD/58tfe3mA==", + "dependencies": { + "bluebird": "^3.5.5", + "chalk": "^2.4.2", + "compression": "^1.7.4", + "connect": "^3.7.0", + "mime": "^2.4.3", + "morgan": "^1.9.1", + "open": "^6.3.0", + "serve-static": "^1.14.1" + }, + "engines": { + "node": ">=8.6.0" + } + }, + "node_modules/hexo-server/node_modules/ansi-styles": { + "version": "3.2.1", + "resolved": "https://registry.npmjs.org/ansi-styles/-/ansi-styles-3.2.1.tgz", + "integrity": "sha512-VT0ZI6kZRdTh8YyJw3SMbYm/u+NqfsAxEpWO0Pf9sq8/e94WxxOpPKx9FR1FlyCtOVDNOQ+8ntlqFxiRc+r5qA==", + "dependencies": { + "color-convert": "^1.9.0" + }, + "engines": { + "node": ">=4" + } + }, + "node_modules/hexo-server/node_modules/chalk": { + "version": "2.4.2", + "resolved": "https://registry.npmjs.org/chalk/-/chalk-2.4.2.tgz", + "integrity": "sha512-Mti+f9lpJNcwF4tWV8/OrTTtF1gZi+f8FqlyAdouralcFWFQWF2+NgCHShjkCb+IFBLq9buZwE1xckQU4peSuQ==", + "dependencies": { + "ansi-styles": "^3.2.1", + "escape-string-regexp": "^1.0.5", + "supports-color": "^5.3.0" + }, + "engines": { + "node": ">=4" + } + }, + "node_modules/hexo-server/node_modules/color-convert": { + "version": "1.9.3", + "resolved": "https://registry.npmjs.org/color-convert/-/color-convert-1.9.3.tgz", + "integrity": "sha512-QfAUtd+vFdAtFQcC8CCyYt1fYWxSqAiK2cSD6zDB8N3cpsEBAvRxp9zOGg6G/SHHJYAT88/az/IuDGALsNVbGg==", + "dependencies": { + "color-name": "1.1.3" + } + }, + "node_modules/hexo-server/node_modules/color-name": { + "version": "1.1.3", + "resolved": "https://registry.npmjs.org/color-name/-/color-name-1.1.3.tgz", + "integrity": "sha1-p9BVi9icQveV3UIyj3QIMcpTvCU=" + }, + "node_modules/hexo-server/node_modules/has-flag": { + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/has-flag/-/has-flag-3.0.0.tgz", + "integrity": "sha1-tdRU3CGZriJWmfNGfloH87lVuv0=", + "engines": { + "node": ">=4" + } + }, + "node_modules/hexo-server/node_modules/supports-color": { + "version": "5.5.0", + "resolved": "https://registry.npmjs.org/supports-color/-/supports-color-5.5.0.tgz", + "integrity": "sha512-QjVjwdXIt408MIiAqCX4oUKsgU2EqAGzs2Ppkm4aQYbjm+ZEWEcW4SfFNTr4uMNZma0ey4f5lgLrkB0aX0QMow==", + "dependencies": { + "has-flag": "^3.0.0" + }, + "engines": { + "node": ">=4" + } + }, + "node_modules/hexo-util": { + "version": "2.4.0", + "resolved": "https://registry.npmjs.org/hexo-util/-/hexo-util-2.4.0.tgz", + "integrity": "sha512-IPQvAyn0cznYMU2gskMiZ6LZEvN7wHNusrJoYxrir4f7S7POpZeDTBswiko9R1qqd+/hu07wUYZdm4ceTTCEaA==", + "dependencies": { + "bluebird": "^3.5.2", + "camel-case": "^4.0.0", + "cross-spawn": "^7.0.0", + "deepmerge": "^4.2.2", + "highlight.js": "^10.0.0", + "htmlparser2": "^4.0.0", + "prismjs": "^1.17.1", + "strip-indent": "^3.0.0", + "striptags": "^3.1.1" + }, + "engines": { + "node": ">=10.13.0" + } + }, + "node_modules/hexo-util/node_modules/highlight.js": { + "version": "10.6.0", + "resolved": "https://registry.npmjs.org/highlight.js/-/highlight.js-10.6.0.tgz", + "integrity": "sha512-8mlRcn5vk/r4+QcqerapwBYTe+iPL5ih6xrNylxrnBdHQiijDETfXX7VIxC3UiCRiINBJfANBAsPzAvRQj8RpQ==", + "engines": { + "node": "*" + } + }, + "node_modules/highlight.js": { + "version": "9.18.5", + "resolved": "https://registry.npmjs.org/highlight.js/-/highlight.js-9.18.5.tgz", + "integrity": "sha512-a5bFyofd/BHCX52/8i8uJkjr9DYwXIPnM/plwI6W7ezItLGqzt7X2G2nXuYSfsIJdkwwj/g9DG1LkcGJI/dDoA==", + "deprecated": "Support has ended for 9.x series. Upgrade to @latest", + "hasInstallScript": true, + "engines": { + "node": "*" + } + }, + "node_modules/html-entities": { + "version": "1.3.1", + "resolved": "https://registry.npmjs.org/html-entities/-/html-entities-1.3.1.tgz", + "integrity": "sha512-rhE/4Z3hIhzHAUKbW8jVcCyuT5oJCXXqhN/6mXXVCpzTmvJnoH2HL/bt3EZ6p55jbFJBeAe1ZNpL5BugLujxNA==" + }, + "node_modules/htmlparser2": { + "version": "4.1.0", + "resolved": "https://registry.npmjs.org/htmlparser2/-/htmlparser2-4.1.0.tgz", + "integrity": "sha512-4zDq1a1zhE4gQso/c5LP1OtrhYTncXNSpvJYtWJBtXAETPlMfi3IFNjGuQbYLuVY4ZR0QMqRVvo4Pdy9KLyP8Q==", + "dependencies": { + "domelementtype": "^2.0.1", + "domhandler": "^3.0.0", + "domutils": "^2.0.0", + "entities": "^2.0.0" + } + }, + "node_modules/http-errors": { + "version": "1.7.3", + "resolved": "https://registry.npmjs.org/http-errors/-/http-errors-1.7.3.tgz", + "integrity": "sha512-ZTTX0MWrsQ2ZAhA1cejAwDLycFsd7I7nVtnkT3Ol0aqodaKW+0CTZDQ1uBv5whptCnc8e8HeRRJxRs0kmm/Qfw==", + "dependencies": { + "depd": "~1.1.2", + "inherits": "2.0.4", + "setprototypeof": "1.1.1", + "statuses": ">= 1.5.0 < 2", + "toidentifier": "1.0.0" + }, + "engines": { + "node": ">= 0.6" + } + }, + "node_modules/http-errors/node_modules/depd": { + "version": "1.1.2", + "resolved": "https://registry.npmjs.org/depd/-/depd-1.1.2.tgz", + "integrity": "sha1-m81S4UwJd2PnSbJ0xDRu0uVgtak=", + "engines": { + "node": ">= 0.6" + } + }, + "node_modules/inflight": { + "version": "1.0.6", + "resolved": "https://registry.npmjs.org/inflight/-/inflight-1.0.6.tgz", + "integrity": "sha1-Sb1jMdfQLQwJvJEKEHW6gWW1bfk=", + "dependencies": { + "once": "^1.3.0", + "wrappy": "1" + } + }, + "node_modules/inherits": { + "version": "2.0.4", + "resolved": "https://registry.npmjs.org/inherits/-/inherits-2.0.4.tgz", + "integrity": "sha512-k/vGaX4/Yla3WzyMCvTQOXYeIHvqOKtnqBduzTHpzpQZzAskKMhZ2K+EnBiSM9zGSoIFeMpXKxa4dYeZIQqewQ==" + }, + "node_modules/is-binary-path": { + "version": "2.1.0", + "resolved": "https://registry.npmjs.org/is-binary-path/-/is-binary-path-2.1.0.tgz", + "integrity": "sha512-ZMERYes6pDydyuGidse7OsHxtbI7WVeUEozgR/g7rd0xUimYNlvZRE/K2MgZTjWy725IfelLeVcEM97mmtRGXw==", + "dependencies": { + "binary-extensions": "^2.0.0" + }, + "engines": { + "node": ">=8" + } + }, + "node_modules/is-core-module": { + "version": "2.8.1", + "resolved": "https://registry.npmjs.org/is-core-module/-/is-core-module-2.8.1.tgz", + "integrity": "sha512-SdNCUs284hr40hFTFP6l0IfZ/RSrMXF3qgoRHd3/79unUTvrFO/JoXwkGm+5J/Oe3E/b5GsnG330uUNgRpu1PA==", + "dependencies": { + "has": "^1.0.3" + }, + "funding": { + "url": "https://github.com/sponsors/ljharb" + } + }, + "node_modules/is-extglob": { + "version": "2.1.1", + "resolved": "https://registry.npmjs.org/is-extglob/-/is-extglob-2.1.1.tgz", + "integrity": "sha1-qIwCU1eR8C7TfHahueqXc8gz+MI=", + "engines": { + "node": ">=0.10.0" + } + }, + "node_modules/is-glob": { + "version": "4.0.1", + "resolved": "https://registry.npmjs.org/is-glob/-/is-glob-4.0.1.tgz", + "integrity": "sha512-5G0tKtBTFImOqDnLB2hG6Bp2qcKEFduo4tZu9MT/H6NQv/ghhy30o55ufafxJ/LdH79LLs2Kfrn85TLKyA7BUg==", + "dependencies": { + "is-extglob": "^2.1.1" + }, + "engines": { + "node": ">=0.10.0" + } + }, + "node_modules/is-number": { + "version": "7.0.0", + "resolved": "https://registry.npmjs.org/is-number/-/is-number-7.0.0.tgz", + "integrity": "sha512-41Cifkg6e8TylSpdtTpeLVMqvSBEVzTttHvERD741+pnZ8ANv0004MRL43QKPDlK9cGvNp6NZWZUBlbGXYxxng==", + "engines": { + "node": ">=0.12.0" + } + }, + "node_modules/is-plain-object": { + "version": "3.0.1", + "resolved": "https://registry.npmjs.org/is-plain-object/-/is-plain-object-3.0.1.tgz", + "integrity": "sha512-Xnpx182SBMrr/aBik8y+GuR4U1L9FqMSojwDQwPMmxyC6bvEqly9UBCxhauBF5vNh2gwWJNX6oDV7O+OM4z34g==", + "engines": { + "node": ">=0.10.0" + } + }, + "node_modules/is-wsl": { + "version": "1.1.0", + "resolved": "https://registry.npmjs.org/is-wsl/-/is-wsl-1.1.0.tgz", + "integrity": "sha1-HxbkqiKwTRM2tmGIpmrzxgDDpm0=", + "engines": { + "node": ">=4" + } + }, + "node_modules/isexe": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/isexe/-/isexe-2.0.0.tgz", + "integrity": "sha1-6PvzdNxVb/iUehDcsFctYz8s+hA=" + }, + "node_modules/js-yaml": { + "version": "4.1.0", + "resolved": "https://registry.npmjs.org/js-yaml/-/js-yaml-4.1.0.tgz", + "integrity": "sha512-wpxZs9NoxZaJESJGIZTyDEaYpl0FKSA+FB9aJiyemKhMwkxQg63h4T1KJgUGHpTqPDNRcmmYLugrRjJlBtWvRA==", + "dependencies": { + "argparse": "^2.0.1" + }, + "bin": { + "js-yaml": "bin/js-yaml.js" + } + }, + "node_modules/js-yaml-js-types": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/js-yaml-js-types/-/js-yaml-js-types-1.0.0.tgz", + "integrity": "sha512-UNjPwuoaj4mcHkJCJSF6l4MgkzoFjG+JJkBXMYNvjgO3yE9gTeRt+E6PN022vduz/daZZ7HmlEiSEE36NrGE4w==", + "dependencies": { + "esprima": "^4.0.1" + } + }, + "node_modules/js-yaml/node_modules/argparse": { + "version": "2.0.1", + "resolved": "https://registry.npmjs.org/argparse/-/argparse-2.0.1.tgz", + "integrity": "sha512-8+9WqebbFzpX9OR+Wa6O29asIogeRMzcGtAINdpMHHyAg10f05aSFVBbcEqGf/PXw1EjAZ+q2/bEBg3DvurK3Q==" + }, + "node_modules/jsonparse": { + "version": "1.3.1", + "resolved": "https://registry.npmjs.org/jsonparse/-/jsonparse-1.3.1.tgz", + "integrity": "sha1-P02uSpH6wxX3EGL4UhzCOfE2YoA=", + "engines": [ + "node >= 0.2.0" + ] + }, + "node_modules/JSONStream": { + "version": "1.3.5", + "resolved": "https://registry.npmjs.org/JSONStream/-/JSONStream-1.3.5.tgz", + "integrity": "sha512-E+iruNOY8VV9s4JEbe1aNEm6MiszPRr/UfcHMz0TQh1BXSxHK+ASV1R6W4HpjBhSeS+54PIsAMCBmwD06LLsqQ==", + "dependencies": { + "jsonparse": "^1.2.0", + "through": ">=2.2.7 <3" + }, + "bin": { + "JSONStream": "bin.js" + }, + "engines": { + "node": "*" + } + }, + "node_modules/linkify-it": { + "version": "3.0.2", + "resolved": "https://registry.npmjs.org/linkify-it/-/linkify-it-3.0.2.tgz", + "integrity": "sha512-gDBO4aHNZS6coiZCKVhSNh43F9ioIL4JwRjLZPkoLIY4yZFwg264Y5lu2x6rb1Js42Gh6Yqm2f6L2AJcnkzinQ==", + "dependencies": { + "uc.micro": "^1.0.1" + } + }, + "node_modules/lower-case": { + "version": "2.0.1", + "resolved": "https://registry.npmjs.org/lower-case/-/lower-case-2.0.1.tgz", + "integrity": "sha512-LiWgfDLLb1dwbFQZsSglpRj+1ctGnayXz3Uv0/WO8n558JycT5fg6zkNcnW0G68Nn0aEldTFeEfmjCfmqry/rQ==", + "dependencies": { + "tslib": "^1.10.0" + } + }, + "node_modules/markdown-it": { + "version": "12.3.2", + "resolved": "https://registry.npmjs.org/markdown-it/-/markdown-it-12.3.2.tgz", + "integrity": "sha512-TchMembfxfNVpHkbtriWltGWc+m3xszaRD0CZup7GFFhzIgQqxIfn3eGj1yZpfuflzPvfkt611B2Q/Bsk1YnGg==", + "dependencies": { + "argparse": "^2.0.1", + "entities": "~2.1.0", + "linkify-it": "^3.0.1", + "mdurl": "^1.0.1", + "uc.micro": "^1.0.5" + }, + "bin": { + "markdown-it": "bin/markdown-it.js" + } + }, + "node_modules/markdown-it/node_modules/argparse": { + "version": "2.0.1", + "resolved": "https://registry.npmjs.org/argparse/-/argparse-2.0.1.tgz", + "integrity": "sha512-8+9WqebbFzpX9OR+Wa6O29asIogeRMzcGtAINdpMHHyAg10f05aSFVBbcEqGf/PXw1EjAZ+q2/bEBg3DvurK3Q==" + }, + "node_modules/markdown-it/node_modules/entities": { + "version": "2.1.0", + "resolved": "https://registry.npmjs.org/entities/-/entities-2.1.0.tgz", + "integrity": "sha512-hCx1oky9PFrJ611mf0ifBLBRW8lUUVRlFolb5gWRfIELabBlbp9xZvrqZLZAs+NxFnbfQoeGd8wDkygjg7U85w==", + "funding": { + "url": "https://github.com/fb55/entities?sponsor=1" + } + }, + "node_modules/marked": { + "version": "0.7.0", + "resolved": "https://registry.npmjs.org/marked/-/marked-0.7.0.tgz", + "integrity": "sha512-c+yYdCZJQrsRjTPhUx7VKkApw9bwDkNbHUKo1ovgcfDjb2kc8rLuRbIFyXL5WOEUwzSSKo3IXpph2K6DqB/KZg==", + "bin": { + "marked": "bin/marked" + }, + "engines": { + "node": ">=0.10.0" + } + }, + "node_modules/mdurl": { + "version": "1.0.1", + "resolved": "https://registry.npmjs.org/mdurl/-/mdurl-1.0.1.tgz", + "integrity": "sha1-/oWy7HWlkDfyrf7BAP1sYBdhFS4=" + }, + "node_modules/micromatch": { + "version": "4.0.4", + "resolved": "https://registry.npmjs.org/micromatch/-/micromatch-4.0.4.tgz", + "integrity": "sha512-pRmzw/XUcwXGpD9aI9q/0XOwLNygjETJ8y0ao0wdqprrzDa4YnxLcz7fQRZr8voh8V10kGhABbNcHVk5wHgWwg==", + "dependencies": { + "braces": "^3.0.1", + "picomatch": "^2.2.3" + }, + "engines": { + "node": ">=8.6" + } + }, + "node_modules/micromatch/node_modules/picomatch": { + "version": "2.3.1", + "resolved": "https://registry.npmjs.org/picomatch/-/picomatch-2.3.1.tgz", + "integrity": "sha512-JU3teHTNjmE2VCGFzuY8EXzCDVwEqB2a8fsIvwaStHhAWJEeVd1o1QD80CU6+ZdEXXSLbSsuLwJjkCBWqRQUVA==", + "engines": { + "node": ">=8.6" + }, + "funding": { + "url": "https://github.com/sponsors/jonschlinkert" + } + }, + "node_modules/mime": { + "version": "2.4.5", + "resolved": "https://registry.npmjs.org/mime/-/mime-2.4.5.tgz", + "integrity": "sha512-3hQhEUF027BuxZjQA3s7rIv/7VCQPa27hN9u9g87sEkWaKwQPuXOkVKtOeiyUrnWqTDiOs8Ed2rwg733mB0R5w==", + "bin": { + "mime": "cli.js" + }, + "engines": { + "node": ">=4.0.0" + } + }, + "node_modules/mime-db": { + "version": "1.44.0", + "resolved": "https://registry.npmjs.org/mime-db/-/mime-db-1.44.0.tgz", + "integrity": "sha512-/NOTfLrsPBVeH7YtFPgsVWveuL+4SjjYxaQ1xtM1KMFj7HdxlBlxeyNLzhyJVx7r4rZGJAZ/6lkKCitSc/Nmpg==", + "engines": { + "node": ">= 0.6" + } + }, + "node_modules/mime-types": { + "version": "2.1.27", + "resolved": "https://registry.npmjs.org/mime-types/-/mime-types-2.1.27.tgz", + "integrity": "sha512-JIhqnCasI9yD+SsmkquHBxTSEuZdQX5BuQnS2Vc7puQQQ+8yiP5AY5uWhpdv4YL4VM5c6iliiYWPgJ/nJQLp7w==", + "dependencies": { + "mime-db": "1.44.0" + }, + "engines": { + "node": ">= 0.6" + } + }, + "node_modules/min-indent": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/min-indent/-/min-indent-1.0.0.tgz", + "integrity": "sha1-z8RcN+nsDY8KDsPdTvf3w6vjklY=", + "engines": { + "node": ">=4" + } + }, + "node_modules/minimatch": { + "version": "3.0.4", + "resolved": "https://registry.npmjs.org/minimatch/-/minimatch-3.0.4.tgz", + "integrity": "sha512-yJHVQEhyqPLUTgt9B83PXu6W3rx4MvvHvSUvToogpwoGDOUQ+yDrR0HRot+yOCdCO7u4hX3pWft6kWBBcqh0UA==", + "dependencies": { + "brace-expansion": "^1.1.7" + }, + "engines": { + "node": "*" + } + }, + "node_modules/minimist": { + "version": "1.2.5", + "resolved": "https://registry.npmjs.org/minimist/-/minimist-1.2.5.tgz", + "integrity": "sha512-FM9nNUYrRBAELZQT3xeZQ7fmMOBg6nWNmJKTcgsJeaLstP/UODVpGsr5OhXhhXg6f+qtJ8uiZ+PUxkDWcgIXLw==" + }, + "node_modules/mkdirp": { + "version": "0.5.5", + "resolved": "https://registry.npmjs.org/mkdirp/-/mkdirp-0.5.5.tgz", + "integrity": "sha512-NKmAlESf6jMGym1++R0Ra7wvhV+wFW63FaSOFPwRahvea0gMUcGUhVeAg/0BC0wiv9ih5NYPB1Wn1UEI1/L+xQ==", + "dependencies": { + "minimist": "^1.2.5" + }, + "bin": { + "mkdirp": "bin/cmd.js" + } + }, + "node_modules/moment": { + "version": "2.29.1", + "resolved": "https://registry.npmjs.org/moment/-/moment-2.29.1.tgz", + "integrity": "sha512-kHmoybcPV8Sqy59DwNDY3Jefr64lK/by/da0ViFcuA4DH0vQg5Q6Ze5VimxkfQNSC+Mls/Kx53s7TjP1RhFEDQ==", + "engines": { + "node": "*" + } + }, + "node_modules/moment-timezone": { + "version": "0.5.34", + "resolved": "https://registry.npmjs.org/moment-timezone/-/moment-timezone-0.5.34.tgz", + "integrity": "sha512-3zAEHh2hKUs3EXLESx/wsgw6IQdusOT8Bxm3D9UrHPQR7zlMmzwybC8zHEM1tQ4LJwP7fcxrWr8tuBg05fFCbg==", + "dependencies": { + "moment": ">= 2.9.0" + }, + "engines": { + "node": "*" + } + }, + "node_modules/morgan": { + "version": "1.10.0", + "resolved": "https://registry.npmjs.org/morgan/-/morgan-1.10.0.tgz", + "integrity": "sha512-AbegBVI4sh6El+1gNwvD5YIck7nSA36weD7xvIxG4in80j/UoK8AEGaWnnz8v1GxonMCltmlNs5ZKbGvl9b1XQ==", + "dependencies": { + "basic-auth": "~2.0.1", + "debug": "2.6.9", + "depd": "~2.0.0", + "on-finished": "~2.3.0", + "on-headers": "~1.0.2" + }, + "engines": { + "node": ">= 0.8.0" + } + }, + "node_modules/morgan/node_modules/debug": { + "version": "2.6.9", + "resolved": "https://registry.npmjs.org/debug/-/debug-2.6.9.tgz", + "integrity": "sha512-bC7ElrdJaJnPbAP+1EotYvqZsb3ecl5wi6Bfi6BJTUcNowp6cvspg0jXznRTKDjm/E7AdgFBVeAPVMNcKGsHMA==", + "dependencies": { + "ms": "2.0.0" + } + }, + "node_modules/morgan/node_modules/ms": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/ms/-/ms-2.0.0.tgz", + "integrity": "sha1-VgiurfwAvmwpAd9fmGF4jeDVl8g=" + }, + "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==" + }, + "node_modules/negotiator": { + "version": "0.6.2", + "resolved": "https://registry.npmjs.org/negotiator/-/negotiator-0.6.2.tgz", + "integrity": "sha512-hZXc7K2e+PgeI1eDBe/10Ard4ekbfrrqG8Ep+8Jmf4JID2bNg7NvCPOZN+kfF574pFQI7mum2AUqDidoKqcTOw==", + "engines": { + "node": ">= 0.6" + } + }, + "node_modules/nib": { + "version": "1.1.2", + "resolved": "https://registry.npmjs.org/nib/-/nib-1.1.2.tgz", + "integrity": "sha1-amnt5AgblcDe+L4CSkyK4MLLtsc=", + "dependencies": { + "stylus": "0.54.5" + }, + "engines": { + "node": "*" + } + }, + "node_modules/nib/node_modules/glob": { + "version": "7.0.6", + "resolved": "https://registry.npmjs.org/glob/-/glob-7.0.6.tgz", + "integrity": "sha1-IRuvr0nlJbjNkyYNFKsTYVKz9Xo=", + "dependencies": { + "fs.realpath": "^1.0.0", + "inflight": "^1.0.4", + "inherits": "2", + "minimatch": "^3.0.2", + "once": "^1.3.0", + "path-is-absolute": "^1.0.0" + }, + "engines": { + "node": "*" + } + }, + "node_modules/nib/node_modules/source-map": { + "version": "0.1.43", + "resolved": "https://registry.npmjs.org/source-map/-/source-map-0.1.43.tgz", + "integrity": "sha1-wkvBRspRfBRx9drL4lcbK3+eM0Y=", + "dependencies": { + "amdefine": ">=0.0.4" + }, + "engines": { + "node": ">=0.8.0" + } + }, + "node_modules/nib/node_modules/stylus": { + "version": "0.54.5", + "resolved": "https://registry.npmjs.org/stylus/-/stylus-0.54.5.tgz", + "integrity": "sha1-QrlWCTHKcJDOhRWnmLqeaqPW3Hk=", + "dependencies": { + "css-parse": "1.7.x", + "debug": "*", + "glob": "7.0.x", + "mkdirp": "0.5.x", + "sax": "0.5.x", + "source-map": "0.1.x" + }, + "bin": { + "stylus": "bin/stylus" + }, + "engines": { + "node": "*" + } + }, + "node_modules/nice-try": { + "version": "1.0.5", + "resolved": "https://registry.npmjs.org/nice-try/-/nice-try-1.0.5.tgz", + "integrity": "sha512-1nh45deeb5olNY7eX82BkPO7SSxR5SSYJiPTrTdFUVYwAl8CKMA5N9PjTYkHiRjisVcxcQ1HXdLhx2qxxJzLNQ==" + }, + "node_modules/no-case": { + "version": "3.0.3", + "resolved": "https://registry.npmjs.org/no-case/-/no-case-3.0.3.tgz", + "integrity": "sha512-ehY/mVQCf9BL0gKfsJBvFJen+1V//U+0HQMPrWct40ixE4jnv0bfvxDbWtAHL9EcaPEOJHVVYKoQn1TlZUB8Tw==", + "dependencies": { + "lower-case": "^2.0.1", + "tslib": "^1.10.0" + } + }, + "node_modules/normalize-path": { + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/normalize-path/-/normalize-path-3.0.0.tgz", + "integrity": "sha512-6eZs5Ls3WtCisHWp9S2GUy8dqkpGi4BVSz3GaqiE6ezub0512ESztXUwUB6C6IKbQkY2Pnb/mD4WYojCRwcwLA==", + "engines": { + "node": ">=0.10.0" + } + }, + "node_modules/nunjucks": { + "version": "3.2.1", + "resolved": "https://registry.npmjs.org/nunjucks/-/nunjucks-3.2.1.tgz", + "integrity": "sha512-LYlVuC1ZNSalQQkLNNPvcgPt2M9FTY9bs39mTCuFXtqh7jWbYzhDlmz2M6onPiXEhdZo+b9anRhc+uBGuJZ2bQ==", + "dependencies": { + "a-sync-waterfall": "^1.0.0", + "asap": "^2.0.3", + "commander": "^3.0.2" + }, + "bin": { + "nunjucks-precompile": "bin/precompile" + }, + "engines": { + "node": ">= 6.9.0" + }, + "optionalDependencies": { + "chokidar": "^3.3.0" + } + }, + "node_modules/on-finished": { + "version": "2.3.0", + "resolved": "https://registry.npmjs.org/on-finished/-/on-finished-2.3.0.tgz", + "integrity": "sha1-IPEzZIGwg811M3mSoWlxqi2QaUc=", + "dependencies": { + "ee-first": "1.1.1" + }, + "engines": { + "node": ">= 0.8" + } + }, + "node_modules/on-headers": { + "version": "1.0.2", + "resolved": "https://registry.npmjs.org/on-headers/-/on-headers-1.0.2.tgz", + "integrity": "sha512-pZAE+FJLoyITytdqK0U5s+FIpjN0JP3OzFi/u8Rx+EV5/W+JTWGXG8xFzevE7AjBfDqHv/8vL8qQsIhHnqRkrA==", + "engines": { + "node": ">= 0.8" + } + }, + "node_modules/once": { + "version": "1.4.0", + "resolved": "https://registry.npmjs.org/once/-/once-1.4.0.tgz", + "integrity": "sha1-WDsap3WWHUsROsF9nFC6753Xa9E=", + "dependencies": { + "wrappy": "1" + } + }, + "node_modules/open": { + "version": "6.4.0", + "resolved": "https://registry.npmjs.org/open/-/open-6.4.0.tgz", + "integrity": "sha512-IFenVPgF70fSm1keSd2iDBIDIBZkroLeuffXq+wKTzTJlBpesFWojV9lb8mzOfaAzM1sr7HQHuO0vtV0zYekGg==", + "dependencies": { + "is-wsl": "^1.1.0" + }, + "engines": { + "node": ">=8" + } + }, + "node_modules/parseurl": { + "version": "1.3.3", + "resolved": "https://registry.npmjs.org/parseurl/-/parseurl-1.3.3.tgz", + "integrity": "sha512-CiyeOxFT/JZyN5m0z9PfXw4SCBJ6Sygz1Dpl0wqjlhDEGGBP1GnsUVEL0p63hoG1fcj3fHynXi9NYO4nWOL+qQ==", + "engines": { + "node": ">= 0.8" + } + }, + "node_modules/pascal-case": { + "version": "3.1.1", + "resolved": "https://registry.npmjs.org/pascal-case/-/pascal-case-3.1.1.tgz", + "integrity": "sha512-XIeHKqIrsquVTQL2crjq3NfJUxmdLasn3TYOU0VBM+UX2a6ztAWBlJQBePLGY7VHW8+2dRadeIPK5+KImwTxQA==", + "dependencies": { + "no-case": "^3.0.3", + "tslib": "^1.10.0" + } + }, + "node_modules/path-is-absolute": { + "version": "1.0.1", + "resolved": "https://registry.npmjs.org/path-is-absolute/-/path-is-absolute-1.0.1.tgz", + "integrity": "sha1-F0uSaHNVNP+8es5r9TpanhtcX18=", + "engines": { + "node": ">=0.10.0" + } + }, + "node_modules/path-key": { + "version": "3.1.1", + "resolved": "https://registry.npmjs.org/path-key/-/path-key-3.1.1.tgz", + "integrity": "sha512-ojmeN0qd+y0jszEtoY48r0Peq5dwMEkIlCOu6Q5f41lfkswXuKtYrhgoTpLnyIcHm24Uhqx+5Tqm2InSwLhE6Q==", + "engines": { + "node": ">=8" + } + }, + "node_modules/path-parse": { + "version": "1.0.7", + "resolved": "https://registry.npmjs.org/path-parse/-/path-parse-1.0.7.tgz", + "integrity": "sha512-LDJzPVEEEPR+y48z93A0Ed0yXb8pAByGWo/k5YYdYgpY2/2EsOsksJrq7lOHxryrVOn1ejG6oAp8ahvOIQD8sw==" + }, + "node_modules/picomatch": { + "version": "2.2.2", + "resolved": "https://registry.npmjs.org/picomatch/-/picomatch-2.2.2.tgz", + "integrity": "sha512-q0M/9eZHzmr0AulXyPwNfZjtwZ/RBZlbN3K3CErVrk50T2ASYI7Bye0EvekFY3IP1Nt2DHu0re+V2ZHIpMkuWg==", + "engines": { + "node": ">=8.6" + }, + "funding": { + "url": "https://github.com/sponsors/jonschlinkert" + } + }, + "node_modules/pretty-hrtime": { + "version": "1.0.3", + "resolved": "https://registry.npmjs.org/pretty-hrtime/-/pretty-hrtime-1.0.3.tgz", + "integrity": "sha1-t+PqQkNaTJsnWdmeDyAesZWALuE=", + "engines": { + "node": ">= 0.8" + } + }, + "node_modules/prismjs": { + "version": "1.27.0", + "resolved": "https://registry.npmjs.org/prismjs/-/prismjs-1.27.0.tgz", + "integrity": "sha512-t13BGPUlFDR7wRB5kQDG4jjl7XeuH6jbJGt11JHPL96qwsEHNX2+68tFXqc1/k+/jALsbSWJKUOT/hcYAZ5LkA==", + "engines": { + "node": ">=6" + } + }, + "node_modules/range-parser": { + "version": "1.2.1", + "resolved": "https://registry.npmjs.org/range-parser/-/range-parser-1.2.1.tgz", + "integrity": "sha512-Hrgsx+orqoygnmhFbKaHE6c296J+HTAQXoxEF6gNupROmmGJRoyzfG3ccAveqCBrwr/2yxQ5BVd/GTl5agOwSg==", + "engines": { + "node": ">= 0.6" + } + }, + "node_modules/readdirp": { + "version": "3.4.0", + "resolved": "https://registry.npmjs.org/readdirp/-/readdirp-3.4.0.tgz", + "integrity": "sha512-0xe001vZBnJEK+uKcj8qOhyAKPzIT+gStxWr3LCB0DwcXR5NZJ3IaC+yGnHCYzB/S7ov3m3EEbZI2zeNvX+hGQ==", + "dependencies": { + "picomatch": "^2.2.1" + }, + "engines": { + "node": ">=8.10.0" + } + }, + "node_modules/resolve": { + "version": "1.22.0", + "resolved": "https://registry.npmjs.org/resolve/-/resolve-1.22.0.tgz", + "integrity": "sha512-Hhtrw0nLeSrFQ7phPp4OOcVjLPIeMnRlr5mcnVuMe7M/7eBn98A3hmFRLoFo3DLZkivSYwhRUJTyPyWAk56WLw==", + "dependencies": { + "is-core-module": "^2.8.1", + "path-parse": "^1.0.7", + "supports-preserve-symlinks-flag": "^1.0.0" + }, + "bin": { + "resolve": "bin/resolve" + }, + "funding": { + "url": "https://github.com/sponsors/ljharb" + } + }, + "node_modules/resolve-url": { + "version": "0.2.1", + "resolved": "https://registry.npmjs.org/resolve-url/-/resolve-url-0.2.1.tgz", + "integrity": "sha1-LGN/53yJOv0qZj/iGqkIAGjiBSo=", + "deprecated": "https://github.com/lydell/resolve-url#deprecated" + }, + "node_modules/rfdc": { + "version": "1.3.0", + "resolved": "https://registry.npmjs.org/rfdc/-/rfdc-1.3.0.tgz", + "integrity": "sha512-V2hovdzFbOi77/WajaSMXk2OLm+xNIeQdMMuB7icj7bk6zi2F8GGAxigcnDFpJHbNyNcgyJDiP+8nOrY5cZGrA==" + }, + "node_modules/safe-buffer": { + "version": "5.1.2", + "resolved": "https://registry.npmjs.org/safe-buffer/-/safe-buffer-5.1.2.tgz", + "integrity": "sha512-Gd2UZBJDkXlY7GbJxfsE8/nvKkUEU1G38c1siN6QP6a9PT9MmHB8GnpscSmMJSoF8LOIrt8ud/wPtojys4G6+g==" + }, + "node_modules/safer-buffer": { + "version": "2.1.2", + "resolved": "https://registry.npmjs.org/safer-buffer/-/safer-buffer-2.1.2.tgz", + "integrity": "sha512-YZo3K82SD7Riyi0E1EQPojLz7kpepnSQI9IyPbHHg1XXXevb5dJI7tpyN2ADxGcQbHG7vcyRHk0cbwqcQriUtg==" + }, + "node_modules/sax": { + "version": "0.5.8", + "resolved": "https://registry.npmjs.org/sax/-/sax-0.5.8.tgz", + "integrity": "sha1-1HLbIo6zMcJQaw6MFVJK25OdEsE=" + }, + "node_modules/semver": { + "version": "5.7.1", + "resolved": "https://registry.npmjs.org/semver/-/semver-5.7.1.tgz", + "integrity": "sha512-sauaDf/PZdVgrLTNYHRtpXa1iRiKcaebiKQ1BJdpQlWH2lCvexQdX55snPFyK7QzpudqbCI0qXFfOasHdyNDGQ==", + "bin": { + "semver": "bin/semver" + } + }, + "node_modules/send": { + "version": "0.17.1", + "resolved": "https://registry.npmjs.org/send/-/send-0.17.1.tgz", + "integrity": "sha512-BsVKsiGcQMFwT8UxypobUKyv7irCNRHk1T0G680vk88yf6LBByGcZJOTJCrTP2xVN6yI+XjPJcNuE3V4fT9sAg==", + "dependencies": { + "debug": "2.6.9", + "depd": "~1.1.2", + "destroy": "~1.0.4", + "encodeurl": "~1.0.2", + "escape-html": "~1.0.3", + "etag": "~1.8.1", + "fresh": "0.5.2", + "http-errors": "~1.7.2", + "mime": "1.6.0", + "ms": "2.1.1", + "on-finished": "~2.3.0", + "range-parser": "~1.2.1", + "statuses": "~1.5.0" + }, + "engines": { + "node": ">= 0.8.0" + } + }, + "node_modules/send/node_modules/debug": { + "version": "2.6.9", + "resolved": "https://registry.npmjs.org/debug/-/debug-2.6.9.tgz", + "integrity": "sha512-bC7ElrdJaJnPbAP+1EotYvqZsb3ecl5wi6Bfi6BJTUcNowp6cvspg0jXznRTKDjm/E7AdgFBVeAPVMNcKGsHMA==", + "dependencies": { + "ms": "2.0.0" + } + }, + "node_modules/send/node_modules/debug/node_modules/ms": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/ms/-/ms-2.0.0.tgz", + "integrity": "sha1-VgiurfwAvmwpAd9fmGF4jeDVl8g=" + }, + "node_modules/send/node_modules/depd": { + "version": "1.1.2", + "resolved": "https://registry.npmjs.org/depd/-/depd-1.1.2.tgz", + "integrity": "sha1-m81S4UwJd2PnSbJ0xDRu0uVgtak=", + "engines": { + "node": ">= 0.6" + } + }, + "node_modules/send/node_modules/mime": { + "version": "1.6.0", + "resolved": "https://registry.npmjs.org/mime/-/mime-1.6.0.tgz", + "integrity": "sha512-x0Vn8spI+wuJ1O6S7gnbaQg8Pxh4NNHb7KSINmEWKiPE4RKOplvijn+NkmYmmRgP68mc70j2EbeTFRsrswaQeg==", + "bin": { + "mime": "cli.js" + }, + "engines": { + "node": ">=4" + } + }, + "node_modules/send/node_modules/ms": { + "version": "2.1.1", + "resolved": "https://registry.npmjs.org/ms/-/ms-2.1.1.tgz", + "integrity": "sha512-tgp+dl5cGk28utYktBsrFqA7HKgrhgPsg6Z/EfhWI4gl1Hwq8B/GmY/0oXZ6nF8hDVesS/FpnYaD/kOWhYQvyg==" + }, + "node_modules/serve-static": { + "version": "1.14.1", + "resolved": "https://registry.npmjs.org/serve-static/-/serve-static-1.14.1.tgz", + "integrity": "sha512-JMrvUwE54emCYWlTI+hGrGv5I8dEwmco/00EvkzIIsR7MqrHonbD9pO2MOfFnpFntl7ecpZs+3mW+XbQZu9QCg==", + "dependencies": { + "encodeurl": "~1.0.2", + "escape-html": "~1.0.3", + "parseurl": "~1.3.3", + "send": "0.17.1" + }, + "engines": { + "node": ">= 0.8.0" + } + }, + "node_modules/setprototypeof": { + "version": "1.1.1", + "resolved": "https://registry.npmjs.org/setprototypeof/-/setprototypeof-1.1.1.tgz", + "integrity": "sha512-JvdAWfbXeIGaZ9cILp38HntZSFSo3mWg6xGcJJsd+d4aRMOqauag1C63dJfDw7OaMYwEbHMOxEZ1lqVRYP2OAw==" + }, + "node_modules/shebang-command": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/shebang-command/-/shebang-command-2.0.0.tgz", + "integrity": "sha512-kHxr2zZpYtdmrN1qDjrrX/Z1rR1kG8Dx+gkpK1G4eXmvXswmcE1hTWBWYUzlraYw1/yZp6YuDY77YtvbN0dmDA==", + "dependencies": { + "shebang-regex": "^3.0.0" + }, + "engines": { + "node": ">=8" + } + }, + "node_modules/shebang-regex": { + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/shebang-regex/-/shebang-regex-3.0.0.tgz", + "integrity": "sha512-7++dFhtcx3353uBaq8DDR4NuxBetBzC7ZQOhmTQInHEd6bSrXdiEyzCvG07Z44UYdLShWUyXt5M/yhz8ekcb1A==", + "engines": { + "node": ">=8" + } + }, + "node_modules/source-map-resolve": { + "version": "0.5.3", + "resolved": "https://registry.npmjs.org/source-map-resolve/-/source-map-resolve-0.5.3.tgz", + "integrity": "sha512-Htz+RnsXWk5+P2slx5Jh3Q66vhQj1Cllm0zvnaY98+NFx+Dv2CF/f5O/t8x+KaNdrdIAsruNzoh/KpialbqAnw==", + "deprecated": "See https://github.com/lydell/source-map-resolve#deprecated", + "dependencies": { + "atob": "^2.1.2", + "decode-uri-component": "^0.2.0", + "resolve-url": "^0.2.1", + "source-map-url": "^0.4.0", + "urix": "^0.1.0" + } + }, + "node_modules/source-map-url": { + "version": "0.4.0", + "resolved": "https://registry.npmjs.org/source-map-url/-/source-map-url-0.4.0.tgz", + "integrity": "sha1-PpNdfd1zYxuXZZlW1VEo6HtQhKM=", + "deprecated": "See https://github.com/lydell/source-map-url#deprecated" + }, + "node_modules/sprintf-js": { + "version": "1.0.3", + "resolved": "https://registry.npmjs.org/sprintf-js/-/sprintf-js-1.0.3.tgz", + "integrity": "sha1-BOaSb2YolTVPPdAVIDYzuFcpfiw=" + }, + "node_modules/statuses": { + "version": "1.5.0", + "resolved": "https://registry.npmjs.org/statuses/-/statuses-1.5.0.tgz", + "integrity": "sha1-Fhx9rBd2Wf2YEfQ3cfqZOBR4Yow=", + "engines": { + "node": ">= 0.6" + } + }, + "node_modules/strip-ansi": { + "version": "6.0.1", + "resolved": "https://registry.npmjs.org/strip-ansi/-/strip-ansi-6.0.1.tgz", + "integrity": "sha512-Y38VPSHcqkFrCpFnQ9vuSXmquuv5oXOKpGeT6aGrr3o3Gc9AlVa6JBfUSOCnbxGGZF+/0ooI7KrPuUSztUdU5A==", + "dependencies": { + "ansi-regex": "^5.0.1" + }, + "engines": { + "node": ">=8" + } + }, + "node_modules/strip-indent": { + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/strip-indent/-/strip-indent-3.0.0.tgz", + "integrity": "sha512-laJTa3Jb+VQpaC6DseHhF7dXVqHTfJPCRDaEbid/drOhgitgYku/letMUqOXFoWV0zIIUbjpdH2t+tYj4bQMRQ==", + "dependencies": { + "min-indent": "^1.0.0" + }, + "engines": { + "node": ">=8" + } + }, + "node_modules/striptags": { + "version": "3.2.0", + "resolved": "https://registry.npmjs.org/striptags/-/striptags-3.2.0.tgz", + "integrity": "sha512-g45ZOGzHDMe2bdYMdIvdAfCQkCTDMGBazSw1ypMowwGIee7ZQ5dU0rBJ8Jqgl+jAKIv4dbeE1jscZq9wid1Tkw==" + }, + "node_modules/stylus": { + "version": "0.54.7", + "resolved": "https://registry.npmjs.org/stylus/-/stylus-0.54.7.tgz", + "integrity": "sha512-Yw3WMTzVwevT6ZTrLCYNHAFmanMxdylelL3hkWNgPMeTCpMwpV3nXjpOHuBXtFv7aiO2xRuQS6OoAdgkNcSNug==", + "dependencies": { + "css-parse": "~2.0.0", + "debug": "~3.1.0", + "glob": "^7.1.3", + "mkdirp": "~0.5.x", + "safer-buffer": "^2.1.2", + "sax": "~1.2.4", + "semver": "^6.0.0", + "source-map": "^0.7.3" + }, + "bin": { + "stylus": "bin/stylus" + }, + "engines": { + "node": "*" + } + }, + "node_modules/stylus/node_modules/css-parse": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/css-parse/-/css-parse-2.0.0.tgz", + "integrity": "sha1-pGjuZnwW2BzPBcWMONKpfHgNv9Q=", + "dependencies": { + "css": "^2.0.0" + } + }, + "node_modules/stylus/node_modules/debug": { + "version": "3.1.0", + "resolved": "https://registry.npmjs.org/debug/-/debug-3.1.0.tgz", + "integrity": "sha512-OX8XqP7/1a9cqkxYw2yXss15f26NKWBpDXQd0/uK/KPqdQhxbPa994hnzjcE2VqQpDslf55723cKPUOGSmMY3g==", + "dependencies": { + "ms": "2.0.0" + } + }, + "node_modules/stylus/node_modules/glob": { + "version": "7.1.6", + "resolved": "https://registry.npmjs.org/glob/-/glob-7.1.6.tgz", + "integrity": "sha512-LwaxwyZ72Lk7vZINtNNrywX0ZuLyStrdDtabefZKAY5ZGJhVtgdznluResxNmPitE0SAO+O26sWTHeKSI2wMBA==", + "dependencies": { + "fs.realpath": "^1.0.0", + "inflight": "^1.0.4", + "inherits": "2", + "minimatch": "^3.0.4", + "once": "^1.3.0", + "path-is-absolute": "^1.0.0" + }, + "engines": { + "node": "*" + }, + "funding": { + "url": "https://github.com/sponsors/isaacs" + } + }, + "node_modules/stylus/node_modules/ms": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/ms/-/ms-2.0.0.tgz", + "integrity": "sha1-VgiurfwAvmwpAd9fmGF4jeDVl8g=" + }, + "node_modules/stylus/node_modules/sax": { + "version": "1.2.4", + "resolved": "https://registry.npmjs.org/sax/-/sax-1.2.4.tgz", + "integrity": "sha512-NqVDv9TpANUjFm0N8uM5GxL36UgKi9/atZw+x7YFnQ8ckwFGKrl4xX4yWtrey3UJm5nP1kUbnYgLopqWNSRhWw==" + }, + "node_modules/stylus/node_modules/semver": { + "version": "6.3.0", + "resolved": "https://registry.npmjs.org/semver/-/semver-6.3.0.tgz", + "integrity": "sha512-b39TBaTSfV6yBrapU89p5fKekE2m/NwnDocOVruQFS1/veMgdzuPcnOM34M6CwxW8jH/lxEa5rBoDeUwu5HHTw==", + "bin": { + "semver": "bin/semver.js" + } + }, + "node_modules/stylus/node_modules/source-map": { + "version": "0.7.3", + "resolved": "https://registry.npmjs.org/source-map/-/source-map-0.7.3.tgz", + "integrity": "sha512-CkCj6giN3S+n9qrYiBTX5gystlENnRW5jZeNLHpe6aue+SrHcG5VYwujhW9s4dY31mEGsxBDrHR6oI69fTXsaQ==", + "engines": { + "node": ">= 8" + } + }, + "node_modules/supports-color": { + "version": "7.2.0", + "resolved": "https://registry.npmjs.org/supports-color/-/supports-color-7.2.0.tgz", + "integrity": "sha512-qpCAvRl9stuOHveKsn7HncJRvv501qIacKzQlO/+Lwxc9+0q2wLyv4Dfvt80/DPn2pqOBsJdDiogXGR9+OvwRw==", + "dependencies": { + "has-flag": "^4.0.0" + }, + "engines": { + "node": ">=8" + } + }, + "node_modules/supports-preserve-symlinks-flag": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/supports-preserve-symlinks-flag/-/supports-preserve-symlinks-flag-1.0.0.tgz", + "integrity": "sha512-ot0WnXS9fgdkgIcePe6RHNk1WA8+muPa6cSjeR3V8K27q9BB1rTE3R1p7Hv0z1ZyAc8s6Vvv8DIyWf681MAt0w==", + "engines": { + "node": ">= 0.4" + }, + "funding": { + "url": "https://github.com/sponsors/ljharb" + } + }, + "node_modules/text-table": { + "version": "0.2.0", + "resolved": "https://registry.npmjs.org/text-table/-/text-table-0.2.0.tgz", + "integrity": "sha1-f17oI66AUgfACvLfSoTsP8+lcLQ=" + }, + "node_modules/through": { + "version": "2.3.8", + "resolved": "https://registry.npmjs.org/through/-/through-2.3.8.tgz", + "integrity": "sha1-DdTJ/6q8NXlgsbckEV1+Doai4fU=" + }, + "node_modules/tildify": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/tildify/-/tildify-2.0.0.tgz", + "integrity": "sha512-Cc+OraorugtXNfs50hU9KS369rFXCfgGLpfCfvlc+Ud5u6VWmUQsOAa9HbTvheQdYnrdJqqv1e5oIqXppMYnSw==", + "engines": { + "node": ">=8" + } + }, + "node_modules/titlecase": { + "version": "1.1.3", + "resolved": "https://registry.npmjs.org/titlecase/-/titlecase-1.1.3.tgz", + "integrity": "sha512-pQX4oiemzjBEELPqgK4WE+q0yhAqjp/yzusGtlSJsOuiDys0RQxggepYmo0BuegIDppYS3b3cpdegRwkpyN3hw==", + "bin": { + "to-title-case": "bin.js" + } + }, + "node_modules/to-regex-range": { + "version": "5.0.1", + "resolved": "https://registry.npmjs.org/to-regex-range/-/to-regex-range-5.0.1.tgz", + "integrity": "sha512-65P7iz6X5yEr1cwcgvQxbbIw7Uk3gOy5dIdtZ4rDveLqhrdJP+Li/Hx6tyK0NEb+2GCyneCMJiGqrADCSNk8sQ==", + "dependencies": { + "is-number": "^7.0.0" + }, + "engines": { + "node": ">=8.0" + } + }, + "node_modules/toidentifier": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/toidentifier/-/toidentifier-1.0.0.tgz", + "integrity": "sha512-yaOH/Pk/VEhBWWTlhI+qXxDFXlejDGcQipMlyxda9nthulaxLZUNcUqFxokp0vcYnvteJln5FNQDRrxj3YcbVw==", + "engines": { + "node": ">=0.6" + } + }, + "node_modules/tslib": { + "version": "1.13.0", + "resolved": "https://registry.npmjs.org/tslib/-/tslib-1.13.0.tgz", + "integrity": "sha512-i/6DQjL8Xf3be4K/E6Wgpekn5Qasl1usyw++dAA35Ue5orEn65VIxOA+YvNNl9HV3qv70T7CNwjODHZrLwvd1Q==" + }, + "node_modules/uc.micro": { + "version": "1.0.6", + "resolved": "https://registry.npmjs.org/uc.micro/-/uc.micro-1.0.6.tgz", + "integrity": "sha512-8Y75pvTYkLJW2hWQHXxoqRgV7qb9B+9vFEtidML+7koHUFapnVJAZ6cKs+Qjz5Aw3aZWHMC6u0wJE3At+nSGwA==" + }, + "node_modules/unpipe": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/unpipe/-/unpipe-1.0.0.tgz", + "integrity": "sha1-sr9O6FFKrmFltIF4KdIbLvSZBOw=", + "engines": { + "node": ">= 0.8" + } + }, + "node_modules/upper-case": { + "version": "1.1.3", + "resolved": "https://registry.npmjs.org/upper-case/-/upper-case-1.1.3.tgz", + "integrity": "sha1-9rRQHC7EzdJrp4vnIilh3ndiFZg=" + }, + "node_modules/urix": { + "version": "0.1.0", + "resolved": "https://registry.npmjs.org/urix/-/urix-0.1.0.tgz", + "integrity": "sha1-2pN/emLiH+wf0Y1Js1wpNQZ6bHI=", + "deprecated": "Please see https://github.com/lydell/urix#deprecated" + }, + "node_modules/utils-merge": { + "version": "1.0.1", + "resolved": "https://registry.npmjs.org/utils-merge/-/utils-merge-1.0.1.tgz", + "integrity": "sha1-n5VxD1CiZ5R7LMwSR0HBAoQn5xM=", + "engines": { + "node": ">= 0.4.0" + } + }, + "node_modules/vary": { + "version": "1.1.2", + "resolved": "https://registry.npmjs.org/vary/-/vary-1.1.2.tgz", + "integrity": "sha1-IpnwLG3tMNSllhsLn3RSShj2NPw=", + "engines": { + "node": ">= 0.8" + } + }, + "node_modules/warehouse": { + "version": "4.0.0", + "resolved": "https://registry.npmjs.org/warehouse/-/warehouse-4.0.0.tgz", + "integrity": "sha512-9i6/JiHzjnyene5Pvvl2D2Pd18no129YGy0C0P7x18iTz/SeO9nOBioR64XoCy5xKwBKQtl3MU361qpr0V9uXw==", + "dependencies": { + "bluebird": "^3.2.2", + "cuid": "^2.1.4", + "graceful-fs": "^4.1.3", + "is-plain-object": "^3.0.0", + "JSONStream": "^1.0.7", + "rfdc": "^1.1.4" + }, + "engines": { + "node": ">=10.13.0" + } + }, + "node_modules/which": { + "version": "2.0.2", + "resolved": "https://registry.npmjs.org/which/-/which-2.0.2.tgz", + "integrity": "sha512-BLI3Tl1TW3Pvl70l3yq3Y64i+awpwXqsGBYWkkqMtnbXgrMD+yj7rhW0kuEDxzJaYXGjEW5ogapKNMEKNMjibA==", + "dependencies": { + "isexe": "^2.0.0" + }, + "bin": { + "node-which": "bin/node-which" + }, + "engines": { + "node": ">= 8" + } + }, + "node_modules/wrappy": { + "version": "1.0.2", + "resolved": "https://registry.npmjs.org/wrappy/-/wrappy-1.0.2.tgz", + "integrity": "sha1-tSQ9jz7BqjXxNkYFvA0QNuMKtp8=" + } + }, + "dependencies": { + "a-sync-waterfall": { + "version": "1.0.1", + "resolved": "https://registry.npmjs.org/a-sync-waterfall/-/a-sync-waterfall-1.0.1.tgz", + "integrity": "sha512-RYTOHHdWipFUliRFMCS4X2Yn2X8M87V/OpSqWzKKOGhzqyUxzyVmhHDH9sAvG+ZuQf/TAOFsLCpMw09I1ufUnA==" + }, + "abbrev": { + "version": "1.1.1", + "resolved": "https://registry.npmjs.org/abbrev/-/abbrev-1.1.1.tgz", + "integrity": "sha512-nne9/IiQ/hzIhY6pdDnbBtz7DjPTKrY00P/zvPSm5pOFkl6xuGrGnXn/VtTNNfNtAfZ9/1RtehkszU9qcTii0Q==" + }, + "accepts": { + "version": "1.3.7", + "resolved": "https://registry.npmjs.org/accepts/-/accepts-1.3.7.tgz", + "integrity": "sha512-Il80Qs2WjYlJIBNzNkK6KYqlVMTbZLXgHx2oT0pU/fjRHyEp+PEfEPY0R3WCwAGVOtauxh1hOxNgIf5bv7dQpA==", + "requires": { + "mime-types": "~2.1.24", + "negotiator": "0.6.2" + } + }, + "amdefine": { + "version": "1.0.1", + "resolved": "https://registry.npmjs.org/amdefine/-/amdefine-1.0.1.tgz", + "integrity": "sha1-SlKCrBZHKek2Gbz9OtFR+BfOkfU=" + }, + "ansi-regex": { + "version": "5.0.1", + "resolved": "https://registry.npmjs.org/ansi-regex/-/ansi-regex-5.0.1.tgz", + "integrity": "sha512-quJQXlTSUGL2LH9SUXo8VwsY4soanhgo6LNSm84E1LBcE8s3O0wpdiRzyR9z/ZZJMlMWv37qOOb9pdJlMUEKFQ==" + }, + "ansi-styles": { + "version": "4.3.0", + "resolved": "https://registry.npmjs.org/ansi-styles/-/ansi-styles-4.3.0.tgz", + "integrity": "sha512-zbB9rCJAT1rbjiVDb2hqKFHNYLxgtk8NURxZ3IZwD3F6NtxbXZQCnnSi1Lkx+IDohdPlFp222wVALIheZJQSEg==", + "requires": { + "color-convert": "^2.0.1" + } + }, + "anymatch": { + "version": "3.1.1", + "resolved": "https://registry.npmjs.org/anymatch/-/anymatch-3.1.1.tgz", + "integrity": "sha512-mM8522psRCqzV+6LhomX5wgp25YVibjh8Wj23I5RPkPppSVSjyKD2A2mBJmWGa+KN7f2D6LNh9jkBCeyLktzjg==", + "requires": { + "normalize-path": "^3.0.0", + "picomatch": "^2.0.4" + } + }, + "archy": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/archy/-/archy-1.0.0.tgz", + "integrity": "sha1-+cjBN1fMHde8N5rHeyxipcKGjEA=" + }, + "argparse": { + "version": "1.0.10", + "resolved": "https://registry.npmjs.org/argparse/-/argparse-1.0.10.tgz", + "integrity": "sha512-o5Roy6tNG4SL/FOkCAN6RzjiakZS25RLYFrcMttJqbdd8BWrnA+fGz57iN5Pb06pvBGvl5gQ0B48dJlslXvoTg==", + "requires": { + "sprintf-js": "~1.0.2" + } + }, + "asap": { + "version": "2.0.6", + "resolved": "https://registry.npmjs.org/asap/-/asap-2.0.6.tgz", + "integrity": "sha1-5QNHYR1+aQlDIIu9r+vLwvuGbUY=" + }, + "atob": { + "version": "2.1.2", + "resolved": "https://registry.npmjs.org/atob/-/atob-2.1.2.tgz", + "integrity": "sha512-Wm6ukoaOGJi/73p/cl2GvLjTI5JM1k/O14isD73YML8StrH/7/lRFgmg8nICZgD3bZZvjwCGxtMOD3wWNAu8cg==" + }, + "balanced-match": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/balanced-match/-/balanced-match-1.0.0.tgz", + "integrity": "sha1-ibTRmasr7kneFk6gK4nORi1xt2c=" + }, + "basic-auth": { + "version": "2.0.1", + "resolved": "https://registry.npmjs.org/basic-auth/-/basic-auth-2.0.1.tgz", + "integrity": "sha512-NF+epuEdnUYVlGuhaxbbq+dvJttwLnGY+YixlXlME5KpQ5W3CnXA5cVTneY3SPbPDRkcjMbifrwmFYcClgOZeg==", + "requires": { + "safe-buffer": "5.1.2" + } + }, + "binary-extensions": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/binary-extensions/-/binary-extensions-2.0.0.tgz", + "integrity": "sha512-Phlt0plgpIIBOGTT/ehfFnbNlfsDEiqmzE2KRXoX1bLIlir4X/MR+zSyBEkL05ffWgnRSf/DXv+WrUAVr93/ow==" + }, + "bluebird": { + "version": "3.7.2", + "resolved": "https://registry.npmjs.org/bluebird/-/bluebird-3.7.2.tgz", + "integrity": "sha512-XpNj6GDQzdfW+r2Wnn7xiSAd7TM3jzkxGXBGTtWKuSXv1xUV+azxAm8jdWZN06QTQk+2N2XB9jRDkvbmQmcRtg==" + }, + "brace-expansion": { + "version": "1.1.11", + "resolved": "https://registry.npmjs.org/brace-expansion/-/brace-expansion-1.1.11.tgz", + "integrity": "sha512-iCuPHDFgrHX7H2vEI/5xpz07zSHB00TpugqhmYtVmMO6518mCuRMoOYFldEBl0g187ufozdaHgWKcYFb61qGiA==", + "requires": { + "balanced-match": "^1.0.0", + "concat-map": "0.0.1" + } + }, + "braces": { + "version": "3.0.2", + "resolved": "https://registry.npmjs.org/braces/-/braces-3.0.2.tgz", + "integrity": "sha512-b8um+L1RzM3WDSzvhm6gIz1yfTbBt6YTlcEKAvsmqCZZFw46z626lVj9j1yEPW33H5H+lBQpZMP1k8l+78Ha0A==", + "requires": { + "fill-range": "^7.0.1" + } + }, + "bytes": { + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/bytes/-/bytes-3.0.0.tgz", + "integrity": "sha1-0ygVQE1olpn4Wk6k+odV3ROpYEg=" + }, + "camel-case": { + "version": "4.1.1", + "resolved": "https://registry.npmjs.org/camel-case/-/camel-case-4.1.1.tgz", + "integrity": "sha512-7fa2WcG4fYFkclIvEmxBbTvmibwF2/agfEBc6q3lOpVu0A13ltLsA+Hr/8Hp6kp5f+G7hKi6t8lys6XxP+1K6Q==", + "requires": { + "pascal-case": "^3.1.1", + "tslib": "^1.10.0" + } + }, + "chalk": { + "version": "4.1.0", + "resolved": "https://registry.npmjs.org/chalk/-/chalk-4.1.0.tgz", + "integrity": "sha512-qwx12AxXe2Q5xQ43Ac//I6v5aXTipYrSESdOgzrN+9XjgEpyjpKuvSGaN4qE93f7TQTlerQQ8S+EQ0EyDoVL1A==", + "requires": { + "ansi-styles": "^4.1.0", + "supports-color": "^7.1.0" + } + }, + "chokidar": { + "version": "3.4.0", + "resolved": "https://registry.npmjs.org/chokidar/-/chokidar-3.4.0.tgz", + "integrity": "sha512-aXAaho2VJtisB/1fg1+3nlLJqGOuewTzQpd/Tz0yTg2R0e4IGtshYvtjowyEumcBv2z+y4+kc75Mz7j5xJskcQ==", + "requires": { + "anymatch": "~3.1.1", + "braces": "~3.0.2", + "fsevents": "~2.1.2", + "glob-parent": "~5.1.0", + "is-binary-path": "~2.1.0", + "is-glob": "~4.0.1", + "normalize-path": "~3.0.0", + "readdirp": "~3.4.0" + } + }, + "color-convert": { + "version": "2.0.1", + "resolved": "https://registry.npmjs.org/color-convert/-/color-convert-2.0.1.tgz", + "integrity": "sha512-RRECPsj7iu/xb5oKYcsFHSppFNnsj/52OVTRKb4zP5onXwVF3zVmmToNcOfGC+CRDpfK/U584fMg38ZHCaElKQ==", + "requires": { + "color-name": "~1.1.4" + } + }, + "color-name": { + "version": "1.1.4", + "resolved": "https://registry.npmjs.org/color-name/-/color-name-1.1.4.tgz", + "integrity": "sha512-dOy+3AuW3a2wNbZHIuMZpTcgjGuLU/uBL/ubcZF9OXbDo8ff4O8yVp5Bf0efS8uEoYo5q4Fx7dY9OgQGXgAsQA==" + }, + "command-exists": { + "version": "1.2.9", + "resolved": "https://registry.npmjs.org/command-exists/-/command-exists-1.2.9.tgz", + "integrity": "sha512-LTQ/SGc+s0Xc0Fu5WaKnR0YiygZkm9eKFvyS+fRsU7/ZWFF8ykFM6Pc9aCVf1+xasOOZpO3BAVgVrKvsqKHV7w==" + }, + "commander": { + "version": "3.0.2", + "resolved": "https://registry.npmjs.org/commander/-/commander-3.0.2.tgz", + "integrity": "sha512-Gar0ASD4BDyKC4hl4DwHqDrmvjoxWKZigVnAbn5H1owvm4CxCPdb0HQDehwNYMJpla5+M2tPmPARzhtYuwpHow==" + }, + "compressible": { + "version": "2.0.18", + "resolved": "https://registry.npmjs.org/compressible/-/compressible-2.0.18.tgz", + "integrity": "sha512-AF3r7P5dWxL8MxyITRMlORQNaOA2IkAFaTr4k7BUumjPtRpGDTZpl0Pb1XCO6JeDCBdp126Cgs9sMxqSjgYyRg==", + "requires": { + "mime-db": ">= 1.43.0 < 2" + } + }, + "compression": { + "version": "1.7.4", + "resolved": "https://registry.npmjs.org/compression/-/compression-1.7.4.tgz", + "integrity": "sha512-jaSIDzP9pZVS4ZfQ+TzvtiWhdpFhE2RDHz8QJkpX9SIpLq88VueF5jJw6t+6CUQcAoA6t+x89MLrWAqpfDE8iQ==", + "requires": { + "accepts": "~1.3.5", + "bytes": "3.0.0", + "compressible": "~2.0.16", + "debug": "2.6.9", + "on-headers": "~1.0.2", + "safe-buffer": "5.1.2", + "vary": "~1.1.2" + }, + "dependencies": { + "debug": { + "version": "2.6.9", + "resolved": "https://registry.npmjs.org/debug/-/debug-2.6.9.tgz", + "integrity": "sha512-bC7ElrdJaJnPbAP+1EotYvqZsb3ecl5wi6Bfi6BJTUcNowp6cvspg0jXznRTKDjm/E7AdgFBVeAPVMNcKGsHMA==", + "requires": { + "ms": "2.0.0" + } + }, + "ms": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/ms/-/ms-2.0.0.tgz", + "integrity": "sha1-VgiurfwAvmwpAd9fmGF4jeDVl8g=" + } + } + }, + "concat-map": { + "version": "0.0.1", + "resolved": "https://registry.npmjs.org/concat-map/-/concat-map-0.0.1.tgz", + "integrity": "sha1-2Klr13/Wjfd5OnMDajug1UBdR3s=" + }, + "connect": { + "version": "3.7.0", + "resolved": "https://registry.npmjs.org/connect/-/connect-3.7.0.tgz", + "integrity": "sha512-ZqRXc+tZukToSNmh5C2iWMSoV3X1YUcPbqEM4DkEG5tNQXrQUZCNVGGv3IuicnkMtPfGf3Xtp8WCXs295iQ1pQ==", + "requires": { + "debug": "2.6.9", + "finalhandler": "1.1.2", + "parseurl": "~1.3.3", + "utils-merge": "1.0.1" + }, + "dependencies": { + "debug": { + "version": "2.6.9", + "resolved": "https://registry.npmjs.org/debug/-/debug-2.6.9.tgz", + "integrity": "sha512-bC7ElrdJaJnPbAP+1EotYvqZsb3ecl5wi6Bfi6BJTUcNowp6cvspg0jXznRTKDjm/E7AdgFBVeAPVMNcKGsHMA==", + "requires": { + "ms": "2.0.0" + } + }, + "ms": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/ms/-/ms-2.0.0.tgz", + "integrity": "sha1-VgiurfwAvmwpAd9fmGF4jeDVl8g=" + } + } + }, + "cross-spawn": { + "version": "7.0.2", + "resolved": "https://registry.npmjs.org/cross-spawn/-/cross-spawn-7.0.2.tgz", + "integrity": "sha512-PD6G8QG3S4FK/XCGFbEQrDqO2AnMMsy0meR7lerlIOHAAbkuavGU/pOqprrlvfTNjvowivTeBsjebAL0NSoMxw==", + "requires": { + "path-key": "^3.1.0", + "shebang-command": "^2.0.0", + "which": "^2.0.1" + } + }, + "css": { + "version": "2.2.4", + "resolved": "https://registry.npmjs.org/css/-/css-2.2.4.tgz", + "integrity": "sha512-oUnjmWpy0niI3x/mPL8dVEI1l7MnG3+HHyRPHf+YFSbK+svOhXpmSOcDURUh2aOCgl2grzrOPt1nHLuCVFULLw==", + "requires": { + "inherits": "^2.0.3", + "source-map": "^0.6.1", + "source-map-resolve": "^0.5.2", + "urix": "^0.1.0" + }, + "dependencies": { + "source-map": { + "version": "0.6.1", + "resolved": "https://registry.npmjs.org/source-map/-/source-map-0.6.1.tgz", + "integrity": "sha512-UjgapumWlbMhkBgzT7Ykc5YXUT46F0iKu8SGXq0bcwP5dz/h0Plj6enJqjz1Zbq2l5WaqYnrVbwWOWMyF3F47g==" + } + } + }, + "css-parse": { + "version": "1.7.0", + "resolved": "https://registry.npmjs.org/css-parse/-/css-parse-1.7.0.tgz", + "integrity": "sha1-Mh9s9zeCpv91ERE5D8BeLGV9jJs=" + }, + "cuid": { + "version": "2.1.8", + "resolved": "https://registry.npmjs.org/cuid/-/cuid-2.1.8.tgz", + "integrity": "sha512-xiEMER6E7TlTPnDxrM4eRiC6TRgjNX9xzEZ5U/Se2YJKr7Mq4pJn/2XEHjl3STcSh96GmkHPcBXLES8M29wyyg==" + }, + "debug": { + "version": "4.1.1", + "resolved": "https://registry.npmjs.org/debug/-/debug-4.1.1.tgz", + "integrity": "sha512-pYAIzeRo8J6KPEaJ0VWOh5Pzkbw/RetuzehGM7QRRX5he4fPHx2rdKMB256ehJCkX+XRQm16eZLqLNS8RSZXZw==", + "requires": { + "ms": "^2.1.1" + } + }, + "decode-uri-component": { + "version": "0.2.0", + "resolved": "https://registry.npmjs.org/decode-uri-component/-/decode-uri-component-0.2.0.tgz", + "integrity": "sha1-6zkTMzRYd1y4TNGh+uBiEGu4dUU=" + }, + "deepmerge": { + "version": "4.2.2", + "resolved": "https://registry.npmjs.org/deepmerge/-/deepmerge-4.2.2.tgz", + "integrity": "sha512-FJ3UgI4gIl+PHZm53knsuSFpE+nESMr7M4v9QcgB7S63Kj/6WqMiFQJpBBYz1Pt+66bZpP3Q7Lye0Oo9MPKEdg==" + }, + "depd": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/depd/-/depd-2.0.0.tgz", + "integrity": "sha512-g7nH6P6dyDioJogAAGprGpCtVImJhpPk/roCzdb3fIh61/s/nPsfR6onyMwkCAR/OlC3yBC0lESvUoQEAssIrw==" + }, + "destroy": { + "version": "1.0.4", + "resolved": "https://registry.npmjs.org/destroy/-/destroy-1.0.4.tgz", + "integrity": "sha1-l4hXRCxEdJ5CBmE+N5RiBYJqvYA=" + }, + "dom-serializer": { + "version": "0.2.2", + "resolved": "https://registry.npmjs.org/dom-serializer/-/dom-serializer-0.2.2.tgz", + "integrity": "sha512-2/xPb3ORsQ42nHYiSunXkDjPLBaEj/xTwUO4B7XCZQTRk7EBtTOPaygh10YAAh2OI1Qrp6NWfpAhzswj0ydt9g==", + "requires": { + "domelementtype": "^2.0.1", + "entities": "^2.0.0" + } + }, + "domelementtype": { + "version": "2.0.1", + "resolved": "https://registry.npmjs.org/domelementtype/-/domelementtype-2.0.1.tgz", + "integrity": "sha512-5HOHUDsYZWV8FGWN0Njbr/Rn7f/eWSQi1v7+HsUVwXgn8nWWlL64zKDkS0n8ZmQ3mlWOMuXOnR+7Nx/5tMO5AQ==" + }, + "domhandler": { + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/domhandler/-/domhandler-3.0.0.tgz", + "integrity": "sha512-eKLdI5v9m67kbXQbJSNn1zjh0SDzvzWVWtX+qEI3eMjZw8daH9k8rlj1FZY9memPwjiskQFbe7vHVVJIAqoEhw==", + "requires": { + "domelementtype": "^2.0.1" + } + }, + "domutils": { + "version": "2.1.0", + "resolved": "https://registry.npmjs.org/domutils/-/domutils-2.1.0.tgz", + "integrity": "sha512-CD9M0Dm1iaHfQ1R/TI+z3/JWp/pgub0j4jIQKH89ARR4ATAV2nbaOQS5XxU9maJP5jHaPdDDQSEHuE2UmpUTKg==", + "requires": { + "dom-serializer": "^0.2.1", + "domelementtype": "^2.0.1", + "domhandler": "^3.0.0" + } + }, + "ee-first": { + "version": "1.1.1", + "resolved": "https://registry.npmjs.org/ee-first/-/ee-first-1.1.1.tgz", + "integrity": "sha1-WQxhFWsK4vTwJVcyoViyZrxWsh0=" + }, + "ejs": { + "version": "2.7.4", + "resolved": "https://registry.npmjs.org/ejs/-/ejs-2.7.4.tgz", + "integrity": "sha512-7vmuyh5+kuUyJKePhQfRQBhXV5Ce+RnaeeQArKu1EAMpL3WbgMt5WG6uQZpEVvYSSsxMXRKOewtDk9RaTKXRlA==" + }, + "encodeurl": { + "version": "1.0.2", + "resolved": "https://registry.npmjs.org/encodeurl/-/encodeurl-1.0.2.tgz", + "integrity": "sha1-rT/0yG7C0CkyL1oCw6mmBslbP1k=" + }, + "entities": { + "version": "2.0.2", + "resolved": "https://registry.npmjs.org/entities/-/entities-2.0.2.tgz", + "integrity": "sha512-dmD3AvJQBUjKpcNkoqr+x+IF0SdRtPz9Vk0uTy4yWqga9ibB6s4v++QFWNohjiUGoMlF552ZvNyXDxz5iW0qmw==" + }, + "escape-html": { + "version": "1.0.3", + "resolved": "https://registry.npmjs.org/escape-html/-/escape-html-1.0.3.tgz", + "integrity": "sha1-Aljq5NPQwJdN4cFpGI7wBR0dGYg=" + }, + "escape-string-regexp": { + "version": "1.0.5", + "resolved": "https://registry.npmjs.org/escape-string-regexp/-/escape-string-regexp-1.0.5.tgz", + "integrity": "sha1-G2HAViGQqN/2rjuyzwIAyhMLhtQ=" + }, + "esprima": { + "version": "4.0.1", + "resolved": "https://registry.npmjs.org/esprima/-/esprima-4.0.1.tgz", + "integrity": "sha512-eGuFFw7Upda+g4p+QHvnW0RyTX/SVeJBDM/gCtMARO0cLuT2HcEKnTPvhjV6aGeqrCB/sbNop0Kszm0jsaWU4A==" + }, + "etag": { + "version": "1.8.1", + "resolved": "https://registry.npmjs.org/etag/-/etag-1.8.1.tgz", + "integrity": "sha1-Qa4u62XvpiJorr/qg6x9eSmbCIc=" + }, + "fill-range": { + "version": "7.0.1", + "resolved": "https://registry.npmjs.org/fill-range/-/fill-range-7.0.1.tgz", + "integrity": "sha512-qOo9F+dMUmC2Lcb4BbVvnKJxTPjCm+RRpe4gDuGrzkL7mEVl/djYSu2OdQ2Pa302N4oqkSg9ir6jaLWJ2USVpQ==", + "requires": { + "to-regex-range": "^5.0.1" + } + }, + "finalhandler": { + "version": "1.1.2", + "resolved": "https://registry.npmjs.org/finalhandler/-/finalhandler-1.1.2.tgz", + "integrity": "sha512-aAWcW57uxVNrQZqFXjITpW3sIUQmHGG3qSb9mUah9MgMC4NeWhNOlNjXEYq3HjRAvL6arUviZGGJsBg6z0zsWA==", + "requires": { + "debug": "2.6.9", + "encodeurl": "~1.0.2", + "escape-html": "~1.0.3", + "on-finished": "~2.3.0", + "parseurl": "~1.3.3", + "statuses": "~1.5.0", + "unpipe": "~1.0.0" + }, + "dependencies": { + "debug": { + "version": "2.6.9", + "resolved": "https://registry.npmjs.org/debug/-/debug-2.6.9.tgz", + "integrity": "sha512-bC7ElrdJaJnPbAP+1EotYvqZsb3ecl5wi6Bfi6BJTUcNowp6cvspg0jXznRTKDjm/E7AdgFBVeAPVMNcKGsHMA==", + "requires": { + "ms": "2.0.0" + } + }, + "ms": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/ms/-/ms-2.0.0.tgz", + "integrity": "sha1-VgiurfwAvmwpAd9fmGF4jeDVl8g=" + } + } + }, + "fresh": { + "version": "0.5.2", + "resolved": "https://registry.npmjs.org/fresh/-/fresh-0.5.2.tgz", + "integrity": "sha1-PYyt2Q2XZWn6g1qx+OSyOhBWBac=" + }, + "fs.realpath": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/fs.realpath/-/fs.realpath-1.0.0.tgz", + "integrity": "sha1-FQStJSMVjKpA20onh8sBQRmU6k8=" + }, + "fsevents": { + "version": "2.1.3", + "resolved": "https://registry.npmjs.org/fsevents/-/fsevents-2.1.3.tgz", + "integrity": "sha512-Auw9a4AxqWpa9GUfj370BMPzzyncfBABW8Mab7BGWBYDj4Isgq+cDKtx0i6u9jcX9pQDnswsaaOTgTmA5pEjuQ==", + "optional": true + }, + "function-bind": { + "version": "1.1.1", + "resolved": "https://registry.npmjs.org/function-bind/-/function-bind-1.1.1.tgz", + "integrity": "sha512-yIovAzMX49sF8Yl58fSCWJ5svSLuaibPxXQJFLmBObTuCr0Mf1KiPopGM9NiFjiYBCbfaa2Fh6breQ6ANVTI0A==" + }, + "glob-parent": { + "version": "5.1.2", + "resolved": "https://registry.npmjs.org/glob-parent/-/glob-parent-5.1.2.tgz", + "integrity": "sha512-AOIgSQCepiJYwP3ARnGx+5VnTu2HBYdzbGP45eLw1vr3zB3vZLeyed1sC9hnbcOc9/SrMyM5RPQrkGz4aS9Zow==", + "requires": { + "is-glob": "^4.0.1" + } + }, + "graceful-fs": { + "version": "4.2.6", + "resolved": "https://registry.npmjs.org/graceful-fs/-/graceful-fs-4.2.6.tgz", + "integrity": "sha512-nTnJ528pbqxYanhpDYsi4Rd8MAeaBA67+RZ10CM1m3bTAVFEDcd5AuA4a6W5YkGZ1iNXHzZz8T6TBKLeBuNriQ==" + }, + "has": { + "version": "1.0.3", + "resolved": "https://registry.npmjs.org/has/-/has-1.0.3.tgz", + "integrity": "sha512-f2dvO0VU6Oej7RkWJGrehjbzMAjFp5/VKPp5tTpWIV4JHHZK1/BxbFRtf/siA2SWTe09caDmVtYYzWEIbBS4zw==", + "requires": { + "function-bind": "^1.1.1" + } + }, + "has-flag": { + "version": "4.0.0", + "resolved": "https://registry.npmjs.org/has-flag/-/has-flag-4.0.0.tgz", + "integrity": "sha512-EykJT/Q1KjTWctppgIAgfSO0tKVuZUjhgMr17kqTumMl6Afv3EISleU7qZUzoXDFTAHTDC4NOoG/ZxU3EvlMPQ==" + }, + "hexo": { + "version": "5.4.1", + "resolved": "https://registry.npmjs.org/hexo/-/hexo-5.4.1.tgz", + "integrity": "sha512-20tyZB8TfaddneySZZ40mGFsN/V9nlolToUnA2KhRVl1wl6uWT10mnziVjLMhQfaYddqCwD36NvOamGS3DOLhQ==", + "requires": { + "abbrev": "^1.1.1", + "archy": "^1.0.0", + "bluebird": "^3.5.2", + "chalk": "^4.0.0", + "hexo-cli": "^4.0.0", + "hexo-front-matter": "^2.0.0", + "hexo-fs": "^3.1.0", + "hexo-i18n": "^1.0.0", + "hexo-log": "^2.0.0", + "hexo-util": "^2.4.0", + "js-yaml": "^4.0.0", + "js-yaml-js-types": "^1.0.0", + "micromatch": "^4.0.2", + "moment": "^2.22.2", + "moment-timezone": "^0.5.21", + "nunjucks": "^3.2.1", + "pretty-hrtime": "^1.0.3", + "resolve": "^1.8.1", + "strip-ansi": "^6.0.0", + "text-table": "^0.2.0", + "tildify": "^2.0.0", + "titlecase": "^1.1.2", + "warehouse": "^4.0.0" + } + }, + "hexo-cli": { + "version": "4.3.0", + "resolved": "https://registry.npmjs.org/hexo-cli/-/hexo-cli-4.3.0.tgz", + "integrity": "sha512-lr46h1tK1RNQJAQZbzKYAWGsmqF5DLrW6xKEakqv/o9JqgdeempBjIm7HqjcZEUBpWij4EO65X6YJiDmT9LR7g==", + "requires": { + "abbrev": "^1.1.1", + "bluebird": "^3.5.5", + "chalk": "^4.0.0", + "command-exists": "^1.2.8", + "hexo-fs": "^3.0.1", + "hexo-log": "^2.0.0", + "hexo-util": "^2.0.0", + "minimist": "^1.2.5", + "resolve": "^1.11.0", + "tildify": "^2.0.0" + } + }, + "hexo-deployer-git": { + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/hexo-deployer-git/-/hexo-deployer-git-3.0.0.tgz", + "integrity": "sha512-U2Xewjab+rvUDNTcuYYnOxitkDXL3f5VMUH32jKDHs3OC4YFVGRoEaTTDVHskqr3KRi78Wohjc6BSRHOoG3oxA==", + "requires": { + "bluebird": "^3.5.0", + "chalk": "^4.0.0", + "hexo-fs": "^3.0.1", + "hexo-util": "^2.1.0", + "moment": "^2.18.0", + "nunjucks": "^3.2.1" + } + }, + "hexo-front-matter": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/hexo-front-matter/-/hexo-front-matter-2.0.0.tgz", + "integrity": "sha512-IR3tjAyK2Ga/0a/WDAoNy5+n3ju2/mkuAsCDEeGgGLf5+7kkiOkkG/FrnueuYgz0h2MPfWDLBiDsSTCmB0sLCA==", + "requires": { + "js-yaml": "^3.13.1" + }, + "dependencies": { + "js-yaml": { + "version": "3.14.1", + "resolved": "https://registry.npmjs.org/js-yaml/-/js-yaml-3.14.1.tgz", + "integrity": "sha512-okMH7OXXJ7YrN9Ok3/SXrnu4iX9yOk+25nqX4imS2npuvTYDmo/QEZoqwZkYaIDk3jVvBOTOIEgEhaLOynBS9g==", + "requires": { + "argparse": "^1.0.7", + "esprima": "^4.0.0" + } + } + } + }, + "hexo-fs": { + "version": "3.1.0", + "resolved": "https://registry.npmjs.org/hexo-fs/-/hexo-fs-3.1.0.tgz", + "integrity": "sha512-SfoDH7zlU9Iop+bAfEONXezbNIkpVX1QqjNCBYpapilZR+xVOCfTEdlNixanrKBbLGPb2fXqrdDBFgrKuiVGQQ==", + "requires": { + "bluebird": "^3.5.1", + "chokidar": "^3.0.0", + "graceful-fs": "^4.1.11", + "hexo-util": "^2.0.0" + } + }, + "hexo-generator-archive": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/hexo-generator-archive/-/hexo-generator-archive-1.0.0.tgz", + "integrity": "sha512-24TeanDGpMBUIq37DHpSESQbeN6ssZ06edsGSI76tN4Yit50TgsgzP5g5DSu0yJk0jUtHJntysWE8NYAlFXibA==", + "requires": { + "hexo-pagination": "1.0.0" + } + }, + "hexo-generator-category": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/hexo-generator-category/-/hexo-generator-category-1.0.0.tgz", + "integrity": "sha512-kmtwT1SHYL2ismbGnYQXNtqLFSeTdtHNbJIqno3LKROpCK8ybST5QVXF1bZI9LkFcXV/H8ilt8gfg4/dNNcQQQ==", + "requires": { + "hexo-pagination": "1.0.0" + } + }, + "hexo-generator-feed": { + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/hexo-generator-feed/-/hexo-generator-feed-3.0.0.tgz", + "integrity": "sha512-Jo35VSRSNeMitS2JmjCq3OHAXXYU4+JIODujHtubdG/NRj2++b3Tgyz9pwTmROx6Yxr2php/hC8og5AGZHh8UQ==", + "requires": { + "hexo-util": "^2.1.0", + "nunjucks": "^3.0.0" + }, + "dependencies": { + "hexo-util": { + "version": "2.4.0", + "resolved": "https://registry.npmjs.org/hexo-util/-/hexo-util-2.4.0.tgz", + "integrity": "sha512-IPQvAyn0cznYMU2gskMiZ6LZEvN7wHNusrJoYxrir4f7S7POpZeDTBswiko9R1qqd+/hu07wUYZdm4ceTTCEaA==", + "requires": { + "bluebird": "^3.5.2", + "camel-case": "^4.0.0", + "cross-spawn": "^7.0.0", + "deepmerge": "^4.2.2", + "highlight.js": "^10.0.0", + "htmlparser2": "^4.0.0", + "prismjs": "^1.17.1", + "strip-indent": "^3.0.0", + "striptags": "^3.1.1" + } + }, + "highlight.js": { + "version": "10.4.0", + "resolved": "https://registry.npmjs.org/highlight.js/-/highlight.js-10.4.0.tgz", + "integrity": "sha512-EfrUGcQ63oLJbj0J0RI9ebX6TAITbsDBLbsjr881L/X5fMO9+oadKzEF21C7R3ULKG6Gv3uoab2HiqVJa/4+oA==" + } + } + }, + "hexo-generator-index": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/hexo-generator-index/-/hexo-generator-index-1.0.0.tgz", + "integrity": "sha512-L25MdZ7e5ar/F8lIW+zBNNlA4f5A8CBUOYi1IQZCgL3wPVW+AWn66RSM5UVBAbiw5yxDeTHdk0sJYXbhSBaOFQ==", + "requires": { + "hexo-pagination": "1.0.0" + } + }, + "hexo-generator-search": { + "version": "2.4.3", + "resolved": "https://registry.npmjs.org/hexo-generator-search/-/hexo-generator-search-2.4.3.tgz", + "integrity": "sha512-Z5hfZq2g3np/Tgdp2q9HobfIvU6Pdz89tnTurc1IIq/vW0MHgDynk0Aiv6kvMtKWthnZ5l0iEMT3YLN35NdYwQ==", + "requires": { + "nunjucks": "^3.0.1", + "utils-merge": "^1.0.0" + } + }, + "hexo-generator-tag": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/hexo-generator-tag/-/hexo-generator-tag-1.0.0.tgz", + "integrity": "sha512-JDoB2T1EncRlyGSjuAhkGxRfKkN8tq0i8tFlk9I4q2L6iYxPaUnFenhji0oxufTADC16/IchuPjmMk//dt8Msg==", + "requires": { + "hexo-pagination": "1.0.0" + } + }, + "hexo-i18n": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/hexo-i18n/-/hexo-i18n-1.0.0.tgz", + "integrity": "sha512-yw90JHr7ybUHN/QOkpHmlWJj1luVk5/v8CUU5NRA0n4TFp6av8NT7ujZ10GDawgnQEdMHnN5PUfAbNIVGR6axg==", + "requires": { + "sprintf-js": "^1.0.3" + } + }, + "hexo-log": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/hexo-log/-/hexo-log-2.0.0.tgz", + "integrity": "sha512-U7zdDae74pXcyhQEyNmpJdq3UI6zWKxQ7/zLoMr/d3CBRdIfB5yO8DWqKUnewfibYv0gODyTWUIhxQDWuwloow==", + "requires": { + "chalk": "^4.0.0" + } + }, + "hexo-pagination": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/hexo-pagination/-/hexo-pagination-1.0.0.tgz", + "integrity": "sha512-miEVFgxchPr2qNWxw0JWpJ9R/Yaf7HjHBZVjvCCcqfbsLyYtCvIfJDxcEwz1sDOC/fLzYPqNnhUI73uNxBHRSA==" + }, + "hexo-renderer-ejs": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/hexo-renderer-ejs/-/hexo-renderer-ejs-1.0.0.tgz", + "integrity": "sha512-O925i69FG4NYO62oWORcPhRZZX0sPx1SXGKUS5DaR/lzajyiXH5i2sqnkj0ya0rNLXIy/D7Xmt7WbFyuQx/kKQ==", + "requires": { + "ejs": "^2.6.1" + } + }, + "hexo-renderer-marked": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/hexo-renderer-marked/-/hexo-renderer-marked-2.0.0.tgz", + "integrity": "sha512-+LMjgPkJSUAOlWYHJnBXxUHwGqemGNlK/I+JNO4zA5rEHWNWZ9wNAZKd5g0lEVdMAZzAV54gCylXGURgMO4IAw==", + "requires": { + "hexo-util": "1.0.0", + "marked": "^0.7.0", + "strip-indent": "^3.0.0" + }, + "dependencies": { + "camel-case": { + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/camel-case/-/camel-case-3.0.0.tgz", + "integrity": "sha1-yjw2iKTpzzpM2nd9xNy8cTJJz3M=", + "requires": { + "no-case": "^2.2.0", + "upper-case": "^1.1.1" + } + }, + "cross-spawn": { + "version": "6.0.5", + "resolved": "https://registry.npmjs.org/cross-spawn/-/cross-spawn-6.0.5.tgz", + "integrity": "sha512-eTVLrBSt7fjbDygz805pMnstIs2VTBNkRm0qxZd+M7A5XDdxVRWO5MxGBXZhjY4cqLYLdtrGqRf8mBPmzwSpWQ==", + "requires": { + "nice-try": "^1.0.4", + "path-key": "^2.0.1", + "semver": "^5.5.0", + "shebang-command": "^1.2.0", + "which": "^1.2.9" + } + }, + "hexo-util": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/hexo-util/-/hexo-util-1.0.0.tgz", + "integrity": "sha512-oV1/Y7ablc7e3d2kFFvQ/Ypi/BfL/uDSc1oNaMcxqr/UOH8F0QkHZ0Dmv+yLrEpFNYrrhBA0uavo3e+EqHNjnQ==", + "requires": { + "bluebird": "^3.5.2", + "camel-case": "^3.0.0", + "cross-spawn": "^6.0.5", + "highlight.js": "^9.13.1", + "html-entities": "^1.2.1", + "striptags": "^3.1.1" + } + }, + "lower-case": { + "version": "1.1.4", + "resolved": "https://registry.npmjs.org/lower-case/-/lower-case-1.1.4.tgz", + "integrity": "sha1-miyr0bno4K6ZOkv31YdcOcQujqw=" + }, + "no-case": { + "version": "2.3.2", + "resolved": "https://registry.npmjs.org/no-case/-/no-case-2.3.2.tgz", + "integrity": "sha512-rmTZ9kz+f3rCvK2TD1Ue/oZlns7OGoIWP4fc3llxxRXlOkHKoWPPWJOfFYpITabSow43QJbRIoHQXtt10VldyQ==", + "requires": { + "lower-case": "^1.1.1" + } + }, + "path-key": { + "version": "2.0.1", + "resolved": "https://registry.npmjs.org/path-key/-/path-key-2.0.1.tgz", + "integrity": "sha1-QRyttXTFoUDTpLGRDUDYDMn0C0A=" + }, + "shebang-command": { + "version": "1.2.0", + "resolved": "https://registry.npmjs.org/shebang-command/-/shebang-command-1.2.0.tgz", + "integrity": "sha1-RKrGW2lbAzmJaMOfNj/uXer98eo=", + "requires": { + "shebang-regex": "^1.0.0" + } + }, + "shebang-regex": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/shebang-regex/-/shebang-regex-1.0.0.tgz", + "integrity": "sha1-2kL0l0DAtC2yypcoVxyxkMmO/qM=" + }, + "which": { + "version": "1.3.1", + "resolved": "https://registry.npmjs.org/which/-/which-1.3.1.tgz", + "integrity": "sha512-HxJdYWq1MTIQbJ3nw0cqssHoTNU267KlrDuGZ1WYlxDStUtKUhOaJmh112/TZmHxxUfuJqPXSOm7tDyas0OSIQ==", + "requires": { + "isexe": "^2.0.0" + } + } + } + }, + "hexo-renderer-stylus": { + "version": "1.1.0", + "resolved": "https://registry.npmjs.org/hexo-renderer-stylus/-/hexo-renderer-stylus-1.1.0.tgz", + "integrity": "sha512-aXfMuro2aQOvpM5pyPEModAPvqYi73VN4t37vGMQCbT0QTmw8YohEmUpO/G/1k6j88ong6344v+A0xrpUGQRnQ==", + "requires": { + "nib": "^1.1.2", + "stylus": "^0.54.5" + } + }, + "hexo-server": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/hexo-server/-/hexo-server-1.0.0.tgz", + "integrity": "sha512-eSY+a5oiGCG/3T6FrdrNRBkttMLJkM+oitY6ZMFowjcBiG2VNEhQmfWUDOykfvApZs4wPYBb//uXD/58tfe3mA==", + "requires": { + "bluebird": "^3.5.5", + "chalk": "^2.4.2", + "compression": "^1.7.4", + "connect": "^3.7.0", + "mime": "^2.4.3", + "morgan": "^1.9.1", + "open": "^6.3.0", + "serve-static": "^1.14.1" + }, + "dependencies": { + "ansi-styles": { + "version": "3.2.1", + "resolved": "https://registry.npmjs.org/ansi-styles/-/ansi-styles-3.2.1.tgz", + "integrity": "sha512-VT0ZI6kZRdTh8YyJw3SMbYm/u+NqfsAxEpWO0Pf9sq8/e94WxxOpPKx9FR1FlyCtOVDNOQ+8ntlqFxiRc+r5qA==", + "requires": { + "color-convert": "^1.9.0" + } + }, + "chalk": { + "version": "2.4.2", + "resolved": "https://registry.npmjs.org/chalk/-/chalk-2.4.2.tgz", + "integrity": "sha512-Mti+f9lpJNcwF4tWV8/OrTTtF1gZi+f8FqlyAdouralcFWFQWF2+NgCHShjkCb+IFBLq9buZwE1xckQU4peSuQ==", + "requires": { + "ansi-styles": "^3.2.1", + "escape-string-regexp": "^1.0.5", + "supports-color": "^5.3.0" + } + }, + "color-convert": { + "version": "1.9.3", + "resolved": "https://registry.npmjs.org/color-convert/-/color-convert-1.9.3.tgz", + "integrity": "sha512-QfAUtd+vFdAtFQcC8CCyYt1fYWxSqAiK2cSD6zDB8N3cpsEBAvRxp9zOGg6G/SHHJYAT88/az/IuDGALsNVbGg==", + "requires": { + "color-name": "1.1.3" + } + }, + "color-name": { + "version": "1.1.3", + "resolved": "https://registry.npmjs.org/color-name/-/color-name-1.1.3.tgz", + "integrity": "sha1-p9BVi9icQveV3UIyj3QIMcpTvCU=" + }, + "has-flag": { + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/has-flag/-/has-flag-3.0.0.tgz", + "integrity": "sha1-tdRU3CGZriJWmfNGfloH87lVuv0=" + }, + "supports-color": { + "version": "5.5.0", + "resolved": "https://registry.npmjs.org/supports-color/-/supports-color-5.5.0.tgz", + "integrity": "sha512-QjVjwdXIt408MIiAqCX4oUKsgU2EqAGzs2Ppkm4aQYbjm+ZEWEcW4SfFNTr4uMNZma0ey4f5lgLrkB0aX0QMow==", + "requires": { + "has-flag": "^3.0.0" + } + } + } + }, + "hexo-util": { + "version": "2.4.0", + "resolved": "https://registry.npmjs.org/hexo-util/-/hexo-util-2.4.0.tgz", + "integrity": "sha512-IPQvAyn0cznYMU2gskMiZ6LZEvN7wHNusrJoYxrir4f7S7POpZeDTBswiko9R1qqd+/hu07wUYZdm4ceTTCEaA==", + "requires": { + "bluebird": "^3.5.2", + "camel-case": "^4.0.0", + "cross-spawn": "^7.0.0", + "deepmerge": "^4.2.2", + "highlight.js": "^10.0.0", + "htmlparser2": "^4.0.0", + "prismjs": "^1.17.1", + "strip-indent": "^3.0.0", + "striptags": "^3.1.1" + }, + "dependencies": { + "highlight.js": { + "version": "10.6.0", + "resolved": "https://registry.npmjs.org/highlight.js/-/highlight.js-10.6.0.tgz", + "integrity": "sha512-8mlRcn5vk/r4+QcqerapwBYTe+iPL5ih6xrNylxrnBdHQiijDETfXX7VIxC3UiCRiINBJfANBAsPzAvRQj8RpQ==" + } + } + }, + "highlight.js": { + "version": "9.18.5", + "resolved": "https://registry.npmjs.org/highlight.js/-/highlight.js-9.18.5.tgz", + "integrity": "sha512-a5bFyofd/BHCX52/8i8uJkjr9DYwXIPnM/plwI6W7ezItLGqzt7X2G2nXuYSfsIJdkwwj/g9DG1LkcGJI/dDoA==" + }, + "html-entities": { + "version": "1.3.1", + "resolved": "https://registry.npmjs.org/html-entities/-/html-entities-1.3.1.tgz", + "integrity": "sha512-rhE/4Z3hIhzHAUKbW8jVcCyuT5oJCXXqhN/6mXXVCpzTmvJnoH2HL/bt3EZ6p55jbFJBeAe1ZNpL5BugLujxNA==" + }, + "htmlparser2": { + "version": "4.1.0", + "resolved": "https://registry.npmjs.org/htmlparser2/-/htmlparser2-4.1.0.tgz", + "integrity": "sha512-4zDq1a1zhE4gQso/c5LP1OtrhYTncXNSpvJYtWJBtXAETPlMfi3IFNjGuQbYLuVY4ZR0QMqRVvo4Pdy9KLyP8Q==", + "requires": { + "domelementtype": "^2.0.1", + "domhandler": "^3.0.0", + "domutils": "^2.0.0", + "entities": "^2.0.0" + } + }, + "http-errors": { + "version": "1.7.3", + "resolved": "https://registry.npmjs.org/http-errors/-/http-errors-1.7.3.tgz", + "integrity": "sha512-ZTTX0MWrsQ2ZAhA1cejAwDLycFsd7I7nVtnkT3Ol0aqodaKW+0CTZDQ1uBv5whptCnc8e8HeRRJxRs0kmm/Qfw==", + "requires": { + "depd": "~1.1.2", + "inherits": "2.0.4", + "setprototypeof": "1.1.1", + "statuses": ">= 1.5.0 < 2", + "toidentifier": "1.0.0" + }, + "dependencies": { + "depd": { + "version": "1.1.2", + "resolved": "https://registry.npmjs.org/depd/-/depd-1.1.2.tgz", + "integrity": "sha1-m81S4UwJd2PnSbJ0xDRu0uVgtak=" + } + } + }, + "inflight": { + "version": "1.0.6", + "resolved": "https://registry.npmjs.org/inflight/-/inflight-1.0.6.tgz", + "integrity": "sha1-Sb1jMdfQLQwJvJEKEHW6gWW1bfk=", + "requires": { + "once": "^1.3.0", + "wrappy": "1" + } + }, + "inherits": { + "version": "2.0.4", + "resolved": "https://registry.npmjs.org/inherits/-/inherits-2.0.4.tgz", + "integrity": "sha512-k/vGaX4/Yla3WzyMCvTQOXYeIHvqOKtnqBduzTHpzpQZzAskKMhZ2K+EnBiSM9zGSoIFeMpXKxa4dYeZIQqewQ==" + }, + "is-binary-path": { + "version": "2.1.0", + "resolved": "https://registry.npmjs.org/is-binary-path/-/is-binary-path-2.1.0.tgz", + "integrity": "sha512-ZMERYes6pDydyuGidse7OsHxtbI7WVeUEozgR/g7rd0xUimYNlvZRE/K2MgZTjWy725IfelLeVcEM97mmtRGXw==", + "requires": { + "binary-extensions": "^2.0.0" + } + }, + "is-core-module": { + "version": "2.8.1", + "resolved": "https://registry.npmjs.org/is-core-module/-/is-core-module-2.8.1.tgz", + "integrity": "sha512-SdNCUs284hr40hFTFP6l0IfZ/RSrMXF3qgoRHd3/79unUTvrFO/JoXwkGm+5J/Oe3E/b5GsnG330uUNgRpu1PA==", + "requires": { + "has": "^1.0.3" + } + }, + "is-extglob": { + "version": "2.1.1", + "resolved": "https://registry.npmjs.org/is-extglob/-/is-extglob-2.1.1.tgz", + "integrity": "sha1-qIwCU1eR8C7TfHahueqXc8gz+MI=" + }, + "is-glob": { + "version": "4.0.1", + "resolved": "https://registry.npmjs.org/is-glob/-/is-glob-4.0.1.tgz", + "integrity": "sha512-5G0tKtBTFImOqDnLB2hG6Bp2qcKEFduo4tZu9MT/H6NQv/ghhy30o55ufafxJ/LdH79LLs2Kfrn85TLKyA7BUg==", + "requires": { + "is-extglob": "^2.1.1" + } + }, + "is-number": { + "version": "7.0.0", + "resolved": "https://registry.npmjs.org/is-number/-/is-number-7.0.0.tgz", + "integrity": "sha512-41Cifkg6e8TylSpdtTpeLVMqvSBEVzTttHvERD741+pnZ8ANv0004MRL43QKPDlK9cGvNp6NZWZUBlbGXYxxng==" + }, + "is-plain-object": { + "version": "3.0.1", + "resolved": "https://registry.npmjs.org/is-plain-object/-/is-plain-object-3.0.1.tgz", + "integrity": "sha512-Xnpx182SBMrr/aBik8y+GuR4U1L9FqMSojwDQwPMmxyC6bvEqly9UBCxhauBF5vNh2gwWJNX6oDV7O+OM4z34g==" + }, + "is-wsl": { + "version": "1.1.0", + "resolved": "https://registry.npmjs.org/is-wsl/-/is-wsl-1.1.0.tgz", + "integrity": "sha1-HxbkqiKwTRM2tmGIpmrzxgDDpm0=" + }, + "isexe": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/isexe/-/isexe-2.0.0.tgz", + "integrity": "sha1-6PvzdNxVb/iUehDcsFctYz8s+hA=" + }, + "js-yaml": { + "version": "4.1.0", + "resolved": "https://registry.npmjs.org/js-yaml/-/js-yaml-4.1.0.tgz", + "integrity": "sha512-wpxZs9NoxZaJESJGIZTyDEaYpl0FKSA+FB9aJiyemKhMwkxQg63h4T1KJgUGHpTqPDNRcmmYLugrRjJlBtWvRA==", + "requires": { + "argparse": "^2.0.1" + }, + "dependencies": { + "argparse": { + "version": "2.0.1", + "resolved": "https://registry.npmjs.org/argparse/-/argparse-2.0.1.tgz", + "integrity": "sha512-8+9WqebbFzpX9OR+Wa6O29asIogeRMzcGtAINdpMHHyAg10f05aSFVBbcEqGf/PXw1EjAZ+q2/bEBg3DvurK3Q==" + } + } + }, + "js-yaml-js-types": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/js-yaml-js-types/-/js-yaml-js-types-1.0.0.tgz", + "integrity": "sha512-UNjPwuoaj4mcHkJCJSF6l4MgkzoFjG+JJkBXMYNvjgO3yE9gTeRt+E6PN022vduz/daZZ7HmlEiSEE36NrGE4w==", + "requires": { + "esprima": "^4.0.1" + } + }, + "jsonparse": { + "version": "1.3.1", + "resolved": "https://registry.npmjs.org/jsonparse/-/jsonparse-1.3.1.tgz", + "integrity": "sha1-P02uSpH6wxX3EGL4UhzCOfE2YoA=" + }, + "JSONStream": { + "version": "1.3.5", + "resolved": "https://registry.npmjs.org/JSONStream/-/JSONStream-1.3.5.tgz", + "integrity": "sha512-E+iruNOY8VV9s4JEbe1aNEm6MiszPRr/UfcHMz0TQh1BXSxHK+ASV1R6W4HpjBhSeS+54PIsAMCBmwD06LLsqQ==", + "requires": { + "jsonparse": "^1.2.0", + "through": ">=2.2.7 <3" + } + }, + "linkify-it": { + "version": "3.0.2", + "resolved": "https://registry.npmjs.org/linkify-it/-/linkify-it-3.0.2.tgz", + "integrity": "sha512-gDBO4aHNZS6coiZCKVhSNh43F9ioIL4JwRjLZPkoLIY4yZFwg264Y5lu2x6rb1Js42Gh6Yqm2f6L2AJcnkzinQ==", + "requires": { + "uc.micro": "^1.0.1" + } + }, + "lower-case": { + "version": "2.0.1", + "resolved": "https://registry.npmjs.org/lower-case/-/lower-case-2.0.1.tgz", + "integrity": "sha512-LiWgfDLLb1dwbFQZsSglpRj+1ctGnayXz3Uv0/WO8n558JycT5fg6zkNcnW0G68Nn0aEldTFeEfmjCfmqry/rQ==", + "requires": { + "tslib": "^1.10.0" + } + }, + "markdown-it": { + "version": "12.3.2", + "resolved": "https://registry.npmjs.org/markdown-it/-/markdown-it-12.3.2.tgz", + "integrity": "sha512-TchMembfxfNVpHkbtriWltGWc+m3xszaRD0CZup7GFFhzIgQqxIfn3eGj1yZpfuflzPvfkt611B2Q/Bsk1YnGg==", + "requires": { + "argparse": "^2.0.1", + "entities": "~2.1.0", + "linkify-it": "^3.0.1", + "mdurl": "^1.0.1", + "uc.micro": "^1.0.5" + }, + "dependencies": { + "argparse": { + "version": "2.0.1", + "resolved": "https://registry.npmjs.org/argparse/-/argparse-2.0.1.tgz", + "integrity": "sha512-8+9WqebbFzpX9OR+Wa6O29asIogeRMzcGtAINdpMHHyAg10f05aSFVBbcEqGf/PXw1EjAZ+q2/bEBg3DvurK3Q==" + }, + "entities": { + "version": "2.1.0", + "resolved": "https://registry.npmjs.org/entities/-/entities-2.1.0.tgz", + "integrity": "sha512-hCx1oky9PFrJ611mf0ifBLBRW8lUUVRlFolb5gWRfIELabBlbp9xZvrqZLZAs+NxFnbfQoeGd8wDkygjg7U85w==" + } + } + }, + "marked": { + "version": "0.7.0", + "resolved": "https://registry.npmjs.org/marked/-/marked-0.7.0.tgz", + "integrity": "sha512-c+yYdCZJQrsRjTPhUx7VKkApw9bwDkNbHUKo1ovgcfDjb2kc8rLuRbIFyXL5WOEUwzSSKo3IXpph2K6DqB/KZg==" + }, + "mdurl": { + "version": "1.0.1", + "resolved": "https://registry.npmjs.org/mdurl/-/mdurl-1.0.1.tgz", + "integrity": "sha1-/oWy7HWlkDfyrf7BAP1sYBdhFS4=" + }, + "micromatch": { + "version": "4.0.4", + "resolved": "https://registry.npmjs.org/micromatch/-/micromatch-4.0.4.tgz", + "integrity": "sha512-pRmzw/XUcwXGpD9aI9q/0XOwLNygjETJ8y0ao0wdqprrzDa4YnxLcz7fQRZr8voh8V10kGhABbNcHVk5wHgWwg==", + "requires": { + "braces": "^3.0.1", + "picomatch": "^2.2.3" + }, + "dependencies": { + "picomatch": { + "version": "2.3.1", + "resolved": "https://registry.npmjs.org/picomatch/-/picomatch-2.3.1.tgz", + "integrity": "sha512-JU3teHTNjmE2VCGFzuY8EXzCDVwEqB2a8fsIvwaStHhAWJEeVd1o1QD80CU6+ZdEXXSLbSsuLwJjkCBWqRQUVA==" + } + } + }, + "mime": { + "version": "2.4.5", + "resolved": "https://registry.npmjs.org/mime/-/mime-2.4.5.tgz", + "integrity": "sha512-3hQhEUF027BuxZjQA3s7rIv/7VCQPa27hN9u9g87sEkWaKwQPuXOkVKtOeiyUrnWqTDiOs8Ed2rwg733mB0R5w==" + }, + "mime-db": { + "version": "1.44.0", + "resolved": "https://registry.npmjs.org/mime-db/-/mime-db-1.44.0.tgz", + "integrity": "sha512-/NOTfLrsPBVeH7YtFPgsVWveuL+4SjjYxaQ1xtM1KMFj7HdxlBlxeyNLzhyJVx7r4rZGJAZ/6lkKCitSc/Nmpg==" + }, + "mime-types": { + "version": "2.1.27", + "resolved": "https://registry.npmjs.org/mime-types/-/mime-types-2.1.27.tgz", + "integrity": "sha512-JIhqnCasI9yD+SsmkquHBxTSEuZdQX5BuQnS2Vc7puQQQ+8yiP5AY5uWhpdv4YL4VM5c6iliiYWPgJ/nJQLp7w==", + "requires": { + "mime-db": "1.44.0" + } + }, + "min-indent": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/min-indent/-/min-indent-1.0.0.tgz", + "integrity": "sha1-z8RcN+nsDY8KDsPdTvf3w6vjklY=" + }, + "minimatch": { + "version": "3.0.4", + "resolved": "https://registry.npmjs.org/minimatch/-/minimatch-3.0.4.tgz", + "integrity": "sha512-yJHVQEhyqPLUTgt9B83PXu6W3rx4MvvHvSUvToogpwoGDOUQ+yDrR0HRot+yOCdCO7u4hX3pWft6kWBBcqh0UA==", + "requires": { + "brace-expansion": "^1.1.7" + } + }, + "minimist": { + "version": "1.2.5", + "resolved": "https://registry.npmjs.org/minimist/-/minimist-1.2.5.tgz", + "integrity": "sha512-FM9nNUYrRBAELZQT3xeZQ7fmMOBg6nWNmJKTcgsJeaLstP/UODVpGsr5OhXhhXg6f+qtJ8uiZ+PUxkDWcgIXLw==" + }, + "mkdirp": { + "version": "0.5.5", + "resolved": "https://registry.npmjs.org/mkdirp/-/mkdirp-0.5.5.tgz", + "integrity": "sha512-NKmAlESf6jMGym1++R0Ra7wvhV+wFW63FaSOFPwRahvea0gMUcGUhVeAg/0BC0wiv9ih5NYPB1Wn1UEI1/L+xQ==", + "requires": { + "minimist": "^1.2.5" + } + }, + "moment": { + "version": "2.29.1", + "resolved": "https://registry.npmjs.org/moment/-/moment-2.29.1.tgz", + "integrity": "sha512-kHmoybcPV8Sqy59DwNDY3Jefr64lK/by/da0ViFcuA4DH0vQg5Q6Ze5VimxkfQNSC+Mls/Kx53s7TjP1RhFEDQ==" + }, + "moment-timezone": { + "version": "0.5.34", + "resolved": "https://registry.npmjs.org/moment-timezone/-/moment-timezone-0.5.34.tgz", + "integrity": "sha512-3zAEHh2hKUs3EXLESx/wsgw6IQdusOT8Bxm3D9UrHPQR7zlMmzwybC8zHEM1tQ4LJwP7fcxrWr8tuBg05fFCbg==", + "requires": { + "moment": ">= 2.9.0" + } + }, + "morgan": { + "version": "1.10.0", + "resolved": "https://registry.npmjs.org/morgan/-/morgan-1.10.0.tgz", + "integrity": "sha512-AbegBVI4sh6El+1gNwvD5YIck7nSA36weD7xvIxG4in80j/UoK8AEGaWnnz8v1GxonMCltmlNs5ZKbGvl9b1XQ==", + "requires": { + "basic-auth": "~2.0.1", + "debug": "2.6.9", + "depd": "~2.0.0", + "on-finished": "~2.3.0", + "on-headers": "~1.0.2" + }, + "dependencies": { + "debug": { + "version": "2.6.9", + "resolved": "https://registry.npmjs.org/debug/-/debug-2.6.9.tgz", + "integrity": "sha512-bC7ElrdJaJnPbAP+1EotYvqZsb3ecl5wi6Bfi6BJTUcNowp6cvspg0jXznRTKDjm/E7AdgFBVeAPVMNcKGsHMA==", + "requires": { + "ms": "2.0.0" + } + }, + "ms": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/ms/-/ms-2.0.0.tgz", + "integrity": "sha1-VgiurfwAvmwpAd9fmGF4jeDVl8g=" + } + } + }, + "ms": { + "version": "2.1.2", + "resolved": "https://registry.npmjs.org/ms/-/ms-2.1.2.tgz", + "integrity": "sha512-sGkPx+VjMtmA6MX27oA4FBFELFCZZ4S4XqeGOXCv68tT+jb3vk/RyaKWP0PTKyWtmLSM0b+adUTEvbs1PEaH2w==" + }, + "negotiator": { + "version": "0.6.2", + "resolved": "https://registry.npmjs.org/negotiator/-/negotiator-0.6.2.tgz", + "integrity": "sha512-hZXc7K2e+PgeI1eDBe/10Ard4ekbfrrqG8Ep+8Jmf4JID2bNg7NvCPOZN+kfF574pFQI7mum2AUqDidoKqcTOw==" + }, + "nib": { + "version": "1.1.2", + "resolved": "https://registry.npmjs.org/nib/-/nib-1.1.2.tgz", + "integrity": "sha1-amnt5AgblcDe+L4CSkyK4MLLtsc=", + "requires": { + "stylus": "0.54.5" + }, + "dependencies": { + "glob": { + "version": "7.0.6", + "resolved": "https://registry.npmjs.org/glob/-/glob-7.0.6.tgz", + "integrity": "sha1-IRuvr0nlJbjNkyYNFKsTYVKz9Xo=", + "requires": { + "fs.realpath": "^1.0.0", + "inflight": "^1.0.4", + "inherits": "2", + "minimatch": "^3.0.2", + "once": "^1.3.0", + "path-is-absolute": "^1.0.0" + } + }, + "source-map": { + "version": "0.1.43", + "resolved": "https://registry.npmjs.org/source-map/-/source-map-0.1.43.tgz", + "integrity": "sha1-wkvBRspRfBRx9drL4lcbK3+eM0Y=", + "requires": { + "amdefine": ">=0.0.4" + } + }, + "stylus": { + "version": "0.54.5", + "resolved": "https://registry.npmjs.org/stylus/-/stylus-0.54.5.tgz", + "integrity": "sha1-QrlWCTHKcJDOhRWnmLqeaqPW3Hk=", + "requires": { + "css-parse": "1.7.x", + "debug": "*", + "glob": "7.0.x", + "mkdirp": "0.5.x", + "sax": "0.5.x", + "source-map": "0.1.x" + } + } + } + }, + "nice-try": { + "version": "1.0.5", + "resolved": "https://registry.npmjs.org/nice-try/-/nice-try-1.0.5.tgz", + "integrity": "sha512-1nh45deeb5olNY7eX82BkPO7SSxR5SSYJiPTrTdFUVYwAl8CKMA5N9PjTYkHiRjisVcxcQ1HXdLhx2qxxJzLNQ==" + }, + "no-case": { + "version": "3.0.3", + "resolved": "https://registry.npmjs.org/no-case/-/no-case-3.0.3.tgz", + "integrity": "sha512-ehY/mVQCf9BL0gKfsJBvFJen+1V//U+0HQMPrWct40ixE4jnv0bfvxDbWtAHL9EcaPEOJHVVYKoQn1TlZUB8Tw==", + "requires": { + "lower-case": "^2.0.1", + "tslib": "^1.10.0" + } + }, + "normalize-path": { + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/normalize-path/-/normalize-path-3.0.0.tgz", + "integrity": "sha512-6eZs5Ls3WtCisHWp9S2GUy8dqkpGi4BVSz3GaqiE6ezub0512ESztXUwUB6C6IKbQkY2Pnb/mD4WYojCRwcwLA==" + }, + "nunjucks": { + "version": "3.2.1", + "resolved": "https://registry.npmjs.org/nunjucks/-/nunjucks-3.2.1.tgz", + "integrity": "sha512-LYlVuC1ZNSalQQkLNNPvcgPt2M9FTY9bs39mTCuFXtqh7jWbYzhDlmz2M6onPiXEhdZo+b9anRhc+uBGuJZ2bQ==", + "requires": { + "a-sync-waterfall": "^1.0.0", + "asap": "^2.0.3", + "chokidar": "^3.3.0", + "commander": "^3.0.2" + } + }, + "on-finished": { + "version": "2.3.0", + "resolved": "https://registry.npmjs.org/on-finished/-/on-finished-2.3.0.tgz", + "integrity": "sha1-IPEzZIGwg811M3mSoWlxqi2QaUc=", + "requires": { + "ee-first": "1.1.1" + } + }, + "on-headers": { + "version": "1.0.2", + "resolved": "https://registry.npmjs.org/on-headers/-/on-headers-1.0.2.tgz", + "integrity": "sha512-pZAE+FJLoyITytdqK0U5s+FIpjN0JP3OzFi/u8Rx+EV5/W+JTWGXG8xFzevE7AjBfDqHv/8vL8qQsIhHnqRkrA==" + }, + "once": { + "version": "1.4.0", + "resolved": "https://registry.npmjs.org/once/-/once-1.4.0.tgz", + "integrity": "sha1-WDsap3WWHUsROsF9nFC6753Xa9E=", + "requires": { + "wrappy": "1" + } + }, + "open": { + "version": "6.4.0", + "resolved": "https://registry.npmjs.org/open/-/open-6.4.0.tgz", + "integrity": "sha512-IFenVPgF70fSm1keSd2iDBIDIBZkroLeuffXq+wKTzTJlBpesFWojV9lb8mzOfaAzM1sr7HQHuO0vtV0zYekGg==", + "requires": { + "is-wsl": "^1.1.0" + } + }, + "parseurl": { + "version": "1.3.3", + "resolved": "https://registry.npmjs.org/parseurl/-/parseurl-1.3.3.tgz", + "integrity": "sha512-CiyeOxFT/JZyN5m0z9PfXw4SCBJ6Sygz1Dpl0wqjlhDEGGBP1GnsUVEL0p63hoG1fcj3fHynXi9NYO4nWOL+qQ==" + }, + "pascal-case": { + "version": "3.1.1", + "resolved": "https://registry.npmjs.org/pascal-case/-/pascal-case-3.1.1.tgz", + "integrity": "sha512-XIeHKqIrsquVTQL2crjq3NfJUxmdLasn3TYOU0VBM+UX2a6ztAWBlJQBePLGY7VHW8+2dRadeIPK5+KImwTxQA==", + "requires": { + "no-case": "^3.0.3", + "tslib": "^1.10.0" + } + }, + "path-is-absolute": { + "version": "1.0.1", + "resolved": "https://registry.npmjs.org/path-is-absolute/-/path-is-absolute-1.0.1.tgz", + "integrity": "sha1-F0uSaHNVNP+8es5r9TpanhtcX18=" + }, + "path-key": { + "version": "3.1.1", + "resolved": "https://registry.npmjs.org/path-key/-/path-key-3.1.1.tgz", + "integrity": "sha512-ojmeN0qd+y0jszEtoY48r0Peq5dwMEkIlCOu6Q5f41lfkswXuKtYrhgoTpLnyIcHm24Uhqx+5Tqm2InSwLhE6Q==" + }, + "path-parse": { + "version": "1.0.7", + "resolved": "https://registry.npmjs.org/path-parse/-/path-parse-1.0.7.tgz", + "integrity": "sha512-LDJzPVEEEPR+y48z93A0Ed0yXb8pAByGWo/k5YYdYgpY2/2EsOsksJrq7lOHxryrVOn1ejG6oAp8ahvOIQD8sw==" + }, + "picomatch": { + "version": "2.2.2", + "resolved": "https://registry.npmjs.org/picomatch/-/picomatch-2.2.2.tgz", + "integrity": "sha512-q0M/9eZHzmr0AulXyPwNfZjtwZ/RBZlbN3K3CErVrk50T2ASYI7Bye0EvekFY3IP1Nt2DHu0re+V2ZHIpMkuWg==" + }, + "pretty-hrtime": { + "version": "1.0.3", + "resolved": "https://registry.npmjs.org/pretty-hrtime/-/pretty-hrtime-1.0.3.tgz", + "integrity": "sha1-t+PqQkNaTJsnWdmeDyAesZWALuE=" + }, + "prismjs": { + "version": "1.27.0", + "resolved": "https://registry.npmjs.org/prismjs/-/prismjs-1.27.0.tgz", + "integrity": "sha512-t13BGPUlFDR7wRB5kQDG4jjl7XeuH6jbJGt11JHPL96qwsEHNX2+68tFXqc1/k+/jALsbSWJKUOT/hcYAZ5LkA==" + }, + "range-parser": { + "version": "1.2.1", + "resolved": "https://registry.npmjs.org/range-parser/-/range-parser-1.2.1.tgz", + "integrity": "sha512-Hrgsx+orqoygnmhFbKaHE6c296J+HTAQXoxEF6gNupROmmGJRoyzfG3ccAveqCBrwr/2yxQ5BVd/GTl5agOwSg==" + }, + "readdirp": { + "version": "3.4.0", + "resolved": "https://registry.npmjs.org/readdirp/-/readdirp-3.4.0.tgz", + "integrity": "sha512-0xe001vZBnJEK+uKcj8qOhyAKPzIT+gStxWr3LCB0DwcXR5NZJ3IaC+yGnHCYzB/S7ov3m3EEbZI2zeNvX+hGQ==", + "requires": { + "picomatch": "^2.2.1" + } + }, + "resolve": { + "version": "1.22.0", + "resolved": "https://registry.npmjs.org/resolve/-/resolve-1.22.0.tgz", + "integrity": "sha512-Hhtrw0nLeSrFQ7phPp4OOcVjLPIeMnRlr5mcnVuMe7M/7eBn98A3hmFRLoFo3DLZkivSYwhRUJTyPyWAk56WLw==", + "requires": { + "is-core-module": "^2.8.1", + "path-parse": "^1.0.7", + "supports-preserve-symlinks-flag": "^1.0.0" + } + }, + "resolve-url": { + "version": "0.2.1", + "resolved": "https://registry.npmjs.org/resolve-url/-/resolve-url-0.2.1.tgz", + "integrity": "sha1-LGN/53yJOv0qZj/iGqkIAGjiBSo=" + }, + "rfdc": { + "version": "1.3.0", + "resolved": "https://registry.npmjs.org/rfdc/-/rfdc-1.3.0.tgz", + "integrity": "sha512-V2hovdzFbOi77/WajaSMXk2OLm+xNIeQdMMuB7icj7bk6zi2F8GGAxigcnDFpJHbNyNcgyJDiP+8nOrY5cZGrA==" + }, + "safe-buffer": { + "version": "5.1.2", + "resolved": "https://registry.npmjs.org/safe-buffer/-/safe-buffer-5.1.2.tgz", + "integrity": "sha512-Gd2UZBJDkXlY7GbJxfsE8/nvKkUEU1G38c1siN6QP6a9PT9MmHB8GnpscSmMJSoF8LOIrt8ud/wPtojys4G6+g==" + }, + "safer-buffer": { + "version": "2.1.2", + "resolved": "https://registry.npmjs.org/safer-buffer/-/safer-buffer-2.1.2.tgz", + "integrity": "sha512-YZo3K82SD7Riyi0E1EQPojLz7kpepnSQI9IyPbHHg1XXXevb5dJI7tpyN2ADxGcQbHG7vcyRHk0cbwqcQriUtg==" + }, + "sax": { + "version": "0.5.8", + "resolved": "https://registry.npmjs.org/sax/-/sax-0.5.8.tgz", + "integrity": "sha1-1HLbIo6zMcJQaw6MFVJK25OdEsE=" + }, + "semver": { + "version": "5.7.1", + "resolved": "https://registry.npmjs.org/semver/-/semver-5.7.1.tgz", + "integrity": "sha512-sauaDf/PZdVgrLTNYHRtpXa1iRiKcaebiKQ1BJdpQlWH2lCvexQdX55snPFyK7QzpudqbCI0qXFfOasHdyNDGQ==" + }, + "send": { + "version": "0.17.1", + "resolved": "https://registry.npmjs.org/send/-/send-0.17.1.tgz", + "integrity": "sha512-BsVKsiGcQMFwT8UxypobUKyv7irCNRHk1T0G680vk88yf6LBByGcZJOTJCrTP2xVN6yI+XjPJcNuE3V4fT9sAg==", + "requires": { + "debug": "2.6.9", + "depd": "~1.1.2", + "destroy": "~1.0.4", + "encodeurl": "~1.0.2", + "escape-html": "~1.0.3", + "etag": "~1.8.1", + "fresh": "0.5.2", + "http-errors": "~1.7.2", + "mime": "1.6.0", + "ms": "2.1.1", + "on-finished": "~2.3.0", + "range-parser": "~1.2.1", + "statuses": "~1.5.0" + }, + "dependencies": { + "debug": { + "version": "2.6.9", + "resolved": "https://registry.npmjs.org/debug/-/debug-2.6.9.tgz", + "integrity": "sha512-bC7ElrdJaJnPbAP+1EotYvqZsb3ecl5wi6Bfi6BJTUcNowp6cvspg0jXznRTKDjm/E7AdgFBVeAPVMNcKGsHMA==", + "requires": { + "ms": "2.0.0" + }, + "dependencies": { + "ms": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/ms/-/ms-2.0.0.tgz", + "integrity": "sha1-VgiurfwAvmwpAd9fmGF4jeDVl8g=" + } + } + }, + "depd": { + "version": "1.1.2", + "resolved": "https://registry.npmjs.org/depd/-/depd-1.1.2.tgz", + "integrity": "sha1-m81S4UwJd2PnSbJ0xDRu0uVgtak=" + }, + "mime": { + "version": "1.6.0", + "resolved": "https://registry.npmjs.org/mime/-/mime-1.6.0.tgz", + "integrity": "sha512-x0Vn8spI+wuJ1O6S7gnbaQg8Pxh4NNHb7KSINmEWKiPE4RKOplvijn+NkmYmmRgP68mc70j2EbeTFRsrswaQeg==" + }, + "ms": { + "version": "2.1.1", + "resolved": "https://registry.npmjs.org/ms/-/ms-2.1.1.tgz", + "integrity": "sha512-tgp+dl5cGk28utYktBsrFqA7HKgrhgPsg6Z/EfhWI4gl1Hwq8B/GmY/0oXZ6nF8hDVesS/FpnYaD/kOWhYQvyg==" + } + } + }, + "serve-static": { + "version": "1.14.1", + "resolved": "https://registry.npmjs.org/serve-static/-/serve-static-1.14.1.tgz", + "integrity": "sha512-JMrvUwE54emCYWlTI+hGrGv5I8dEwmco/00EvkzIIsR7MqrHonbD9pO2MOfFnpFntl7ecpZs+3mW+XbQZu9QCg==", + "requires": { + "encodeurl": "~1.0.2", + "escape-html": "~1.0.3", + "parseurl": "~1.3.3", + "send": "0.17.1" + } + }, + "setprototypeof": { + "version": "1.1.1", + "resolved": "https://registry.npmjs.org/setprototypeof/-/setprototypeof-1.1.1.tgz", + "integrity": "sha512-JvdAWfbXeIGaZ9cILp38HntZSFSo3mWg6xGcJJsd+d4aRMOqauag1C63dJfDw7OaMYwEbHMOxEZ1lqVRYP2OAw==" + }, + "shebang-command": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/shebang-command/-/shebang-command-2.0.0.tgz", + "integrity": "sha512-kHxr2zZpYtdmrN1qDjrrX/Z1rR1kG8Dx+gkpK1G4eXmvXswmcE1hTWBWYUzlraYw1/yZp6YuDY77YtvbN0dmDA==", + "requires": { + "shebang-regex": "^3.0.0" + } + }, + "shebang-regex": { + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/shebang-regex/-/shebang-regex-3.0.0.tgz", + "integrity": "sha512-7++dFhtcx3353uBaq8DDR4NuxBetBzC7ZQOhmTQInHEd6bSrXdiEyzCvG07Z44UYdLShWUyXt5M/yhz8ekcb1A==" + }, + "source-map-resolve": { + "version": "0.5.3", + "resolved": "https://registry.npmjs.org/source-map-resolve/-/source-map-resolve-0.5.3.tgz", + "integrity": "sha512-Htz+RnsXWk5+P2slx5Jh3Q66vhQj1Cllm0zvnaY98+NFx+Dv2CF/f5O/t8x+KaNdrdIAsruNzoh/KpialbqAnw==", + "requires": { + "atob": "^2.1.2", + "decode-uri-component": "^0.2.0", + "resolve-url": "^0.2.1", + "source-map-url": "^0.4.0", + "urix": "^0.1.0" + } + }, + "source-map-url": { + "version": "0.4.0", + "resolved": "https://registry.npmjs.org/source-map-url/-/source-map-url-0.4.0.tgz", + "integrity": "sha1-PpNdfd1zYxuXZZlW1VEo6HtQhKM=" + }, + "sprintf-js": { + "version": "1.0.3", + "resolved": "https://registry.npmjs.org/sprintf-js/-/sprintf-js-1.0.3.tgz", + "integrity": "sha1-BOaSb2YolTVPPdAVIDYzuFcpfiw=" + }, + "statuses": { + "version": "1.5.0", + "resolved": "https://registry.npmjs.org/statuses/-/statuses-1.5.0.tgz", + "integrity": "sha1-Fhx9rBd2Wf2YEfQ3cfqZOBR4Yow=" + }, + "strip-ansi": { + "version": "6.0.1", + "resolved": "https://registry.npmjs.org/strip-ansi/-/strip-ansi-6.0.1.tgz", + "integrity": "sha512-Y38VPSHcqkFrCpFnQ9vuSXmquuv5oXOKpGeT6aGrr3o3Gc9AlVa6JBfUSOCnbxGGZF+/0ooI7KrPuUSztUdU5A==", + "requires": { + "ansi-regex": "^5.0.1" + } + }, + "strip-indent": { + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/strip-indent/-/strip-indent-3.0.0.tgz", + "integrity": "sha512-laJTa3Jb+VQpaC6DseHhF7dXVqHTfJPCRDaEbid/drOhgitgYku/letMUqOXFoWV0zIIUbjpdH2t+tYj4bQMRQ==", + "requires": { + "min-indent": "^1.0.0" + } + }, + "striptags": { + "version": "3.2.0", + "resolved": "https://registry.npmjs.org/striptags/-/striptags-3.2.0.tgz", + "integrity": "sha512-g45ZOGzHDMe2bdYMdIvdAfCQkCTDMGBazSw1ypMowwGIee7ZQ5dU0rBJ8Jqgl+jAKIv4dbeE1jscZq9wid1Tkw==" + }, + "stylus": { + "version": "0.54.7", + "resolved": "https://registry.npmjs.org/stylus/-/stylus-0.54.7.tgz", + "integrity": "sha512-Yw3WMTzVwevT6ZTrLCYNHAFmanMxdylelL3hkWNgPMeTCpMwpV3nXjpOHuBXtFv7aiO2xRuQS6OoAdgkNcSNug==", + "requires": { + "css-parse": "~2.0.0", + "debug": "~3.1.0", + "glob": "^7.1.3", + "mkdirp": "~0.5.x", + "safer-buffer": "^2.1.2", + "sax": "~1.2.4", + "semver": "^6.0.0", + "source-map": "^0.7.3" + }, + "dependencies": { + "css-parse": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/css-parse/-/css-parse-2.0.0.tgz", + "integrity": "sha1-pGjuZnwW2BzPBcWMONKpfHgNv9Q=", + "requires": { + "css": "^2.0.0" + } + }, + "debug": { + "version": "3.1.0", + "resolved": "https://registry.npmjs.org/debug/-/debug-3.1.0.tgz", + "integrity": "sha512-OX8XqP7/1a9cqkxYw2yXss15f26NKWBpDXQd0/uK/KPqdQhxbPa994hnzjcE2VqQpDslf55723cKPUOGSmMY3g==", + "requires": { + "ms": "2.0.0" + } + }, + "glob": { + "version": "7.1.6", + "resolved": "https://registry.npmjs.org/glob/-/glob-7.1.6.tgz", + "integrity": "sha512-LwaxwyZ72Lk7vZINtNNrywX0ZuLyStrdDtabefZKAY5ZGJhVtgdznluResxNmPitE0SAO+O26sWTHeKSI2wMBA==", + "requires": { + "fs.realpath": "^1.0.0", + "inflight": "^1.0.4", + "inherits": "2", + "minimatch": "^3.0.4", + "once": "^1.3.0", + "path-is-absolute": "^1.0.0" + } + }, + "ms": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/ms/-/ms-2.0.0.tgz", + "integrity": "sha1-VgiurfwAvmwpAd9fmGF4jeDVl8g=" + }, + "sax": { + "version": "1.2.4", + "resolved": "https://registry.npmjs.org/sax/-/sax-1.2.4.tgz", + "integrity": "sha512-NqVDv9TpANUjFm0N8uM5GxL36UgKi9/atZw+x7YFnQ8ckwFGKrl4xX4yWtrey3UJm5nP1kUbnYgLopqWNSRhWw==" + }, + "semver": { + "version": "6.3.0", + "resolved": "https://registry.npmjs.org/semver/-/semver-6.3.0.tgz", + "integrity": "sha512-b39TBaTSfV6yBrapU89p5fKekE2m/NwnDocOVruQFS1/veMgdzuPcnOM34M6CwxW8jH/lxEa5rBoDeUwu5HHTw==" + }, + "source-map": { + "version": "0.7.3", + "resolved": "https://registry.npmjs.org/source-map/-/source-map-0.7.3.tgz", + "integrity": "sha512-CkCj6giN3S+n9qrYiBTX5gystlENnRW5jZeNLHpe6aue+SrHcG5VYwujhW9s4dY31mEGsxBDrHR6oI69fTXsaQ==" + } + } + }, + "supports-color": { + "version": "7.2.0", + "resolved": "https://registry.npmjs.org/supports-color/-/supports-color-7.2.0.tgz", + "integrity": "sha512-qpCAvRl9stuOHveKsn7HncJRvv501qIacKzQlO/+Lwxc9+0q2wLyv4Dfvt80/DPn2pqOBsJdDiogXGR9+OvwRw==", + "requires": { + "has-flag": "^4.0.0" + } + }, + "supports-preserve-symlinks-flag": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/supports-preserve-symlinks-flag/-/supports-preserve-symlinks-flag-1.0.0.tgz", + "integrity": "sha512-ot0WnXS9fgdkgIcePe6RHNk1WA8+muPa6cSjeR3V8K27q9BB1rTE3R1p7Hv0z1ZyAc8s6Vvv8DIyWf681MAt0w==" + }, + "text-table": { + "version": "0.2.0", + "resolved": "https://registry.npmjs.org/text-table/-/text-table-0.2.0.tgz", + "integrity": "sha1-f17oI66AUgfACvLfSoTsP8+lcLQ=" + }, + "through": { + "version": "2.3.8", + "resolved": "https://registry.npmjs.org/through/-/through-2.3.8.tgz", + "integrity": "sha1-DdTJ/6q8NXlgsbckEV1+Doai4fU=" + }, + "tildify": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/tildify/-/tildify-2.0.0.tgz", + "integrity": "sha512-Cc+OraorugtXNfs50hU9KS369rFXCfgGLpfCfvlc+Ud5u6VWmUQsOAa9HbTvheQdYnrdJqqv1e5oIqXppMYnSw==" + }, + "titlecase": { + "version": "1.1.3", + "resolved": "https://registry.npmjs.org/titlecase/-/titlecase-1.1.3.tgz", + "integrity": "sha512-pQX4oiemzjBEELPqgK4WE+q0yhAqjp/yzusGtlSJsOuiDys0RQxggepYmo0BuegIDppYS3b3cpdegRwkpyN3hw==" + }, + "to-regex-range": { + "version": "5.0.1", + "resolved": "https://registry.npmjs.org/to-regex-range/-/to-regex-range-5.0.1.tgz", + "integrity": "sha512-65P7iz6X5yEr1cwcgvQxbbIw7Uk3gOy5dIdtZ4rDveLqhrdJP+Li/Hx6tyK0NEb+2GCyneCMJiGqrADCSNk8sQ==", + "requires": { + "is-number": "^7.0.0" + } + }, + "toidentifier": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/toidentifier/-/toidentifier-1.0.0.tgz", + "integrity": "sha512-yaOH/Pk/VEhBWWTlhI+qXxDFXlejDGcQipMlyxda9nthulaxLZUNcUqFxokp0vcYnvteJln5FNQDRrxj3YcbVw==" + }, + "tslib": { + "version": "1.13.0", + "resolved": "https://registry.npmjs.org/tslib/-/tslib-1.13.0.tgz", + "integrity": "sha512-i/6DQjL8Xf3be4K/E6Wgpekn5Qasl1usyw++dAA35Ue5orEn65VIxOA+YvNNl9HV3qv70T7CNwjODHZrLwvd1Q==" + }, + "uc.micro": { + "version": "1.0.6", + "resolved": "https://registry.npmjs.org/uc.micro/-/uc.micro-1.0.6.tgz", + "integrity": "sha512-8Y75pvTYkLJW2hWQHXxoqRgV7qb9B+9vFEtidML+7koHUFapnVJAZ6cKs+Qjz5Aw3aZWHMC6u0wJE3At+nSGwA==" + }, + "unpipe": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/unpipe/-/unpipe-1.0.0.tgz", + "integrity": "sha1-sr9O6FFKrmFltIF4KdIbLvSZBOw=" + }, + "upper-case": { + "version": "1.1.3", + "resolved": "https://registry.npmjs.org/upper-case/-/upper-case-1.1.3.tgz", + "integrity": "sha1-9rRQHC7EzdJrp4vnIilh3ndiFZg=" + }, + "urix": { + "version": "0.1.0", + "resolved": "https://registry.npmjs.org/urix/-/urix-0.1.0.tgz", + "integrity": "sha1-2pN/emLiH+wf0Y1Js1wpNQZ6bHI=" + }, + "utils-merge": { + "version": "1.0.1", + "resolved": "https://registry.npmjs.org/utils-merge/-/utils-merge-1.0.1.tgz", + "integrity": "sha1-n5VxD1CiZ5R7LMwSR0HBAoQn5xM=" + }, + "vary": { + "version": "1.1.2", + "resolved": "https://registry.npmjs.org/vary/-/vary-1.1.2.tgz", + "integrity": "sha1-IpnwLG3tMNSllhsLn3RSShj2NPw=" + }, + "warehouse": { + "version": "4.0.0", + "resolved": "https://registry.npmjs.org/warehouse/-/warehouse-4.0.0.tgz", + "integrity": "sha512-9i6/JiHzjnyene5Pvvl2D2Pd18no129YGy0C0P7x18iTz/SeO9nOBioR64XoCy5xKwBKQtl3MU361qpr0V9uXw==", + "requires": { + "bluebird": "^3.2.2", + "cuid": "^2.1.4", + "graceful-fs": "^4.1.3", + "is-plain-object": "^3.0.0", + "JSONStream": "^1.0.7", + "rfdc": "^1.1.4" + } + }, + "which": { + "version": "2.0.2", + "resolved": "https://registry.npmjs.org/which/-/which-2.0.2.tgz", + "integrity": "sha512-BLI3Tl1TW3Pvl70l3yq3Y64i+awpwXqsGBYWkkqMtnbXgrMD+yj7rhW0kuEDxzJaYXGjEW5ogapKNMEKNMjibA==", + "requires": { + "isexe": "^2.0.0" + } + }, + "wrappy": { + "version": "1.0.2", + "resolved": "https://registry.npmjs.org/wrappy/-/wrappy-1.0.2.tgz", + "integrity": "sha1-tSQ9jz7BqjXxNkYFvA0QNuMKtp8=" + } + } +} diff --git a/package.json b/package.json new file mode 100644 index 0000000..05b5d6f --- /dev/null +++ b/package.json @@ -0,0 +1,30 @@ +{ + "name": "hexo-site", + "version": "0.0.0", + "private": true, + "scripts": { + "build": "hexo generate", + "clean": "hexo clean", + "deploy": "hexo deploy", + "server": "hexo server" + }, + "hexo": { + "version": "5.4.1" + }, + "dependencies": { + "hexo": "^5.4.1", + "hexo-cli": "^4.3.0", + "hexo-deployer-git": "^3.0.0", + "hexo-generator-archive": "^1.0.0", + "hexo-generator-category": "^1.0.0", + "hexo-generator-feed": "^3.0.0", + "hexo-generator-index": "^1.0.0", + "hexo-generator-search": "^2.4.3", + "hexo-generator-tag": "^1.0.0", + "hexo-renderer-ejs": "^1.0.0", + "hexo-renderer-marked": "^2.0.0", + "hexo-renderer-stylus": "^1.1.0", + "hexo-server": "^1.0.0", + "markdown-it": "^12.3.2" + } +} diff --git a/scaffolds/draft.md b/scaffolds/draft.md new file mode 100644 index 0000000..1f9b9a4 --- /dev/null +++ b/scaffolds/draft.md @@ -0,0 +1,5 @@ +--- +title: {{ title }} +date: {{ date }} +tags: +--- diff --git a/scaffolds/page.md b/scaffolds/page.md new file mode 100644 index 0000000..f01ba3c --- /dev/null +++ b/scaffolds/page.md @@ -0,0 +1,4 @@ +--- +title: {{ title }} +date: {{ date }} +--- diff --git a/scaffolds/post.md b/scaffolds/post.md new file mode 100644 index 0000000..0ba9f45 --- /dev/null +++ b/scaffolds/post.md @@ -0,0 +1,7 @@ +--- +author: SouthFox +title: {{ title }} +date: {{ date }} +tags: +category: +--- diff --git a/source/Privacy-Policy/index.md b/source/Privacy-Policy/index.md new file mode 100644 index 0000000..7897b17 --- /dev/null +++ b/source/Privacy-Policy/index.md @@ -0,0 +1,26 @@ +--- +author: SouthFox +title: 隐私政策 +date: 2021-03-13 19:54:14 +--- + +## 追踪器 + +至少看到这段话的时候,这网站不会使用追踪器……例如访问分析。 + + **除非我引用了第三方资源**(包括图床、视频、音乐等)。 + +不排除这些外部资源进行追踪。 + + +## Cookie + +作为静态网站,我不会使用 Cookie 。 + +本站使用 `Gissus` 做为评论功能,其隐私政策参见 [这](https://github.com/giscus/giscus/blob/main/PRIVACY-POLICY.md) 。 + +如果你是通过 Cloudflare Pages 服务进行访问的话, Cloudflare 有可能会使用 Cookie , 详见 Cloudflare 相关 [Document](https://support.cloudflare.com/hc/en-us/articles/200170156-Understanding-the-Cloudflare-Cookies) 和 [Privacy polic](https://www.cloudflare.com/privacypolicy/) 。 + + + +> 访问此网站代表您已经了解了上方信息。 \ No newline at end of file diff --git a/source/_posts/2018/06/世界,您好!.md b/source/_posts/2018/06/世界,您好!.md new file mode 100644 index 0000000..715ea08 --- /dev/null +++ b/source/_posts/2018/06/世界,您好!.md @@ -0,0 +1,10 @@ +--- +author: SouthFox +title: 世界,您好! +date: 2018-6-30 17:59:49 +tags: +category: +--- + +看到这个就意味着你输了。 + diff --git a/source/_posts/2018/09/凌晨三点的天空是怎样的?.md b/source/_posts/2018/09/凌晨三点的天空是怎样的?.md new file mode 100644 index 0000000..ca0c63f --- /dev/null +++ b/source/_posts/2018/09/凌晨三点的天空是怎样的?.md @@ -0,0 +1,15 @@ +--- +author: SouthFox +title: 凌晨三点的天空是怎样的? +date: 2018-09-19 23:15:21 +tags: 日常 +category: 日常 +--- + +夜雀生活的的第二天,因为之前的教训,我已经提前买好了功能性饮料,让我惊喜的是,这个傻缺的1元换购的活动,我竟然连续中了两次!按照古典概型来说,一百分之一的概率!我也许把整周的运气都花在这上面了。 + + + +有了饮料支持,我凌晨三点的休息时间决定出去走走,想着到时候可以炫耀一下——你知道凌晨三点的夜空是怎样的玛?我知道~ + +可惜抱着这个想法的人不在少数,走到广场,休息的人坐在两旁,吸烟者占据多数,这让广场烟雾缭绕,让人感觉在修仙——好吧,其实就是在修仙。我飞似的逃了,虽然这不是过人墙,但是我还是忍受不了如此浓重的烟味,逃的时候望着天空——月朗星稀,好吧,低纬度的地区能看的到什么星星?等我有钱了一定要往纬度高的地方旅一次游,实际看看“Milky Way”,当然,等我有钱了。。。 \ No newline at end of file diff --git a/source/_posts/2018/10/一如既往的摸.md b/source/_posts/2018/10/一如既往的摸.md new file mode 100644 index 0000000..b14369c --- /dev/null +++ b/source/_posts/2018/10/一如既往的摸.md @@ -0,0 +1,23 @@ +--- +author: SouthFox +title: 一如既往的摸 +date: 2018-10-24 08:54:09 +tags: 日常 +category: 日常 +--- + +早上起来因为昨天(准确来说,今天)修仙的缘故,早上起来时是一副欲仙欲死的模样,训练时也无非训练几套就休息(毕竟动作教完了嘛),不过这样我就更想睡了,又睡不了,感觉又是。。。。在做睡眠训练 + + + +其中说到下午要进行消防演练,要我们起来时做好准备,一听到哨声就拿毛巾打湿弓着腰下去。。。 + +中午回去时早早就睡了,大概睡了一个多小时吧,中间有一段时候感觉自己口腔剧痛无比,不过现在看来,大概是被潜意识骗了,因为最近我口腔边边长出来一颗牙齿(难道是智齿?),感觉有点不舒服,不过远还没到达痛的程度,所以这次很有可能是一次假醒,其实我是在梦里。之后做的梦。。。大概是一个无脑的爽文的主角的故事,但是。。。剧情歪了,尽是被小潜调过的痕迹,感觉有点哭笑不得呢。 + +下午起来,整理之后拿着毛巾就等着了,然后依稀听到了几声哨声,没得说,冲下去吧,结果一到场,发现,竟然是假哨!真是想把那个人拖出来打死,然后就到超市买东西,买了个五羊雪糕,结果发现是5块钱,感觉奢侈的很啊。。。然后教官要求我们重新上去时,我们宿舍鸡贼的很,躲在二楼,一吹哨就冲下去了。 + +后就是讲座了,无非就是老调重弹的灭火器的使用,没有讲多久,剩下的时间就是训练了,解散去吃饭时的路上,惊觉要看看京京跟阿峰的纪念日是什么时候(虽然我昨天就有在考虑了),更新了80多M进去时发现还有九天,然后把截图发给他,然后东一句西一句的聊着。。。嗯,然后我提议要星期天要再现在四中的时候的阵容,虽然现在已经半年过去了。。。如果真能办到,我一定喊上一句“呜呜,时隔半年的摸鱼号重新发车啦”。 + +晚上,教官来了个报数,发现我们方阵少了50人,然后又来个大点名,不知道那些人怎么想的,昨天的事没有吸取教训的嘛?还是觉得晚上的集训无足轻重?反正看戏就行了,估计下一年这些小机灵鬼要重修吧,我还是挺想看到明天是什么样的光景呢,一定要火爆一点啊(看戏脸)。 + +总之,今天就是这样结束了(至少本文截止时)。 \ No newline at end of file diff --git a/source/_posts/2018/10/军训——摸就完事了.md b/source/_posts/2018/10/军训——摸就完事了.md new file mode 100644 index 0000000..947a22c --- /dev/null +++ b/source/_posts/2018/10/军训——摸就完事了.md @@ -0,0 +1,26 @@ +--- +author: SouthFox +title: 军训——摸就完事了 +date: 2018-10-17 23:25:00 +tags: 日常 +category: 日常 +--- + +所以,我在军训了。。。但是没什么感觉,因为现在已经是深秋了,还恰好赶上雨季(真是心疼那些8、9月份就军训的)风吹的舒服的很,如果天空落下雨滴的时候,心里就想着——让暴风雨来的更猛烈些吧!(不过通常情况就是原本就小的雨势越来越小,然后我顶着个懊恼的心情继续站着) + + + +军训第一天上午雨下的挺大,本来是要开个开学典礼暨军训开营仪式(但是为什么开学快半个月才弄开学典礼啊)然后让我们进到主席台旁的观众席上,不幸的是雨水打在上面的护栏上,还是让水一台阶一台阶的流下来,搞的我屁股都湿♂了,可是比起哪些一直在淋雨的学院,我还算幸运的。。。哈哈,所以也不能再抱怨什么。 + +最后还是放我们回去整理内务了,嗯,其实就是摸了,好像我就在床上看了会无脑爽文就摸过去了——没什么意思,下午就是军训正式开始了,我们的教官挺随和的,不会太刁难我们——所以更摸了!这可能是我觉得军训无聊的原因吧,一小半时间都是废废的整队无聊时间,然后我们是匕首操队,风气有点懒散(这可能跟我有关,从小到大我都有种象征——所在的集体对比其它集体都会有点摸,诶,可能我有成为摸鱼之王的潜质吧) + + + +第二天就一整天天气都挺好,所以摸不了,可怜,然后训练的时候,无非就是趁在教官目光死角时摸摸鱼然后在压腿拉韧带时鄙视鄙视那些稍微拉一下就嗷嗷直叫的人(可能跟我一年级在舞蹈队待过的原因,身体柔韧性在平均水准之上——不过随着长大之后越来越摸,一字马很早就下不去了,不免是桩憾事) + +然后就是晚上的教军歌唱歌的时候了,然后就是什么拉歌什么军式笑话横行的时间了,这些笑话本身并不高明,但在那种环境下,有能笑得东西已经不错了!然后教官分配任务,什么要做个用纸什么的做个匕首啦(毕竟我们是匕首操方队嘛),然后抄一抄歌词啦,回去时,我一边吹水一边做匕首,然后我本来是想把任务二合一将歌词抄在匕首上的,妄图给这把匕首附上精神伤害,可惜胶带已经捆上了只好作罢,另外这把匕首是用肉松饼的盒子做的,所以我将这把匕首命名为——肉松匕! + +然后上床修炼一下“功法”到一点半就睡了。。。之后半夜三点醒来时恍然听到下雨声。。。做的梦气氛也挺安详的,跟学校学习还有饭堂有关——早上起来,看着外面,下着雨——哇,精神激动,有摸的可能了,然后果然,延迟集合了,出去吃早饭,回来宿舍补觉到九点,然后又要搞什么内务检查,摸到中午,诶,可惜,在下午解散时乱糟糟的情况下我的肉松匕不见了,也许是有人看的我做的太好私自据为己有?应该拍个照的,可以挂到这里缅怀一下。 + +晚上集合时——讲了一下内务方面的问题又放我们回去了——又是摸鱼的内务检查!诶,摸就完事了,然后我再做好了一把匕首,命名为——神圣穿刺死棘之特制对摸鱼十字三重纷争概念类匕 +10(其实就是纸棍和胶带随便乱搞的东西啦,这次连瓦楞纸都没用上,好摸啊),然后这就是我三天的经历了,总结为——摸。 + diff --git a/source/_posts/2018/10/军训中的摸鱼和安全讲座.md b/source/_posts/2018/10/军训中的摸鱼和安全讲座.md new file mode 100644 index 0000000..f5aa974 --- /dev/null +++ b/source/_posts/2018/10/军训中的摸鱼和安全讲座.md @@ -0,0 +1,21 @@ +--- +author: SouthFox +title: 军训中的摸鱼和安全讲座 +date: 2018-10-20 08:32:47 +tags: 日常 +category: 日常 +--- + +因为周末时间不断网,昨天修炼功法有点晚,早上起来都有点经断脉碎的,早上训完拳法时,教官又开始教我们倒功(如何倒地如何起身),不过我还是想不通,倒功在哪里有用?难道被人打趴时,可以喊个123来个分解动作来个快速起身嘛?其中我还听到一个教官明天就要落跑了,跑到肇庆的一所学校里,虽然仅仅陪伴了两天时间,但还是有点点伤心的,不过另外一个骚话教官会一直教完我们,还算好吧。 + + + +学完拳之后我只有一个想法,不要招惹我们系的女生(或者男生?),因为她们现在都会几招捕俘拳的,尤其里面一些什么,上提下踹,插档抗摔的专门打关节和男性魂之所在的(物理)。 + +中午,没什么,就在那肝崩崩,这个星期起码浪费了10+小时在这破游戏里,感觉肝都要硬化了,其中用了个深陷苦海的代团的号抽了四发魔女搞了个量子小猫,感觉很妙,所以我也好想要,随即用自己的号抽了发十连加两个单抽,最后我盯着29/30的数字是懵逼的,无奈只好再给大伟的别墅添一块砖了,可能用3000氵仅为搞个娱乐东西看起来有点傻,不过谁叫这是有关量子的东西呢?(算不算一种侧面的为爱买单?)无所谓了,不过我还是想把米忽悠的数值策划拉出来打一顿,29/30是真的窒息。 + +下午来了个蓝天救援队开了个安全知识的讲座,不过这跟军训没什么关联吧,想不通,不过能摸自然是好事,晚上——又是内务卫生检查!又 可以 摸 了!不过其中还是有点搞笑,教官进来检查时随便看两眼就匆匆走了,然后就流传这次只是预演,之后会有总教官专门检查的!搞得整个宿舍都瑟瑟发抖,然后到八点半也没什么音讯,感觉被耍了,可怜我的肥仔快乐条,就这样闷在柜子里,感觉现在打开柜子都有一股没来由的辣条味。 + +现在就躺在床上摸了,不过倒是把那“锦囊妙计”看了一下,嗯,总感觉回到了以前啊,我拿出坎卦和离卦的竹条来抽,抽到哪个就洗哪个澡(冷水,热水),感觉好怀念啊,也不知道那些个竹条有没有被虫子啃光呢(毕竟用棍子排卦不方便,大把拿在手上也卡手,所以就很久没用过了) + +回首往昔,发现以前不以为意的小事,现在却又珍惜怀念的很啊,不免发出其实横穿中西古代先今都是烂大街的关于时光的感叹,掰着手指算着军训还剩8天就感觉有点难受,而且因为学号靠前的关系,我还被钦点写个什么关于军训主题的文章,不少于800字(还说什么写得好就发到学校公众号上),我还以为只要工科的就能离这些作文远一点的呢,果然我还是太navie了。 \ No newline at end of file diff --git a/source/_posts/2018/10/军训结束了——咸鱼知多少?.md b/source/_posts/2018/10/军训结束了——咸鱼知多少?.md new file mode 100644 index 0000000..cb4452d --- /dev/null +++ b/source/_posts/2018/10/军训结束了——咸鱼知多少?.md @@ -0,0 +1,22 @@ +--- +author: SouthFox +title: 军训结束了——咸鱼知多少? +date: 2018-10-28 09:10:24 +tags: 日常 +category: 日常 +--- + +早上起来,并不怎么困,虽然今天修仙到3点多,不过因为稍稍计算了一下睡眠周期,所以起来时不是在深度睡眠状态,不至于欲仙欲死,然后就是准备准备,面对军训生活的最后一天了! + + + +到场时,人群挤成黑压压的一片,天空也少见的出现了太阳——总之,是个好日子,不过,对于我们这种一直在多云天气训练下的我们,艳阳高照的天还是有些受不了(至少对咸鱼来说),然后就是总教官上场了,还小小得排练了一下,之后就是校领导登场了,一连报了十几个校领导,我们也得鼓掌十几次,有点小尴尬,最后的掌声都开始变稀稀拉拉的了。 + +之后就是演练了,检验一下十四天的结果,一个营一个营下去——到下个议程时,我们教官已经离场了,我们转过头,教官已经上了包车了——不知教官是怎样的心情呢?我们的营是最摸的,教官没少受气,不过,我想多少是有丝不舍的吧,最后的离场,教官连招呼都没有打,是已经习惯了吗?反正下一站,又要面对新的人了。。。不过即使教官离开了,他的口癖还是会在班上席卷一阵子的吧。 + +讲话讲完了之后,随着校领导嘴里蹦出“到此结束”时,全场都爆出了一些欢呼声,不过我的心情到还平静,毕竟,这个军训整体并没有什么太大波澜,对我来说,可有可无吧,不过我走在去宿舍的路上,听着身后的操场传来的劲歌声,心里还是会有几丝迷茫的吧,然后我到超市买了瓶冷饮慢慢晃上宿舍,打开电脑开始摸。 + + 13点时,终于集齐5人去守护京京了,看到加载界面一排过去的闺蜜挚友标志,不免也会有几分感慨吧,之后也是像极了在四中的时光,像是一直在玩单机的上路,不时会因为网络(虽然这次是因为机型问题)不时地杵在某地然后开始进进出出的某人,一直想着骚人的小东西,一直打中却基本没怎么支援过边路然后畏畏缩缩闷声毒瘤刷装备想着发大财的中路,一直在崩的下路。。。180天过去了,人们现在也各奔东西,但是有一些东西是不会变的吧,不知道这游戏的纪念系统会不会出到10年呢(看游戏的运营状况感觉悬),如果到那个时候,还能聚在一起时,到底是什么光景?真是好奇啊。 + +然后我去补觉到17点,然后摸到了晚上,想着明天都要上课了,还有一大堆事情要做,不免就有些脑壳痛。。。 + diff --git a/source/_posts/2018/10/嗯。。。。?我现在在干什么呢?.md b/source/_posts/2018/10/嗯。。。。?我现在在干什么呢?.md new file mode 100644 index 0000000..5487a03 --- /dev/null +++ b/source/_posts/2018/10/嗯。。。。?我现在在干什么呢?.md @@ -0,0 +1,33 @@ +--- +author: SouthFox +title: 嗯。。。。?我现在在干什么呢? +date: 2018-10-27 09:01:18 +tags: 日常 +category: 日常 +--- + +星期五(1026)的时候,早上和往常一样,摸摸鱼,被教官训几顿,然后一切又照常—— + +期间唯一留下印象的是早上起来时候做的梦——梦到了一只狐狸,不过倒是怪模怪样的,毛是炸炸的,活像下司犬,而且比例也不太对,大小像是阿拉撕家那样般大,根本不像一个正常的狐狸,所以应该是梦系统造中合成功能造成的吧。不过我没想到这些元素分开到底代表什么,或者说,我不想去想——就让他变成一个美好的谜吧,毕竟不是每个梦都需要解析的。 + + + +下午晚上还是跟以前一样吧(或者说是因为军训久了,类似的程序过的多了大脑的印象就减少了)方队摸摸鱼,被教官训斥几顿又again了,没什么意思。。。晚上在寝室里想一下关于如何做word和ppt,不过好像就找了个模板就没什么进度了。。。好像后面转头给播放器搞个歌词功能去了。 + +星期六(1027)的时候,早上和往常一样,不对,应该是不一样了,毕竟明天就是结营了,所以得彩排一下,早上2次下午2次,晚上再来一次,总共5遍。。。可能。。。会有用吧,不过其中让我感到惊讶的就是彩排中的形式主义过于浓重了吧, + + + +“有请xxx校长讲话!” + +  几秒后—— + +“掌声!感谢主任带给我们的精彩讲话!” + + + +哇,感觉有点小尴尬欸,要不要彩排到这种地步啦。 + +下午吃饭时,突然想起约定的京京活动动员了起来了没有,然后又是BALABALA的一顿,之后就是敲定好了成员,如果运气好的话大概能筹成五黑吧——不知道能不能感受到以前的味道呢?希望今天结营仪式后下午不要冲出一个什么破该协会开会占我时间就行—— + +晚上——一想到word和ppt的问题我就头大。。。开始想要不要连夜爆肝做好——好像现在似乎就是在这么做了。。。不过我有在10点钟睡了一小觉,不知道能欺骗体内的生物钟多久呢?这次修仙是经过密切筹划的,主要是给后面的生涯积点经验——不过,一点了什么正经工作还没做真的好吗?啊啊,得加把劲了,也许中途凌晨4、5点时可以考虑拍张夜景挂到博客上。 \ No newline at end of file diff --git a/source/_posts/2018/10/摸ing。。。.md b/source/_posts/2018/10/摸ing。。。.md new file mode 100644 index 0000000..087158e --- /dev/null +++ b/source/_posts/2018/10/摸ing。。。.md @@ -0,0 +1,13 @@ +--- +author: SouthFox +title: 摸ing。。。 +date: 2018-10-21 08:36:33 +tags: 日常 +category: 日常 +--- + +昨天睡的比较早,所以早上比较精神,在集训时,教官新教了擒拿,流程是副手先踹两脚然后再打一拳,然后操作手反抓副手的最后一拳然后再抓住大腿头再从腋下将副手扛起来摔下去,我和一个物联网专业的小哥组队,本来上午是我做操作手的,但这位小哥一米六的个头竟然比我重多二十斤!(但是体型看起来跟我差不太多,神秘)然后我就扛不太起来,所以下午我果断换位置了,毕竟副手不用出力,可以摸啊。 + + + +下午也就是摸,没甚说的,晚上就是拉歌大赛了。。。拍了一些照,思考怎么放到博客里。。。 \ No newline at end of file diff --git a/source/_posts/2018/10/标题摸了.md b/source/_posts/2018/10/标题摸了.md new file mode 100644 index 0000000..afd7159 --- /dev/null +++ b/source/_posts/2018/10/标题摸了.md @@ -0,0 +1,21 @@ +--- +author: SouthFox +title: 标题摸了 +date: 2018-10-23 08:39:26 +tags: 日常 +category: 日常 +--- + +内容也摸了。 + + + +早上没有什么值得说的事,就是快结束的时候又来个全营大集合,下午又来一个讲座—也是军事理论课,不过区别就是这次是面向整个级的吧。 + +中午,我在给这个博客进行优化工作,虽然这个博客可能一生的UV(独立访客浏览量,即1天内相同的访客多次访问的特产也只计算1个UV)都不会超过10啦,但是优化优化我觉得还是必须的吧,毕竟这博客算是自己一个小小的独属于自己的空间【而且我还可以让这个空间随时地开放或是不开放(比起那些一直开放不时会受气的空间来说,这也算是优点吧)】 + +然后我花了一中午的时间给这个博客做了read more功能,这样主页上的文章不全部显示了,只显示指定的部分(比如这个文章的小把戏也是这个功能的应用哦)感觉有一种含蓄之美(雾)。然后就是做了静态化的工作,这样在辣鸡网络的前提下,浏览速度都有一个大的提升,后面还做了一个邮件系统,这样有人在博客上留言我可以收到邮件通知,或者我回复留言时,系统可以根据访客留下的邮箱拟写一份提示有人回复的提醒邮件(这个才是重点),后面打算针对图片进行优化工作,不过没什么头绪。。。 + +下午,讲座时间,讲师是国务军训什么方面的主任,看起来来头很大,还能指挥我们的教官,不时得还能训斥两句,不过讲的内容倒是没什么,就讲一些什么古代军事啊,近代军事,现代军事啊什么的,什么古代孙子兵法,赵括,白起啥的,不过我都知道。。。所以我才感到无趣吧,然后跟旁边的一个我们班的小哥勾搭上了,东一句西一句的聊着,感觉这位小哥的兴趣面跟我重复的比较高(什么科学啊,三体啊,宇宙啊,什么什么的,不过就是感觉有点现充,哈哈)中场休息结束时,我们的总教官发怒了,主要是有些人上厕所没向教官打报告,还有一些人坐没坐相(没错,其中有我,毕竟见到那么大的草坪,还是人工的,可以不用担心虫子的问题,所以忍不住躺下,舒服的啊)。 + +讲座结束时,教官再一次发飙了,因为有一些人提前开溜了,没辙,大点名呗,搞一搞,吃吃饭,晚上,本以为会被整的很惨,结果没有什么,估计教官觉得对我们多说无益了吧—然后晚上摸摸鱼到一点,主要是继续搞博客优化的事,今天就这么结束了。 \ No newline at end of file diff --git a/source/_posts/2018/10/看似不摸,但还是摸的.md b/source/_posts/2018/10/看似不摸,但还是摸的.md new file mode 100644 index 0000000..75b52eb --- /dev/null +++ b/source/_posts/2018/10/看似不摸,但还是摸的.md @@ -0,0 +1,15 @@ +--- +author: SouthFox +title: 看似不摸,但还是摸的 +date: 2018-10-19 23:30:55 +tags: 日常 +category: 日常 +--- + +星期四早上,集训时,秉着摸鱼之心的我站在场上,惊讶的发现,教官换了,不是以前的两位教官,是其他方队的教官,随即,新教官说因为我们的表现,要换教官了,然后匕首也不耍了,改换成打捕俘拳了(我一开始听着像虎扑拳来着。。。)所以以后我们是表演打拳了,匕首也被收走了(到现在也没还回来,估计是直接像垃圾一样丢掉了吧,可惜我的神圣穿刺死棘之特制对摸鱼十字三重纷争概念类匕 +10 到最后也没用上,也同样没留下什么照片,诶) + + + +虽然教官初看起来很严格,但是相处之后发现其实新教官也挺可爱的嘛,尤其里面一个喜欢飚口癖(比如什么八嘎呀路,呦西),似乎还把伤病不能参加的在旁边围观军训的人称为飞虎队。 + +今天也没什么出奇的事,就是天空久违的出现了太阳——然后我10点中就感到很疲乏了,应该是太阳的照耀加剧了体力消耗吧,感觉军训5天才终于有点军训的感觉啊,之后教完了捕俘拳完整十六动(虽然我还不怎么熟)然后下午5点时天空开始下起雨滴来,大大大!心里这么想着,结果雨势真的大了!怎么说,摸了,晚上本来是歌唱大赛的,结果变成了摸鱼的内务检查,之后晚上也没干什么,干了一些优化博客视觉效果的事(其实就是摸),这两天也就这样过去了。 \ No newline at end of file diff --git a/source/_posts/2018/10/窒息一天.md b/source/_posts/2018/10/窒息一天.md new file mode 100644 index 0000000..0f9d4e6 --- /dev/null +++ b/source/_posts/2018/10/窒息一天.md @@ -0,0 +1,25 @@ +--- +author: SouthFox +title: 窒息一天 +date: 2018-10-22 08:49:30 +tags: 日常 +category: 日常 +--- + +今天因为升国旗的缘故,需要六点五十集合,而且昨天晚上还摸鱼到1点钟,所以起来真的有点走火入魔了—中间做了一个梦,似乎梦到一个生蔬市场,然后注意到里面的地板异常干净—然后就没了,本来应该有更多细节的,诶,看起来因为最近经常修仙,抛瓦尽失啊,现在看起来这个梦应该是有更多寓意的啊。 + + + +早上升国旗的时候,不知是什么学长还是什么破该部门,拿着无人机在哪里航拍,这样就算了,还拿个两三架来,螺旋桨的声音异常烦人,这可是军训诶,拜托,而且在旗手要装旗子的时候,发生异常窒息的一幕,其中一架无人机竟然撞到旗杆上!径直撞了上去!然后无人机打了几个转儿栽了下去,不知道有没有砸到旗手,本来应该是搞笑的一幕,但是这是升旗仪式诶,所以那时只感到更多火气,不过幸好哪些人不是完全蠢笨之人,在行注目礼之前把机儿开走了,没有噪音产生,但可惜在接下来的讲话环节无人机又开过来了,是有多喜欢无人机航拍哦。 + +虽然升了国旗,但是还是正常点集合,sad,只好匆匆吃了个早餐,集合时,因为队伍摸了,教官就rua了,开始大声责骂我们,比如升旗时队伍歪歪扭扭啦,走到附近还没站好军姿啦等等,最后让我们排练一次,完事后,一名满脸麻子的新教官闪亮登场了,又来了个责骂,直说82岁的老太婆都打的比我们好(虽然我也是这么觉得),然后直接开始暴力调教我们,搞得我们全部都湿了,一脸潮红,气喘吁吁,然后满嘴骚话的教官跳出来拯救了我们,让我们休息了——不过因为动作都教完的缘故吧,休息时间意外的长。 + +中午,本来是想补补觉的,但是我的快递到了,然后因为中通驿站的点是定在学校外的,无奈,只好出门领了,不过在校一个月了,还没好好出门走走过,挺新奇的,因为学校地理位置较偏僻,所以周围都是不甚发达的城中村样,倒是意外的有感觉呢。 + +下午,就练了两套动作,然后就把我们带到报告厅听讲座,好吧,看起来是军训的思想工作嘛,主题是军事理论分析,大体就讲讲军队体系,世界现状之类的,不过我因为中午走了一遭,兴奋的很,所以中午没怎么睡,一在报告厅里放松就巨想睡,而且我的位置在主讲人正前方,更尴尬了,一直都是强撑着不睡,经常会意识瞬间消失一阵,然后又起来,感觉都能当睡眠练习了。 + +下午休息时本来是想摸爆的,但是一想团训还没写,就只好赶工干出来了,30分钟800字,总感觉像是在写作文,而且写的也有点糊弄——“军训使我的肉体和心灵都得到了升华”我究竟是有多么恬不知耻才能写出这种话。。。 + + 晚上也是挺摸的。。。没什么训练,就挑几个倒霉蛋去唱歌而已,其中骚话教官还说出了“不出来就打出去拖死”这种鬼话。 + +晚上休息时间,无非就摸摸鱼吹吹水而已,顺便试了一下新拿到的OTG线效果怎么样,效果还不错~今天下午喉咙发炎就发展成感冒了,一直在打喷嚏留清鼻涕,不过神奇的是,一直在队伍中的我到没感觉到什么,或许是军训环境的魔力也说不定哦。 \ No newline at end of file diff --git a/source/_posts/2018/11/二战?!.md b/source/_posts/2018/11/二战?!.md new file mode 100644 index 0000000..074a1e0 --- /dev/null +++ b/source/_posts/2018/11/二战?!.md @@ -0,0 +1,37 @@ +--- +author: SouthFox +title: 二战?! +date: 2018-11-10 10:59:02 +tags: 梦记 +category: 梦记 +--- + +早上9点才摸起来,然后打手游又摸到了12点,然后跑出去吃饭——回来时又摸机到3点——总之,摸爆了,所以爆了之后,就比较累,所以在下午三点种睡下.。。。 + +总之,做了个非常长的梦——或者,剧情挺丰富的梦,但是想起来虽然挺鲜活,变成文字就有点苍白了,果然梦记这种东西得天天练习一下才行鸭—— + + + +接下来是比较能串在一起的场景—— + +一开始,我在一个庭院里——不知道跟着谁,可能是家人,朋友,又有可能是独自一人,这个庭院是一个很标准的西式家庭房子的院子——里面的家庭也挺标准的,一个男人,一个女人,还有几些孩子,他们梦中都提到了名字,可惜都比较模糊——所以我都给忘了(惭愧惭愧),然后我们似乎处的很好,度过了一段愉快的时光—— + + 然后场景几经变化——中间似乎我醒来过,听到我们班班长进来找人的声音——  之后,我重新睡了下去,然后发现,我还处在那个院子里,我旁边的人似乎已经走了,似乎就只有我在哪里,然后我发现,女主人在捂着脸在哭?我问她为什么在哭,然后她挥挥手指了周围,我抬起头环视周围,发现周围竟是一样的院子,院子周围的院子,还是一样的院子,然后一样的院子里,都是同样的女子在捂脸哭泣,这算什么?终究发现了自己的位置?像是一个NPC,就这样被安排在那里?我不知道。。。 + +接下来,我迷迷糊糊走了出去,走到了一个街道一样的地方,然后跟一名男子搭上了话,用的还是英语,我还在脑海里拼命的组词,哇,这么个逻辑活都没能让我知梦,将这个梦变成清明梦,果然睡前的暗示是有必要的(或者说我最近睡眠紊乱,dream power尽失)。 + +“该死的,要不是最近几年的二战——” + +what?!最近几年?可是我感觉到现在依然是8012年啊,然后我抬头,发现街角的一个房子上的标语上写着“World War ⅱ——” + + “额,但是——”我语无伦次的说到“我们那里,二战是1945年开。。。不,1945年就结束了啊,这里这么就——”然后梦就崩掉了,我醒过来了。 + +大概,我是梦穿到了一个其他的世界线?现在想来,梦里的2018年面没有出现什么高科技产品,大概,是因为事情走向的差异吧,相比于我们,科技发展和事情延迟了70几年吧—— + +然后是一些零碎的场景 + +第一个是我在家里打开第二台笔记本电脑(但是也只是梦里的感觉,毕竟家里面没有第二台本本),发现系统已经被刷掉了,没有图形界面,打开竟是一些命令字符——我感到几丝。。。惊诧和落寂? + +然后 是一个礼堂什么的,吃了一些什么菜,然后是一个巴士开走了,不知道是什么人在追赶,大概——以前也梦到过这个场景? + +接下来是我梦到在一个楼梯隔间计划着什么事,不过回想不到什么,里面的阻力异常的大,大概是潜意识“刻意”为止压抑的,毕竟这个场景我有着比较大的情绪起伏的。 \ No newline at end of file diff --git a/source/_posts/2018/11/处于摸与不摸叠加态.md b/source/_posts/2018/11/处于摸与不摸叠加态.md new file mode 100644 index 0000000..6b07f85 --- /dev/null +++ b/source/_posts/2018/11/处于摸与不摸叠加态.md @@ -0,0 +1,19 @@ +--- +author: SouthFox +title: 处于摸与不摸叠加态 +date: 2018-11-07 10:43:50 +tags: 日常 +category: 日常 +--- + +大概是在5号的这个时间,大概也是在写着这篇日志的时候,大概是在鼠标的闪转腾挪清脆点击之声中——BOOM!!!电脑卡死了,BGM的最后一个音符也被无限拉长,变成了刺耳的噪声,然后,电脑就蓝屏了——错误代码DPC_WATCHDOG_VIOLATION,起初我还是存有忍耐之心的 ,觉得只是一次普通的卡死,重启了之后 肯定是不会再发生的,结果我还是太navie了,下一次不到二十分钟又蓝屏了。。。 + + + +经过几次的强制关机之后,我终于忍无可忍了,想着这破该系统,要不是看着装机附赠的office16学生版,我才不会用垃圾win10呢,更何况我已经把office绑在了微软账号上,现在系统已经这样了,那就更没有用的理由了。 + +接下来快速的选择备份一下,然后就开始安装Ubuntu了,这个系统安装一直在电脑里,只是我一直没怎么用而已——现在只是重新安装一下把Windows覆盖掉就行了——不过过程不顺利,可能是因为系统安装把自己的安装文件也给覆盖掉了,无限卡死,诶,看起来硬盘安装的缺陷就在于此啊,没法,只好跟旁人py一下,不过都不太情愿毕竟将u盘制作成安装盘得格式化一遍,最后是一位因为u盘是刚买的无所谓的 舍友将u盘借给了我,mua~感谢感谢,这可都算是再造之恩了鸭,接下来就是安装时间了——也相当于跟巨硬诀别了,以往的随便动动鼠标就享受安装的过程或是多种多样的.exe是很难感受到了,不过,这也是我的选择,通过不停的折腾自己,自己的技能也会得到磨炼吧。 + +但是我还是低估折腾的程度了,比如校园网的验证,命令怎么使用,软件的安装路径,怎样兼容Windows的软件的BALABALA的,不得不感叹为什么微软的霸主地位是多么巩固了,其他系统不能简简单单运行.exe文件就是一道相当于王母娘娘发簪划下的银河了——我是要抱着多大决心才能把非Windows系统作为自己的日常系统鸭—— + +不过,随着折腾,日常所需的各种需求也是能满足了,而且随着探索,我也尝到了几丝甜头,不过,想要如臂挥使新系统还是得多多磨合一下的。最近的空余时间也是扑在了这个新系统上,所以也是没什么时间写日志啦,不过,明天有就是还有一个单片机编程什么的,现在还摸着还合适吗?不过,大家都是擦菠萝(赤膊)上阵,所以不方。 \ No newline at end of file diff --git a/source/_posts/2018/11/形式主义过于浓重.md b/source/_posts/2018/11/形式主义过于浓重.md new file mode 100644 index 0000000..af26b3d --- /dev/null +++ b/source/_posts/2018/11/形式主义过于浓重.md @@ -0,0 +1,29 @@ +--- +author: SouthFox +title: 形式主义过于浓重 +date: 2018-11-08 10:47:33 +tags: +- 日常 +- 梦记 +category: 日常 +--- + +总之,刚才,搞了个什么入党积极分子评选班会,上面还钦定划了指标,要占到全班的2/3,emmmmmm,还是第一次听说这么奇怪的要求,而且,过程也是极尽其繁琐,清规戒律也是多如牛毛,什么什么不能提前离场啦,要不就算作废,什么什么填报要求啦,BALABALA的——不过,与我何干?反正我还没成年,入不了党,我也一直在用阅读器在美滋滋看着书,看得是克苏鲁的时光魅影,剧情走向到到是在我预料之中,这可能是我被现在发达的文化产业荼毒的结果吧,不过能在30年代就写出这种作品,爱手艺(H.P.LoveCraft)当真是大神了。 + + + +然后也是说到今天刚到货的新设备——iReader Light版,或者说,穷人版,屏幕相比以前的那个显得比较小巧,不过我倒是蛮喜欢的,在手上把玩到不显累(相比以前那个)还有就是切换背光灯的按键被砍掉了,恩,省成本后果吗?硬件方面我到满意,不过赠品方面就不得不让我说出一句“辣鸡坑阅”了,以前本来的代金券是直接附送的,卡片样子还做的挺漂亮的,结果现在却是要微博分享才行——而且每个星期才抽5位。。。不过,這阅读器的拆箱也是让我想起了在四中的时光呀。。。记得当初上面附赠的书好像有一本走进非洲来着呢。 + +早上因为是三四节才有课,所以一口气睡到了九点,所以做的梦也比较长——情节也是比较荒诞离奇(即使在我做过的梦里来算),感觉大有东西可挖,不过现在才写出来,估计会缺失很多细节了。 + +————————— + +是一座大厦——外观似乎没什么,里面倒是没什么,然后就是没什么来由的我在里面,似乎我是一名看客,里面发生什么事都与我无关,然后目标就是往上走,但这个大厦,气氛有点压抑,发生了很多奇怪而又可怖的事,但是我还是往上走,其中记得比较清楚的是楼梯上的场景,一张铁丝网还有后面类似行李箱堆的东西?不过,往上走的不止我一个,还有其他人拼命得往上走,毕竟,这个大厦很恐怖,不过,我并没有强烈的感觉,还跟旁边的一个人说着,你想(离开这大厦?)的话。 + +然后场景变换——大概是变了好多,其中我醒了几分钟,还听到一个舍友要出去,其他舍友要他帮忙带早餐的声音,不过因为我想赖床就继续睡了下去——然后我在一个走廊里,旁边是一个房间门,门里边——是一个妇女和一些人,他们。。。似乎就像是在地狱里边?不停的**重复自己的死法**?妇女拿着一把刀往自己的腹部割去,然后循环往复——其他人好像也是一样的,我在走廊旁,似乎是不能动得样子,不过,我就是看着——并没有情绪起伏。。。 + +“呐,逃脱这里的诀窍——”一个人,就是之前我帮助的那个人,不知怎么的,呈坐姿出现在了我的差不多肩上(?)的地方,然后,我似乎又能动了,于是又一同前往更高层—— + +似乎场景错乱了(梦系统的运作总是稍显“凌乱”的)似乎又有一些在下层的故事,然后什么一个在顶层的我发现有一个很重要的事要做(找人?),打开门就急急忙忙往下走了——之后就是带人来到上层,然后一个人挡在了我们面前(这可能也是我),然后对面的将一些抛射物扔向了我,看起来是开打了——然后我伸出手,将最前面的抛射物阻住,将其勾划成一椭圆形挡住了后面的抛射物(感觉像是修仙文斗法一样) + +后面就没什么了,其中梦中出现了多个我,感觉像是本我,自我,超我一样?还有好多细节也待考证,不过那个”地狱“房间肯定代表着什么负能量吧,不过,这次终于不是以丧尸的形式了,终于有点新花样了诶。 \ No newline at end of file diff --git a/source/_posts/2018/11/摸还是不摸?.md b/source/_posts/2018/11/摸还是不摸?.md new file mode 100644 index 0000000..a654d2d --- /dev/null +++ b/source/_posts/2018/11/摸还是不摸?.md @@ -0,0 +1,19 @@ +--- +author: SouthFox +title: 摸还是不摸? +date: 2018-11-03 10:41:46 +tags: 日常 +category: 日常 +--- + +总之,因为比赛的事,最近都很忙,而且比赛的结果也是当个分母——虽然我一开始就知道了,我们队伍是最摸的,因为有我这个摸鱼FLAG在,所处的任何团体都会比较摸(算是诅咒嘛?)然后现在就比较咸了一点,当然也不知道干什么,不过开心的事还是有的,比如我破了10块的财买的阿里云的服务器体验还是蛮好的,设置的vpn服务还是可以帮我突破23点的断网限制,速度也有3~5M,延迟也喜人(有的时候甚至比宿舍楼开的网线还要好),不会玩个什么moba就化身迈克杰克逊了,全场太空步。现在也打算将博客安排在这里了。 + + + +今天早上,一直睡到9点多,睡的时间比较长,做得梦也非常多,但是没有什么是让我产生特别大情绪波动的梦,所以就没刻意去记了,然后摸到10点多起床,整理整理就出去了,校园里似乎在开什么越野比赛的样子,不过我只是远远的眺望了一会,并没有走近去看,我此行的目的是做一个调查,看一下学校里植物的种类(军训的时候我就打算干这个了)不过逛了逛,发现虽然认识的有一些,但是自己的知识储备还是太少了,连基本的分类标准也半生不熟,所以怎么准确识别植物名呢?所以打算先放一放,打算恶补一下知识再说,然后去剪了个头发,说来惭愧,没有父母的督促,自己的头发好像两个月都没剪了,校园里理发店的小哥一直推荐我修头发,开会员什么的,不过可惜,我穷,没钱,所以小哥是打算是注定不成功——幸好没有遇到暴躁老哥,要不然剪刀往后颈一抹我就G了鸭。 + +然后我就在外面的一个椅子上肝着崩崩,今天的天气似乎不错,一直有着微风荡漾,天空也出了几丝微弱的太阳,刚剪短的头发感受尤为强烈,估计以后冬天到了就没有这么好的天气了。 + +从来没有在这种环境下肝过手游呢,算是一种新奇的体验吧,11点多的时候,我慢悠悠的晃上食堂,再摸了一阵子吃完之后,又慢悠悠的晃下来,发现我们班的同学在发传单,是破该协会搞的鬼吧,妈诶,免费苦力用的舒服的啊,然后我拿起传单——单片机编程知识大赛,似乎有点兴趣,但是刚刚完事一个比赛又来一个?有点不情愿,但是编程知识还算好吧,只是笔试做试卷而已。。。先收下传单再慢慢考虑吧。 + +中午也就是摸了。。。不过今天有一个MC论坛上认识的网友要找我联机搞地图,只是希望到时候不要延迟感人吧,他是电信我是联通,感觉是要变成最远的距离鸭。 \ No newline at end of file diff --git a/source/_posts/2019/08/年度后悔网站.md b/source/_posts/2019/08/年度后悔网站.md new file mode 100644 index 0000000..1e50176 --- /dev/null +++ b/source/_posts/2019/08/年度后悔网站.md @@ -0,0 +1,55 @@ +--- +author: SouthFox +title: 年度后悔网站 +date: 2019-08-15 11:05:09 +tags: 梦记 +category: 梦记 +--- + +梦见一开始好像是在浏览器的设置页面,随意的翻看下,看到了一个。。。什么什么的年度报告。 + + + +点进去之后,注意到它的网址是houhui.xxx(后悔?),然后就开始往下翻。 + +往下翻到的第一个专栏页面中间是一个罐装可乐,左边辐射状的散出可口可乐的颜色(红色),右边则辐射出百事可乐的颜色(蓝色),底下有一串字——...可乐...调剂 + +再往下翻则是一个图片,左上方是一个张着的嘴,看起来像是要吃掉下面的东西的样子,而下方是一团糊糊的马赛克,依稀看起来像是企鹅。 + +往周边留意,旁边文字写着,有那么多古老物种肉我们没有吃过,为了不浪费,我们应该去有效利用这些肉... + +–––––––––––– + +解析: + +首先是网址houhui.xxx,很明确的说明这个梦的基调——后悔,但具体指什么,又是谁让谁后悔,要具体分析一下。 + +第一个场景的可乐,让我想起了在QQ空间里一个朋友分享的动态,大概是三个人一起出去玩,然后玩猜可乐的游戏——蒙着眼睛喝下可乐去猜是什么牌子的可乐,最后一次测试他们就很不厚道的把两种品牌的可乐混在了一起。。。 + +所以这可乐是把朋友做的游戏和混合可乐结合印象,也许是映射了我人际关系的问题(某些地方的后悔之处?)调剂这个词也意味着我应该要处力好人际关系?但这个片段太模糊不清,还是很难分析出啥。 + +下一个是张着的嘴这个景象,想到吃和旁边的“我们应该多吃点不同物种的肉”也对应起来,这让我想到了川普政府重创濒危动物保护法的新闻(大幅缩减该法案的经费,理由在于这一理念拖了商业的后腿) + +而这又让我想到了特朗普,可是从特朗普上我又实在是联想不出来什么,最近身边也没有类似特朗普的人或物,,, + +而上面这两个场景和后悔的联系是:特朗普!你们这么做,一定会伤害到地球,伤害到环境,伤害到人类的!!!......嘛?我不觉得我的潜意识会这么高尚,但是我实在分析出来其他什么东西了。。。 + +最后是关于马赛克企鹅的场景,虽然梦中联想到吃,但是有时候应该把思维逆转一下,就会发现!—— + +张着嘴:除了吃下去还可以是吐出来 + +马赛克:是阻力的象征,也可以代表秘密 + +企鹅:一个神秘的软件形象代表 + +所以,综合起来,就是通过企鹅来吐露出秘密,这,和我最近为鱼鱼咸计划的功能非常有联系。。。 + +  + +190821按: + +破案了,突然想到了我工作中的上司,把我辞职单的日期往后提了一个星期(计划于21号走,却被改到28号),让我的痛苦延长了一个星期,这个改动我辞职书的场景被梦系统和川普政府的行为整合到了一起。 + +所以,这段可以理解,叫你不以力据争,最后被修改了文件(保护法——辞职书),现在落到这样了地步了吧(被迫吃奇奇怪怪的肉——被迫多工作一星期),啊哈哈,该!后悔去吧! + +这,就是一个悲伤的故事了。。。 \ No newline at end of file diff --git a/source/_posts/2019/10/他们来啦.md b/source/_posts/2019/10/他们来啦.md new file mode 100644 index 0000000..2d6b1ac --- /dev/null +++ b/source/_posts/2019/10/他们来啦.md @@ -0,0 +1,55 @@ +--- +author: SouthFox +title: 他们来啦 +date: 2019-10-02 11:08:04 +tags: 梦记 +category: 梦记 +--- + +开头,又是丧尸横行的世界,我也是一如既往的被尸潮追着,但是这一次不一样,大概是因为我已经习惯了吧,这一次的焦躁感没有以前那么强烈了,感觉像是在跑田径一样。跑啊跑啊,就有一个丧尸追在我身后,然后我娴熟地(?)掏出一件东西反手一甩,就将丧尸击退了。 + +心中想着,只要保持前15%就好了,然后匀速的往前跑。突然身后传来惨叫声——回头瞟一眼,看起来是有人被追上了,心里却想着,鲜血和惨叫是绝佳的目标,后面的丧尸即使抢不到一块肉也会扑过去,好级了。之后的事,就是我加快脚步往前冲了。。。 + + + +接下来的场景似乎是在我家里里,我呆在房间里,突然后门传来敲门声,我赶过去,似乎是我妈在外面,但是当我的手碰到门把手的时候,我迟疑了,毕竟在一个丧尸横行的世界,开门小心点总没错,随后我小心的推门到半张,发现的是地上的一滩血迹,门后站着的身影眼珠也泛着惨白——果然!我碰的一声关上门,随即狂奔到阳台,发现的不人是我以为的人——是我的高中物理老师。 + +“你被咬了?”我对着老师,惊疑不定的问到。 + +诶呀,这也是没办法的事啊,老师开始用她那种惯有的语气说到。 + +。。。 + +不,不行,我不同意,这种事怎么可能发生呢?心中的念想逐渐激烈,随后达到了可以影响梦中事物的程度——场景一闪,时间开始倒流到我了站在门前的那一刻。。。还没当我的手碰到门把手,我就醒了,娴熟的翻过身,拿起手机,7点,好,还能再睡两个小时,睡之前不忘吐槽一句——怎么又是丧尸梦。 + +  + +接下来,我似乎身披一件黄色雨衣站在一块空地上,旁边也是形形色色披着各色雨衣的人影,之后我呼吸一滞——这些雨衣下的,不是人,是丧尸!我开始有些慌乱了起来,同时注意到了远处有一道墙,墙里面看起来是人类的聚集地,高墙上有着不少人影向这里观望。 + +好吧好吧,屏住呼吸,现在不能让他们发现我,看起来这些丧尸聚集在这里,,,似乎是在开会?之后我迷迷糊糊的熬到他们都解散了,然后混水摸鱼的摸到墙边,将衣服往里一抛,之后连忙地翻进墙去。。。 + +  + +  + +解析: + +(怎么说,看起来因为丧尸这一元素出现的太多次了,我已经不太当一回事了,然后潜意识就改变了表现形式,以来激起我的注意!?) + +第一个场景中的反手掏出的东西,第一感觉是枪,但我感觉又不是枪(?)这里我感觉是一个要着力的点,但不是枪,又会是什么呢?(不可能是口口剑吧)一般而言,丧尸对我来说代表焦虑,而对抗焦虑我一般会去喝肥宅快乐水,当天入睡前我也确实喝了一瓶,,,难道我反手一甩的是快乐水?emmmm,maybe? + +之后的保持在前15%就好了,让我想起那个旅行人与熊的故事—— + +两人旅行,一人绑紧鞋带,另一人嗤笑到,怎么,你还想跑过熊? + +他答到,我不求跑过熊,我只求跑过你。 + +结合之后的尸潮,看起来解释为关于竞争压力大半是对的,而且至少这次我没拉人当肉盾,看起来素质有了提高(?) + +  + +下一个场景,令人在意的点是我妈和高中物理老师,可以肯定梦系统将两人压合到了一起,这代表潜意识要我注意两人的相同(或不同)点,可是关于这里,我还没有什么想法。 + +  + +再下一个场景,令我惊讶的事就是丧尸在开会?这代表丧尸产生了智慧,而如果只是单纯的焦虑,是没必要产生智能的,所以,要么就是丧尸在我梦中代表的意像发生了改变,要么就是我现如今焦虑的对象发生了改变,关于这一点,我暂且蒙在鼓里。 \ No newline at end of file diff --git a/source/_posts/2019/12/hello-world.md b/source/_posts/2019/12/hello-world.md new file mode 100644 index 0000000..72491af --- /dev/null +++ b/source/_posts/2019/12/hello-world.md @@ -0,0 +1,17 @@ +--- +title: Hello World +date: 2019-12-18 23:09:56 +author: SouthFox +--- +Welcome to [Hexo](https://hexo.io/)! This is your very first post. Check [documentation](https://hexo.io/docs/) for more info. If you get any problems when using Hexo, you can find the answer in [troubleshooting](https://hexo.io/docs/troubleshooting.html) or you can ask me on [GitHub](https://github.com/hexojs/hexo/issues). + + + +恩嗯嗯,好好好,我知道了。 + +总之,就是把以前建立在WordPress的东西搬到这里来而已。 + +用上Hexo的原因是因为比较简(zhuang)洁(bi),好吧,其实还是因为原来的WordPress太繁了(不是错字),虽然功能强大,但代价就是非常臃肿。如果是这一点,还是可以忍受的,但因为,原来那一台是阿里云的国内机,因为某些**不可抗力**,与WordPress服务是无法直连的,还得我上梯子手动下安装包自己更新,我已经懒得这么做了,而一但WordPress不更新,那就是个鱼网,漏洞百出。 + +索性就搬到这里来吧,换上Hexo,变成静态博客,虽然不能提供什么高级功能,但是也反向的保证了核心需求,搬迁的时候,抛开太过乱七八糟的东西和随手乱留的文字,好像也没有什么文章能拿过来,希望以后能多写点东西出来吧。 + diff --git a/source/_posts/2019/12/抛开国产单机、迷文化地加成,《型骸骑士》究竟如何?.md b/source/_posts/2019/12/抛开国产单机、迷文化地加成,《型骸骑士》究竟如何?.md new file mode 100644 index 0000000..cf14b8e --- /dev/null +++ b/source/_posts/2019/12/抛开国产单机、迷文化地加成,《型骸骑士》究竟如何?.md @@ -0,0 +1,62 @@ +--- +author: SouthFox +title: 抛开国产单机、迷文化地加成,《型骸骑士》究竟如何? +date: 2019-12-13 11:10:32 +tags: +- 游戏 +- 评测 +- Kelipot +category: 游戏 +--- + +![](https://cf-ipfs.com/ipfs/QmQ7WnER7VBet178Mmb5oEjKEuguuhoY5C7cGETJPaSsim) + + + +# 画面 + +画面并不算特别精致的那种,但总体游玩下来也非常地养眼。 +除了某些素材和道具动画,感觉像是拿系统工具画图画的 没错就是那个幽灵宝宝的子弹,我真觉得像从PPT整出来的,还有那啥冲击波动画,那停止的感觉也太奇怪了吧(,在这样精度不匹配的情况下给人一种怪怪的感觉。 + +# 音乐 + +整体游玩过程中,我对音乐基本没什么感觉 也许是因为我是个木耳,而对于一个Rogue游戏来说,没有感觉就是最棒的,因为玩家一般都处于”无脑”状态,没有感觉就说明音乐契合游戏基调。 +除了对话过程中的音乐切换,已经不能算是突兀了,已经可以算的上是吓人一跳的程度了,建议理一理。 + +# 操作 + +本作的操作比较亲民,例如起跳判定非常宽松,甚至都已经离开平台边了都能虚空起跳,非常之好,就是人物动作稍显梆硬了一点儿,希望后续更新能给人物动作加上更多缓冲帧吧。 + +# 设计 + +道具设计同时也非常亲民,不管是能连开两次的主动,还是其他的续航道具,做到了只要肯慢慢刷图,即使是手残到了BOSS战也能用道具莽死BOSS的程度,但在另一端,对于想要速刷的玩家的体验就没有那么好了,没有类似死亡细胞的限时门机制,导致想GKD点的玩家非常致命,比如我异化符文开局,8分钟冲到亡灵夫人门前,然后就萎倒在了人家裙下( +至于地图,每次开局,感觉就是把上一次的地图整体顺逆时针旋转了一下下而已,即视感非常强烈,不过EA阶段,房间池浅也能理解,期待后续更新能加入更多有趣的地图设计吧。 +而在其他的小细节上,不管是教程达成不吃药威尔“剑动四方”的评价,还是在老师遗体上蹦迪这意义不明的成就,我都充分感觉到制作组的用心。希望再整多一点! + +# 总评 + +综上所述,在抛开各种国单,迷文化,粉丝加成下,现阶段我个人给出8.2分的评价 但只要你给我谜酥看,我就给满分!!! ,虽然突出亮点不多,但胜在非常扎实,值得一个Good评价,期待在后续的打磨下,能变成一个Amazing的游戏吧。 + +
+最后,再说一下我个人对游戏非常担忧的一点,就是,游戏在不时地打断以Rogue为主体的体验。 + +私以为,Rogue的的乐趣在于通关过程上,用熟练的操作打过boos,在商店见到一个IMBA或是能和身上道具组合打出完美combo的道具地狂喜,都是Rogue游戏的爽点,而在这过程中,玩家一般都凭直觉行事,不管是夏季尔乱滚还是做出道具选择上,都处于一种“右脑”状态下,所以这也是为什么Rogue游戏大都选择了黑暗之魂式叙事手法,即,把剧情和相关设定掰碎分散在一个个道具说明或是一些小的剧情碎片中,由玩家来在游戏后自行拼凑出整体故事(以撒就是这方面的经典例子),这样做的目的,就是为了剧情阅读(左脑状态)不打断玩家游玩主体部分的体验(右脑状态)。 + +而本作似乎想把剧情当成一个重点?不管是大量穿插游戏的对白,还是地图上设计的“善良的怪物”都在整体拉高剧情的存在感,但不可避免的,和Rogue玩法产生冲突,就比如“善良的怪物”初看时会看上两眼,下一个不同对话,也会看上两眼,而下一次发现是相同对话,就开始疯狂不停地按键跳过了,这样子到最后就开始养成习惯了,冲到面前,按上,然后按按按按按,东西给的是什么也没看清就冲到下一个房间了,习惯养成后,即使到了新的地图,知道是一个新的剧情对话,也会不由自主的想按按按键跳过了。 + +放一个到后面都会按键跳过的对话,那还不如整一个,“啊,我心情不好,你帮我把下一个房间的怪搞定,我给你一瓶药”的任务来的更好。 + +而Rogue死亡人生重来又随机道具的特性,注定了重开是一件家常便饭的事,而且,下一盘总比这盘好,有时候,因为失误次数过多,或者没拿到好一点的道具,就会陷入自暴自弃的状态,”啊,要是我打不过下一个boss或者下一个宝箱不是个好道具,那我快速死掉重开得了“(以撒这方面已经做到了丧心病狂的程度了,长按个R键直接重来)。总而言之,就是利用玩家对随机的痴恋,让两次游玩的影响降到最小,啊我死了,没关系,我下一次一定能打败那BOSS!/一定能拿好道具!下一盘,我来了!!!。。。然后威尔就跳出来和你吹水了,诶,没办法,听吧。类似这样的的剧情对白真的满割裂整体体验的。 + +我的建议是,以其把剧情当成必经之路强制要玩家看,不如做成非强制或是奖励的形式(比如整个时光回廊啥的,加上各种丧病条件,让玩家一次次去冲击,最后再解锁某个人物的关键剧情之类的?),当然了,我相信制作组想在Rogue的叙事上做出突破的心思,现在的样子是做出取舍的结果?也许有后招憋着?但现在的样子,我是觉得不妥。 + +
+最最后是一些我觉得需要改的小细节 鸡蛋里挑骨头 + +1. 进去教程第一句话,按空格回车是没有用的,明明刚才进来是用回车,咋回事啊?然后键盘摸了个遍最后才发现按J才可以继续对话。 大热天,浑冰凉,泪忍流,我们键鼠玩家什么时候才能真正站起来! +2. 剧情文本逻辑有问题,第一次进图,看见威尔,主角自己吐槽这是平行世界的威尔吧。我当时就有点小疑惑,你咋知道这是平行世界啊,最后死回去才触发平行世界这条剧情对话。。。 +3. 平砍连打,起跳和冲刺可以打断攻击攻击动作。但为什么下平台不行?!经常出现我想下平台还要看完主角呆砍一会后,才下平台。 +4. 对话时候竟然不是无敌的?!我当时在实验室跟人对话呢,那个穿墙独眼怪就冲了过来,直接摸了我三格血。 +5. 樱闪配上兽人魂石(增加移动速度并改变跑步姿势那个)会让后续动作变得非常喜感。 +6. JKUI的默认键位是真滴反人类,把必杀放到随手能按到的地方(shift,空格),要比起要移动右手指去按I反应速度快了不止一截。大热天,浑冰凉,泪忍流,我们键鼠玩家什么时候才能真正站起来! +7. 打开地图游戏会暂停,对于快节奏的Rogue游戏来说有点不适,而且最主要是不能通过地图选择传送门,经常出现为了去传送门而跑一大段图的事情。 \ No newline at end of file diff --git a/source/_posts/2020/01/Marzipan-Solitude.md b/source/_posts/2020/01/Marzipan-Solitude.md new file mode 100644 index 0000000..014a6f9 --- /dev/null +++ b/source/_posts/2020/01/Marzipan-Solitude.md @@ -0,0 +1,141 @@ +--- +author: SouthFox +title: Marzipan Solitude +date: 2020-01-30 23:56:35 +tags: +- 动画 +- 随笔 +category: 随笔 +--- + +![](https://cf-ipfs.com/ipfs/QmX1zANXfhKWaT8CxZZNMVdQAqsv9yQGjqQUaWjyRi9Jsy) + +从前在6号楼的一间房间内,有一只杏仁糖做的小猪,某一天被扬起的窗帘拍在了沙发后面,个把月没有人理会它。可怜的小猪等啊等,但还是没有人过来……突然有一天,它听到了吱吱叫的声音,难道,救援来了吗? + + + +是一只老鼠。按照正常的少儿片,老鼠见到小猪应该对他说几句,好让剧情能够发展一下,但本片根本不是一个“正常”的少儿片,老鼠没等小猪说出话来就把他给啃了。一个“心智健全”的社会人看到这肯定是会吓一跳的,差点要给本片打上一个儿童邪典的标签。 + + 再看,老鼠吃了小猪之后,就跟着甜蜜睡着了。凌晨三点的钟声响起,把老鼠给吵醒了。它开始思考,小猪被他吃掉前想说些什么,伴随着落地钟的滴答声。 + +他开始感到寂寞。 + +于是他跑到落地钟前,望着钟摆上的闪光说,“跟我说些什么吧。”老鼠说道。 + +> Night, +> +> only,only,only,night. + +落地钟说道。 + +“再多说几句吧。”老鼠说道。 + +> Lonely, +> +> lonely.lonely night. + +“啊!是孤独!”,“那只小猪想说的肯定是这个。”老鼠说道。 + +> Minutes, hours,days,and years. + +钟似乎除了报时之外什么也不会说。 + +“你有一张友善的脸”,“Make me happy.Love me, Do!”老鼠说道。 + +老鼠随即在落地钟上咬了一个小洞,钻了进去,盯着钟摆,期待着钟能对他再说些什么。 + +日复一日,老鼠都在晚上通过他咬的小洞钻进落地钟的体内,期待落地钟能对他讲些什么。但在之后的某一天,他不见了。 + +外面的猫头鹰在早上抓到了一只老鼠。 + +落地钟感受着身体里被那老鼠咬出的那一点空洞过着日子,一天,他的弹簧坏掉了,从此再也不能报时,但时间没有它照样流转。 + + …… + + …… + + …… + +而在猫头鹰吃掉老鼠的那棵树下,开着一朵小粉花,一只蜜蜂飞了过去,品尝了一下。 + +“有趣”蜜蜂又嘬了一小口“啊,是杏仁味的!”蜜蜂越饮越多。 + +“我工作得实在太认真了!”蜜蜂说道。 + +他停止了发声,开始在花朵上歇息。 + +天气尚晴,远处火车的光一闪一闪飞过山脚。 + +蜜蜂睡着了,当他醒来时,只能看到镇上路灯和橱窗发出的光亮,脚步声在远处游荡。 + +蜜蜂抬头看着月亮,“啊!没有太阳,我根本不认识路,今夜只好在镇子度过了。”蜜蜂说道。 + +蜜蜂飞过路灯发出的柔光,看到6号楼有一扇窗子开着,一只芙蓉花探向窗边。 + +蜜蜂飞到房间里,见到盛着芙蓉花的花盘放在书架上,芙蓉花就这样向着窗边长去,让其可以看到外边的风景。 + +蜜蜂嗡嗡地绕着花儿飞着,看着芙蓉花粉色的脸庞,最后飞到黑暗处,好看见芙蓉花反射着路灯的样子。 + +“看够了吗?”芙蓉花转过身,用他尖细的声音说道。 + +“抱歉。”蜜蜂说道,“我本不想这样鲁莽。”他飞到窗沿上,好让芙蓉花能看清楚他。 + +“看起来你并不是一位绅士?”芙蓉花说道。 + +“不是。”蜜蜂说道,“我也不是一位女士,我只是一个 worker。”(worker 既有工人也有工蜂的意思) + +“没关系。”芙蓉花说道,“并不是所有人都光鲜亮丽。” + +“我本来可以当一个女王的。”蜜蜂反驳道。 + +“算了吧。”芙蓉花笑着说,“我还可能是一位公爵夫人呢,可我不是。” + +蜜蜂跳起来,指了指芙蓉花,“你肯定花了好大功夫,才能看到窗外的风景。”蜜蜂说道。 + +“那不是我,是我身下的那棵植株。”芙蓉花说道,“植株待在那里,但花儿一直在变” + +“马上就轮到我了,明天早上,我就要凋谢到地板上了。就像舞会过后的裙子一样皱巴巴的,至少我的最后一晚是一轮满月。”芙蓉花说道。 + +“我希望至少能有一点音乐”芙蓉花卷着花瓣,用他尖细的声音哼着调子,“这家人有时会放些唱片的,可惜他们今晚出去了。”芙蓉花说道,“最近越来越冷了,不是吗?”芙蓉花越发缩紧花瓣。 + +“可惜我不能唱歌给你”蜜蜂说道,“不过我会跳寻蜜舞,要我跳给你看吗?” + +“哦,要的,”芙蓉花说道,“跳给我,务必!”,“就在窗边,这样我就能把你和月亮一起看在眼里。” + +“这只舞是告诉别的蜜蜂,有最甜的蜜在这附近。”蜜蜂说道。 + +“甜蜜,甜蜜,最甜蜜,甜蜜,甜蜜,往这里。”蜜蜂随着话语跳了起来。 + +“甜蜜,甜蜜,最甜蜜……”芙蓉花咕哝道。蜜蜂在窗台上跳着,远处的火车一闪一闪的灯光伴随着柔和的月光照向窗前。“甜蜜,甜蜜,往这里……” + +当蜜蜂跳着,有着一股杏仁的味道弥漫在四周,“甜蜜……甜蜜……”芙蓉花的声音低了下来。他缩紧了花瓣,望向了窗外低沉的明月,又对着蜜蜂说,“飞出去寻找蜂蜜吧。” + +“飞吧,这样子我就能伴随最后一抹黄月看着你。” + +“我真希望我可以当你的绅士。”蜜蜂飞起来靠近芙蓉花说道。 + +他飞了出去,伴着橱窗和明月发出的黄光。 + +…… + +可能是动画师为了维持绘本那样的对话格调吧,特意将大量经过调整的旁白放在了剧中: + +“Minutes, hours,days,and years.”,Said the clock. + +从而突出了类似于讲述者的语调。初听时感到古怪,但看完才发现,这种语调是这部动画营造迷人氛围的必不可少的手段。 + +《The Marzipan Pig》这部动画到处都洋溢着这样的氛围,古怪(对成年人来说)却又令人陶醉。虽有着儿童文学惯有万物有灵的泛灵论,但在充斥着说教的儿童文学领域,这部作品是那样的格格不入。对孤独、死亡等儿童文学不敢轻易触碰的话题作了讨论,不做说教,就仅仅是罗列出来,用一种事实就是如此的语调去讲述,就产生了如此的力量,不免让人啧啧称奇了。 + +本片用陈列出的孤独并不使人难受,甚至耐人寻味,接着又用着一种戏谑的态度讲述着孤独和爱情的关系(“你对我的爱有多少?”一只寻爱的猫头鹰对着出租车计价器说,“6便士”,计价器答道)。可能爱情在小孩子看来,爱情就是一种让人无厘头的事吧。 + +接着一期一会的故事,如果生命到明天就要结束,马上要变成像舞会过后皱巴巴的裙子躺在地上,那缩着身子看着月亮的心情又是怎样的呢? + +这种思考,在一种考虑仁爱伦理之德教化的大部分儿童文学是少有的,也是难得的。如果我小时候能看到这部片子,我会因此而不同吗?不过,大概率还是过目就忘了吧(笑)。 + +在最后,老鼠在那对一切众生都平等对待的月光下,身穿芙蓉花制成的裙子在凌晨3点的大桥上跳起舞来,是如此的诗意,却有着一种异样的蛊惑力,似让人能忘却死亡和寂寞。 + + + +B站搬运的已经被河蟹了,现在要看到这片子,只能付上两美刀啦(笑)。 + + https://youtu.be/EqFmxJgUfnw \ No newline at end of file diff --git a/source/_posts/2020/01/漫展?漫展!.md b/source/_posts/2020/01/漫展?漫展!.md new file mode 100644 index 0000000..f848473 --- /dev/null +++ b/source/_posts/2020/01/漫展?漫展!.md @@ -0,0 +1,36 @@ +--- +author: SouthFox +title: 漫展?漫展! +date: 2020-01-04 16:09:35 +tags: +- 日常 +category: 日常 +--- + +我原本以为漫展这么二刺螈的东西是以我无关的,虽然有时候我也挺好奇的,也有朋友一直在催,但是我还是因为一个根本原因而懒得出去——没钱。 + +而这次又是什么原因让我这个家里蹲舍得出去呢? + + + +那是在2019最后一天的凌晨,我正在为白天课上的期末项目做准备,期间百无聊赖的我开始找朋友吹水,闲极问到元旦的行程,答曰,漫展。 + +之后我去搜索了一下漫展的相关情况,看着嘉宾名单,感叹道我果然不是二刺螈,几乎一个都不认识,就在我打算关掉网页时,一个熟悉的名字划过视线,浣熊无二。 + +![](https://cf-ipfs.com/ipfs/QmPutzVmU7VMwrvyHe8DABr8aEq8axQhBwSBDTJYJoyRW9)平常在无聊时,摸鱼网站是一扇对外的窗口,可以让我呼吸一点新鲜空气,通常我也会在上面随便翻看图片来寻找一点乐子,而在其中,一位叫作浣熊无二所作的作品的点赞数总是能排到前列,其所用素材大多都是天上飘得云所作,现在也算是出书了。没想到能在妖都看到他,我一开始感到有点惊奇,毕竟国内城市就那一个,而这个城市一般都不会是妖都。 + +我顿时犯了难,毕竟是真滴没钱,没钱还去展子,能凑得到什么热闹呢?经过几番挣扎,我还是买了票,然后睡了一觉之后,满脸仙气的起床,顿时有点后悔,难得的假期,应该猫在被窝里的,可是B站早已把我的后路断了——本票不接受退换,真有你的啊,阿B。 + +之后就经过一个多小时的地铁之旅,终于到达了漫展的地点,到达时已经是10点多了,朋友听到我签售是在12点时马上就催促我,我一开始还有点纳闷,不过当我正式进去时,我才发现他是对的,队伍七七八八挂的,进门兑票要排,进去也要排,在门前也要排,进去更要排队,让我除3号线地铁外能深刻感受到妖都身为一线城市的地位。 + +之后就终于进去了,兜兜转转的,终于在签售的最后一刻排到了 + +![书本封面](https://cf-ipfs.com/ipfs/QmXeQsAMpLWiidRhM5Fjabfrh1Xy6aZRzfUneyK6qn2itK) + +![签售成果](https://cf-ipfs.com/ipfs/QmRSBnQw1qTPCmrWTJFUKgt2wuquFdF79khSafmNt1tDz1)感觉颇有一点为以往摸鱼时光买单的感觉,之后就是在其他地方瞎逛了,还去了明日方舟的展子逛了一下,买了一个洁哥的亚克力牌,一个文件夹,还有一个盲盒礼包,开出了一个小美羊羊的的亚克力牌,以及一些阿米娅的链子,其中美羊羊的牌子,用来当手机支架蛮棒的( + +然后就在展子上消磨时光到三四点,就回去了,总体算下来,那还真是对不上70块的票价的,果然,死宅的钱真好骗。 + +在晚上准备入睡的时候,翻看一下书籍,感觉大部分都看过了,可能作者也考虑了这一点,所以最后一部分画了将近50页的书本独占篇幅来完善世界观,而且前面第一部分加了画云技巧(这也是为什么本书上架建议为漫画和。。。绘画技巧栏目的关系吧)但不到180页的书,就卖了将近60块,又作为“网红漫画”,精细度也别强求,感觉也是不值这个售价(其实还是因为穷) + +之后入睡前搜索了一下作者的信息,在百科上惊奇的发现,他竟然是《阿衰online》的主笔,猫小乐工作室的成员之一,怪不得,怪不得,看他的作品总有一种若有若无的既视感,这到算得上是一个意外之喜吧。 \ No newline at end of file diff --git a/source/_posts/2020/05/十年.md b/source/_posts/2020/05/十年.md new file mode 100644 index 0000000..e820200 --- /dev/null +++ b/source/_posts/2020/05/十年.md @@ -0,0 +1,22 @@ +--- +author: SouthFox +title: 十年 +date: 2020-05-26 11:01:26 +tags: +- 梦记 +category: 梦记 +--- + +2020年5月26日 + +在一个在被外星势力入侵的地球里,某一个街头站着小女孩。 + + + +她展露一个微笑,就像影视作品里坏人得逞那种微笑,然后,我就被抓起来了。可能是被告密了,外星势力跟地球对抗好像是势均力敌的。我被冠上一个特别的罪名,似乎能完全引爆两边的关系的样子,而为了避免麻烦,我就被抓起来押送到敌方那里了。 + +我的牢房似乎跟现实中住的房子一样?但梦中的念头一转,对我就是十年,这十年我似乎过得不怎么样,浑身一股近似绝望的怒气。一天,我待在阳台洗衣服,发现我的妈妈待在那里,我没有被吓到,只是杵在那里,连确认我妈妈是真实还是幻象的动作都没有做。我只是待在那里想,终于想出了,我是可以逃离这片境地的。 + +然后,我就逃出来了(梦也没有交代是用什么方法),我回到了熟悉的景象中,但十年过去了,早已经物是人非,家里望过去也是杂草和蜘蛛网横行,一片破败。然后我又来到了校园里,似乎我以前的好友也在?他上前跟我打招呼,但是我只是望着商店橱柜里的物品沉默不语。 + +然后我惊醒了,梦里那种物是人非的感情是这样地真切,拿起手机看时间,是六点半,少见的不被闹钟惊醒的早晨。 \ No newline at end of file diff --git a/source/_posts/2020/05/方舟同人游戏开发记录00.md b/source/_posts/2020/05/方舟同人游戏开发记录00.md new file mode 100644 index 0000000..0575d45 --- /dev/null +++ b/source/_posts/2020/05/方舟同人游戏开发记录00.md @@ -0,0 +1,67 @@ +--- +author: SouthFox +title: 方舟同人游戏开发记录00 +date: 2020-05-22 19:21:12 +tags: +- 游戏 +- 游戏开发 +- godot +category: 游戏 +--- + +从一个蝙蝠开始,世界开始发生了翻天覆地的变化,也有无数人开始闲地发霉了,对,我也包括在内。 + +更不幸的是,因为家里人持有一种南方特有的家宅风水情结,所以选择了在房子建成二十年后的今年开始动工翻新屋子,电钻声绕梁二月而不止,我每天都在电钻闹钟的环境下醒来,差点没成神经衰落。而在这痛苦的环境下,我也打算做一些有意思的事来发散身心。。。 + + + +所以,就来做游戏吧,刚好也碰到了一个非常适合一个人把玩的游戏引擎——Godot。 + +godot是一个完全开源的小型游戏引擎,大小只有60M(当然只是基础功能,要导出的话还要安装400多M的扩展),相比其他的商业引擎,简直就是零头!而且作为开源引擎,没有商业引擎的烟火气息,社区十分友好,想要定制什么功能也不需要取得任何人的同意,马上就能自己开搞。当然,缺点就是,比起其他商业引擎,godot在国内的名声实在太小了,没有什么成型的中文教程。不过只要下定决心,抱着英语硬啃也不痛苦。 + +那么,来做什么游戏呢?这是因为我现在看的教程是一个动作Rpg的游戏教程,所以就做一个动作Rpg游戏吧(没错,就是这么随便)。 + +那么,敲定了游戏类型,就来琢磨一下游戏内容吧,单是自己原创的话。。。虽然自己是一个爱胡思乱想的人,但是脑中想的并没有成型,设定啥的要细想那可太废脑细胞了,所以就套现成的吧(没错,就是这么随便)。 + +那么,就来选明日方舟吧,毕竟这个游戏也以世界观著名,非常适合同人创作,主角的话,就定个陈吧(没错,就是这么随便)。现在想来,这个想法,有可能是受到了这个[视频](https://www.bilibili.com/video/BV1hK411L7nq)的影响,毕竟动作游戏和塔防游戏,动与静的对立,想想就有趣。而且再加上陈在第七章主线剧情的走向,也非常适合散发脑洞呢。 + +那么,大体剧情就是陈上了切城,沿路砍砍砍,最后跟塔露拉对砍,砍爆一切的游戏。(没错,就是这么随便) + +## 细节 + +#### 总体 + +游戏游玩时间应该保持在一到两小时左右的长度,是一个砍爆一切的动作Rpg,应该有多重结局。 + +#### 画面 + +游戏画面,就敲定像素风了(毕竟我也只对这个熟练),而且听说godot对于像素游戏支持还非常友好,其他一些著名的引擎制作像素风的游戏可能会产生令人恼火的问题。 + +那么,机制呢? + +#### 机制 + +机制无非就是主角上下左右移动,然后平砍带连击,能挥动两下,砍怪积攒技力,然后放点技能啥的。 + +等级上限是定在十级,升级带来升级点,然后打算做一个技能树,会可以解锁七八个具体的技能(有一些是变种,比如本家里的三技能绝影就可以改成范围型同时斩击范围里的敌人),但是只有三个技能格,可以在休息处自由搭配。 + +伤害也有为物理和魔法伤害这个设定(敌人当然也是),可以考虑后续升级做成选择向,让玩家升级后走一端,或者物魔双修? + +然后就是休息处的设定,游戏打算做成平常不能回血(或者回血量不多),一些医疗物资要带到休息处才能选择回血,这样设定是因为会关于剧情以及多结局走向的。 + +#### 剧情 + +陈上切城,然后砍爆沿途小怪,然后跟塔露拉对峙的故事。(没错,就是官方本家的) + +而且做成多结局,是根据休息处来算的,如果是多选择休息回血的话,那就会浪费时间,就可能会跟后面赶上来的罗德岛会合,发展一些剧情啥的,后续跟大boss的对峙的话,也会有罗德岛的帮助。而不选择休息回血的话,一路速通的话,就会发展不同的结局。大概是这样一个设定。。。吧。 + +#### 音乐音效 + +当然是直接照搬yj的啦(没错,就是这么随便),不过可能要处理一下,以最大程度地跟像素风切合。 + +#### 然而 + +不过对于。。。一个刚学习的游戏引擎来说,我真的能成功实现出来吗?我现在都有点想不通二连击要怎么实现,还有对话系统,场景转移,数据转移。。。现在也只是刚实现走路动画而已。。。所以这也是写这个系列博文的原因吧,理清思想,坚定信心。 + +走一步看一步吧。 + diff --git a/source/_posts/2020/05/浅推–COVID-19.md b/source/_posts/2020/05/浅推–COVID-19.md new file mode 100644 index 0000000..896477d --- /dev/null +++ b/source/_posts/2020/05/浅推–COVID-19.md @@ -0,0 +1,68 @@ +--- +author: SouthFox +title: "浅推COVID-19" +date: 2020-05-28 09:24:45 +tags: +- 术数 +- 随笔 +category: 随笔 +--- + +一场突如其来的瘟疫,打的整个世界错手不及。 + + + +在家闲极无聊,打算以另一种方式来推算疫情。 + +2019 乙亥年 + +此年入阳遁48局 + +   巽│巳 午│未 +  伤 │ 杜 │ 景 + 辰 9│离 2│7 坤 + + 卯 震│中  │兑 申 +  生 │   │ 死 + 寅 4│  5│6 酉 + + 艮 3│坎 8│1 戌 +  休 │ 开 │ 惊 +   丑│子 亥│乾 + +主算一,为无天无地之算,客算五,为五天之算,应此灾。 + +始宫加临寅宫,对应楚地,正好是现在的湖南、湖北一带,但发源地在哪?太乙落巽宫,为东南方向,具体不明。 + +而[维基百科]([https://zh.wikipedia.org/wiki/2019%E5%86%A0%E7%8A%B6%E7%97%85%E6%AF%92%E7%97%85%E7%96%AB%E6%83%85](https://zh.wikipedia.org/wiki/2019冠状病毒病疫情))说: + +>在原发疫源地调查方面,政府及社会在疫情最初期曾普遍相信位于湖北省武汉市的华南海鲜市场是病毒发源地。但进一步的研究结果则认为华南海鲜市场并非疫情发源地。黄朝林等在《柳叶刀》期刊发布的论文指,当时认为属首例的、12月1日发病的新冠肺炎患者没有去过武汉华南海鲜市场,最初入院的41个确诊病例中有13个与华南海鲜市场无关,故认为**华南海鲜市场并非疫情原发疫源地**。2月20日中国科学院西双版纳热带植物园等机构发布的论文预印本基于全基因组数据解析新型冠状病毒的演化和传播,亦佐证了华南海鲜市场并非疫情原发疫源地的观点,但认为武汉可能是疫情发源地。另一方面,何大一、西莫·加利、朱塞佩·雷穆齐等认为武汉市为疫情来源地。钟南山认为没有证据表明疫情源头在武汉。彼得·福斯特、科林·伦福儒等则认为没有证据表明疫情源头在武汉,但有95%几率可能来源于广东。曹彬等认为该病毒的实际来源尚不明确,仍需进一步研究。丹尼尔·露西在《科学》中指出,对动物及其供应商的血液样本、确诊患者的血液样本进行回顾性分析可能会揭示新冠病毒的起源地。 + +而至于瘟疫发行时间,用移动合神的方法推为四月,与现实不符。故用五行生克计算,始击为木,十二月建丑为土,木克土所以发瘟(但我觉得说服力不够)。 + + + +接下来是2020年 + +此年入阳遁49局 + +   巽│巳 午│未 +  惊 │ 开 │ 休 + 辰 9│离 2│7 坤 + + 卯 震│中  │兑 申 +  死 │   │ 生 + 寅 4│  5│6 酉 + + 艮 3│坎 8│1 戌 +  景 │ 杜 │ 伤 +   丑│子 亥│乾 + +主算二十四,无地之算,客算二十五杜塞之算 。 + +合神移至艮为格,艮为十二月往一月冬春之交,正好于今年流行的趋势大致相同。 + +而始击辰绝于巳,为农历四月,所以国内疫情形势大概会在6月21夏至之前完全转好。。。吧? + +而这几年得卦中孚,有道是:中信为本,厄难消除。 + diff --git a/source/_posts/2020/06/当个精神病病人是种怎样的体验?.md b/source/_posts/2020/06/当个精神病病人是种怎样的体验?.md new file mode 100644 index 0000000..7514adb --- /dev/null +++ b/source/_posts/2020/06/当个精神病病人是种怎样的体验?.md @@ -0,0 +1,124 @@ +--- +author: SouthFox +title: 当个精神病病人是种怎样的体验? +date: 2020-06-12 22:20:24 +tags: +- 随笔 +- ADHD +category: 随笔 +--- + +6.1 躺床上刷手机 + +6.2 躺床上刷手机 + +6.3 躺床上刷手机 + +6.4 你怎么能如此堕落!先前定下的学习计划你都忘了吗?子曰:“吾日三省吾身”。不能再这样下去了! + +6.5 躺床上刷手机 + + + +------ + +如果一个人经常发生这样的事情,那么,对于他的评价,无非就是懒蛋吧。可是如果这并非他的本意呢?如果他已经非常努力想要去改变这一切呢?如果单纯凭意志力是无法战胜这一切的呢?真的吗?还有什么是无法凭着毅力战胜的呢? + +精神疾病。 + +如果一个人是近视眼看不清东西,会怪是眼睛没有努力去看吗?同理,如果脑子出了问题的话?很多精神疾病并不是心里问题,而是生理问题。如果明白这一点的人多一点,那么说抑郁症只是单纯心理承受能力差的人会少一点吧? + +而有那么一种人,经常让人感到飘忽不定,非常容易走神神,像是沉浸在自己的小世界,情绪不稳定,经常拖延、有始无终,让人觉得他就是蒙着一层面纱。会有这么离奇的病吗? + +ADHD。 + + + +> **注意力缺陷多动障碍**(英语:attention deficit hyperactivity disorder,缩写为**ADHD**),涵盖**注意力缺失症**(英语:attention deficit disorder,缩写为**ADD**),是[神经发展障碍](https://zh.wikipedia.org/wiki/神經發展障礙)的[精神疾患](https://zh.wikipedia.org/wiki/精神疾患)。它的特性是难以专注、过度活跃、做事不考虑后果等等。除此之外,还有不合年纪的行为,有注意力缺失的个体也可能有情绪难以调节的问题。 +> +> 维基百科——[注意力缺陷多动障碍](https://zh.wikipedia.org/wiki/%E6%B3%A8%E6%84%8F%E5%8A%9B%E4%B8%8D%E8%B6%B3%E9%81%8E%E5%8B%95%E7%97%87) +> + + + +而一般成年ADHD患者会具有以下症状: + +**注意:每一项标准都要比具有同等心智年龄的一般人明显强烈才算符合。** + +1. 低成就感,老是感觉自己潜力尚未发挥(不论现实成就如何)。 +2. ~~组织困难。~~ +3. **~~长期拖延,很难开始做一件事。~~** +4. ~~同时做好几件事,全部有头无尾。~~ +5. 不看场合时机,想到什么说什么。 +6. 经常追求刺激。 +7. 受不了无聊。 +8. **~~经常分心,无法专注。话说到一半或书看到一般就分神了,但有时候又能超级专注。~~** +9. 往往直觉强、有创造力、很聪明。 +10. 很难按照规则行事。 +11. ~~*没耐性,无法忍受挫折。*~~ +12. 有言语冲动,脾气不好,~~乱花钱、时时改变计划、一天到晚开始新的计划~~。 +13. 经常不必要的担心,没事就找事担心,但是又不注意危险。 +14. ~~有不安全感。~~ +15. ~~情绪不稳,尤其和人或事情断绝关系。~~ +16. ~~身心静不下来。~~ +17. ~~有成瘾倾向。~~ +18. 长期自我形象困扰。 +19. 自我观察不正确。 +20. 家族中有其他人患有ADHD或躁郁症、抑郁症、酗酒吸毒以及其他情绪冲动型疾患。~~(待调查)~~ + +*(其中画——的表明是自己体感有这个症状的)* + + + +从小学到高中,我的评价手册基本都写着,我是一个聪明的孩子,如果能把聪明劲儿更用到学习上就最好了。 + +可我觉得这都是面子话罢了,我一直都不觉得自己聪明,看书看第一章,然后下一章又翻到第七章去了,干着一件事,不超过20分钟就跑去干别的事情去了。世界像是蒙了一层面纱一样,朦胧胧的,每天就绕着广场踱步,想着自己都不清楚的东西。学习成绩全看我能不能趁着撩开身上的面纱学多一点,这样的状态,能叫聪明吗?我也隐隐约约注意到了自己这种状态,之后因为成绩跟家里人绊嘴时,我说我根本集中不了注意力,我父母却又说我只是懒散,就只会找借口罢了。说着说着,我都接受自己是个懒蛋的设定了。 + +做为00年出生的人,悠悠二十年,才终于发现自己身上的怪奇并不是孤例,而是能够被一个专有名词所概括的,我终于能长抒一口气。就像一个整天眯着眼睛看世界的小孩,开始觉得自己是个瞎子的时候,却被旁人告知“诶呀,你近视了吧?” + + + +但是知道是不够的,知道问题还是要面对它,解决它。 + +#### 药物 + +药物可以给患者带来极大的改变。就像眼镜对于近视眼一样。咖啡因、酒精、香烟的提神作用对于ADHD患者来说,反而能起到提升专注的效果(所以成年ADHD患者很容易产生物品滥用的症状)。不过鉴于现在国内有能力去确诊成年ADHD的太少了,我可能需要等待我有一大段空闲时间才去医院吧。 + +#### 团体 + +> 参加一个支持团体。在一些ADHD团体中可以得到很多帮助。同病相怜的心理支持也是很重要的。 + +也许我需要留意一下。。。不过我总觉得,我是不会去找的( + +#### 结构 + +> ADHD患者需要一个外在结构,一旦有了结构就像滑梯的两壁一样防止人们冲出去。可以使用清单、笔记本标出重点并形成这种习惯,利用有提醒功能的工具,制定并查看文件。 + +这确实有效,将事情记在笔记本上确实能事情迎来开头,但是有可能会连这件事本身都能够陷入拖延的泥沼,更别谈养成习惯了。 + +#### 教练 + +> ADHD患者是很难战胜自己的,选择一位教练让自己保持秩序,专注与正在进行的事,鼓励你、提醒你。朋友、同事、心理治疗师都可以当这位教练。 + +可以使用一些专注力提醒工具,比如一些插件、脚本、APP形成一套ToolChain,在分神摸鱼的时候提醒自己,鱼鱼咸也可以加入这一套,定时地提醒自己。或是请人来敦促自己。 + +#### 期限 + +DeadLine永远是第一生产力。 + +#### 分割排列 + +大计划总会吓到人,尽可能一步一步分成不那么吓人的小计划。 + +之后再排列事情的重要顺序,不要拖延。不要让多个事情搞得自己一无所措,不要拖延,深呼吸,专注于第一顺位的事儿上。 + +#### 接受 + +总有一些事是必定失败,有一些计划必定行不通,有一些关系必定走向尽头,做好准备。 + +不要固守传统,既然自己是异于大多数的,那么,也没必要强求自己,既然自己容易分心,那么为什么接受呢,就让自己的专注随意流淌,而且为什么不同时做两件事呢?就像电脑的多线程一样,永远不完做一件事倒不如花3倍时间做两件事情。找到自己真正的风格。 + + + + + diff --git a/source/_posts/2020/07/7-21梦记.md b/source/_posts/2020/07/7-21梦记.md new file mode 100644 index 0000000..8fb804b --- /dev/null +++ b/source/_posts/2020/07/7-21梦记.md @@ -0,0 +1,20 @@ +--- +author: SouthFox +title: 7.21梦记 +date: 2020-07-21 09:22:38 +tags: 梦记 +category: 梦记 +--- + +星期二 晚 +在高中,似乎是在做卷子,不是我变成了高中,而是以现在的年龄去重读高中。 + + + +然后做的卷子做了两三道题就给老师改,然后再过一会儿老师就对答案了,一会儿,就到多选题了,但有几道题我觉得不像是数学题,考的是生活常识? + +总之我拿起了浴室里的好像是清洁剂的东西左看右看,还沾满了地上的水,很脏的样子。 + +然后是动物圆,有一头狼死了,园长对外的视频说明情况,它已经活了二十多岁了,相当于人类的百岁了够可以了。然后在园里的人群中,有一个神婆的样子,走近去问她几个问题,就开始表演什么把戏起来,记得好像有一个全息房子!之后似乎聊上了园长,似乎她知道,还很敬重园长的母亲。之后我就去找园长,最后在个楼梯过道找到了他,我说外面有一个神婆,说很敬重你的母亲云云,园长好像很感动说了些什么。 + +(剩下两个场景,打蚊子,和去食堂抢饭,饭似乎没多少的样子,到我的时候盘里只剩下四个菜了…) \ No newline at end of file diff --git a/source/_posts/2020/07/是时候为居家学习做打算了.md b/source/_posts/2020/07/是时候为居家学习做打算了.md new file mode 100644 index 0000000..a8be154 --- /dev/null +++ b/source/_posts/2020/07/是时候为居家学习做打算了.md @@ -0,0 +1,51 @@ +--- +author: SouthFox +title: 是时候为居家学习做打算了 +date: 2020-07-19 22:41:09 +tags: +- 随笔 +- 学习 +category: 随笔 +--- + +马上,居家学习对我来说是一件避无可避的事情了,但因为众所周知的原因,似乎居家学习的效率不是很高,那么有什么方法来应对呢? + + + +## 欺骗自己 + +> 我曾经从一个书商那里听过一个老绅士的故事。这个人靠写小说为生,并在家庭办公室内写作。这个人会在每天起床后下楼和妻子一同吃早餐,然后完成近五十年内从未间断的一系列晨间礼仪,包括:淋浴,剃须,穿上标准三件套,配上蝶形领结和四方手帕,拎起公文包,然后向自己的妻子吻别。随后走上仅约10步远的家庭工作室,关上门开始他早晨的写作工作。很显然,这个人已经推断出在家工作的唯一方法,就是假装他不在家。自我欺骗通常被认为是一种精神病态,但是在居家工作的情况下,它反而成为了一种维持精神健康的方法。这是一个自己和自己对抗的思维游戏。 +> +> ​ ——[如何居家工作?参考一下神经科学](http://jandan.net/p/107120) + +没错,一个重要的方法就是自欺欺人,营造一种让大脑进入状态的氛围。要营造一个重要的学习区域,除了专注的做一件事以外什么也不能做。就拿手机来说,手机被用来看视频、看有趣梗图、上社交软件吹水,所以,试图用手机来进行学习办公绝对是个蠢主意。因为对于大脑来说,手机已经是一个娱乐区域了,所以任何对于娱乐格格不入的事情都会被大脑抵触,学习也是一样的,如果一个学习的区域也让大脑产生了是娱乐区域的错觉,那么效率绝对是低下的。 + +> 这套理论并不是说你需要在你的后院建一个家庭办公室来提高工作效率;它其实朴素地告诉我们不要在床上或是沙发上办公。找一个地方专门标注好,只用来工作,而不做任何其他事。哪怕仅仅只是换一个座位。 + +同时,仪式感也是重要的一环,假装自己要去一个工作地点,家里的一切琐事都不用去担心了(虽然事实上反而是琐事烦你,而且因为在家里还是直接地烦)。甚至还可以加上一点想象,杂乱的书桌不见了,代替它的是一份铺满流光溢彩的。。。书桌,顶上装着的不是常见的日光灯管,可以变成一盏垂着的老式煤油灯(说到于此,我应该买一个台灯了,家里没有这样的东西,灯管的亮度还是稍显暗淡了),发挥自己的想象力,就像动森一样,不时地更换一下周边的装饰,哪怕是想象上的,让大脑能够区分开来,学习区域和其它区域的区别。 + + + +## GTD + +同分心做斗争,GTD是一个好东西,只要能制造出一个由习惯编制的结构,就能在到点的时候下意识地做出对应的事。这方面我选择用[Habica](https://habitica.com/) 。做为一个GTD软件来说,它批了一层RPG游戏的外表,让做规划表的和完成规划表这事变得有一些乐子,不像其他GTD软件,没有几丝颜色跟图片,给人一份压抑感。 + +当然,除了做表,实行是一件难事,尤其对我这种启动困难的人来说,有时候经常就会连比对清单这件事本身都忘个精光,所以,必须要有一个外界督促,比如使用QQ机器人每隔一段时间发一条提醒消息,或是用Tasker写一些提醒的脚本(倒计时脚本也可以随便做了)。 + + + +## Tasker + +说到手机制造分心的问题,就要考虑一下Tasker了,除了提醒脚本,也可以做限定脚本,在一个时间段内,就会自动开启免打扰模式并且强制让大部分应用不可用(如果懒得写的话,可以考虑专注森林这样类似功能的APP)。 + +并且,肝手游自动化这个功能(1-7地狱),也可以用Tasker来进行摆脱,就不用自己不时得去查看手机了。 + + + +## 笔记系统 + +除非是超忆症患者,否则使用笔记系统对于学习来说是有大帮助的,思维导图、Cornell Notes,之类的系统,也应该再深入研究一下,值得花一些时间去琢磨,一段时间再换另外一个,比较一下哪个系统是最符合自身的。 + +而对于笔记软件来说,[Notion](https://www.notion.so/)是一个新兴的笔记软件,同[Habica](https://habitica.com/) 一样,也是我用过一段时间,但是并没有太深入使用,也许也该花点时间琢磨了,听说最近还取消了个人免费版的笔记条数限制,是时候该用起来了。 + +而对于记笔记来说,我想也应该多用点鲜艳的颜色、图片,以往的单颜色就干巴巴写下去对我来说确实是兴趣乏乏,一样,是时候去寻找对于自身最适合的笔记形式了。那么要怎么对比呢?月度总结笔记是一个点子,每到月底反思一下要做的事,评比一下似乎是有帮助的,当然。。。只要我能做得到。 \ No newline at end of file diff --git a/source/_posts/2020/07/舞.md b/source/_posts/2020/07/舞.md new file mode 100644 index 0000000..72204ab --- /dev/null +++ b/source/_posts/2020/07/舞.md @@ -0,0 +1,87 @@ +--- +author: SouthFox +title: 舞 +date: 2020-07-27 11:33:02 +tags: +- 梦说 +- 小说 +category: 梦说 +--- + +> 故事一定要有观点——不管是什么观点,而且一个出彩的故事,还必须跟情节、风格、环境、结构等等牢牢地结合起来。可惜作为以梦为基石的梦说,故事很难有一个观点,甚至逻辑都很难成型,所以,只好就这样了吧。 + + + +## 一 + +“看,他现在正在梁上跳舞呢。” + +“哼,就算房梁上很黑,一些眼力好的早就看到了吧,真当全部人都是瞎子吗?” + +“啊,已经有人摸上去了,他还在跳呢,真是个笨蛋。” + +两个穿着精良的守卫已经从房梁外侧接近跳舞中的黑猫,但是黑猫依然在专注地跳着,全然不把周围的动静放在眼里。 + +咚——黑猫被守卫卡着脖子,甩在梁上,一抹银色从黑猫的口袋中划出,往地上掉去,是一把小钥匙。此时,国王正从房梁下走过,钥匙正巧掉在国王托在地上的长袍上,悄无声息。 + +## 二 + +一名扫地仆发现国王的二弟死于家中,顿时引起皇室内的一阵阵鸡飞狗跳,待到皇室这部腐朽的机器彻底运作起来,已经是好几天之后了。 + +圣堂内。 + +一个画板支在玻璃制的箱子前边,画家正拿着画笔,不时地从助手递过来的颜料盘中勾勒几笔到画上。画上画着的,正是死者,国王的二弟。 + +“你确定我们还有机会吗?”助手递过刷子,问道。 + +“也许有,也许没有。”画家心不在焉地答道。 + +“亵渎尸体可是很难的呢,尤其是现在,我都能感到好几股视线一直在盯着这里呢。” + +“主要是黑猫的计划失败了,现在只能走一步看一步了。”画家放下手势,拿起了橡皮泥,擦去不满意的地方。 + +“啊,那个白痴,搞出那么大阵仗却什么都没干!白白浪费了宣传我们的大好机会。”似乎为了泄愤,助手拿着杵的力道都大了许多,发出了沉闷的响声。声音回荡在安静的大堂内,连蜡烛的火光都飘忽了起来。 + +## 三 + +一声号响划破了天边的晨光,死者毕竟是皇亲国戚,排场自然是一等一的。主祭念着长长的谥号,很难相信里面有几分是真实的。 + +“喂!那棺材,是不是在颤动?”人群中,一人沉下脸往身旁人问去。 + +“嗯,而且……这波动,我们先离开这里,要不然就得倒霉了。” + +十分钟后。 + +“吼——”一声嘶哑的喊声从棺材内喊出,香木制成的棺材显然承受不住这压力,产生了条条裂缝,而在裂缝中,不断有蠕动的肉泥流出来。 + +不多时,就在惊呆的主祭目光下,凝结成了十多米高的血肉巨人。 + +下一瞬间,血肉巨人抡起手臂,拍飞出去几个倒霉的家伙。 + +人群炸裂开来,惨叫声中却混着大笑,来自巨人的头上,是一只黑猫。 + +不远处的一座小塔楼上,一人拿着望远镜看着惨剧现场,“不敢相信,他竟然做到了。” + +“是啊,而且在没有接触到尸体的情况下,不禁让人好奇他是怎么做到的。” + +远处的巨人像扫开落叶一样清扫着人群。呼——又是一击,但这一击似乎扯动的幅度有点大,让站在顶上的人没有站稳,跌了下去。 + +“啊~果然是个笨蛋。” + +…… + + + +## 四 + +“所以……你是怎么办到的?我没有看到你接近尸体过。” + +“你有没有听过一个说法,杀人凶手喜欢去参观尸体?就像一个艺术家去画展看自己的画作一样?” + +“你是说……凶手是国王吗?就算这样,能影响到尸体吗?” + +“哼哼,这就是关键所在了,直接接触有守卫的尸体施展仪式肯定很难,但是让一个本来就有机会接触尸体的人代我去呢?而且他肯定会下意识的支开守卫的。” + +“……啊!钥匙,直接接触不行的话,就让物品来接触,没想到你的仪式技术这么厉害,能封装到这么小的物品上……不过,就算这样,为什么你还要跳舞呢?为了让自己成为诱饵放松他们的注意力?” + +“谁知道呢?也许……我当时在梦游也说不定哦。” \ No newline at end of file diff --git a/source/_posts/2020/09/9-25梦记.md b/source/_posts/2020/09/9-25梦记.md new file mode 100644 index 0000000..b832b04 --- /dev/null +++ b/source/_posts/2020/09/9-25梦记.md @@ -0,0 +1,34 @@ +--- +author: SouthFox +title: 9-25梦记 +date: 2020-09-25 14:45:40 +tags: +- 梦记 +category: 梦记 +--- + +## 没有火的世界 + +漆黑一片,周围全是黑暗。面前是一盏探照灯,正往脚下射着灯光,但是发出的光甚至连脚下的黑暗也驱散不开。 + +这一段场景似乎给后面光与暗的主题做了铺垫。 + + + +之后,我似乎梦见我在学校,躲在一个柜子里。外面一片漆黑,过了几秒中,之前还在的一个人就这样消失了。似乎在这个世界里,在黑暗的地方待得太久就会神隐。 + +之后我就打算出去走走,到学校周围,还拉上了两个人(但是不知道是谁),我们走到了学校周围,但是看景象,是现实中家的周围,不是学校的周围。走到一半,天空就暗了下来,是因为日食?还是云彩地遮蔽?之后我们就恐慌了,急切的想要寻找一个开着的店铺进去避难,但是店铺都关门了,外面只剩下恐慌的我们三个。其中一个人不顾一切撞进了一间关着的店铺,而我们两个找到了一间开着的饭店一样的地方进去了,饭店内只有中间的一间桌子有灯光,周围都是黑的,我们就在那里避难了。 + +之后,不知道是我们自己的发现还是店主人的邀请,我们在二楼安顿了下来,二楼似乎是一间酒店,房间一排排的布置过去,我在其中一间房间住着,等到外面不在黑了再出去,另外那个落单的人我们也在出去的时候找到了,原来那个店铺连接着一处购物广场,他就在那儿避了难(不过现实世界中,那片地区是没有购物广场的)。 + +之后我又到了类似小巷的地方,跟某人攀谈了起来,了解到只要在黑暗的地方待上十秒,人就会消失不见——然后我就在他背后看见了幕后黑手。是一个长着两只长脚的新浪微博(?),总之不会让人感到太恐怖就对了。然后他问我,要不要加入他们,成为他们——我很确定是不是出现这样的桥段是因为我变身系的故事读多了……尤其是克系的。 + +发生这段对话时,已经是在半梦半醒的状态了,开始能感知到现实世界,所以就不打算管那个新浪微博,直接醒了过来,拿起手机,四点四十三分,距离闹钟还有两分钟,我还以为我又没听到闹钟呢。前几天睡的太晚,导致睡得很死,所以半夜定的闹钟基本没听到,今天十一点半睡的,甚至还自然醒了,之后就上了个厕所,再睡了下去。 + + + +## 豆? + +之后再睡回去的梦,就是在课堂上了,老师是初中时代的班主任,虽然是历史,但是我们似乎在写作文的样子,主题是关于豆,我似乎没怎么主意的样子,涂涂写写的,改了又改。 + +之后索性拿出电脑,往桌上一摆,用电脑写了起来(?),写了一些,被周围的人看见,吐槽到,那么小的字体,真是近视眼? \ No newline at end of file diff --git a/source/_posts/2020/09/Brave-new-world.md b/source/_posts/2020/09/Brave-new-world.md new file mode 100644 index 0000000..552a56a --- /dev/null +++ b/source/_posts/2020/09/Brave-new-world.md @@ -0,0 +1,34 @@ +--- +author: SouthFox +title: 美丽新世界! +date: 2020-09-05 17:16:09 +tags: +- 随笔 +- 科技 +- 读后感 +category: 随笔 +--- + +现在是福帝112年了,我们距离美丽新世界,更近一步了吗? + +睡眠教育和人工孵化还是幻想,唆麻仍未出现,人类还在用着老套的香烟酒精。但是在满足欲望这一点,似乎有了些影子。 + + + +现在的网络服务,为了挣钱,为了留住用户,已经是推荐算法的天下了。只要你看了一个猫猫对狗狗使用喵喵拳的搞笑视频,那么推荐列表上就要充斥着类似的视频了。推荐算法似乎让用户的信息形成了一个茧房,让其他信息都被隔绝在外? + +但是人类本来就是偏见的,小时候拿到一本杂志,也就只会翻阅上面的笑话栏目,其他的,实在没兴趣。走到餐厅时,大概率也只会熟悉的窗口前,点上熟悉的菜品,至于尝试下新菜?还是下次、下下次吧。推荐算法只是顺应了人们的需求罢了,说信息之茧是由推荐算法导致的话,那也太“折煞”推荐算法了。 + +赫胥黎到是更近一步,虽然因为时代所困,没有在《美丽新世界》里写到互联网(还有对待大自然的观点,现在大自然反而是更贵的),但是对于满足欲望这一点,倒是大书特书——所有人都属于所有人,音乐、旅游、无限制的性,一切欲望都给予满足,这样人就不会激动,人不激动,社会就不会动荡。 + +> “你这个傻孩子!”她说,“我是多么想要你呀!你既然也想要我那为什么不……” + +从保留地出来的野蛮人,没有见识过文明人不需要走爱情这道程序就能快进到直接上床的架势给吓住了,这种寓言式的场景不经让人深思(除了本子画师)。 + +很难想象这种场景是否会真地出现,但是推荐算法为了贴合人们的欲望,让整个互联网变得越加轻松倒是真的了。喜欢的东西总能被推荐算法第一时间分发,总能找到看得下去的东西,只要,你肯交出你的数据。 + +似乎这是老调重弹,毕竟每一次新的传播途径的发展,都会引起人们的大加批判,苏格拉底对于文字、担忧广播电视的出现会导致人们丧失文字特有的思维。担忧推荐算法的滥用,是不是也能归进这一类呢?可是,相比以往的信息传播方式,推荐算法必然要获取用户的数据,才能做到精确推送。这一次,已经是要让人本身都得参与进来。 + +看着视频网站的推荐视频,会是新时代的汪汪狗崽离心球吗?对于网络世界不停出现的热梗,颇有点“要看鞭子功”的味道。 + +最后在想到到伊普西隆阶级的人都一个胚胎分化出几千个人,每个人长的都一个样,让人觉得恐怖,“那些面孔,那些老是重复的面孔——那么多人却只有一张脸——一模一样的灰色大眼,像哈巴狗一样……”让我突然想到西方人对东方人的一些刻板印象,似乎还说阅兵仪式让人感到害怕,为什么?从这里就能看出一二了吧。 \ No newline at end of file diff --git a/source/_posts/2020/09/九月!.md b/source/_posts/2020/09/九月!.md new file mode 100644 index 0000000..e96c852 --- /dev/null +++ b/source/_posts/2020/09/九月!.md @@ -0,0 +1,19 @@ +--- +author: SouthFox +title: 九月! +date: 2020-09-03 16:45:04 +tags: +- 日常 +category: 日常 +--- + +九月!意味着开学季,是一直不想面对的月份。但在2020年这个魔幻的年份,这一次的九月,当然也是不同往常。 + + + +![](https://cf-ipfs.com/ipfs/QmSiHP5wHqxkV4pWGGVAsXB25E7ZmSLfnMSxGQGbR5TDge) + +## 8.32 + +熵一直在增加,而我并没有活得像一个智慧生物一样,将周围的事物从熵从高状态整理到低状态。随着时间之矢地飞过,混乱是不可避免的,希望九月,能多点清醒吧。 + diff --git a/source/_posts/2020/11/11-25梦记.md b/source/_posts/2020/11/11-25梦记.md new file mode 100644 index 0000000..ff8e693 --- /dev/null +++ b/source/_posts/2020/11/11-25梦记.md @@ -0,0 +1,31 @@ +--- +author: SouthFox +title: 交替的三人组 +date: 2020-11-25 21:46:44 +tags: 梦记 +category: 梦记 +--- + +一个又长又玄的梦,不过隔了将近12小时的现在来记,好多地方都模糊了…… + +## 还能记得的场景 + +在地铁(或者火车)上,我和其他另外两个人一起坐着。然后我拿起手机,屏幕上显示【10秒后进入梦境】。 + +期间我和另外两个人组成了三人组,我在里面,但是另一个场景又有一队三人组,但里面又没有我?总之非常混乱,处于薛定谔状态。 + + + +总之大概是去借什么书来着……?然后去图书馆,或者叫书店更准确一点。柜子上摆满了很多“烂书”,大众成功学那种,你的大脑只开发了百分之十之类的,要不就是老旧的书。我没怎么感兴趣,然后去到了其他展台。期间感觉整个图书馆都是淹了水,我在水下游着去找书,非常怪诞。貌似是找书给另外两个人的…… + + + +然后我就做梦了,大抵是把一个人砍掉半个头,然后把他身子下半截拿去火烤,只是想处理掉,但不是出于毁尸灭迹心态吧。然后我就醒了(不是现实中),然后打开门,发现外面就是——那具烧焦的尸体,我顿时吓到冒冷汗。其他两个人中的一个跳出来对我说(或者不是我),是我干的哟…… + + + +之后一个场景是——公司辞职?我没有联想起相关的场景,但是早上出门前匆匆写在草稿纸上的关键词有它……之后的场景是一个狙击手驾着狙,嘭的一声开枪击中了我对面的一个人,他的胸口上绽出一团红色……联想上个关键词,难道是最近打工人的梗吗?这也太怪诞了…… + + + +之后闹钟就……在响之前我先一步醒来关掉了,就差一两分钟,总体来说,这个梦真的很怪诞(甚至这个词都不尽贴切)可惜急着出去,只稍微写了几个关键词,到晚上才认真写下来,要不然应该能把场景都联系起来的。 \ No newline at end of file diff --git a/source/_posts/2021/02/wrong.md b/source/_posts/2021/02/wrong.md new file mode 100644 index 0000000..fac8cbf --- /dev/null +++ b/source/_posts/2021/02/wrong.md @@ -0,0 +1,261 @@ +--- +author: SouthFox +title: Wrong +date: 2021-02-19 22:45:41 +tags: 日常 +category: 日常 +--- + +只玩耍,不工作,聪明的孩子也变傻。 + +只玩耍,不工作,聪明的孩子也变傻。 + +只玩耍,不工作,聪明的孩子也变傻。 + + + +只玩耍,不工作,聪明的孩子也变傻。 + +只玩耍,不工作,聪明的孩子也变傻。 + +只玩耍,不工作,聪明的孩子也变傻。 + +只玩耍,不工作,聪明的孩子也变傻。 + +只玩耍,不工作,聪明的孩子也变傻。 + +只玩耍,不工作,聪明的孩子也变傻。 + +只玩耍,不工作,聪明的孩子也变傻。 + +只玩耍,不工作,聪明的孩子也变傻。 + +只玩耍,不工作,聪明的孩子也变傻。 + +只玩耍,不工作,聪明的孩子也变傻。 + +只玩耍,不工作,聪明的孩子也变傻。 + +只玩耍,不工作,聪明的孩子也变傻。 + +只玩耍,不工作,聪明的孩子也变傻。 + +只玩耍,不工作,聪明的孩子也变傻。 + +只玩耍,不工作,聪明的孩子也变傻。 + +只玩耍,不工作,聪明的孩子也变傻。 + +只玩耍,不工作,聪明的孩子也变傻。 + +只玩耍,不工作,聪明的孩子也变傻。 + +只玩耍,不工作,聪明的孩子也变傻。 + +只玩耍,不工作,聪明的孩子也变傻。 + +只玩耍,不工作,聪明的孩子也变傻。 + +只玩耍,不工作,聪明的孩子也变傻。 + +只玩耍,不工作,聪明的孩子也变傻。 + +只玩耍,不工作,聪明的孩子也变傻。 + +只玩耍,不工作,聪明的孩子也变傻。 + +只玩耍,不工作,聪明的孩子也变傻。 + +只玩耍,不工作,聪明的孩子也变傻。 + +只玩耍,不工作,聪明的孩子也变傻。 + +只玩耍,不工作,聪明的孩子也变傻。 + +只玩耍,不工作,聪明的孩子也变傻。 + +只玩耍,不工作,聪明的孩子也变傻。 + +只玩耍,不工作,聪明的孩子也变傻。 + +只玩耍,不工作,聪明的孩子也变傻。 + +只玩耍,不工作,聪明的孩子也变傻。 + +只玩耍,不工作,聪明的孩子也变傻。 + +只玩耍,不工作,聪明的孩子也变傻。 + +只玩耍,不工作,聪明的孩子也变傻。 + +只玩耍,不工作,聪明的孩子也变傻。 + +只玩耍,不工作,聪明的孩子也变傻。 + +只玩耍,不工作,聪明的孩子也变傻。 + +只玩耍,不工作,聪明的孩子也变傻。 + +只玩耍,不工作,聪明的孩子也变傻。 + +只玩耍,不工作,聪明的孩子也变傻。 + +只玩耍,不工作,聪明的孩子也变傻。 + +只玩耍,不工作,聪明的孩子也变傻。 + +只玩耍,不工作,聪明的孩子也变傻。 + +只玩耍,不工作,聪明的孩子也变傻。 + +只玩耍,不工作,聪明的孩子也变傻。 + +只玩耍,不工作,聪明的孩子也变傻。 + +只玩耍,不工作,聪明的孩子也变傻。 + +只玩耍,不工作,聪明的孩子也变傻。 + +只玩耍,不工作,聪明的孩子也变傻。 + +只玩耍,不工作,聪明的孩子也变傻。 + +只玩耍,不工作,聪明的孩子也变傻。 + +只玩耍,不工作,聪明的孩子也变傻。 + +只玩耍,不工作,聪明的孩子也变傻。 + +只玩耍,不工作,聪明的孩子也变傻。 + +只玩耍,不工作,聪明的孩子也变傻。 + +只玩耍,不工作,聪明的孩子也变傻。 + +只玩耍,不工作,聪明的孩子也变傻。 + +只玩耍,不工作,聪明的孩子也变傻。 + +只玩耍,不工作,聪明的孩子也变傻。 + +只玩耍,不工作,聪明的孩子也变傻。 + +只玩耍,不工作,聪明的孩子也变傻。 + +只玩耍,不工作,聪明的孩子也变傻。 + +只玩耍,不工作,聪明的孩子也变傻。 + +只玩耍,不工作,聪明的孩子也变傻。 + +只玩耍,不工作,聪明的孩子也变傻。 + +只玩耍,不工作,聪明的孩子也变傻。 + +只玩耍,不工作,聪明的孩子也变傻。 + +只玩耍,不工作,聪明的孩子也变傻。 + +只玩耍,不工作,聪明的孩子也变傻。 + +只玩耍,不工作,聪明的孩子也变傻。 + +只玩耍,不工作,聪明的孩子也变傻。 + +只玩耍,不工作,聪明的孩子也变傻。 + +只玩耍,不工作,聪明的孩子也变傻。 + +只玩耍,不工作,聪明的孩子也变傻。 + +只玩耍,不工作,聪明的孩子也变傻。 + +只玩耍,不工作,聪明的孩子也变傻。 + +只玩耍,不工作,聪明的孩子也变傻。 + +只玩耍,不工作,聪明的孩子也变傻。 + +只玩耍,不工作,聪明的孩子也变傻。 + +只玩耍,不工作,聪明的孩子也变傻。 + +只玩耍,不工作,聪明的孩子也变傻。 + +只玩耍,不工作,聪明的孩子也变傻。 + +只玩耍,不工作,聪明的孩子也变傻。 + +只玩耍,不工作,聪明的孩子也变傻。 + +只玩耍,不工作,聪明的孩子也变傻。 + +只玩耍,不工作,聪明的孩子也变傻。 + +只玩耍,不工作,聪明的孩子也变傻。 + +只玩耍,不工作,聪明的孩子也变傻。 + +只玩耍,不工作,聪明的孩子也变傻。 + +只玩耍,不工作,聪明的孩子也变傻。 + +只玩耍,不工作,聪明的孩子也变傻。 + +只玩耍,不工作,聪明的孩子也变傻。 + +只玩耍,不工作,聪明的孩子也变傻。 + +只玩耍,不工作,聪明的孩子也变傻。 + +只玩耍,不工作,聪明的孩子也变傻。 + +只玩耍,不工作,聪明的孩子也变傻。 + +只玩耍,不工作,聪明的孩子也变傻。 + +只玩耍,不工作,聪明的孩子也变傻。 + +只玩耍,不工作,聪明的孩子也变傻。 + +只玩耍,不工作,聪明的孩子也变傻。 + +只玩耍,不工作,聪明的孩子也变傻。 + +只玩耍,不工作,聪明的孩子也变傻。 + +只玩耍,不工作,聪明的孩子也变傻。 + +只玩耍,不工作,聪明的孩子也变傻。 + +只玩耍,不工作,聪明的孩子也变傻。 + +只玩耍,不工作,聪明的孩子也变傻。 + +只玩耍,不工作,聪明的孩子也变傻。 + +只玩耍,不工作,聪明的孩子也变傻。 + +只玩耍,不工作,聪明的孩子也变傻。 + +只玩耍,不工作,聪明的孩子也变傻。 + +只玩耍,不工作,聪明的孩子也变傻。 + +只玩耍,不工作,聪明的孩子也变傻。 + +只玩耍,不工作,聪明的孩子也变傻。 + +只玩耍,不工作,聪明的孩子也变傻。 + +只玩耍,不工作,聪明的孩子也变傻。 + +只玩耍,不工作,聪明的孩子也变傻。 + +只玩耍,不工作,聪明的孩子也变傻。 + +只玩耍,不工作,聪明的孩子也变傻。 + +只玩耍,不工作,聪明的孩子也变傻。 + +只玩耍,不工作,聪明的孩子也变傻。 \ No newline at end of file diff --git a/source/_posts/2021/03/中文网页字体动态裁剪.md b/source/_posts/2021/03/中文网页字体动态裁剪.md new file mode 100644 index 0000000..bffeef7 --- /dev/null +++ b/source/_posts/2021/03/中文网页字体动态裁剪.md @@ -0,0 +1,99 @@ +--- +author: SouthFox +title: 中文网页字体动态裁剪 +date: 2021-03-12 21:28:56 +tags: + - 技术 + - 字体 +category: 技术 +toc: true +--- + +首先,我先在放个【矣】在这里。 + + + +比起字母系统语言,汉语在计算机世界上有着天然的弱势,**锟斤拷**和**锘锘锘**这些编码问题本身就令人头大了,尤其对于互联网这个寸土寸金之地,想要在网页内展现自定义字体,首先就要先加载个几兆大小的字体文件,要这么做那就是极度的浪费和折磨了。 + +所以字体裁剪是必要的,有两种方向: + +- 提前准备常用字集进行裁剪 + +- 提前计算出需要展示的字集再进行裁剪 + +第一种方式就是突出一个极致的懒,只需要做一次,就能不用再管了。缺点就是总会有不在常用字体里的“常用字”,这样网页加载出来的效果就会形成“犬牙交错”之感,看起来非常辣眼(要是选用的字体和默认字体差别非常大的话)。而且常用字内其实也不是每个字都用上了,所以还是会有浪费。 + +第二种方式就更优雅一点了,能保证字体里的每个字都是用上的。缺点就是麻烦了点儿,不过只要写个自动化脚本,这点麻烦也不算麻烦了。 + + + +## 压缩方案 + +当选 [fonttools](https://github.com/fonttools/fonttools) ,至少这项目现在还活跃着,其他类似的字体项目都停滞了蛮久时间的了……好像。 + +要使用直接通过 ```pip install``` 安装 ```fonttools```就行了,要是还想压成 ```woff2``` 这种压缩率更高的格式还得再安装个 ```brotli``` 。 + +使用命令: + +```pyftsubset <字体>.ttf --text-file=<字符集文件>``` + +当然,也可用 ```--text=``` 的选项来直接后面跟所需字符。 + +要压成 ```woff2``` 格式可以用 ```fonttools ttLib.woff2 compress <压缩后字体>.woff2 <被压字体>.ttf``` 的方式。 + + + +### 脚本代码 + +反正一个简单粗暴的循环怼上去就得了,去重可以用集合来去。 + +```python +import os + +path = os.getcwd() + +filelist = [] +for root, dirs, files in os.walk(path + '/source'): + for name in files : + filelist.append(os.path.join(root, name)) + +strset = set([]) +for filename in filelist: + if '.md' not in filename: + continue + + with open(filename, "r",encoding='utf-8') as f: + for subset in f.read(): + strset.add(subset) + +str_ = '' +a = 0 +with open('strdb.txt', "w") as f: + for i in list(strset): + str_ += i + a += 1 + print('%d Characters in all files.'%a) + print(str_) + f.write(str_) +``` + +将 ```source``` 下的 ```md``` 文件的字符提出来,再写入到 ```strdb.txt``` 以带后续使用。当然直接用 ```--text=``` 选项直接塞进命令里也可以,反正我是喜欢先写进文件的。 + +最后生成的字体文件在 80kb 左右,对于网页来说,已经是可以接受的程度了,当然这跟我选择的字体有关,是一款像素字体,不怎么占空间,如果是常规字体的话,大概会在上两三百左右吧。 + + + +## 坑 + +1. 首先是 ```Travis``` 部署上得用 ```python3``` 环境,要特别声明一下,二环境下会输出个零蛋,应该是版本之间语法的锅? +2. 代码里没有解析配置文件里的中文语句,所以标语口号这种,可能就会没被解析到,不过我懒地再一个一个引入配置文件,所以还不如……~~我先在放个【矣】在这里。~~ +3. 确保文本在网页字体加载期间保持可见状态,即设置 `font-display: swap` 选项 在`@font-face` 内,要不然的话字体没加载出来文本会消失掉。 + + + +## 参考 + +1. [Fonttools](https://github.com/fonttools/fonttools) +2. [中文字体压缩的那些事——涂雨期的博客](https://hsingko.github.io/post/compress_webfont/) +3. [Font display](https://web.dev/font-display/) + diff --git a/source/_posts/2021/03/出发,海底世界.md b/source/_posts/2021/03/出发,海底世界.md new file mode 100644 index 0000000..1c6e888 --- /dev/null +++ b/source/_posts/2021/03/出发,海底世界.md @@ -0,0 +1,29 @@ +--- +author: SouthFox +title: 出发,海底世界 +date: 2021-03-27 15:35:16 +tags: +- 梦记 +- 普通梦 +category: 梦记 +--- + +突然,我妈和我说,我们去水底走一遭吧。 + + + +接着,她就把她的的红色小轿车往水里冲进去…… + +水下的光影变得光怪陆离了起来,外面传来的声音变得沉闷。而我似乎有点担心车的气密性是否良好,往窗边摸过去,感觉确实有点湿润,心中想着车能否在到底目的地的时候没被水完全灌满。 + +不久之后,我们似乎来到了一片城墙外面,这里并不像是水底,跟陆地上似乎没有什么两样……而且虽然感觉是城墙,但说是房墙还差不多,二三人高度,上边还用陶瓦盖住。墙的正中间摆着一座小神台,车子停在神台的五六米远,半截车身刚好对住。神台前面有一个女人,我似乎感觉车有点挡住她了,有让她感到不悦吗? + +我们下了车,我妈拿起了烟准备要抽(现实中并不抽),拿起打火机,啪擦啪擦,好几次都没有点着,我非常识时务的把我的手指凑了过去,做了个打响指的动作,一簇小火苗就跃到我手指大概四五厘米的位置,帮我妈点着了烟。那女子看到,也向我准备借个火,我也帮她点着了,还不忘解释道:“这可是由**信仰驱动**的……” + +------ + +接下来个场景,是发生在公司里。 + +一个新来的员工,兢兢业业工作着,却被老板认为i有摸鱼之嫌,展开调查。发现使用的电脑魔纹出了问题,似乎还危害到了现界的人。 + +那新来的员工感到心灰意冷,口中不停说到,我以后再也不这么前往现实世界了…… \ No newline at end of file diff --git a/source/_posts/2021/05/二一年五月份梦记.md b/source/_posts/2021/05/二一年五月份梦记.md new file mode 100644 index 0000000..009dd9c --- /dev/null +++ b/source/_posts/2021/05/二一年五月份梦记.md @@ -0,0 +1,52 @@ +--- +author: SouthFox +title: 二一年五月份梦记 +date: 2021-5-1 23:33:33 +tags: + - 梦记 +category: 梦记 +toc: true +--- + +> 尝试把梦记以月的形式压在一起。另外,纯纯笔记买了永久也没怎么用过,是时候用起来了,顺便测试一下手机编辑 Git 仓库。 + +## 5.4 habitica 新策略 +中: 普 +habitica 新功能,梦到很多标签集?然后还解释了什么宇宙飞船,海战玩法什么的。。。最后一瞥,好像还康到了腾讯的联动物品。 + +教堂,地球仪,鲸鱼?上面的卡住了入口,其实上面别有洞天。。。 + +## 5.18 啼笑皆非之契约 +晚: 普 +就一个场景记忆最深,就是梦见什么签约什么奴隶契约之地,我看了外面的告示牌,竟然是【名人签名馆】,怪。 + + + +## 5.23 另一栋,可能性 +晚: 普 +似乎是在某一条街道另一边的样子,看到了以前的房子? +中: 普 +似乎到了某个北方新学校的样子,我穿着厚大衣,似乎有一件还是我妈的,女款,这让我感到不自在。 +然后我就开启了我的征程,目的是什么倒有些忘了,但是反正路过了很多地方都样子…… + +## 5.24 乡下 +晚: 普 +在乡下,那种百货店,我盯着冷柜,里面卖着一份特别的饮料,比起常规饮料都贵,似乎六七块的样子…… + +## 5.25 跨海跨年大会 +晚: 普 +高中的人混杂着大学的场景?貌似是在跨海大桥上举办跨年大会。当时是在看电影,放到剧情关键处,就开始倒计时了,电影也暂停播放了,随后开始倒计时…… +五四三二一——烟花开始在大桥的链子上一节一节炸裂开来,我坐在最后排,一些烟灰还打在我的脸上…… +最后电影恢复了播放,然后还有工作人员说,几个摄像机有几个拿来录观众的表情,有需要可以去索要…… + +## 5.28 焦虑通知书 +晚: 普 +一直梦到填饱志愿的场景,然后似乎有额外验证的步骤,好像是团员还是党员?以及检查录取公开名单时候发现没有自己名字的场景…… +各个方面来说都很焦虑的梦。 + +## 5.30 是地洞啊! +晚: 普 +似乎在学校,我并没有住在宿舍,而是住在地下。入口在一栋建筑物旁,看起来就是一个坑洞,往里走还有一个过道需要完全趴下蠕动过去才能通过……过道后面就是大门了,里面就是很普通的几室几厅那种构造了。 +然后我似乎在学校里怎么乱逛?发生什么事不记得了,应该是跟食堂有关…… +然后似乎有人(似乎是爸妈)想参观我的“宿舍”,我就先去开门了。趟过道第一次觉得别扭,就拿把铲子把过道的土铲了,土下面漏出来的,是楼梯。 +随后我大概就理解我为何要出去逛了,因为有两个亲戚住在里边,我妈就指责我爸,亲戚住在里边,我肯定不自在的! \ No newline at end of file diff --git a/source/_posts/2021/06/Peertube.md b/source/_posts/2021/06/Peertube.md new file mode 100644 index 0000000..88f9b76 --- /dev/null +++ b/source/_posts/2021/06/Peertube.md @@ -0,0 +1,76 @@ +--- +author: SouthFox +title: 在自己电脑上搭建 Peertube +date: 2021-06-17 20:48:43 +tags: + - 技术 + - 建站 +category: 技术 +toc: true +--- + +Peertube 是一个自由、去中心化、邦联制运作的视频平台。 + + + +具体的介绍可以看视频: + + + +比起搭建在托管服务器上,搭建在自己电脑上可以有诸多好处,最大的好处就是存储空间和管理的自由。当然服务的运行会随着电脑的休眠而暂停,要是想一直运行的话得不间断开机……(当然也可以使用树莓派、 NAS 的方式来做到不间断开机) + + + +## 准备 + +### 公网 IP + +想要将自己电脑上的服务开放至整个互联网,公网 IP 是大前提,这一点请咨询运营商,有一些比较宽松,有一些就很扯皮了。不过珠三角地区电信运营商可以在宽带帐号 at 后加 `pub.`,重启猫后就是公网 IP 了。 + +当然,也可以使用 IPV6 ,不过 2021 年,IPV6 的普及率也不足百分之三十。就算自己的服务能够建起来,能访问的地区也是少数,所以还是满怀希望的等待吧! + +拿到公网 IP 后,如果是用了 WIFI 模式或者有路由器的,得先在设备面板里启用端口映射,才能确保访问。 + + + +PS:国情所在,就算有了公网 IP ,也是封了 `80`,`443`,`8080`这些端口的,所以得使用不常用的高位端口。 + + + +### 域名 + +家用的宽带就算拿到了公网 IP ,也会不定时更换地址,所以要固定访问地址和配置 HTTPS 首先得需要一个域名 ,当然要是不计较这个的话,这一点可以略过。但是这种方式搭建出来的实例适合运行在内网上,因为 “**PeerTube does not support webserver host change**”(不支持域名改变),第一次运行之后再次更改域名将导致报错…… + +域名可以去域名商寻找,当然也可以使用免费域名,最主流的是使用 [Freenom](https://www.freenom.com/zh/index.html?lang=zh) ,可以免费申请到 .cf .ga .tk 三种类型的域名。 + + + +### DDNS + +之后就是将公网 IP 绑定到域名上, Cloudflare 关闭了 .cf .ga .tk 使用 API 更改解析的方式,要更改得去网页面板更改。所以得用别家的,我使用的是 [Vultr](https://www.vultr.com/docs/how-to-setup-dynamic-dns) 。 + + + +## 安装 + +根据官方的 [文档](https://docs.joinpeertube.org/) 走就是了,搭建一般都是在 Linux 下, Win 系统可以尝试用 `WSL` ,我采用的方式是用 Docker 安装,毕竟这样不容易搞乱原本日常用的环境。 + +不过在使用 certbot 镜像时,注意将命令替换成 `--preferred-challenges dns -d example.com` 因为国内家用宽带无法拿到 443 端口,所以得用 DNs 方式申请域名。 + +### 坑 + +安装时倒是有一些坑陷了好久…… + +第一点就是端口要配置成一致的,不能容器和外面的不一样,要不然会因为不一致而报错。 + +但是就算这样也会导致 `Cannot retrieve OAuth Client credentials: undefined. Ensure you have correctly configured PeerTube (config/ directory), in particular the "webserver" section.` 错误,解决方式是在官方 nginx 模板 `location @api` 处 `proxy_set_header Host $host` 后面添加 `:所使用的端口` 才能解决问题[参考](https://github.com/Chocobozzz/PeerTube/issues/3608)。 + + + +第二就是修改了 Docker 配置文件之后不自知,导致一直报错,非常脑残……所以有时候得全面检查配置文件才行…… + + + +## 总结 + +期待数据自主的那天吧!不用忍受寡头背后叔叔的气,希望去中心化的互联网的环境到来…… diff --git a/source/_posts/2021/06/二一年六月份梦记.md b/source/_posts/2021/06/二一年六月份梦记.md new file mode 100644 index 0000000..e5b5131 --- /dev/null +++ b/source/_posts/2021/06/二一年六月份梦记.md @@ -0,0 +1,40 @@ +--- +author: SouthFox +title: 二一年六月份梦记 +date: 2021-6-1 23:33:33 +tags: + - 梦记 +category: 梦记 +toc: true +--- +## 6.1 +晚: 普 +### 空中! +好像是高中学校的一次活动?还是搬迁,总之要搬到天上的城去。我在城市闲逛的时候,使出了一个劈腿,然后我就借着惯性漂了出去。飘着的时候还和碰到的师生问好,他们好像还很羡慕。然后突然,我发现似乎要飘出城市出去了,连忙抓紧一颗树,巨大的惯性差点让我抓不住树了,我回头一看,距离城市边界只有四五个身位…… +随后我在一张房子里,跟某人交谈,然后突然他就尸变了,虽然不知道原因……我直接摁着他的头弹飞了他,然后就这样在房间里又上演了一场紧张刺激的丧尸想要我又没咬到的丧尸样板戏。 + + + +### 记忆混乱 +中: 普 +出去,然后在山里这样的景区里找不到路了,是想找一个在两条路之间的路。在微信上搜索也找不到,按照攻略也找不到…… +随后发现公众号文章里所用的配图……是一张监控摄像探头拍下的,里面竟然有我和我爸!看起来我多年前来过……但我实在是忘了…… + +## 6.13 +中: 普 +### 烂手机 +梦到以前的旧手机烂了,烂到外壳几乎都没有,差不多只剩下个屏幕。屏幕很厚,跟手机一样后,后面的电子原件并没有看到…… +有点觉得它要爆炸了…… + +### 海平面? +地球的高楼大厦破败不堪,似乎所有人都死了,只是僵立在原地,还被某种黝黑的球形物体寄生了,在脖颈处……有一些球体还有凸起的一块亮色,似乎是眼睛…… +然后哗啦,海面上涨,淹过了一栋栋楼,盖过的尸体都马上溶解,化成了石油状。接着海面又退了,尸体又重新显露出来。 + +## 6.14 +晚: 普 +### 火车,况且况且…… +在家门口,似乎正在紧张发动一架火车,工人正在外面的架子上扔煤。一个工程师模样的人找上来,指着最上面线上挂着还在滴水的衣服(应该是爷爷的)说到,马上拿下来…… + +## 6.28 +晚:普 +cdda?在洗手间门下的缝卡住打浩克,然后后面刷了两个快速无视回合的鹰身怪秒我…… \ No newline at end of file diff --git a/source/_posts/2021/06/躺平?.md b/source/_posts/2021/06/躺平?.md new file mode 100644 index 0000000..c801e33 --- /dev/null +++ b/source/_posts/2021/06/躺平?.md @@ -0,0 +1,103 @@ +--- +author: SouthFox +title: 躺平? +date: 2021-06-02 10:59:51 +tags: 随笔 +category: 随笔 +--- + +躺平这个词最近很是火热。 + + + +毫不意外,这个词也在各方各地引起了巨大的口水战,各家粉墨登场,上演一出好戏。可惜不出几年,我也要进这一场戏了,看戏的爽快感压制不住苦涩感,遗憾! + +不过这一个月在重温《瓦尔登湖》和 庄子 ,倒是意外地符合这次事件,索性就把脑子里的浮云掠影写下来吧。至于对错(或许也没有对错),用时间来证明吧,对于这篇文章,我还是有信心能保存十年以上的。 + + + +## 开躺 + +躺平最开始是由出身于百度贴吧的「中国人口吧」。ID为 好心的旅行家 在四月中旬发的一份贴子,大概四月二十几号我就在我经常逛的一个社区里看到了,没过几天就冲上了点赞榜前列。印象中这个贴子的截图我并没有细看,记得最深的就是每月才花两百、每天面加蔬菜,然后还要为了践行躺平哲学还得去锻炼,甚至去横店扮尸体,真实躺平了。评论里也都是些羡慕、感慨之词。 + +后来「躺平」一词冲击整个互联网,化为五月份的一道巨浪,成为和内卷一样在各大评论区烂刷的词语的过程,这开始我就没怎么关注到了,所以对于这部分,我也弄不出更深的见解了。 + +首先还是说说躺平这个词吧,拌着一份于四月末的 [采访](https://www.thepaper.cn/newsDetail_forward_12444215) (后按:原文章已下线,有备份存于 [Web archive](https://web.archive.org/web/20210603142252/https://www.thepaper.cn/newsDetail_forward_12444215)): + +> 其实我说的「躺平」并不是说我就每天躺着,什么都不干。「躺平」是一种心态,就是觉得很多事情,不值得我为此付出那么多的心神和精力。 + +可以见得躺平并不是 [尼特族](https://zh.wikipedia.org/wiki/%E5%B0%BC%E7%89%B9%E6%97%8F) 和 啃老族。他们是有区别的,[维基百科](https://zh.wikipedia.org/zh-hans/躺平) 给的定义是: + +> **躺平**或**躺平主义**是2021年[中华人民共和国](https://zh.wikipedia.org/wiki/中华人民共和国)网络流行词语,指年轻人出于对国内压抑的工作文化的失望,与其跟随社会期望坚持奋斗,不如选择“躺平”的处事态度。该词源自[百度贴吧](https://zh.wikipedia.org/wiki/百度贴吧),随后[豆瓣](https://zh.wikipedia.org/wiki/豆瓣)上建立了躺平小组(已被删除)。躺平被视为是对抗社会“[内卷化](https://zh.wikipedia.org/wiki/内卷化)”的一种方式。其具体内涵包括“不买房、不买车、不结婚、不生娃、不消费”及“维持最低生存标准,拒绝成为他人赚钱的机器和被剥削的奴隶”。 + +所以如果要是躺平要是简单理解成混吃等死,那就是错的了。这种网络传播中的异化,不知道是望文生义多一点还是官媒地引导多一点呢?要是躺平这个词一开始就被解释成开源节流会如何呢?对我来说,这个词有点庄子齐物论中身如槁木的感觉…… + +### 哲思 + +> 我可以像 [第欧根尼](https://zh.wikipedia.org/wiki/錫諾普的第歐根尼) 只睡在自己的木桶里晒太阳,也可以像 [赫拉克利特](https://zh.wikipedia.org/wiki/赫拉克利特) 住在山洞里思考 ‘[逻各斯](https://zh.wikipedia.org/wiki/逻各斯)’。 + +明显见得躺平哲学也不是什么新思想了,已是自古有之的老调重弹。 + +要是一开始人生的目的就是赚钱赚钱买大房子,然后在屋顶上晒太阳,何不一开始就去晒太阳? + + + +> 现代人,很多都已经被自己所创造的东西操控了。资本、科技,这些都在异化人类。我比较认同「人是万物的尺度」,就是人本主义的思想,让人回归生活的本质,回到最基本的生存的状态。我可以怀疑一切,但不会去质疑「以人为本」的思想。马克思·韦伯也提出过「除魅」的概念嘛,就是要重新审视这些物质、技术之类的东西,去想想,我们真的需要这些东西吗? + +这观念倒是在《瓦尔登湖》里也能找到差不多的描述: + +> 大部分人似乎从来没想过房子是什么,只是看到邻居有房子,便想着自己也必须有一座,于是落得终生穷困,而这是毫无必要的。这就好比有人已经穿着裁缝为他量身定做的皮衣,逐渐抛弃了棕榈叶做的草帽和土拨鼠做的皮帽,却还抱怨生活太过艰难,因为他没钱给自己买一顶皇冠! +> +> …… +> +> 我们总是想要学会如何得到更多东西,但有时候也应该学学如何满足更少的东西吧? --《瓦尔登湖》 + +这种自降「享受」的做法,又有几人能做到呢?所以评论区里,感慨才是多数吧,毕竟没人能轻易模仿贴主的做法。 + +减少的物欲产生的欲望必定会转移,见访谈,贴主是转移到精神世界上去了(或许信奉这种信念的人都这样吧): + +> 我现在躺平了,有时间阅读,也有更多时间去学习和搜寻这些我感兴趣的知识。比如,我最近就在读孙隆基的《杀母的文化》,关于美国文化与美国人心理状态的社会学著作。 +> +> 这些年,全球集体右倾,年轻人都被意识形态裹挟得厉害。但我只是想去了解一下,另一个大国的人到底在思考些什么。我更关注他们「人」的状态。 + +读书是好事,那么不为钱财、学位所读,是好事吗?更何况在这躺平的情况下…… + +> 如果某本书能够解释我们的奇迹,并揭示新的奇迹,那么它可能就是为我们而存在的。 --《瓦尔登湖》 + +愿我能一直找到我所想要的书。 + +### 萝卜钓竿 + +用我浅薄的经济学知识阐释,整个社会就是建立在发展上的,银行之所以贷款给人建面包店,就是因为看重了建起的店铺生产的面包能卖掉,钱才能赚到,社会就是建立在未来的发展上,可要是人们不买了呢?所以不免见到很多人确实急了,因为要是蛋糕变不大,那肯定就是一场场危机。 + +新华社转载了一份南方日报的文章,说道: + +> 无论如何,年轻人应该对未来抱有信心。尽管有人认为,年轻一代正在“低欲化”,并且影响整个社会慢慢进入低欲望状态。但事实上,这是一种毫无根据的猜测。学界认为,低欲望的本质原因是发展动力不足。中国是世界第一人口大国,劳动力资源充沛,具有超大规模市场优势,中国经济发展前景广阔。也就是说,在这片土地上,只要足够勤奋依然能自我实现、自我成就。 + +货币贬值叫通货膨胀,努力贬值叫内卷,欲望贬值呢?冲浪时读到一个有意思的言论,把萝卜钓竿放在驴子嘴前驴会努力,但是这个杆子有几百米长时,驴子自然欲望低下了。社会中的萝卜钓竿真在变长吗?我也并没有详细调查,没有实际发言权,所以只能检索点资料管中窥豹了。 + +1998修订版《新华词典》: + +> 张华考上了北京大学;李萍进了中等技术学校;我在百货公司当售货员:我们都有光明的前途。 + +比较:在中国买一套房子需要工作多久: + +[BV15v41157Ay](https://www.bilibili.com/video/BV15v41157Ay) + + + +说到底奋斗和躺平就是一体两面罢了,阴阳里都各有对方,奋斗极端叫奋斗逼,躺平极端叫躺尸…… + +> 他们知道我们知道, +> +> 我们知道他们知道我们知道, +> +> 可是依旧没有任何改变…… + + + +## 自躺? + +庄子并不是所谓的消极避世,他的文章里有一套完整的方法论,希望众生能够使用,在乱世中安身。梭罗也是,《瓦尔登湖》明说了是“一场生活的实验”,皆在扒开生活的外衣,弄清生活的本质…… + +在十九世纪的美国,一个人一天平均工资是一美元。梭罗在他的著作里也证明了,凭着二十五美元就能自己起一栋木屋,并享受近八个月的健康、闲暇时光…… \ No newline at end of file diff --git a/source/_posts/2021/07/搭建无污染的DNS服务.md b/source/_posts/2021/07/搭建无污染的DNS服务.md new file mode 100644 index 0000000..cfe370d --- /dev/null +++ b/source/_posts/2021/07/搭建无污染的DNS服务.md @@ -0,0 +1,143 @@ +--- +author: SouthFox +title: 搭建无污染的DNS服务 +date: 2021-07-06 17:29:50 +tags: +- 技术 +- DNS +category: 技术 +toc: true +--- + +DNS 作为互联网世界的电话簿,重要性不言而喻。但是平常使用时,默认情况都是在裸奔,非常不安全,劫持和污染处处存在,所以搭建一个自己放心的 DNS 服务还是有必要的…… + + + +## 准备 + +- VPS (国内延迟低、国外无阻碍,看取舍吧。有条件也可以用树莓派之类的) +- coredns(用于配置服务器的 Dns Over Tls 「dot」或 Dns Over Https 「doh」) +- dnsmasq(用于转发 dns 请求) +- pihole(可选,可以干掉追踪器和广告) +- dnsproxy(将请求转发到其他加密 DNS 服务器上) + + + + + +### Coredns + +安卓自从 9 版本之后就内置了 Dns Over Tls 「dot」 配置,叫做 `私人DNS` ,这样进行配置就不用一个一个改 wifi 设定,同时还对蜂窝网络起效果,所以可以用 `CoreDNS` 来加密设备到服务器之间的请求…… + +`CoreDNS` 同样使用 `Golang` 编写,仓库内提供了[可执行程序](https://github.com/coredns/coredns/releases) 和 [systemd ](https://github.com/coredns/deployment/tree/master/systemd)文件,就算你的发行版没有提供 `CoreDNS` 的打包也可以自行写个服务。 + +配置如下: + +``` +tls://.:853 { + tls /etc/coredns/cert.crt /etc/coredns/cert.key + forward . 127.0.0.1:53 +} +``` + +作用是将 853 端口的 dot 请求转发到 53 端口所运行的服务上…… + +证书用 `certbot` 申请,偷偷摸摸的用 853 ,国内的云服务商应该不会注意到(毕竟盯着的是 443 和 80 端口的情况多一点……吧) + + + + + +### Pihole (可选) + +`pihole` 的好处就是网页的控制面板很好用,看着面板中的统计数据将有非常大的满足感,除此之外就没有啥了。 + +如果不是全新机子的话,还是用 `docker-compose` 安装吧,pihole 对于安装环境还是很挑剔的。 + +首先安装 `docker` 并启动,然后安装 `docker-compose` ,新建文件夹下新建 `docker-compose.yml` 文件,输入: + +```dockerfile +version: "3" + +# More info at https://github.com/pi-hole/docker-pi-hole/ and https://docs.pi-hole.net/ +services: + pihole: + container_name: pihole + image: pihole/pihole:latest + ports: + - "53:53/tcp" + - "53:53/udp" + - "67:67/udp" + - "宿主机想开放的端口:下方配置 WEB_PORT 所写/tcp" + environment: + TZ: 'Asia/Shanghai' + WEBPASSWORD: '网页管理面板密码' + WEB_PORT: 需要开放的端口 + PIHOLE_DNS_: '8.8.8.8' + ServerIP: '服务器 Ip' + #VIRTUAL_HOST: '服务器访问管理面板域名' + #DNSMASQ_USER: 'pihole' + + volumes: + - './etc-pihole/:/etc/pihole/' + - './etc-dnsmasq.d/:/etc/dnsmasq.d/' + # Recommended but not required (DHCP needs NET_ADMIN) + # https://github.com/pi-hole/docker-pi-hole#note-on-capabilities + cap_add: + - NET_ADMIN + restart: unless-stopped +``` + +注意 `ServerIP` 和 `VIRTUAL_HOST` 要写对,要不然会被禁止访问…… + + + + + +#### 列表 + +装了 pihole 要发挥最大的作用就得找一个优质的屏蔽列表。 + +可以使用 [anti-AD](https://github.com/privacy-protection-tools/anti-AD) ,能屏蔽国内大部分追踪器和广告地址,对于 pihole 的配置文件在 [这](https://anti-ad.net/domains.txt) 。 + + + + + +### Dnsmasq + +打开配置文件,更改 `port` 监听端口, `server` 写上游 dns 地址(`:` 要用 `#` 代替)。 + +无日志的 `dot` , `doh` 服务器一般都是在国外,一般延迟都很糟糕,所以对于国内的域名来说访问延迟将会很大。可以用 `Dnsmasq` 搭配 [dnsmasq-china-list](https://github.com/felixonmars/dnsmasq-china-list) 项目,起到分流的作用,国内的常用域名送到国内的公共 DNS 服务解析,除此之外走加密的 DNS 服务。 + +不想装 `pihole` 的话,可以使用 [anti-AD](https://github.com/privacy-protection-tools/anti-AD) 项目里的 [anti-ad-for-dnsmasq.conf](https://anti-ad.net/anti-ad-for-dnsmasq.conf) 配置文件…… + + + + + +### Dnsproxy + +转发到上游的 dot 、 doh 请求。 + +项目地址在 [这里](https://github.com/AdguardTeam/dnsproxy ) ,而且似乎没有提供服务文件,所以得用 `screen` 挂着了。 + +基本上能用的 dot 、 doh 服务器被 [封](https://www.solidot.org/story?sid=67104) 的差不多了,能用的 只有 `Cloudflare` 的了,如果对无日志不在意的话可以用腾讯云的 `dnspod` 。 + + + + + +## 总结 + +到此,一个长长的 dns 链条就形成了: + +``` +手机 -- dot 请求 --> coredns --> pihole -- 屏蔽或放行 --> dnsmasq -- 分流 --> 国内列表/列表外 --> dnsproxy --> dot/doh 服务器 +``` + +如果不贪恋 `pihole` 的控制面板的话,它的功能完全可以交给 `dnsmasq` 的。 + +只是没有控制面板的话,查误杀之类的事就会很麻烦…… + +搭好后应该使用抓包程序查看数据包,判断设备到服务器是否 套上了 tls ,服务器查看日志,看是否走了加密 dns 服务。 diff --git a/source/_posts/2021/09/Second-chance.md b/source/_posts/2021/09/Second-chance.md new file mode 100644 index 0000000..7f16db4 --- /dev/null +++ b/source/_posts/2021/09/Second-chance.md @@ -0,0 +1,133 @@ +--- +author: SouthFox +title: Second chance (Ongoing) +date: 2021-09-05 20:20:31 +tags: + - 日常 +category: 日常 +toc: true +--- + +如果可以的话,当然是想在象牙塔里一直待着啦。 + + + +虽然这个选项并不是最好的,不过,有就行了! + +在开学前之前拿到驾照后,就坐在家里苦等了,虽然没有必要产生什么情绪,但随着开学时间来临,状态还是越发不对劲了。四五才睡,然后睡到中午十一点半……报到那天晚上好像也是五点睡,可能家里实在待到厌烦了吧…… + +最终还是要出发,从家里开车到新学校要三个小时、全程高速两百三十公里,过路费都要一百三十元了,真不敢想象回去还要怎么回。 + +到学校后,因为防疫的原因(2021 了,新冠什么时候死啊?),随行人员不能入校,所以只能我自己进去了,签到、送一张卡(冲业绩)、安装国家反诈 APP (冲业绩)。其中反诈的还人脸识别一直失败,看着民警苦哈哈的表情,看起来我这份业绩是拿不到喽。 + +而且因为不是女生,所以并没有帮我提行李(据哥所说,我后一位的女生,就有三位“志愿者”帮忙去提行李……)。但至少有校内小白车接送,从校门口到所在宿舍,驾车也要走五分钟,真是漫长。以后从宿舍走到校门口那可真是不好走…… + +## 宿舍 + +两星期前微信就开放了选宿舍系统,到了开放的时间被几千人狂暴鸿儒,直接宕机。我已经看到了选课时的情景了…… + +过了四五个小时才想起来还在选宿舍呢,发现终于可以打开了,虽说可以自己组团选择,不过并没有认识的人,所以只能自己瞎猜了。最后选择了个看对眼的宿舍号就行了,保佑舍友能够合得来吧。 + +最终提者行李来到宿舍前,已经十一点二十了,但我还是第一个来的。妈打电话催促我安顿好了就出去吃饭,明明饭堂也开着,我也待在学校里了……但毕竟家里人是请假送我过来的,不能这么不给面子,所以只能在楼下先买把锁把行李先锁住然后吃完饭再说了。 + + + +## 骑行 + +开车都要五分钟的距离,加上大中午的太阳,自己走出去怕是要昏死在路旁……这时我发现门口堆着很多的共享电动车,纠结了两分钟,还是走过去准备尝试尝试了。扫码打开,很好,不用学号什么的,搜索设备……绑定……解锁,然后我就懵了,没骑过啊,怎么启动呢,又纠结了一分钟,推者到志愿者服务处问问怎么启动。“坏了吧”,“你再找一辆看看吧。”得到了这样的回答,我点了归还车辆,直接就弹出请付款两元了,才走了 0.01 公里啊……想点一下申诉,不过还是打算再试一次再说,再找了一辆,又摸索了一番。突然顿悟了,摩托车的油门是手柄这啊,那电动车也是啊!终于悟了…… + +「图片占位」 + +前两个月骑单车的经验还在,所以电动车能够掌握平衡,没有摔倒,骑到校门口,1.9 公里,用时七分钟,没有超过起步价,两公里两块钱,感觉还是奢侈了…… + + + +## 宿舍 again + +到校门口,找附近的饭店准备吃饭,看着菜单,发现一个番茄炒鸡蛋 30 块,就瞬间无语了……而且等上菜也差不多等了二三十分钟,看起来不愁客源就是可以为所欲为啊。 + +端上菜之后,装菜碟比起家附近大了一些,好吧,至少没有那么坑……吃罢,就该回学校了。 + +继续花了两块钱骑到宿舍,上来之后发现还是没有来人,拿着行李不知道要不要铺床,因为床位并没有标明,怕直接占位会起冲突…… + +大概十分钟后,终于来人了,寒暄了之后,他提出想不想跟我换,我拒绝了,因为我想选的位置和专科时的位置选一样的,有种熟悉感。他顿时有点泄气,说是这位置选的靠门不好,以后开门都得让他来开了,之后就一边回着微信消息一边出去了。 + +后来我才了解到,他原来专科也是在本校的,老油条了,原本打算跟熟悉的人选同一个宿舍,但是被狂暴鸿儒的时间卡到了,之后回过神来就发现已经自动选了……真是悲惨呢。 + +待了二十分钟后,看着来校注意事项的床单,发现讲到安装网线的事,随后打算问一下学弟(这学弟是我当初加咨询群后主动加上来的,一开始叫我学弟,之后发现我算 19 界的立马改口叫我学长了,真是谐。),学弟推了两个微信号给我说叫我问问。其中一个没有回应,另一个直接说我认错了,业务范围里管打印、相片,不管网线……好吧,学弟看来没靠住,只好按照传单上到图书馆附近找找看了…… + + + +## 网络,生存之本 + +看了几分钟全景地图,发现图书馆就是校门口直接再走过去就行了,校园看起来只是长,但并不怎么绕啊。 + +减而来到图书馆,稍微绕了一下就找到了办理点的帐篷,马上就被热情的推销员按住了,套餐就只有四个,第一是电话卡,第二是 4M , 第三是 20M 250块 五个月超过续费 30块一月,第四是 50M 300块 五个月超过续费 40 块一月,好吧,想着能用一年,而且还作为重度网虫,就直接选择最后一档了,还送一张电信流量卡,39 块 60 个 G ,预存一百块,交了钱还要等待安装,那就用这张卡共享热点应急了。 + +然后打算徒步走回去,测测两公里要走多久,记了会时间,发现差不多是二十分钟,还是挺折磨人的。 + +回去之后发现又有一位人来宿舍了,将近一米八的身高,看起来十分体育生,说话的语气十分像一位高中同学…… + + + +## 班会,象牙塔蒙尘之时 + +跟两位舍友寒暄了几下,发现各位的 Steam 游戏都在100+ ,嗯,至少知道 Steam 就是大胜利了,至少保底的共同话题有了。 + +### 美好的一天从账单结束 + +之后班群通知,晚上要开第一次班会,让我们准备准备,在打算一起吃饭的时候,发现信用卡传来消息 AWS 扣费 65 块。顿时急了,一查发现是我多开了一个套餐,超过了免费套餐的用量,急忙之下关闭了帐号,然后发现关闭帐号之后扣费还没停,然后控制面版在关闭状态下还打不开,只好用贫瘠的英语写了几句开了张工单…… + +免费用户处理工单并不块,所以只好先吃饭了,饭堂听老油条说,一楼就比较平价,二楼就是奢侈之地了。不过先从一楼开始吧,两个菜 7.5~8 块,三个菜就要上到十多块。感觉价格似乎并没有体现出这城市的偏远呢。 + + + +### 蒙尘象牙塔 + +班会,并没有见到辅导员,只有差不多同岁的助教在主导,前面巴拉巴拉的讲学校的设施,快递、食堂、校医室等,不得不感叹这城市地价是比较便宜,比起以前的学校是建的比较大。 + +之后,就是惯例的自我介绍时间了,之前还在跟舍友聊,都算是大三的人了,还要自我介绍吗,也太老套了,没想到还是没出套。 + +介绍中有几位特别多话,别人三十秒结束的,几位能涨到三五分钟,听着话就是,参加过竞赛、堕落在家、欢迎来玩、我也领导过百人团队——确实,上位者占用大家时间这一点真的很上位者! + +不得不感慨毕竟是会有社会上走过几年再读的人,让象牙塔也没那么洁白了,感慨感慨。 + + + +### 晚 + +之后就终于结束回去了,第四位舍友看起来是不存在了,三人宿舍,对于人际关系来说就比较好处了,但是代价就是生活成本提高了…… + +热水表最近似乎改成用手机蓝牙操控了,典型的高科技害人,我洗完澡关表还得湿漉漉的拿起手机操控吗?人洗澡不代表手机也跟着一起洗啊……理由是之前用卡很多人找不到充值入口,所以就改成蓝牙式的了,而且新生学号还没录入,所以出水绑定还没搞好,真是高科技害人不浅啊。 + + + +之后老油条说要跟以前的人打 LOL ,说可能会吵,也确实吵,处了半天后,倒是稍微了解一些了,口号是这一年就要浪!因为疫情原因有一年都没好好玩,所以这一年就该玩玩!爱好抽烟,也好在会出去抽,不外放抖音却又放 B 站,以前作为鼓手上过礼堂活动表演过,非常矛盾了属于是。感觉不应该叫老油条,应该叫 **旧充**,不是现充,是曾经是。 + +闹到一点多后,终于结束了,好在明天也不用上课,还能支持这么闹…… + + + +## Tomorrow + +早上睡到十点多,至少比在家早了,洗漱完毕后就该吃饭了,吃完饭回来看一下手机又该睡觉了,睡到三点多,敲门声想起,原来是网络安装工来了,说是安装工,结果确是报个帐号就完事了……这么简单的话,当初开通完直接发微信不就好了吗…… + +有线网用不了,但是无线网倒是用上了,校园网还是万恶的一帐号一终端机制,折腾了许久,终于还是当个冤大头去淘宝花两百买**破解路由器了**,虽然继续折腾似乎也能折腾出来,但是还是用钱买便利吧,时间应该花在更有价值的地方…… + + + +### 图书馆,suki + +晚上吃完饭,得知图书馆已经开了,打算去看看,减二出行,走到图书馆发现陈列摆设都很养眼,看得出来花了大价钱啊。 + +「图片占位」 + +不过天色以晚,加上问到借书需要学号新生没有之后,就回去了,等之后正式开学有学号了之后再来这里逛吧。 + +之后继续躺在床上摆烂到两三点,就睡了,结束了迷迷糊糊的一天。 + + + +## Tomorrowrow + +十一点醒来,吃中午饭,睡到三四点,摆烂到晚上十一二点,好,结束,明天就是正式上课了,希望能够体验好点,然后抢课能抢到,体育类型能抢到好点的,体侧不要对插班生执行,好了,结束吧大概—— diff --git a/source/_posts/2021/11/为Matrix加入推送功能.md b/source/_posts/2021/11/为Matrix加入推送功能.md new file mode 100644 index 0000000..2a8ca90 --- /dev/null +++ b/source/_posts/2021/11/为Matrix加入推送功能.md @@ -0,0 +1,228 @@ +--- +author: SouthFox +title: 为 Matrix 加入自定义推送功能 +date: 2021-11-22 15:53:18 +tags: +- 技术 +- Matrix +category: 技术 +toc: true +--- + +`Matrix` 是一个开源的聊天协议,和 `XMPP` 一样的联邦制设计也保证了像电子邮件一样的通信便捷。 + + + +好的地方很多,但最明显坏处就是推送了,对于即时通信来说,没有推送是非常大的不便……虽然搭建 `Matrix` 的应用 `Synapse` 配置文件启用邮箱的话可以启用邮件通知,不过鉴于邮件时效性也不是很高,所以需要个其他的推送手段。(谷歌市场下的 `Element` 附带了谷歌的消息推送,不过很遗憾在国内处于残废状态。) + +所幸 `Synapse` 自带的 [API](https://spec.matrix.org/v1.1/client-server-api/) 可以定义推送规则,定义后帐号收到消息,服务器就可以将消息以 `JSON` 的形式推送到自定义的地址,来个曲线救国。 + + + +# Gotify + +推送用到的工具为 `Gotify` ,特点是使用 `GO` 编写,高效快速,不过缺点就是安卓得常驻后台接收推送,不过至少要比腾讯全家桶吃的电要少。 + + + +## 下载 + +去 [Releases ](https://github.com/gotify/server/releases)处找到对应版本的下载链接,解压到`/opt/gotify/`。 + +```bash +unzip gotify-file -d /opt/gotify/ +``` + +然后下载配置样板。 + +```bash +mkdir /etc/gotify +wget -O /etc/gotify/config.yml https://raw.githubusercontent.com/gotify/server/master/config.example.yml +``` + +编辑 `/etc/gotify/config.yml`。将 `port` 改为没有占用的端口, `name` 和 `pass` 是管理员的用户名和密码。 + + + +# Nginx 反代 + +在 `nginx` 的新建一个虚拟主机并在配置文件增加以下内容: + +```nginx +location / { + proxy_pass http://localhost:8080; + rewrite ^/gotify(/.*) $1 break; + proxy_http_version 1.1; + + # Ensuring it can use websockets + proxy_set_header Upgrade $http_upgrade; + proxy_set_header Connection "upgrade"; + proxy_set_header X-Real-IP $remote_addr; + proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for; + proxy_set_header X-Forwarded-Proto http; + proxy_redirect http:// $scheme://; +} +``` + +> proxy_set_header Connection "upgrade"; 这一栏不要漏了……要不然开启 WS 时会报错…… +> +> + + + +# 设置服务 + +新建并编辑 `/etc/systemd/system/gotify.service`。 + +``` +[Unit] +Description=gotify service +After=network.target +Wants=network.target + +[Service] +Type=simple +PIDFile=/run/gotify.pid +WorkingDirectory=/opt/gotify +ExecStart=/opt/gotify/gotify-file +RestartPreventExitStatus=23 +Restart=always +RestartSec=10s + +[Install] +WantedBy=multi-user.target +``` + +然后开启服务并设置成开机启动。 + +``` +systemctl start gotify +systemctl enable gotify +``` + +没有报错的话就可以打开 `Nginx` 里所设置的域名进入管理页面了,(改密码)之后就可以新建应用了,拿到推送令牌,就可以向服务器设置推送规则了。 + + + +## 设置推送 + +在官方文档里,通过 /_matrix/client/v3/pushers/set `API` 就可以设置推送规则了,通过 `curl` ,或者其他方式向服务器对应地址发送 `POST` 请求即可使用。 + +```bash +curl 'https://server_url/_matrix/client/r0/pushers/set' -H 'Authorization: Bearer access_token' -H 'Content-Type: application/json' -X POST -d '{"lang": "en","kind": "http","app_display_name": "Gotify","device_display_name": "Gotify","pushkey": "Gotify-PushKey","app_id": "zh.xxx.gotify","data": {"url": "https://Push_url/_matrix/push/v1/notify","format": "full_event"}}' +``` + +详细说明请查阅官方 [文档](https://spec.matrix.org/v1.1/client-server-api/#post_matrixclientv3pushersset) , 其中 `access_token` 可以在应用里拿到,`pushkey ` 设置成 `Gotify-PushKey` 的样子是为了后续处理方便……现阶段推送地址必须包含 `/_matrix/push/v1/notify ` 路径,否则会报错,所以不得不进行额外处理了…… + + + +## 接收推送 + +服务器设置推送规则之后就会向对应地址发送数据了,因为推送地址现阶段必须包含 `/_matrix/push/v1/notify ` 路径,所以不得不再设置一个接收服务然后进行处理了。 + +接下来使用 `python` 的 `flask` 框架简单搭一个服务,首先先安装环境。 + +```python +pip3 install flask +pip3 install flask-apscheduler +``` + +然后是代码: + +```python +import json +import requests +import datetime + +from flask import Flask, jsonify, request +from flask_apscheduler import APScheduler +app = Flask(__name__) +scheduler = APScheduler() + +scheduler.start() + +def push_notification(push_data): + if push_data["push_way"] == 'Gotify': + resp = requests.post(f'https://push.xxx.xxx/message?token={push_data["push_token"]}', json={ + "message": f'「{push_data["sender"]}」发送了消息给你。', + "priority": 8, + "title": "新消息!" + }) + print(resp) + return + if push_data["push_way"] == 'Bary': + try: + response = requests.post( + url="https://api.day.app/push", + headers={ + "Content-Type": "application/json; charset=utf-8", + }, + data=json.dumps({ + "body": f'「{push_data["sender"]}」发送了消息给你。', + "device_key": push_data["push_token"], + "title": "新消息!", + "category": "category", + "sound": "minuet.caf", + }) + ) + print('Response HTTP Status Code: {status_code}'.format( + status_code=response.status_code)) + print('Response HTTP Response Body: {content}'.format( + content=response.content)) + except requests.exceptions.RequestException: + print('HTTP Request failed') + return + + +# Our route that will receive the webhooks from Duffel's servers +@app.route('/_matrix/push/v1/notify', methods=['POST']) +def hello_world(): + push_data = {} + event = None + + try: + event = request.json + print(event) + + except: + return jsonify(success=False) + + # Handle the event + if event["notification"]["type"] == 'm.room.message' or event["notification"]["type"] == 'm.room.encrypted': + app_id = event["notification"]["devices"][0]["app_id"] + push_data["push_way"], push_data["push_token"] = event["notification"]["devices"][0]["pushkey"].split('-') + push_data["sender"] = event["notification"]["sender_display_name"] + + scheduler.add_job( + func=push_notification, + args=(push_data,), + # trigger="date", + next_run_time=datetime.datetime.now() + datetime.timedelta(seconds=25), + id=app_id, + replace_existing=True, + ) + + print('✅add push job!') + + if event["notification"]["type"] == None and event["notification"]["id"] == '': + app_id = event["notification"]["devices"][0]["app_id"] + try: + scheduler.remove_job(id=app_id) + except: + pass + print('✅remove push!') + + return jsonify(success=True) +``` + +然后用命令 `FLASK_ENV=development FLASK_RUN_PORT=4567 FLASK_APP=webhook.py flask run` 就可启用。再然后再用 `Nginx` 反代一下 `4567` 端口就行了,因为 `Synapse` 默认禁止本机访问,为了规范一点就另外开个站点接收请求吧…… + +基本逻辑就是接收 `JSON` 拿到发送者名称和推送令牌,判断是哪项服务,然后等待三十秒推送到对应的应用令牌上去,期间要是判断用户已经阅读了消息,就移除推送作业。 + +到此无意外的话,应该就能正常推送了,麻烦……希望以后能够有更友好便捷的方式吧。 + + + +# 参考 + +1. [在树莓派上部署消息推送软件Gotify](https://blog.mjyai.com/2021/02/24/raspberry-pi-gotify/) diff --git a/source/_posts/2021/11/二一年十一月梦记.md b/source/_posts/2021/11/二一年十一月梦记.md new file mode 100644 index 0000000..4dc0fc3 --- /dev/null +++ b/source/_posts/2021/11/二一年十一月梦记.md @@ -0,0 +1,38 @@ +--- +author: SouthFox +title: 二一年十一月份梦记 +date: 2021-11-1 23:33:33 +tags: + - 梦记 +category: 梦记 +toc: true +--- +好久没记了,该记了! + + + +## 11.8 + +中 普 +### 小饼干 +似乎是 Steam 的活动,请发布已久的游戏制作发布 2.0 版。 +然后我在逛油管的时候,发现一个六七块的游戏也发布了 2.0 版,活动页面展示了一块饼干,说是票选奖励。点了,然后就饼干就突兀得到了我手里,放到嘴里,还是奶香味的。 +最后的念头是,不应该直接吃得,要不然网页被人劫持了不安全怎么办…… + +## 11.16 + +晚 普 +弹射世界?出门旅行?…… + +## 11.19 + +晚 普 +### 校区 +梦到了在其他校区上课(现实中没有)……然后每天走路超级累。 + +## 11.20 + +晚 普 +### 迷失快递 +收到了快递,叫我去快递站4区去拿,我在快递站转悠了半天,并没有找到4区在哪……甚至找到开快递站人房间里去了,似乎是他们女儿的桌子,上面还摆着作业。 +迫不得已我就找工作人员去了,她拿着手机,一边问一边点着手机,指了个方向(?),之后我就找着快递了? \ No newline at end of file diff --git a/source/_posts/2021/12/2021-总结.md b/source/_posts/2021/12/2021-总结.md new file mode 100644 index 0000000..69232fa --- /dev/null +++ b/source/_posts/2021/12/2021-总结.md @@ -0,0 +1,81 @@ +--- +author: SouthFox +title: 2021 总结 +date: 2021-12-31 22:42:35 +tags: +- 年终总结 +- 随笔 +category: 随笔 +--- + +是时候写个总结了。 + + + +似乎自己也不是一个喜欢总结的人呢,年终,对我来说也没什么大不了的吗。 + +直到网上冲浪,发现那些写总结的人, 2013、2014……一直写到 2020 ,这才发现写总结是一个好习惯,毕竟不写的话,似乎就记不起这一年发生了什么有意义的事,就像 ADHD 一样,像是人生蒙上了一层面纱。 + +至少我意识到了这层面纱,虽然还未产生大改变,但至少能够去努力改变了。 + + + +# 开学前 + +## 考试 + +这一年前四个月都是在不努力地备考,把现在的我拉到那时候,会让结果变得更好吗?非常怀疑,在备考时,印象深刻的是每天早上起来,或骑单车或走路两三公里到家附近的市场吃早餐。不得不说运动确实能让心情变好。考试临近前,压力日渐增加,现在想想,似乎不是很必要,因为很大程度都来自没有学习,很多知识连过都没过一遍,摆烂也不摆彻底,这样当然会对考试焦虑了。 + +不过考试确实很简单……百分之八十都是基础题,但我还只是比那些工作没时间备考的人好上一些罢了,混到了个不上不下的位置,进了一所不上不下的学校。或许等来年一月放假了,我在来写一写这不上不下学校的总结吧。 + + + +## 驾校时光 + +考完试后就是四月末了,老妈很想很想把我踢到工厂打工,可是我虚晃一枪说还是在家附近找吧。但是最后被我老爸强制报了个驾校……那段时间,很怕晚上七八点教练打电话过来,意味着要早起。当然,每隔两三天才学半天确实轻松得很,但是我就是受不了这种游离不定的任务。 + +当然也有好处,就是(被迫地)见识了不少人 + + + +- 在五金店工作的中年老妇女,科一那会还跟我抱怨说考试时一车小年轻就她年龄大,还遭他们嘲讽,结果反而是她最快过的,其他人或多或少都得重考。 +- 家里有矿的啃老少年,不过听他说他父母也是啃上辈老,毕业了就是在家里打机,偶尔出来学下车。两个人轮流练车的时候,聊了许多天,喜欢玩些主流 3A ,是个 P 社玩家,对当今政党很是嘲讽,之后还说听到拆迁的消息后,他父母连夜在那篇地区建了很多平房……非常有躺平的底气呢。 +- 高考结束后就学车的准大学生,是一中出来的,想跟他攀谈几句,但是我经常感到一种若有若无地忽视感。优生的底气、自信?说不上来……但是喜欢德语,还喜欢听广播,我听到后,问了电台名字后打开 [Radio garden](radio.garden) 放给他听了。 +- 父母是牙医有钱出国留学德国的少年(不知道和上位处在一起没有,或许他们两位能就德语水平过几招),考试前在车上问东问西,考场、地点、准备……像是在马达突突一样。这是什么?留学症候群吗?外国没有国内含蓄,不问就没办法生存? +- 少女一号,似乎是第一次挂了,开学临近只好去上学,趁着假期再来考一遍…… +- 少女二号,似乎是第一次挂了,开学临近只好去上学,趁着假期再来考一遍……(好像不是) + + + +摸鱼练习完之后就是,上了! + +- 科一考试熬了一晚,过了。 +- 科二压力也是压力大的不行,很怕挂了要等到来年,麻烦……为此还破功下载了抖音,看一些驾校的考场实录,迫真赛博备考。最后是惊险过了,途中曲线行驶后迟迟没听到后续提示音,还以为是直接挂了,之后开回起点探出头询问,直接被批头不要过窗!重置了当次考试,所幸不用重头再考。 +- 科三看考场就惊了,泥头车和电动车齐飞,这是提前模拟以后的恶劣环境吗?路线还有三条,有点记不清,只好再次赛博备考了。所幸考试时前面也有相同路线的考试车,能够抄答案……慢慢吞吞的考试途中还因为脚踩酸了让车后溜了一次,非常惊险,好在也是过了。不过同行的女生一号就每过,甚至连路都没上,似乎是安全带和考前检查的问题……考完之后马上把抖音卸里,很怕陷阱这种强算法产品的陷阱里。 +- 然后当天就备考科四了,我没想到会这么快,还以为能下星期呢。可是教练说再约就暑假了,那么只好为了不麻烦而先麻烦自己熬夜上了。不过我觉得我也不会平常打开去练,就算有一星期时间,当天肯定又是熬夜战士。然后去考场看个车祸视频训导几下就考了,过了。等接送时,海龟和我、女生二号聊天(默哀几秒女生一号)。海龟说他又签了日本的研究生,要去那读了。我想着,语言天才吗?两个小语种,学术精力都要分给语言学习上了吧,还是说只是镀金而已?临行前海龟还让我们击了个掌庆祝考过了。非常默契都没提出加联系方式的请求,或许大家都知道不会产生更多联系了,就此别过吧! + + + +# 开学后 + +之后就是摸鱼摸到九月份开学了,这部分……似乎是单独拆来写了。 + + + +# 年末 + +记得起的就是购买的东西了,腾讯云服务器,网易云一年的会员, Typora …… + +然后就是冲浪看了很多牛人的博客,冒出很多自愧不如的情感,那么多努力,我就有那么多惆怅……直到十二月八号下午开始发低烧,还以为是感冒,就没太在意,但是晚上就是不停肚子里咕噜响,如同吃下的是玻璃一样,每隔几小时就得去厕所…… + +到了十二月九号生日这天,都是处于非常沮丧的状态……对于生日的纪念,就是向[十年之约](https://www.foreverblog.cn/)项目发起了一个申请(没想到三十一号九点才堪堪通过)。在此,还是感谢我自己,给自己送了这样一份礼物。**身体最重要**,哪怕怎么样,也不能得病状态下了才知道无病无痛的状态是多么美好…… + +虽然是这么说,但是期末月末还是破功了,连续三个课程设计,还是把我逼到了平均凌晨三点才睡的地步,不过至少不用上课,觉还能找补几下……所以,**事情还是每天做一点好**,死线战士可不是什么美好的事儿…… + + + +# 总结之总结 + +似乎没有做什么,我有好好磨练自己技术吗?有多读几本书吗?我有好好对待自己身体吗? + +似乎都要打上一个问号,甚至是一个惊叹号,不过,希望来年能够多往面纱上多吹几口气吧,就算吹不掉,也能让面纱舞动起来……赏心悦目几分。 diff --git a/source/_posts/2021/12/二一年十二月份梦记.md b/source/_posts/2021/12/二一年十二月份梦记.md new file mode 100644 index 0000000..0555811 --- /dev/null +++ b/source/_posts/2021/12/二一年十二月份梦记.md @@ -0,0 +1,20 @@ +--- +author: SouthFox +title: 二一年十二月份梦记 +date: 2021-12-1 23:33:33 +tags: + - 梦记 +category: 梦记 +toc: true +--- +## 12.4 + +中 普 +### 内蒙大学 +到了内蒙古的一座大学里,似乎也有不少的初高中同学也一起去了……在宿舍楼晃悠,来到一层奇怪的楼层,给我的感觉像是在木桩里面。 + +## 12.6 + +晚 普 +### 谜途镇 +似乎在实况主新的实况里,玩着一个奇怪的解密游戏,最后又是老套的逃出来了其实一直没逃出来的老套结局…… \ No newline at end of file diff --git a/source/_posts/2022/01/为博客支持评论系统.md b/source/_posts/2022/01/为博客支持评论系统.md new file mode 100644 index 0000000..45192ae --- /dev/null +++ b/source/_posts/2022/01/为博客支持评论系统.md @@ -0,0 +1,148 @@ +--- +author: SouthFox +title: 为博客支持评论系统 +date: 2022-01-31 11:31:57 +tags: +- 技术 +- 建站 +category: 技术 +toc: true +--- + +突然发现加入十年之约的博客评论区都好热闹……似乎都是随机访问过来的,所以还是有必要为博客加上评论系统的? + + + +考察了一番选择了依靠 `GitHub Discussions` 的 `Giscus` 做为博客的评论系统。 + +## 特点 + +👍 优点: + +- 比起 `Gitalk` ,拥有更小的权限请求 +- 部署也方便,十分钟内都能轻松搞定 +- 数据安全也有 `GitHub` 做背书,至少比自建强 +- 拉取 `Discussions` 数据的脚本是放在 `vercel` 上,国内看评论至少是没问题的 + +🙃 缺点: + +- 评论得需要个 `GitHub` 帐号,对于没有相关经验的人真可谓叹息之墙了,但是也不全是坏事,倒垃圾评论也能隔绝掉大部分。 + + + +## 部署 + +0. 为仓库开启 `Discussions` ,仓库 Setting --> Features --> 勾选 Discussions 。 +1. 先去 [GitHub 应用页](https://github.com/apps/giscus) 安装 `Giscus` ,可以仅给指定的仓库授权。 +2. 在到 [Giscus 官网](https://giscus.app/zh-CN) 进行配置,输入仓库名,决定映射方式等、评论样式等。 +3. 最后生成一个脚本代码,嵌入到博客文章模板底部,搞定! + + + +## 坑 + +如果映射方式选择 `pathname`,而 uri 里包含中文,将会被解码,搞得非常乱。所以可以自己麻烦一点,手动指定。 + +如 `Hexo` ,在 `head` 模板中插入到 `` 标签里: + +```ejs +<% if (page.title){ %><% } %> +``` + +之后 `Giscus` 选择为 `og:title` ,这样就确保标题不会被转码了。 + + + +## 自动初始化 + +总体来说还是不错的,再折腾一下可以选择自建,这样可以避开对脚本所在域名的封锁,或者部署时自动创建对应帖子,不过挺麻烦,以后在摸吧 🐟 。del> + +**3-13 更新:** + +其实很早就摸了,只是我憋着不放而已( + +```python +import sys +import os +import requests +import json +import getopt +import re +import random +from datetime import datetime + + + +def addDiscussion(): + currentYear = str(datetime.now().year) + repo_id="aaabbb" + category_id="cccddd" + DISCUSSIONS_TOKEN=os.environ.get('DISCUSSIONS_TOKEN') #根据自己实际情况选择 + + header = { + "Authorization": f"Bearer {DISCUSSIONS_TOKEN}" + } + data = { + 'query': """query{repository(owner:"name",name:"repo_name"){ + id discussions(first:100, categoryId: "aaabbb"){ + nodes{ + title + } + } + } + }""" + } + url = 'https://api.github.com/graphql' + + r = requests.post(url, headers=header, data=json.dumps(data)) + if r.status_code == 200: + discussions = r.json() + + discussions = discussions["data"]["repository"]["discussions"]["nodes"] + + discu_list = [] + for i in discussions: + discu_list.append(i["title"]) + + for post in postlist: + if currentYear not in post: + continue + + if post not in discu_list: + data = { + 'query': """mutation{ + createDiscussion(input: {repositoryId: "%s", categoryId: "%s", body: "%s", title: "%s"}) { + discussion { + id + } + } + }""" % (repo_id, category_id, 'blog url' + post, post) + } + + r = requests.post(url, headers=header, data=json.dumps(data)) + if r.status_code == 200: + print(f"初始化对应讨论! {post}") + print(r.text) + +if __name__ == '__main__': + filelist = [] + postlist = [] + addDiscussion() +``` + +学了一下新玩意…… `graphql` 似乎比基于 `http` 形式的更强大一点? + +其中是根据对应的 `access token` 进行部署,所以要为对应部署的 `access token` 指定 `discussions` 权限…… + +注意其中的 `currentYear` 那里,因为只获取了最新的 `100` 条数据,要是文章数据超过 `100` 条的话或许会重复创建?所以就仅仅只判断当年的文章了,第一次部署时请去掉此判断。除非你想当超时空战士为以往年份写文章或者是一年能写 `100` 篇文章的人,那么此逻辑应该没问题……吧。 + +是为了 `GitHub Actions` 准备的,不知道是什么的话可以看[这](../../03/Github-Actions-浅尝辄止)。 + + + +## 最后 + +最后,欢迎你能访问到我这荒岛,请友善评论哦~ + + + diff --git a/source/_posts/2022/02/22年2月梦记.md b/source/_posts/2022/02/22年2月梦记.md new file mode 100644 index 0000000..8372c24 --- /dev/null +++ b/source/_posts/2022/02/22年2月梦记.md @@ -0,0 +1,57 @@ +--- +author: SouthFox +title: 22年2月梦记 +date: 2022-02-13 01:58:16 +tags: + - 梦记 +category: 梦记 +toc: true +--- + +该记了! + +以后还是多写点解析吧……要不然过个两三年再回来看,肯定就不知道是什么意思了。 + + + +## 2.12 + +晚 普 + +### 列车 + +我在一座列车上,车厢不是车厢,而是一个又一个场景…… + +前几个场景不记得了,中间有个场景好像是我在一个楼梯上。因为背包里的书非常重,我就把他放在楼梯上,而我在一旁喘气……背包里的书似乎都没有封面的样子。楼梯上方似乎是一个幼儿教室的样子…… + +> 喂,你带回来的资料书该看了,要不然带回来到底要干嘛? + +下一个场景是我在一家卖场里,带有科技感的四边形柱子悬在上方,我来到一个玻璃展柜前,似乎想要买,但是拿起来之后,还是放下,最后打算不买了。 + +最后一个场景似乎我下站了,我打开地图,发现我竟然在目的地反方向!我急忙问车站人员,得到答案我已经过了好多站了……我拿出手机,不是惯用手机,似乎是苹果的?我打开手机开始打字,输入法非常别扭,我连连打错,窘迫的不行。最后觉得这样子还不如……醒来…… + +然后我就醒了。 + + + +## 2.16 + +中 普 + +### 开包 + +我似乎有类似 jojo 布姐那样的能力,在任何事物上开拉链。 + +我在街上对着行道树干上使用了能力,然后……这拉链是明日方舟抽卡!我就对着一棵树抽起卡来,抽了似乎很多次。树伤痕累累……汁液滴的到处都是,之后就有管理人员过来,想要制裁我,他查看了树干,记下了三条拉链痕迹(其实还有很多!),我心里想着……至于吗……就这点小事就要把我关那么久? + +> 氪金抽卡手游,恶心啊! + + + +## 2.17 + +中 普 + +### 意外的联络 + +一个很久没联系的初中同学找上了我的 QQ ,然后给我发消息,说我的长毛象 ID 是这个,快来加我…… diff --git a/source/_posts/2022/03/Github-Actions-浅尝辄止.md b/source/_posts/2022/03/Github-Actions-浅尝辄止.md new file mode 100644 index 0000000..d40b3f2 --- /dev/null +++ b/source/_posts/2022/03/Github-Actions-浅尝辄止.md @@ -0,0 +1,243 @@ +--- +author: SouthFox +title: Github Actions 浅尝辄止 +date: 2022-03-07 16:32:14 +tags: +- 技术 +category: 技术 +toc: true +--- + +免费送!免费送!微软电脑免费送啦! + + + +自从 `GitHub` 被微软收购以后确实是有钱了啊,`GitHub Actions` 公开仓库竟然可以免费用(私有仓库也有三千分钟时间)。 + +什么?不知道 `GitHub Actions` 是什么? + +简单来说就是提前写好对应的配置文件,那么 `GitHub` 就会在满足条件时分配电脑执行对应的配置文件,配置文件可以包含命令或者引用其他人写好的配置文件……所以这如同有一台真实的服务器一般强大。 + +本来呢,这种服务是为了方便一众开源应用测试和编译的,但是被一众羊毛党薅出花来了……什么自动签到啦、生成订阅源啦、推送消息啦等等等等,这些「奇技淫巧」可以在各家推荐专栏找到,有兴趣可以自己去找一下。 + +还是说说我拿 `GitHub Actions` 来干什么吧。 + +## Hexo 自动部署 + +如果经管着一个静态博客那么这功能是刚需了吧,毕竟如果想在移动设备或者不方便安装环境的公用电脑上写作的话,那么让 `Actions` 进行生成静态页面和部署是一个优秀的选择。 + + + +### 生成 Personal access tokens + +因为分配的机器是一个干净的环境,并没有操作对应 `GitHub` 仓库的能力,为了做到登陆,首先需要生成一个 `access tokens` 。(当然也可以用私钥认证,但是感觉麻烦就没用这方式……) + +首先到 [GitHub 配置页](https://github.com/settings/tokens) 点击 `Generate new token` 按钮,输入密码认证后跳转到对应页面。 + +`Note` 填写一个便于理解的名称,我这边是用来自动部署 `Hexo` 博客就写 `HEXO_DEPLOY ` 。 + +然后选择过期日期(`Expiration`),如果不嫌麻烦并确信自己不会忘记更换,那么可以设置一年两年的过期时限,否则懒人就选永不过期吧( `No expiration`)吧…… + +然后在权限范围(`Select scopes`)栏里勾选 `repo` 框(如果能明确对应权限是干嘛的也可以只勾选需要的权限)。 + +然后点击生成按钮(`Generate token`)生成一个新的 `access tokens` ,这个页面只显示一次,所以不要关闭窗口! + + + +### 设置 Actions secrets + +除非你是私有仓库,那么运行 `actions` 的配置文件和所有输出对所有人都是可见的,为了安全,要自己设定一个`Actions secrets` 隐藏相关的 `token` 。 + +新开一个页面,到存储 `Hexo` 博客文件的仓库, `Settins -> Secrets -> Actions -> 点击 New repository secret 按钮` ,然后新页面 `Name` 填写便于理解的名称 ,我这边是用来自动部署 `Hexo` 博客就写 `HEXO_DEPLOY ` 。值(`Value`)里填写上一步 `Generate token` 生成的 `token` ,然后点击 ` Add secret` 保存 `secrets` 。 + + + +### 编写配置文件 + +做好前期工作后就到激动人心的写配置时间喽。 + +首先在 `Git` 仓库根目录下新建一个 `.github` 文件夹,然后再在里面新建一个 `workflows` 文件夹,再在里面新建一个 `xxx.yml` 文件,我的形式是 `仓库/.github/workflows/deploy.yml` 。 + +之后就该往 `.yml` 文件写配置了,`yml` 格式是一个严格缩进格式,所以对自己好点,用 `VS Code` 之类的编辑器来写…… + +```yaml +name: Hexo Deploy + +on: + push: + branches: [ hexo ] + +jobs: + build: + + runs-on: ubuntu-latest + strategy: + fail-fast: false + +``` + + + +`name` 那一栏填便于理解的名字。 + +`on` 选项是为监听哪个分支发生变动就执行动作,我这边设置为 `push` 的 `hexo` 分支,意为当 `hexo` 分支下发生了 `push` 动作后就执行此 `action` ,分支名请填自己仓库实际的,是 `main`还是 `hexo` 请根据实际选择。 + +`jobs` 下的名称大概是实际执行 `action` 时的名字,可写个便于理解的名字。 + +`runs-on` 是声明需要什么类型的机器, `ubuntu-latest` 就是申请最新的 `ubuntu` 系统的机子。 + +`fail-fast` 的实际用途我也不懂,反正他就在那儿了.jpg 。 + + ```yaml + + steps: + - uses: actions/checkout@v2 #拉取仓库文件 + + - name: Set up Node.js + uses: actions/setup-node@v1 + with: + node-version: 17 + + - name: Install dependencies + run: | + npm install -g hexo-cli + npm install + git config --global user.name "wherever" + git config --global user.email "wherever@xxx.xx" + - name: Deploy + env: + DEPLOY_KEY: ${{ secrets.HEXO_DEPLOY }} + run: | + hexo clean + hexo generate + cd ./public + git init + git add --all . + git commit -m "GitHub action Auto Builder" + git push --quiet --force https://$DEPLOY_KEY@github.com/name/name.github.io.git master + + ``` + +之后就是 `steps` 栏目了,`name` 写个便于理解的名字。 + +`GitHub actions` 最为被称道的一点就是能用其他人预先写好的脚本,所以在 `Set up Node.js` 栏里的 `actions/setup-node@v1` 这里就是引用了安装 `nodejs` 环境的脚本,`with` 后面填入脚本里预先定义好的变量(填 17 意为安装版本号为 17 的 `node` ),不用自己考虑如何实现。 + +`Install dependencies` 这栏就是安装依赖了,`npm` 安装 `Hexo` 的包,然后 `git config` 是设置自己的名称和电子邮箱。 + +`Deploy` 的 `env` 一栏就是上面设置 `Actions secrets` 操作起到用处的地方了, + +`DEPLOY_KEY: ${{ secrets.HEXO_DEPLOY }}` + +的意思就是把 `Actions secrets` 里的叫 `HEXO_DEPLOY` 的值声明成叫 `DEPLOY_KEY` 的环境变量,按自己实际情况写…… + +下面的命令就是重复流水帐了…… `git push --quiet --force https://$DEPLOY_KEY@github.com/name/name.github.io.git master` 这里就根据实际情况写了,我是博客源文件和生成的静态文件都放一个仓库里就将生成好的静态文件用 `--force` 参数强制部署到 `master` 分支,**要提前切换好分支!**在自己仓库的 `Settings -> Branches` 的 `Default branch` 里将自己放置博客源代码的分支改名并设为默认(我是将放博客源代码的命名为 `hexo`),请提前确认好,要不然 `--force` 参数将会连同历史记录**覆盖**掉 `master` 分支的内容! + +如果是分出一个仓库放置生成后的静态页面就根据自己实际情况写。 + + + +### 测试 + +之后就是进行 `push` 操作看看 `action` 有没有正常工作了,要是失败就会出现红色的叉叉,这时请根据提示检查哪里出了问题(文件缩进、名称没写对等……)。 + +成功了的话,就去检查对应分支有没有出现对应的静态文件了。 + + + +## 部署自定义字体 + +当然……因为是一台对应的机器,所以可以装点 `Python` 环境运行一点脚本啊……我之前[中文字体动态剪裁](../../../2021/03/中文网页字体动态裁剪/)就是用 `GitHub actions` 执行的。 + +### 具体而言…… + +```yaml + steps: #安装 Python 环境 + - uses: actions/checkout@v2 + - name: Set up Python 3.9 + uses: actions/setup-python@v2 + with: + python-version: 3.9 + + - name: Install dependencies + run: | + python -m pip install --upgrade pip + python -m pip install fonttools brotli requests + + - name: Deploy + run: | + python3 utils.py -d #运行提前写好的脚本生成字符集 + pyftsubset Zpix.ttf --text-file=strdb.txt #裁剪 + fonttools ttLib.woff2 compress -o Zpix.woff2 Zpix.subset.ttf + mv Zpix.woff2 ./public/css/fonts + mv Zpix.subset.ttf ./public/css/fonts/Zpix.ttf #将裁剪好的文件放到生成文件夹内 +``` + + + +## 初始化 Giscus 对应评论 + +### 脚本文件 + +[参考这](../../01/为博客支持评论系统/)。 + +### 配置文件 + +[参考这](https://github.com/SouthFox-D/SouthFox-D.github.io/blob/hexo/.github/workflows/deploy.yml)…… + + + +## 图片备份 + +虽然博客用了 [`IPFS`](/2022/03/IPFS和博客/) 来当博客图床,但是也有失效的风险,所以做好备份是肯定的啦~ + +### 脚本文件: + +跟[本地版](../IPFS和博客/)的区别不大,就是将图片放到一个文件夹方便后续操作…… + +[如果真想看……](https://github.com/SouthFox-D/SouthFox-D.github.io/blob/hexo/utils.py) + +### 配置文件 + +```yaml + steps: + - uses: actions/checkout@v2 # 安装 Python 环境 + - name: Set up Python 3.9 + uses: actions/setup-python@v2 + with: + python-version: 3.9 + + - name: Install dependencies + run: | + sudo apt-get install wget + python -m pip install --upgrade pip + python -m pip install fonttools brotli requests + git config --global user.name "SouthFox-D" #自己的…… + git config --global user.email "southfoxdreamer@gmail.com" + - name: Check Img + run: | + wget https://raw.githubusercontent.com/SouthFox-D/blog_img/main/imgList.json #改成自己的仓库并已存在此文件 + python3 utils.py -b + - name: Backup + env: + DEPLOY_KEY: ${{ secrets.HEXO_DEPLOY }} #自己的…… + run: | + rm -rf .git #删除 Hexo 的 .git 文件夹防止后续冲突 + git clone https://github.com/SouthFox-D/blog_img.git blog_img #备份仓库 + cp -frp newimg/* blog_img/ #合并文件夹 + cd blog_img + git add . + git diff --exit-code || git commit -am "Auto backup" #防止报错 + git push --force https://$DEPLOY_KEY@github.com/SouthFox-D/blog_img.git #根据实际情况而定 +``` + +具体可[参考这](https://github.com/SouthFox-D/SouthFox-D.github.io/blob/hexo/.github/workflows/backup-img.yml)…… + + + +## 总之 + +一次编写后,后续就不用怎么管了,自动化的好处体现出来了…… + +我在一台没有安装 `Hexo` 环境下的机器上写作,到时只要直接 `push` 就让 `GitHub` 来完成对应的部署操作了,不必自己安装环境又 `clear ` 啊 `g` 啊 `d` 啊的……在移动设备写作可以写好直接复制到 `GitHub` 网页版里,同时图片也不必当心失效。 + +反正……微软!有钱的!嫖起来没负罪感。 diff --git a/source/_posts/2022/03/IPFS和博客.md b/source/_posts/2022/03/IPFS和博客.md new file mode 100644 index 0000000..359041b --- /dev/null +++ b/source/_posts/2022/03/IPFS和博客.md @@ -0,0 +1,304 @@ +--- +author: SouthFox +title: IPFS和博客 +date: 2022-03-06 14:02:09 +tags: +- 技术 +- IPFS +category: 技术 +toc: true +--- + +似乎这是两码事? + + + +## IPFS + +`IPFS` 全称 (`InterPlanetary File System`),中文名可叫**星际文件系统**。 + +这略带一丝中二的名字确实透露了这项目的愿景,设想一下,要是人类真的在太阳系殖民成功了,各个殖民地要如何通信?就算是火星和地球光也要走三分钟,最低**六分钟**的延迟,谁受得了啊? + +但观测一下就可以发现,网络中的很多数据是可以复用的。比如,火星上的 `A` 访问了地球的今日新闻,火星上的 `B` 想访问地球的今日新闻网站,还要去跟地球通信吗?他只要跟 `A` 获取数据就可以了。 + +这就是 `IPFS` 的基本思想了,一个点对点的分布式文件系统。 + + + +### 能做啥 + +作为一个点对点的分布式文件系统,基本功能就是存储文件了,图片、视频、静态网页、**文件夹**皆可。 + +文件上传后,再经过算(mo)法后,文件会被标上一个类似于 `Qmd3oSMoEb3npqXdjwek7RPfvteMckrBFBRHU1ECZDtAEC` 这种形式的 `CID` ,这个 `CID` 可以唯一标识一个文件,其他人将这个 `CID` 告诉 `IPFS` 网络,就可以在全世界的 `IPFS` 网络中进行获取了。 + + + +### 网关 + +但遗憾的是 `IPFS` 不能兼容现在主流的 `HTTP` 网络,如果没有专门的客户端又想要使用 `IPFS` 网络,要借助一个网关才可以。 + +好比如世界上有一群人发明了一种新语言,这种语言甚至需要借助一个新器官才能沟通,很明显其他人是完全无法同使用新语言的人交流的。新语言使用者为了增大影响力,决定派出几名翻译,让双方能够沟通。 + + + +> 可通过[公共网关检查站](https://ipfs.github.io/public-gateway-checker/)获知常见公共网关。 +> +> 国内访问优秀的网关为: +> +> cf-ipfs.com cloudflare-ipfs.com (Cloudflare 我的超人!) +> +> ipfs.fleek.co + + + +在网关后面加上 `/ipfs/[cid]` 即可通过 `http` 的形式获取文件了。 + +试试看↓: + +`/ipfs/Qmd3oSMoEb3npqXdjwek7RPfvteMckrBFBRHU1ECZDtAEC ` + +- [cf-ipfs.com](https://cf-ipfs.com/ipfs/Qmd3oSMoEb3npqXdjwek7RPfvteMckrBFBRHU1ECZDtAEC) + +- [ipfs.fleek.co](https://ipfs.fleek.co/ipfs/Qmd3oSMoEb3npqXdjwek7RPfvteMckrBFBRHU1ECZDtAEC) + + + +### IPNS + +`cid` 形式有个问题就是他是根据文件内容进行计算的,文件内容哪怕改动一个字,生成的 `cid` 也会完全不同……如果要在 `IPFS` 网络部署一个网站的话,管理员每次更新网站,就得把新 `cid` 重新告知出去吗? + +显然太折腾了……但可以利用现有的 `DNS` ,将 `cid` 绑定到 `DNS` 上,这样管理方仅需更新 `DNS` 即可。这种方式被成为 `IPNS` ( InterPlanetary Name System) 。 + +通过这种方式,可以将一个静态网站托管到 `IPFS` 网络上面,生命力大大增强。 + +一般网关也支持 `IPNS` 形式访问,在网关后面加上 `/ipns/[域名]` 即可。 + +试试看↓: + +`/ipns/zh.wikipedia-on-ipfs.org` (一个静态的维基百科存档) + +- [cf-ipfs.com](https://cf-ipfs.com/ipns/zh.wikipedia-on-ipfs.org) +- [ipfs.fleek.co](https://ipfs.fleek.co/ipns/zh.wikipedia-on-ipfs.org) + +`/ipns/blog.southfox.me` (当然!) + +- [cf-ipfs.com](https://cf-ipfs.com/ipns/blog.southfox.me) +- [ipfs.fleek.co](https://ipfs.fleek.co/ipns/blog.southfox.me) + + + +## IPFS 图床 + +那么托管文件,最容易想到的就是图片了,本博客的图片也在几个月前迁移到了 `IPFS` 网络上。 + +如果真想将图片放到 `IPFS` 上,那么该考虑以下事情: + +**优点:** + +- 抗☐☐,即使一个网关炸掉了,也可以切换另一个网关。 + +- 轻松切换, 文件 `cid` 是不变的,`VS Code` 全文替换就可以很轻松切到另一个网关,不像一般图床,其连接是随机的,其迁移成本会变得非常大。 + + +**缺点:** + +- 慢……速度一般来说只能说凑合,除非将设置一个靠近用户的位置放置网关,同时文件刚好就在这网关上…… + + + +### web3.storage + +[地址](https://web3.storage/) + +可使用 `GitHub` 注册,这网站提供 `1T` 的存储空间。 + +### fleek.co + +[地址](https://fleek.co) + +同样可使用 `GitHub` 注册,可提供存储空间不明。 + +但是重点是!他提供**网站托管**! + +### Pinata + +[地址](pinata.cloud) + +`1G` 免费空间……但似乎是 `IPFS` 客户端能直接连接过去进行备份?总之不推荐(因为空间太小了)。 + + + +### 公共网关 + +以上的网站是要自己手动上传至他们的网页,并没有很好的支持 `HTTP API` ,所以喜欢用 `PicGo` 传图并直接获取 `MarkDown` 连接的懒人可能要寻找能够直接传图的公共网关了。 + +#### PicGo + +在插件市场搜索 `web-uploader-custom-url-prefix` 并进行安装,配置成如下: + +![](https://cf-ipfs.com/ipfs/Qma7FSQ3tzoT8LqLxMRKVVJ5cNSEu3HgKL1aXPzAYTzXmV) + +其中 `infura-ipfs.io` 可以是任意支持 `HTTP API ` 形式上传的网关。 + +自定义图片前缀可以是任意访问速度快的网关。 + +#### Python + +想用 `Python` 折腾?好主意,所以快去折腾吧! + +#### 快捷命令 + +没用过苹果设备,不清楚。 + +不过一般参照之前经验改改应该不难……? + + + +## Pin 与失效 + +前面的 `PicGo` 上传图片时带有个 `pin=true` 参数,这个参数就是告诉网关,这个文件很重要,请不要当成缓存清除。 + +因为 `IPFS` 的设置是,其他节点获取了一个文件后,会放在缓存里,如果服务器的缓存超过了阈值(默认 `10G`),就会清理掉…… + +如果上传文件的服务器下线了,那么还是有可能从缓存了这文件的服务器获取文件的。但万一时间太过久远,久到主服务器不存在,其他服务器缓存早已清理,那么这个文件就如同 `BiTorrent` 下载中的**死种**一样,再也不能获取了…… + +而另一面讲,如果文件很热门,比如明星艳照,那么这个文件将会持久存在,删除不能……所以,**不要向 `IPFS` 上传个人隐私相关文件!**一旦传播开来,那就没有后悔药了…… + + + +## 备份 + +所以为了数据安全考虑,放置在 `IPFS` 上的图片也要做好备份…… + +似乎可以写个脚本,自动分析文件下的 `cid` ,然后自动爬取备份到本地。 + +以后再摸吧。 + +**3-13 更新:** + +其实当天就摸了……只是我憋着不放呢。( + +```python +import sys +import os +import requests +import json +import re +import random + + + +def backupImg(): + path = os.getcwd() + for root, dirs, files in os.walk(path + '/source'): #根据实际情况定 + for name in files : + filelist.append(os.path.join(root, name)) + + nowImgList = [] + for filename in filelist: + if filename.endswith('.md'): + if "_posts/" in filename: + post = filename.split("_posts/")[-1] + + with open(filename, "r", encoding='utf-8') as f: + mdText = f.read() + result = re.findall('!\[(.*?)\]\((.*?)\)', mdText) + + for i in range(len(result)): + img_quote = result[i][0] + img_url = result[i][1] + nowImgList.append(img_url) + + downLoadList = list(set(nowImgList).difference((set(imgJson["img"])))) + if downLoadList != '': + nowImgJson = {} + nowImgJson["img"] = nowImgList + with open('./imgList.json', 'w', encoding='utf-8') as f: + json.dump(nowImgJson, f) + + downloadImg(downLoadList) + +def downloadImg(imgList): + for img_url in imgList: + if img_url == '': #判空 + continue + # img name spell + urlname = img_url.split(u"/") + img_name = str(urlname[-1]) + # download img + ipfs_gateWay = ['https://cf-ipfs.com/ipfs/', 'https://ipfs.io/ipfs/', 'https://ipfs.fleek.co/ipfs/'] + if 'ipfs' in img_url: + img_url = random.choice(ipfs_gateWay) + img_name + + response = requests.get(img_url) #根据自己图床链接进行选择 + print('Download ' + img_url + '✔️') + # write to file + f_img = open('./' + img_name, 'wb') + f_img.write(response.content) + f_img.close() + +if __name__ == '__main__': + filelist = [] + + if os.path.exists('./imgList.json'): + imgJson = [] + with open('./imgList.json', 'r', encoding='utf-8') as f: + imgJson = json.load(f) + else: + imgJson = {} + imgJson["img"] = [] + backupImg() +``` + +简单来说,就是用扫描 `source` 目录下的的 `.md` 文件,并用正则扫描 `![]()` 这种形式的图片语法并存起来。 + +然后进行图片抓取,其中 `if 'ipfs' in img_url:` 这里是判断链接是否是 `ipfs` 的图床链接,要是你的图片链接只来源一个图床(例如 `sm.ms` 可以写 `if 'loli.net' in img_url:`),请自行替换,要是图床来源杂乱就……不进行判断抓取下来自己手动选择吧。 + +然后结束后会生成一个 `imgList.json` 文件,里面是已经抓取的图片,以后要是再进行抓取的话就通过这文件和新扫描的文件列表做集合的求差处理(`downLoadList = list(set(nowImgList).difference((set(imgJson["img"]))))`),以来判断要新抓取那些文件…… + +总之写的非常初学者……应该都是比较好理解的吧( + +很多都是为了 `GitHub Actions` 准备的,不知道是什么的话可以看[这](../Github-Actions-浅尝辄止)。 + + + +## IPFS 博客 + +如果你有一个静态博客,为何不考虑放置在 `IPFS` 网络上呢? + +首先要更改的就是博客的连接……要前往博客模板把其里面的所有连接都改成**相对连接**的形式,否则托管时会根本加载不了 `css` 或者 `js` 文件。 + +接着前往 [fleek](https://fleek.co) 并注册,然后在托管一栏中选择你放置静态网页的仓库(或分支),就能简单的部署到 `IPFS` 网络上了,要是想启用 `IPNS` ,也可以在 `SETTINGS -> Domain Management -> Add Custom Domain` 增加一个博客域名,然后在新增域名的更多选项里选择 `Dns Link` ,会自动弹出个窗口绑定域名。把这个 `CNAME` 选项绑定到你的域名管理商即可。(`Cloudflare` 我默认关了代理,要是绑定迟迟不能生效的话可以试着关掉 `Cloudflare` 代理试试) + + + +## 实际使用 + +### 客户端 + +[客户端下载地址](https://github.com/ipfs/ipfs-desktop) + +不一定需要个网关,实际自己直接用用也是不错的,就是使用时会不停的交换数据,对电量和流量的消耗也很大……如果所在网络对 `P2P` 协议限制比较严格那可就要小心了…… + +### 服务端 + +[服务端下载地址](https://github.com/ipfs/go-ipfs) + +如果你手头上有闲置的服务器,为什么不尝试部署一个 `IPFS` 服务呢? + +将文件放一份备份在自己的服务器上,或是搭建一个自用网关,也能有效提升使用体验(当然要服务器性能足够)。 + + + +## 文件币 + +哦……所以还是谈论到这个话题了…… + +`filecoin` ,是一个建立在 `IPFS` 上的加密货币项目(大概)? + +只要你抵押出相当容量的硬盘,就能进行挖矿了……这似乎也是去年硬盘涨价风潮原因之一?(那更该用了,这是拿大众的钱买硬盘啊) + +但现在这币似乎状态不好的样子,价格跌倒了顶值的十分之一。虽然我对加密货币不感冒,但我还是想 `fil` 涨起来的,毕竟币涨了也是能吸引更多人提供存储空间的,经营托管服务的服务商也能通过 `fil` 进行回本。 + +但是不考虑加密货币也罢, `IPFS` 做为一个开源项目,如果其足够好,也能自己证明自己,`IPFS` 能取代 `HTTP` 成为下一代网络标准吗?天知道。 + diff --git a/source/_posts/2022/03/二二年三月梦记.md b/source/_posts/2022/03/二二年三月梦记.md new file mode 100644 index 0000000..9193d90 --- /dev/null +++ b/source/_posts/2022/03/二二年三月梦记.md @@ -0,0 +1,163 @@ +--- +author: SouthFox +title: 二二年三月梦记 +date: 2022-03-08 15:03:28 +tags: +- 梦记 +category: 梦记 +toc: true +--- + +一声叹息。 + + + +## 3.8 + +中 普 + +### 起 + +又是常见的校园怪谈啦,一些学生会莫名其妙消失不见啦。 + +我就是在这种情况下打算返校的。 + +### 公园 + +逛公园,似乎这只是一个稀松平常的景点。我路过一个冰淇淋摊贩,他问我你要不要来点?我接过,然后就看着冰淇淋……仍由它融化。** + +### 返校 + +雨,好大的雨! + +我顶着雨伞也难免被吹得几乎飞起来!艰难的到了教学楼下,一层……二层……三层……楼梯是外露的,所以不免也要承受风雨,四层以上的楼梯甚至还没有护栏!我已经被吹得摇摇晃晃的了,想着之前也有些喜欢玩闹的学生坠楼的传言,我抛弃雨伞,直接抱紧扶手,像毛毛虫一样爬了上去…… + +#### 校园间 + +**「记忆混乱——」** + +一些大学老师和高中混在了一起,以及一些稀奇古怪的上课内容……哪怕才过去二十分钟,就已经模糊不堪……似乎潜意识是真不想我回忆这块内容吧…… + +#### 但有一幕 + +我在楼道直接跑动,为了追逐一个朋友,我追到电梯房,他已经抢先一步上去了…… + +> 这里的感觉不是他躲着不想见我,而是更像损友之间的小玩笑,但他现实中不是这样的人……我是把他跟谁整合到一起了? + +### 漫漫回家路 + +校园状况越发差劲……学校决定让我们回去。 + +我站到回家路上的一条街道……已经眼前发黑,腿脚难行…… + +压抑…… + +**「记忆丢失」** + +### 到家 + +我从后门回家,发现我爸又在搞装修,把门换了新的。我的房间门下方换成玻璃制的了,能够一眼看到我的床…… + +> 父母的控制欲?但是梦里的我并没有太过惊讶,所以这层含义算是最浅显也最不主要的部分了。 + +我前往阳台,发现也堆着很多门…… + +> 下方没玻璃。 + +我通过窗户望向我哥的房间,发现我爸正睡在那里。 + +> 我竟然没感到奇怪。 + +**「记忆丢失」** + +我似乎立于天空中,中间写着几行字。 + +橙色 + +蓝色 + +绿色 + +似乎都是些颜色名字,都是些什么? + +…… + +我打算进我爸房间了,告诉他我回来了。 + +推开门,我就发现不对了!那个怪谈,那个让人消失的怪谈!它就在房间里! + +它在四面八方涌上来! + +**“够了!”** + +“我已经不想待在这压抑的梦了!”,我说道。 + +“你究竟是什么东西!”,我将这股情绪狂潮指向房间中不可见的存在,势要揪出来它的原型。 + +………… + +深海……鲜艳的热带鱼群…… + +……奇怪的绿色类鱼生物……带有双肢的……冲向海面…… + +………… + +所以,橙色是,自负的意思? + +我喃喃自语…… + +> 梦里半清醒的我向梦直接发问也没能获得个完整清晰的解析。 +> +> 这次的梦,真的太奇怪了…… + +### 中场休息 + +我清醒了……拿起手机一看,才十四点半。 + +再继续睡吧……接下来的梦就回归正常了,还大多跟 MOBA 游戏有关,大概跟我在睡前刷的B站视频有关吧。 + +### 友善评论 + +我来到一个游戏展会上,一个看板是写着对于游戏的祝福,上面也充斥着“祝福”。 + +「蒸蒸日上!」「ez 策划!」…… + +都是些没吐脏字骂人的话语…… + +### 称号 + +一款猪场或者企鹅出品的手游,似乎出了个「头号玩家」的礼包,仅需小几万就能拥有个自定义称号。 + +于是很多土豪蹲点购买……但起得称号哭笑不得,政治、人物啥的敏感称号使劲往上取。 + +### 改版 + +似乎是猪场的扒鸡,似乎我又回坑玩了。 + +我常玩的英雄被改版了,被动成了个死后成为灵魂状态读秒然后还可以放技能读秒完还能原地复活的样子?这改版让这英雄从躲在后方猥琐放技能变成往前莽的类型了…… + +对面发育非常好,我方翻盘点全压在我身上,于是变成我死了都要输出对面,对方也守我尸蹲我复活点然后再把我打死的拉扯局面。 + +来来回回几次后,我感觉,够了!我已经没有耐心了,我要醒了,就算你们直接输了。 + +于是我醒了,看了眼时间,十四点五十分…… + +## 3.9 + +中 普 + +### 舍友 + +某个女主播住在我们宿舍…… + +…… + +我似乎到网上申请了一个去分布网络的 ID ? + +## 3.16 + +中 普 + +### 屏蔽我! + +一个社交网站的页面,似乎是我发的……上面写着,某个站的用户看不惯我就屏蔽我吧。 diff --git a/source/categories/index.md b/source/categories/index.md new file mode 100644 index 0000000..93189c0 --- /dev/null +++ b/source/categories/index.md @@ -0,0 +1,4 @@ +--- +title: categories +layout: categories +--- diff --git a/source/favicon.ico b/source/favicon.ico new file mode 100644 index 0000000..4bd3c7e Binary files /dev/null and b/source/favicon.ico differ diff --git a/source/foxsay/index.md b/source/foxsay/index.md new file mode 100644 index 0000000..03dd130 --- /dev/null +++ b/source/foxsay/index.md @@ -0,0 +1,23 @@ +--- +title: 狐说 +date: 2021-07-11 17:45:57 +--- + + + +
+ +
+ + +
+
+ +

加载中……

+
+
+ + + + \ No newline at end of file diff --git a/source/friends/index.md b/source/friends/index.md new file mode 100644 index 0000000..86fdfc4 --- /dev/null +++ b/source/friends/index.md @@ -0,0 +1,17 @@ +--- +title: Friends +date: 2022-1-16 23:00:00 +--- + + + +- + +[suica 的博客](https://suicablog.cobaltkiss.blue) + +--- + +- + +[Albert's Blog - 逆水行舟 不进则退](https://blog.lingyf.com) + diff --git a/source/go/index.md b/source/go/index.md new file mode 100644 index 0000000..e4b41c1 --- /dev/null +++ b/source/go/index.md @@ -0,0 +1,11 @@ +--- +title: go +date: 2021-12-31 22:00:00 +--- + + + +即将进入——**虫洞**。 + +如果迟迟没有跳转到新链接,请点击**[这里](https://foreverblog.cn/go.html)**。 + diff --git a/source/tags/index.md b/source/tags/index.md new file mode 100644 index 0000000..bc06144 --- /dev/null +++ b/source/tags/index.md @@ -0,0 +1,4 @@ +--- +title: tags +layout: tags +--- diff --git a/source/travellings/index.md b/source/travellings/index.md new file mode 100644 index 0000000..173b5da --- /dev/null +++ b/source/travellings/index.md @@ -0,0 +1,14 @@ +--- +title: travellings +date: 2021-03-23 23:45:06 +--- + + + + +![](https://travellings.now.sh/assets/logo.gif) + +即将进入——**开往**。 + +如果迟迟没有跳转到新链接,请点击**[这里](https://travellings.link)**。 + diff --git a/themes/freemind/.gitignore b/themes/freemind/.gitignore new file mode 100644 index 0000000..414efbd --- /dev/null +++ b/themes/freemind/.gitignore @@ -0,0 +1,2 @@ +.DS_Store +CNAME diff --git a/themes/freemind/LICENSE b/themes/freemind/LICENSE new file mode 100644 index 0000000..2661e9c --- /dev/null +++ b/themes/freemind/LICENSE @@ -0,0 +1,7 @@ +Copyright (c) 2015 blackshow + +Permission is hereby granted, free of charge, to any person obtaining a copy of this software and associated documentation files (the "Software"), to deal in the Software without restriction, including without limitation the rights to use, copy, modify, merge, publish, distribute, sublicense, and/or sell copies of the Software, and to permit persons to whom the Software is furnished to do so, subject to the following conditions: + +The above copyright notice and this permission notice shall be included in all copies or substantial portions of the Software. + +THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE. diff --git a/themes/freemind/README.md b/themes/freemind/README.md new file mode 100644 index 0000000..dc743e8 --- /dev/null +++ b/themes/freemind/README.md @@ -0,0 +1,182 @@ +Hexo-Theme-Freemind.386 +=== + +![screenshot](/free386-screenshot.png) + +Freemind.386 aims at fully taking advantages of Bootstrap. + +* [Demo](http://blackshow.me) +* [Readme in Chinese](http://www.blackshow.me/2015/11/25/hexo-theme-freemind-386-readme-cn/) + +## Requirements ## + +* Hexo >= 3.0 +* [hexo-tag-bootstrap](https://github.com/wzpan/hexo-tag-bootstrap) >= 0.0.8 (optional) +## Features ## + +* **Bootstrap** - get the power of Twitter Bootstrap with minimal hassle; +* **Tag plugins** - luxuriant Bootstrap tag plugins, provided by [hexo-tag-bootstrap](https://github.com/wzpan/hexo-tag-bootstrap), including: + - textcolor - a paragraph of text with specified color; + - button - a button with target links, text and specified color; + - label - a label with text and specified color; + - badge - a badge with text; + - alert - alert messages with text and specified color; +* **Local Search Engine** - a build-in local search engine, with the help of [hexo-generator-search](https://github.com/paichyperiondev/hexo-generator-search). + +## Install ## + +1) install theme: + +``` sh +$ git clone git@github.com:blackshow/hexo-theme-freemind.386.git +``` + +2) install [hexo-tag-bootstrap](https://github.com/wzpan/hexo-tag-bootstrap) (*optional*): + +``` sh +$ npm install hexo-tag-bootstrap --save +``` + +3) install [hexo-generator-search](https://github.com/paichyperiondev/hexo-generator-search) (*optional*): + +``` sh +$ npm install hexo-generator-search --save +``` + +4) Create pages + +Freemind.386 offers you the customized Categories, Tags and About pages. But you need to manually create these page at your 'source' folder. + +For example, to create a `Categories` page, you may create a `index.html` file at `source/categories/` folder with the following contents: + +``` +title: Categories +layout: categories +--- +``` + +Tags and About pages are created in a similar way, except that the layouts are `tags` and `page` respectively. + +Alternatively you can create About page using the following command: + +``` sh +$ hexo new page about +``` + +Note that only About page can be created in that way. + +## Enable ## + +Modify `theme` setting in your `_config.yml` to `freemind.386`. + +## Update ## + +``` sh +$ cd themes/freemind.386 +$ git pull +``` + +## Configuration ## + +``` +slogan: Yet another bootstrap theme. + +menu: + - title: Archives + url: archives + intro: All the articles. + icon: fa fa-archive + - title: Categories + url: categories + intro: All the categories. + icon: fa fa-folder + - title: Tags + url: tags + intro: All the tags. + icon: fa fa-tags + - title: About + url: about + intro: About me. + icon: fa fa-user + +links: + - title: My Github + url: http://www.github.com/blackshow + intro: My Github account. + icon: fa fa-github + - title: My LinkedIn + url: http://www.linkedin.com/in/blackshow + intro: My Linkin account. + icon: fa fa-linkedin + +widgets: +- search +- category +- tagcloud +- recent_posts +- links + +rss: atom.xml +favicon: favicon.png +fancybox: true +duoshuo_shortname: + +# analytics +google_analytics: + enable: false + siteid: +baidu_tongji: + enable: false + siteid: + +# Search +swiftype_key: +``` + +* **slogan** - slogan display at the index page +* **menu** - Navigation menu +* **links** - reference links at the links widget +* **widgets** - Widgets displaying in sidebar +* **rss** - RSS link +* **fancybox** - Enable [Fancybox](http://fancyapps.com/fancybox/) +* **duoshuo_shortname** - DuoShuo ID, if you prefer to use duoshuo instead of Disqus +* **analytics** - Analytics ID. Supports both Google Analytics and Baidu Tongji. +* **swiftype_key** - Swifttype key to enable local searching. Leave it blank or comment this line if you want to use build-in local search engine. + +If you prefer to use disqus, the setting of disqus should be placed at your **root** `_config.yml`: + +``` +# Disqus +disqus_shortname: +``` + +## Front-Matter ## + +There are some new front-matter settings in Freemind.386 that you can use to decorate your articles. + +* **description** - a short description about the articles that will be display at the top of the post +* **feature** - sets a feature image that will be show at the index page +* **toc** - renders a table of contents + +For example: + +``` +title: Tag Plugins +date: 2014-03-16 10:17:16 +tags: plugins +categories: Docs +description: Introduce tag plugins in freemind. +feature: images/tag-plugins/plugins.jpg +toc: true +--- +``` + +## License ## + +This theme is provided under [MIT License](http://opensource.org/licenses/MIT). + + +## Credits ## + +* The theme is built based on [Freemind](http://wzpan.github.io/hexo-theme-freemind/) and [BOOTSTRA.386](http://kristopolous.github.io/BOOTSTRA.386/); +* The beautiful icons are from [Font Awesome](http://fortawesome.github.io/Font-Awesome/icons/). diff --git a/themes/freemind/_config.yml b/themes/freemind/_config.yml new file mode 100644 index 0000000..251ab65 --- /dev/null +++ b/themes/freemind/_config.yml @@ -0,0 +1,82 @@ +slogan: "KEEP CALM AND CARRY ON." + +show_heart: true + +show_slogan: true + +menu: + - title: 归档 + url: archives + intro: "All the articles." + # icon: "fa fa-archive" + - title: 分类 + url: categories + intro: "All the categories." + # icon: "fa fa-folder" + - title: 标签 + url: tags + intro: "All the tags." + # icon: "fa fa-tags" + - title: RSS + url: rss2.xml + intro: "Subscribe me." + - title: 友链 + url: friends + intro: "朋友们" + - title : 开往 + url: travellings + intro: "一群狼走得更远" + icon: "fas fa-subway" + - title : 虫洞 + url: go + intro : "十年之约" + icon: "fas fa-bahai" + +links: + - title: Friends + url: /friends + icon: "fas fa-user-friends" + - title: RSS + url: /rss2.xml + intro: "Subscribe me." + icon: "fas fa-rss" + - title: 开往 + url: https://travellings.link + intro: "一群狼走得更远" + icon: "fas fa-subway" + - title: 虫洞 + url: https://foreverblog.cn/go.html + intro: "Freemind.386's Github repository." + icon: "fas fa-bahai" +# - title: "My Github" +# url: http://www.github.com/blackshow +# intro: "My Github account." +# icon: "fa fa-github" + # - title: "My LinkedIn" + # url: http://www.linkedin.com/in/xxx + # intro: "My Linkin account." + # icon: "fa fa-linkedin" + +widgets: +- search +- category +- tagcloud +# - recent_posts +- links + +rss: +fancybox: true +favicon: favicon.png +enable_comment: true + + +# Analytics (change to yours) +google_analytics: + enable: false + siteid: stub +baidu_tongji: + enable: false + siteid: stun + +# search +#swiftype_key: ZP2ZSuHgipSZfRyU8uTR diff --git a/themes/freemind/languages/default.yml b/themes/freemind/languages/default.yml new file mode 100644 index 0000000..a60c33a --- /dev/null +++ b/themes/freemind/languages/default.yml @@ -0,0 +1,15 @@ +categories: Categories +search: Search +tags: Tags +tagcloud: "Tag Cloud" +tweets: Tweets +prev: Prev +next: Next +comment: Comments +archive_a: Archives +archive_b: "Archives: %s" +page: "Page %d" +recent_posts: "Recent Posts" +description: Description +read_more: "Read More" +links: Links \ No newline at end of file diff --git a/themes/freemind/languages/pt-BR.yml b/themes/freemind/languages/pt-BR.yml new file mode 100644 index 0000000..dee7096 --- /dev/null +++ b/themes/freemind/languages/pt-BR.yml @@ -0,0 +1,15 @@ +categories: Categorias +search: Busca +tags: Tags +tagcloud: "Tag Cloud" +tweets: Tweets +prev: Anterior +next: Próximo +comment: Comentários +archive_a: Arquivos +archive_b: "Arquivos: %s" +page: "Página %d" +recent_posts: "Posts recentes" +description: Descrição +read_more: "Leia Mais" +links: Links \ No newline at end of file diff --git a/themes/freemind/languages/zh-CN.yml b/themes/freemind/languages/zh-CN.yml new file mode 100644 index 0000000..366d3b2 --- /dev/null +++ b/themes/freemind/languages/zh-CN.yml @@ -0,0 +1,15 @@ +categories: 分类 +search: 搜索 +tags: 标签 +tagcloud: 标签云 +tweets: 推文 +prev: 上一页 +next: 下一页 +comment: 留言 +archive_a: 归档 +archive_b: "归档:%s" +page: "第 %d 页" +recent_posts: 最新文章 +description: 摘要 +read_more: 阅读此文 +links: 链接 \ No newline at end of file diff --git a/themes/freemind/languages/zh-TW.yml b/themes/freemind/languages/zh-TW.yml new file mode 100644 index 0000000..2c463b2 --- /dev/null +++ b/themes/freemind/languages/zh-TW.yml @@ -0,0 +1,15 @@ +categories: 分類 +search: 搜尋 +tags: 標籤 +tagcloud: 標籤雲 +tweets: 推文 +prev: 上一頁 +next: 下一頁 +comment: 留言 +archive_a: 彙整 +archive_b: "彙整:%s" +page: "第 %d 頁" +recent_posts: 最新文章 +description: 描述 +read_more: 閱讀本文 +links: 鏈接 \ No newline at end of file diff --git a/themes/freemind/layout/_partial/after_footer.ejs b/themes/freemind/layout/_partial/after_footer.ejs new file mode 100644 index 0000000..06353ce --- /dev/null +++ b/themes/freemind/layout/_partial/after_footer.ejs @@ -0,0 +1,32 @@ + + + ⬆︎TOP + + + + + + + + +<% if (theme.fancybox){ %> + + + +<% } %> + +<% if (config.search) { %> + +<% } %> \ No newline at end of file diff --git a/themes/freemind/layout/_partial/archive.ejs b/themes/freemind/layout/_partial/archive.ejs new file mode 100644 index 0000000..0adf968 --- /dev/null +++ b/themes/freemind/layout/_partial/archive.ejs @@ -0,0 +1,75 @@ +<% + var title = ''; + var posts = site.posts; + if (page.category) { + title = page.category; + posts = page.posts; + } + if (page.tag) { + title = page.tag; + posts = page.posts; + } + if (page.archive){ + if (page.year) title = page.year + (page.month ? '/' + page.month : ''); + else { + title = __('archive_a'); + posts = site.posts; + } + } + var year, month; + var last_year = 1970; + var is_first_year = 1; + %> + + + + +
+ + <% if (theme.widgets.length) { %> +
+ <% } else { %> +
+ <% } %> + + + +
+ <% posts.sort('date', -1).each(function(item){ %> + <% + year = item.date.toDate().getFullYear(); + month = item.date.toDate().getMonth(); + %> + <% if (year != last_year){ %> + <% if (!is_first_year) { %> + + <% } %> + <% is_first_year = 0 %> +

<%= year %>

+ +
+ +
+ +<% if (theme.widgets.length) { %> +<%- partial('sidebar') %> +<% } %> + diff --git a/themes/freemind/layout/_partial/article.ejs b/themes/freemind/layout/_partial/article.ejs new file mode 100644 index 0000000..3fd3247 --- /dev/null +++ b/themes/freemind/layout/_partial/article.ejs @@ -0,0 +1,39 @@ +<%- partial('post/title', {item: item, index: false}) %> + +
+ + <% if (post) { %> +
+
+ <% } else { %> +
+ <% } %> + + +
+ <% if (item.description) { %> +
+ <%- item.description %> +
+ <% } %> + + <%- item.content %> +
+ +
+
+ <%- partial('post/pagination', {page: item}) %> +
+
+ + + <%- partial('post/comment_footer', {page: item}) %> +
+ + <% if (post) { %> +
+ <%- partial('post/meta', {item: item}) %> +
+ <% } %> + +
diff --git a/themes/freemind/layout/_partial/footer.ejs b/themes/freemind/layout/_partial/footer.ejs new file mode 100644 index 0000000..fb9e331 --- /dev/null +++ b/themes/freemind/layout/_partial/footer.ejs @@ -0,0 +1,8 @@ +

<% if (config.author){ %> + © <%= new Date().getFullYear() %> <%= config.author %> + <% } else { %> + © <%= new Date().getFullYear() %> <%= config.title %> + <% } %> + Font by Zpix, + Theme by Freemind.386.
隐私政策 +

diff --git a/themes/freemind/layout/_partial/head.ejs b/themes/freemind/layout/_partial/head.ejs new file mode 100644 index 0000000..4cecd6c --- /dev/null +++ b/themes/freemind/layout/_partial/head.ejs @@ -0,0 +1,56 @@ + + + + + + + + <% + var title = []; + if (page.current > 1) title.push(__('page', page.current)); + if (page.title) title.push(page.title); + if (page.category) title.push(page.category); + if (page.tag) title.push(page.tag); + if (page.archive){ + if (page.year) title.push(__('archive_b', page.year + (page.month ? '/' + page.month : ''))); + else title.push(__('archive_a')); + } + title.push(config.title); + %> + <%= title.join(' | ') %> + <% if (config.author){ %><% } %> + <% if (page.description){ %> + + <% } else if (config.description){ %> + + <% } else if (page.excerpt){ %> + + <% } else if (page.content){ %> + + <% } %> + <% if (page.keywords){ %><% } %> + + + <% if (page.title){ %><% } %> + + + <% if(page.cover) { %> + + <% } else { %> + + <% } %> + + <% if (theme.rss){ %> + + <% } %> + <% if (theme.favicon){ %> + + <% } %> + + + + + + + + diff --git a/themes/freemind/layout/_partial/index.ejs b/themes/freemind/layout/_partial/index.ejs new file mode 100644 index 0000000..b44cbcc --- /dev/null +++ b/themes/freemind/layout/_partial/index.ejs @@ -0,0 +1,36 @@ +
+ + <% if (theme.widgets.length) { %> +
+ <% } else { %> +
+ <% } %> + + <%- partial('post/slogan') %> + +
+ + + <% page.posts.each(function(item){ %> + <%- partial('post/title', {item: item, index: index}) %> + <%- partial('post/entry', {item: item, index: index}) %> + <% }); %> + +
+ + +
+
+ <%- partial('index_pagination') %> +
+
+ + + +
+ + <% if (theme.widgets.length) { %> + <%- partial('sidebar') %> + <% } %> + +
\ No newline at end of file diff --git a/themes/freemind/layout/_partial/index_pagination.ejs b/themes/freemind/layout/_partial/index_pagination.ejs new file mode 100644 index 0000000..2b1cdfa --- /dev/null +++ b/themes/freemind/layout/_partial/index_pagination.ejs @@ -0,0 +1,18 @@ + diff --git a/themes/freemind/layout/_partial/navigation.ejs b/themes/freemind/layout/_partial/navigation.ejs new file mode 100644 index 0000000..ecdaa36 --- /dev/null +++ b/themes/freemind/layout/_partial/navigation.ejs @@ -0,0 +1,23 @@ + +
diff --git a/themes/freemind/layout/_partial/post/analytics.ejs b/themes/freemind/layout/_partial/post/analytics.ejs new file mode 100644 index 0000000..718cfc8 --- /dev/null +++ b/themes/freemind/layout/_partial/post/analytics.ejs @@ -0,0 +1,22 @@ +<% if (theme.google_analytics.enable){ %> + +<% } %> + +<% if (theme.baidu_tongji.enable){ %> + +<% } %> \ No newline at end of file diff --git a/themes/freemind/layout/_partial/post/category.ejs b/themes/freemind/layout/_partial/post/category.ejs new file mode 100644 index 0000000..a8802b5 --- /dev/null +++ b/themes/freemind/layout/_partial/post/category.ejs @@ -0,0 +1,9 @@ + <% + var cats = []; + item.categories.forEach(function(cat){ + cats.push('
  • ' + cat.name + '' + cat.length + '
  • '); + }); + %> +
  • + <%- cats.join(' ') %> +
  • diff --git a/themes/freemind/layout/_partial/post/comment.ejs b/themes/freemind/layout/_partial/post/comment.ejs new file mode 100644 index 0000000..e11253c --- /dev/null +++ b/themes/freemind/layout/_partial/post/comment.ejs @@ -0,0 +1,35 @@ +<% if (page.comment){ %> +
    +

    <%= __('comment') %>

    + + <% if(theme.duoshuo_shortname) { %> +
    + <% } else if(theme.disqus_shortname) { %> +
    + + +
    + <% } %> +
    +<% }%> diff --git a/themes/freemind/layout/_partial/post/comment_footer.ejs b/themes/freemind/layout/_partial/post/comment_footer.ejs new file mode 100644 index 0000000..d01aefd --- /dev/null +++ b/themes/freemind/layout/_partial/post/comment_footer.ejs @@ -0,0 +1,18 @@ +
    如不想授权 Giscus 应用,也可以点击下方左上角数字直接跳转到 Github Discussions 进行评论。
    +<% if (theme.enable_comment) { %> + + +<% } %> diff --git a/themes/freemind/layout/_partial/post/entry.ejs b/themes/freemind/layout/_partial/post/entry.ejs new file mode 100644 index 0000000..3ae92e3 --- /dev/null +++ b/themes/freemind/layout/_partial/post/entry.ejs @@ -0,0 +1,18 @@ +
    +
    + <% if (item.feature ) { %> + <% if (config.post_asset_folder){ %> +
    <%= item.title %> + <% } else { %> +
    <%= item.title %> + <% } %> +
    + <% } %> + <% if (item.excerpt && index) { %> + <%- item.excerpt %> + <% } else { %> + <%- item.content %> + <% } %> +
    + <%= __('read_more') %> +
    diff --git a/themes/freemind/layout/_partial/post/meta.ejs b/themes/freemind/layout/_partial/post/meta.ejs new file mode 100644 index 0000000..792d350 --- /dev/null +++ b/themes/freemind/layout/_partial/post/meta.ejs @@ -0,0 +1,44 @@ +
    + + + <% if (item.date) { %> +
    + + <%= item.date.format(config.date_format) %> +
    + <% } %> + + + <% if (item.categories && item.categories.length ) { %> +
    + +
      + <%- partial('category') %> +
    +
    + <% } %> + + + <% if(item.tags && item.tags.length ){ %> +
    + +
      + <%- partial('tag') %> +
    +
    + <% } %> + + +
    + <% if(item.toc){ %> + +
    + 目录 + <%- toc(item.content, {class: "toc-article", list_number:false}) %> +
    + <% } %> +
    + +
    + +
    diff --git a/themes/freemind/layout/_partial/post/pagination.ejs b/themes/freemind/layout/_partial/post/pagination.ejs new file mode 100644 index 0000000..3663654 --- /dev/null +++ b/themes/freemind/layout/_partial/post/pagination.ejs @@ -0,0 +1,20 @@ + diff --git a/themes/freemind/layout/_partial/post/share.ejs b/themes/freemind/layout/_partial/post/share.ejs new file mode 100644 index 0000000..505f3a1 --- /dev/null +++ b/themes/freemind/layout/_partial/post/share.ejs @@ -0,0 +1,18 @@ +<% if (theme.addthis.enable){ %> +
    + <% if (theme.addthis.facebook){ %> + + <% } %> + <% if (theme.addthis.twitter){ %> + + <% } %> + <% if (theme.addthis.google){ %> + + <% } %> + <% if (theme.addthis.pinterest){ %> + + <% } %> + +
    + +<% } %> \ No newline at end of file diff --git a/themes/freemind/layout/_partial/post/slogan.ejs b/themes/freemind/layout/_partial/post/slogan.ejs new file mode 100644 index 0000000..7d93b69 --- /dev/null +++ b/themes/freemind/layout/_partial/post/slogan.ejs @@ -0,0 +1,8 @@ +
    +<% if (theme.show_slogan) { %> +<% if (theme.show_heart) { %> + +<% } %> + <%= theme.slogan %> +<% } %> +
    diff --git a/themes/freemind/layout/_partial/post/tag.ejs b/themes/freemind/layout/_partial/post/tag.ejs new file mode 100644 index 0000000..acf3d62 --- /dev/null +++ b/themes/freemind/layout/_partial/post/tag.ejs @@ -0,0 +1,7 @@ + <% + var tags = []; + item.tags.forEach(function(tag){ + tags.push('
  • ' + tag.name + '' + tag.length + '
  • '); + }); + %> + <%- tags.join(' ') %> \ No newline at end of file diff --git a/themes/freemind/layout/_partial/post/title.ejs b/themes/freemind/layout/_partial/post/title.ejs new file mode 100644 index 0000000..522fffb --- /dev/null +++ b/themes/freemind/layout/_partial/post/title.ejs @@ -0,0 +1,25 @@ +<% if (item.link) { %> + <% if (item.title){ %> +

    <%= item.title %>

    + <% } else { %> +

    <%= item.link %>

    + <% } %> +<% } else { %> + <% if (index) { %> + +
    + +
    +
    发布于 @ <%= item.date.format(config.date_format) %>
    +
    +
    + <% } else { %> + + <% } %> +<% } %> diff --git a/themes/freemind/layout/_partial/search.ejs b/themes/freemind/layout/_partial/search.ejs new file mode 100644 index 0000000..8fa3703 --- /dev/null +++ b/themes/freemind/layout/_partial/search.ejs @@ -0,0 +1,11 @@ +<% if (theme.swiftype_key) { %> + +<% } %> + diff --git a/themes/freemind/layout/_partial/sidebar.ejs b/themes/freemind/layout/_partial/sidebar.ejs new file mode 100644 index 0000000..d5ea3d7 --- /dev/null +++ b/themes/freemind/layout/_partial/sidebar.ejs @@ -0,0 +1,7 @@ +
    + +
    diff --git a/themes/freemind/layout/_widget/category.ejs b/themes/freemind/layout/_widget/category.ejs new file mode 100644 index 0000000..90e1168 --- /dev/null +++ b/themes/freemind/layout/_widget/category.ejs @@ -0,0 +1,10 @@ +<% if (site.categories.length){ %> +
    +

    <%= __('categories') %>

    + +
    +<% } %> \ No newline at end of file diff --git a/themes/freemind/layout/_widget/links.ejs b/themes/freemind/layout/_widget/links.ejs new file mode 100644 index 0000000..57fd91a --- /dev/null +++ b/themes/freemind/layout/_widget/links.ejs @@ -0,0 +1,10 @@ +<% if (theme.links.length){ %> +
    +

    <%= __('links') %>

    + +
    +<% } %> diff --git a/themes/freemind/layout/_widget/recent_posts.ejs b/themes/freemind/layout/_widget/recent_posts.ejs new file mode 100644 index 0000000..f0d20f3 --- /dev/null +++ b/themes/freemind/layout/_widget/recent_posts.ejs @@ -0,0 +1,12 @@ +<% if (site.posts.length){ %> +
    +

    <%= __('recent_posts') %>

    + +
    +<% } %> \ No newline at end of file diff --git a/themes/freemind/layout/_widget/search.ejs b/themes/freemind/layout/_widget/search.ejs new file mode 100644 index 0000000..b0f9cba --- /dev/null +++ b/themes/freemind/layout/_widget/search.ejs @@ -0,0 +1,21 @@ +<% if (theme.swiftype_key) { %> + +<% } else { %> + + + + +<% } %> diff --git a/themes/freemind/layout/_widget/tagcloud.ejs b/themes/freemind/layout/_widget/tagcloud.ejs new file mode 100644 index 0000000..aafda50 --- /dev/null +++ b/themes/freemind/layout/_widget/tagcloud.ejs @@ -0,0 +1,13 @@ +<% if (site.tags.length){ %> +
    +

    <%= __('tagcloud') %>

    + +
    +<% } %> diff --git a/themes/freemind/layout/archive.ejs b/themes/freemind/layout/archive.ejs new file mode 100644 index 0000000..c0cdb27 --- /dev/null +++ b/themes/freemind/layout/archive.ejs @@ -0,0 +1 @@ +<%- partial('_partial/archive') %> \ No newline at end of file diff --git a/themes/freemind/layout/categories.ejs b/themes/freemind/layout/categories.ejs new file mode 100644 index 0000000..83ddf05 --- /dev/null +++ b/themes/freemind/layout/categories.ejs @@ -0,0 +1,47 @@ + + + +
    + + <% if (theme.widgets.length) { %> +
    + <% } else { %> +
    + <% } %> + + + + <% if (site.categories.length) { %> +
    + +
    + +
    + <% site.categories.sort('name').each(function(item){ %> +

    <%= item.name %>

    + + <% }); %> + +
    + <% } %> + +
    + + <% if (theme.widgets.length) { %> + <%- partial('_partial/sidebar') %> + <% } %> + +
    diff --git a/themes/freemind/layout/index.ejs b/themes/freemind/layout/index.ejs new file mode 100644 index 0000000..6536780 --- /dev/null +++ b/themes/freemind/layout/index.ejs @@ -0,0 +1,5 @@ + + +<%- partial('_partial/index', {index: true}) %> \ No newline at end of file diff --git a/themes/freemind/layout/layout.ejs b/themes/freemind/layout/layout.ejs new file mode 100644 index 0000000..5be2445 --- /dev/null +++ b/themes/freemind/layout/layout.ejs @@ -0,0 +1,15 @@ +<%- partial('_partial/head') %> + + <%- partial('_partial/navigation') %> +
    +
    + <%- body %> +
    +
    +
    +
    <%- partial('_partial/footer') %>
    +
    + <%- partial('_partial/search') %> + <%- partial('_partial/after_footer') %> + + diff --git a/themes/freemind/layout/page.ejs b/themes/freemind/layout/page.ejs new file mode 100644 index 0000000..21d773d --- /dev/null +++ b/themes/freemind/layout/page.ejs @@ -0,0 +1 @@ +<%- partial('_partial/article', {item: page, post: false}) %> \ No newline at end of file diff --git a/themes/freemind/layout/post.ejs b/themes/freemind/layout/post.ejs new file mode 100644 index 0000000..88aec5d --- /dev/null +++ b/themes/freemind/layout/post.ejs @@ -0,0 +1,3 @@ +<% page.comment = false; %> + +<%- partial('_partial/article', {item: page, post: true}) %> \ No newline at end of file diff --git a/themes/freemind/layout/tags.ejs b/themes/freemind/layout/tags.ejs new file mode 100644 index 0000000..62f471a --- /dev/null +++ b/themes/freemind/layout/tags.ejs @@ -0,0 +1,53 @@ + + + +
    + + <% if (theme.widgets.length) { %> +
    + <% } else { %> +
    + <% } %> + + + +<% if (site.tags.length){ %> +
    + +
    + +
    + <% site.tags.sort('name').each(function(item){ %> + +

    <%= item.name %>

    + + <% }); %> + +
    + +<% } %> + +
    + + <% if (theme.widgets.length) { %> + <%- partial('_partial/sidebar') %> + <% } %> + +
    \ No newline at end of file diff --git a/themes/freemind/source/css/.emacs.desktop b/themes/freemind/source/css/.emacs.desktop new file mode 100644 index 0000000..b3049a7 --- /dev/null +++ b/themes/freemind/source/css/.emacs.desktop @@ -0,0 +1,62 @@ +;; -*- mode: emacs-lisp; coding: emacs-mule; -*- +;; -------------------------------------------------------------------------- +;; Desktop File for Emacs +;; -------------------------------------------------------------------------- +;; Created Wed Oct 7 18:21:16 2015 +;; Desktop file format version 206 +;; Emacs version 24.3.1 + +;; Global section: +(setq desktop-missing-file-warning nil) +(setq tags-file-name nil) +(setq tags-table-list nil) +(setq search-ring '("$$" "npm install" "hexo" "cnpm" "home" ".zsh" "npm" "package" "blog" "--save" "npm instsal" "mark" "config" "markd")) +(setq regexp-search-ring nil) +(setq register-alist nil) +(setq file-name-history '("~/Documents/projects/hexo-theme-freemind/themes/freemind/source/css/" "~/Documents/projects/hexo-theme-freemind/themes/freemind/source/css/responsive.css" "~/Documents/projects/hexo-theme-freemind/themes/freemind/source/js/main.js" "~/.emacs.d/savefile/bookmarks" "/home/ehome/bin/hexo_freemind" "/home/ehome/Documents/projects/dockerfile/Dockerfile" "~/Documents/blog/package.json" "~/Documents/projects/dockerfile/Dockerfile" "/home/ehome/Documents/projects/dockerfile" "/home/ehome/Documents/projects/dockerfile/hexo3" "~/Documents/projects/hexo-theme-freemind" "~/Documents/projects/hexo-theme-freemind/package.json" "~/Documents/projects/hexo-theme-freemind/node_modules/" "~/Documents/projects/hexo-theme-freemind/node_modules/hexo-renderer-marked/lib/renderer.js" "~/Documents/projects/hexo-theme-freemind/_config.yml" "/home/ehome/Documents/projects/hexo-theme-freemind/themes/freemind/.git/MERGE_MSG" "/home/ehome/Documents/blog/themes/bootstrap/source/css/bootstrap-responsive.css" "/home/ehome/Documents/projects/hexo-theme-freemind/themes/freemind/source/css/bootstrap.min.css" "~/Documents/projects/hexo-theme-freemind/themes/freemind/layout/_partial/head.ejs" "~/Documents/blog/themes/bootstrap/source/css/responsive.css" "~/Documents/projects/hexo-theme-freemind/themes/freemind/source/css/responsive.css" "~/Documents/projects/hexo-theme-freemind/themes/freemind/source/css/bootstrap-responsive.css" "~/Documents/projects/hexo-theme-freemind/themes/freemind/source/css/" "~/Documents/projects/hexo-theme-freemind/themes/freemind/source/css/style.css" "~/Documents/blog/themes/bootstrap/source/css/style.css" "~/Documents/blog/themes/bootstrap/layout/_partial/post/entry.ejs")) + +;; Buffer section -- buffers listed in same order as in buffer list: +(desktop-create-buffer 206 + "/home/ehome/Documents/projects/hexo-theme-freemind/themes/freemind/source/css/responsive.css" + "responsive.css" + 'css-mode + '(prelude-mode global-auto-revert-mode volatile-highlights-mode projectile-mode anzu-mode undo-tree-mode flx-ido-mode yas-minor-mode rainbow-mode) + 423 + '(802 nil) + nil + nil + '((buffer-file-coding-system . undecided-unix) (overwrite-mode))) + +(desktop-create-buffer 206 + "/home/ehome/Documents/projects/hexo-theme-freemind/themes/freemind/source/js/main.js" + "main.js" + 'js-mode + '(prelude-mode global-auto-revert-mode smartparens-mode volatile-highlights-mode flyspell-mode projectile-mode anzu-mode highlight-symbol-mode whitespace-mode undo-tree-mode flx-ido-mode yas-minor-mode) + 874 + '(964 nil) + nil + nil + '((buffer-file-coding-system . utf-8-unix))) + +(desktop-create-buffer 206 + nil + "css" + 'dired-mode + '(prelude-mode global-auto-revert-mode volatile-highlights-mode projectile-mode anzu-mode flx-ido-mode yas-minor-mode) + 603 + '(nil nil) + t + '("/home/ehome/Documents/projects/hexo-theme-freemind/themes/freemind/source/css/") + nil) + +(desktop-create-buffer 206 + nil + "blog" + 'dired-mode + '(prelude-mode global-auto-revert-mode volatile-highlights-mode projectile-mode anzu-mode flx-ido-mode yas-minor-mode) + 846 + '(nil nil) + t + '("/home/ehome/Documents/blog/") + nil) + diff --git a/themes/freemind/source/css/bootstrap-responsive.css b/themes/freemind/source/css/bootstrap-responsive.css new file mode 100644 index 0000000..161af70 --- /dev/null +++ b/themes/freemind/source/css/bootstrap-responsive.css @@ -0,0 +1,9 @@ +/*! + * Bootstrap Responsive v2.3.2 + * + * Copyright 2012 Twitter, Inc + * Licensed under the Apache License v2.0 + * http://www.apache.org/licenses/LICENSE-2.0 + * + * Designed and built with all the love in the world @twitter by @mdo and @fat. + */.clearfix{*zoom:1}.clearfix:before,.clearfix:after{display:table;line-height:0;content:""}.clearfix:after{clear:both}.hide-text{font:0/0 a;color:transparent;text-shadow:none;background-color:transparent;border:0}.input-block-level{display:block;width:100%;min-height:30px;-webkit-box-sizing:border-box;-moz-box-sizing:border-box;box-sizing:border-box}@-ms-viewport{width:device-width}.hidden{display:none;visibility:hidden}.visible-phone{display:none!important}.visible-tablet{display:none!important}.hidden-desktop{display:none!important}.visible-desktop{display:inherit!important}@media(min-width:768px) and (max-width:979px){.hidden-desktop{display:inherit!important}.visible-desktop{display:none!important}.visible-tablet{display:inherit!important}.hidden-tablet{display:none!important}}@media(max-width:767px){.hidden-desktop{display:inherit!important}.visible-desktop{display:none!important}.visible-phone{display:inherit!important}.hidden-phone{display:none!important}}.visible-print{display:none!important}@media print{.visible-print{display:inherit!important}.hidden-print{display:none!important}}@media(min-width:1200px){.row{margin-left:-30px;*zoom:1}.row:before,.row:after{display:table;line-height:0;content:""}.row:after{clear:both}[class*="span"]{float:left;min-height:1px;margin-left:30px}.container,.navbar-static-top .container,.navbar-fixed-top .container,.navbar-fixed-bottom .container{width:1170px}.span12{width:1170px}.span11{width:1070px}.span10{width:970px}.span9{width:870px}.span8{width:770px}.span7{width:670px}.span6{width:570px}.span5{width:470px}.span4{width:370px}.span3{width:270px}.span2{width:170px}.span1{width:70px}.offset12{margin-left:1230px}.offset11{margin-left:1130px}.offset10{margin-left:1030px}.offset9{margin-left:930px}.offset8{margin-left:830px}.offset7{margin-left:730px}.offset6{margin-left:630px}.offset5{margin-left:530px}.offset4{margin-left:430px}.offset3{margin-left:330px}.offset2{margin-left:230px}.offset1{margin-left:130px}.row-fluid{width:100%;*zoom:1}.row-fluid:before,.row-fluid:after{display:table;line-height:0;content:""}.row-fluid:after{clear:both}.row-fluid [class*="span"]{display:block;float:left;width:100%;min-height:30px;margin-left:2.564102564102564%;*margin-left:2.5109110747408616%;-webkit-box-sizing:border-box;-moz-box-sizing:border-box;box-sizing:border-box}.row-fluid [class*="span"]:first-child{margin-left:0}.row-fluid .controls-row [class*="span"]+[class*="span"]{margin-left:2.564102564102564%}.row-fluid .span12{width:100%;*width:99.94680851063829%}.row-fluid .span11{width:91.45299145299145%;*width:91.39979996362975%}.row-fluid .span10{width:82.90598290598291%;*width:82.8527914166212%}.row-fluid .span9{width:74.35897435897436%;*width:74.30578286961266%}.row-fluid .span8{width:65.81196581196582%;*width:65.75877432260411%}.row-fluid .span7{width:57.26495726495726%;*width:57.21176577559556%}.row-fluid .span6{width:48.717948717948715%;*width:48.664757228587014%}.row-fluid .span5{width:40.17094017094017%;*width:40.11774868157847%}.row-fluid .span4{width:31.623931623931625%;*width:31.570740134569924%}.row-fluid .span3{width:23.076923076923077%;*width:23.023731587561375%}.row-fluid .span2{width:14.52991452991453%;*width:14.476723040552828%}.row-fluid .span1{width:5.982905982905983%;*width:5.929714493544281%}.row-fluid .offset12{margin-left:105.12820512820512%;*margin-left:105.02182214948171%}.row-fluid .offset12:first-child{margin-left:102.56410256410257%;*margin-left:102.45771958537915%}.row-fluid .offset11{margin-left:96.58119658119658%;*margin-left:96.47481360247316%}.row-fluid .offset11:first-child{margin-left:94.01709401709402%;*margin-left:93.91071103837061%}.row-fluid .offset10{margin-left:88.03418803418803%;*margin-left:87.92780505546462%}.row-fluid .offset10:first-child{margin-left:85.47008547008548%;*margin-left:85.36370249136206%}.row-fluid .offset9{margin-left:79.48717948717949%;*margin-left:79.38079650845607%}.row-fluid .offset9:first-child{margin-left:76.92307692307693%;*margin-left:76.81669394435352%}.row-fluid .offset8{margin-left:70.94017094017094%;*margin-left:70.83378796144753%}.row-fluid .offset8:first-child{margin-left:68.37606837606839%;*margin-left:68.26968539734497%}.row-fluid .offset7{margin-left:62.393162393162385%;*margin-left:62.28677941443899%}.row-fluid .offset7:first-child{margin-left:59.82905982905982%;*margin-left:59.72267685033642%}.row-fluid .offset6{margin-left:53.84615384615384%;*margin-left:53.739770867430444%}.row-fluid .offset6:first-child{margin-left:51.28205128205128%;*margin-left:51.175668303327875%}.row-fluid .offset5{margin-left:45.299145299145295%;*margin-left:45.1927623204219%}.row-fluid .offset5:first-child{margin-left:42.73504273504273%;*margin-left:42.62865975631933%}.row-fluid .offset4{margin-left:36.75213675213675%;*margin-left:36.645753773413354%}.row-fluid .offset4:first-child{margin-left:34.18803418803419%;*margin-left:34.081651209310785%}.row-fluid .offset3{margin-left:28.205128205128204%;*margin-left:28.0987452264048%}.row-fluid .offset3:first-child{margin-left:25.641025641025642%;*margin-left:25.53464266230224%}.row-fluid .offset2{margin-left:19.65811965811966%;*margin-left:19.551736679396257%}.row-fluid .offset2:first-child{margin-left:17.094017094017094%;*margin-left:16.98763411529369%}.row-fluid .offset1{margin-left:11.11111111111111%;*margin-left:11.004728132387708%}.row-fluid .offset1:first-child{margin-left:8.547008547008547%;*margin-left:8.440625568285142%}input,textarea,.uneditable-input{margin-left:0}.controls-row [class*="span"]+[class*="span"]{margin-left:30px}input.span12,textarea.span12,.uneditable-input.span12{width:1156px}input.span11,textarea.span11,.uneditable-input.span11{width:1056px}input.span10,textarea.span10,.uneditable-input.span10{width:956px}input.span9,textarea.span9,.uneditable-input.span9{width:856px}input.span8,textarea.span8,.uneditable-input.span8{width:756px}input.span7,textarea.span7,.uneditable-input.span7{width:656px}input.span6,textarea.span6,.uneditable-input.span6{width:556px}input.span5,textarea.span5,.uneditable-input.span5{width:456px}input.span4,textarea.span4,.uneditable-input.span4{width:356px}input.span3,textarea.span3,.uneditable-input.span3{width:256px}input.span2,textarea.span2,.uneditable-input.span2{width:156px}input.span1,textarea.span1,.uneditable-input.span1{width:56px}.thumbnails{margin-left:-30px}.thumbnails>li{margin-left:30px}.row-fluid .thumbnails{margin-left:0}}@media(min-width:768px) and (max-width:979px){.row{margin-left:-20px;*zoom:1}.row:before,.row:after{display:table;line-height:0;content:""}.row:after{clear:both}[class*="span"]{float:left;min-height:1px;margin-left:20px}.container,.navbar-static-top .container,.navbar-fixed-top .container,.navbar-fixed-bottom .container{width:724px}.span12{width:724px}.span11{width:662px}.span10{width:600px}.span9{width:538px}.span8{width:476px}.span7{width:414px}.span6{width:352px}.span5{width:290px}.span4{width:228px}.span3{width:166px}.span2{width:104px}.span1{width:42px}.offset12{margin-left:764px}.offset11{margin-left:702px}.offset10{margin-left:640px}.offset9{margin-left:578px}.offset8{margin-left:516px}.offset7{margin-left:454px}.offset6{margin-left:392px}.offset5{margin-left:330px}.offset4{margin-left:268px}.offset3{margin-left:206px}.offset2{margin-left:144px}.offset1{margin-left:82px}.row-fluid{width:100%;*zoom:1}.row-fluid:before,.row-fluid:after{display:table;line-height:0;content:""}.row-fluid:after{clear:both}.row-fluid [class*="span"]{display:block;float:left;width:100%;min-height:30px;margin-left:2.7624309392265194%;*margin-left:2.709239449864817%;-webkit-box-sizing:border-box;-moz-box-sizing:border-box;box-sizing:border-box}.row-fluid [class*="span"]:first-child{margin-left:0}.row-fluid .controls-row [class*="span"]+[class*="span"]{margin-left:2.7624309392265194%}.row-fluid .span12{width:100%;*width:99.94680851063829%}.row-fluid .span11{width:91.43646408839778%;*width:91.38327259903608%}.row-fluid .span10{width:82.87292817679558%;*width:82.81973668743387%}.row-fluid .span9{width:74.30939226519337%;*width:74.25620077583166%}.row-fluid .span8{width:65.74585635359117%;*width:65.69266486422946%}.row-fluid .span7{width:57.18232044198895%;*width:57.12912895262725%}.row-fluid .span6{width:48.61878453038674%;*width:48.56559304102504%}.row-fluid .span5{width:40.05524861878453%;*width:40.00205712942283%}.row-fluid .span4{width:31.491712707182323%;*width:31.43852121782062%}.row-fluid .span3{width:22.92817679558011%;*width:22.87498530621841%}.row-fluid .span2{width:14.3646408839779%;*width:14.311449394616199%}.row-fluid .span1{width:5.801104972375691%;*width:5.747913483013988%}.row-fluid .offset12{margin-left:105.52486187845304%;*margin-left:105.41847889972962%}.row-fluid .offset12:first-child{margin-left:102.76243093922652%;*margin-left:102.6560479605031%}.row-fluid .offset11{margin-left:96.96132596685082%;*margin-left:96.8549429881274%}.row-fluid .offset11:first-child{margin-left:94.1988950276243%;*margin-left:94.09251204890089%}.row-fluid .offset10{margin-left:88.39779005524862%;*margin-left:88.2914070765252%}.row-fluid .offset10:first-child{margin-left:85.6353591160221%;*margin-left:85.52897613729868%}.row-fluid .offset9{margin-left:79.8342541436464%;*margin-left:79.72787116492299%}.row-fluid .offset9:first-child{margin-left:77.07182320441989%;*margin-left:76.96544022569647%}.row-fluid .offset8{margin-left:71.2707182320442%;*margin-left:71.16433525332079%}.row-fluid .offset8:first-child{margin-left:68.50828729281768%;*margin-left:68.40190431409427%}.row-fluid .offset7{margin-left:62.70718232044199%;*margin-left:62.600799341718584%}.row-fluid .offset7:first-child{margin-left:59.94475138121547%;*margin-left:59.838368402492065%}.row-fluid .offset6{margin-left:54.14364640883978%;*margin-left:54.037263430116376%}.row-fluid .offset6:first-child{margin-left:51.38121546961326%;*margin-left:51.27483249088986%}.row-fluid .offset5{margin-left:45.58011049723757%;*margin-left:45.47372751851417%}.row-fluid .offset5:first-child{margin-left:42.81767955801105%;*margin-left:42.71129657928765%}.row-fluid .offset4{margin-left:37.01657458563536%;*margin-left:36.91019160691196%}.row-fluid .offset4:first-child{margin-left:34.25414364640884%;*margin-left:34.14776066768544%}.row-fluid .offset3{margin-left:28.45303867403315%;*margin-left:28.346655695309746%}.row-fluid .offset3:first-child{margin-left:25.69060773480663%;*margin-left:25.584224756083227%}.row-fluid .offset2{margin-left:19.88950276243094%;*margin-left:19.783119783707537%}.row-fluid .offset2:first-child{margin-left:17.12707182320442%;*margin-left:17.02068884448102%}.row-fluid .offset1{margin-left:11.32596685082873%;*margin-left:11.219583872105325%}.row-fluid .offset1:first-child{margin-left:8.56353591160221%;*margin-left:8.457152932878806%}input,textarea,.uneditable-input{margin-left:0}.controls-row [class*="span"]+[class*="span"]{margin-left:20px}input.span12,textarea.span12,.uneditable-input.span12{width:710px}input.span11,textarea.span11,.uneditable-input.span11{width:648px}input.span10,textarea.span10,.uneditable-input.span10{width:586px}input.span9,textarea.span9,.uneditable-input.span9{width:524px}input.span8,textarea.span8,.uneditable-input.span8{width:462px}input.span7,textarea.span7,.uneditable-input.span7{width:400px}input.span6,textarea.span6,.uneditable-input.span6{width:338px}input.span5,textarea.span5,.uneditable-input.span5{width:276px}input.span4,textarea.span4,.uneditable-input.span4{width:214px}input.span3,textarea.span3,.uneditable-input.span3{width:152px}input.span2,textarea.span2,.uneditable-input.span2{width:90px}input.span1,textarea.span1,.uneditable-input.span1{width:28px}}@media(max-width:767px){body{padding-right:20px;padding-left:20px}.navbar-fixed-top,.navbar-fixed-bottom,.navbar-static-top{margin-right:-20px;margin-left:-20px}.container-fluid{padding:0}.dl-horizontal dt{float:none;width:auto;clear:none;text-align:left}.dl-horizontal dd{margin-left:0}.container{width:auto}.row-fluid{width:100%}.row,.thumbnails{margin-left:0}.thumbnails>li{float:none;margin-left:0}[class*="span"],.uneditable-input[class*="span"],.row-fluid [class*="span"]{display:block;float:none;width:100%;margin-left:0;-webkit-box-sizing:border-box;-moz-box-sizing:border-box;box-sizing:border-box}.span12,.row-fluid .span12{width:100%;-webkit-box-sizing:border-box;-moz-box-sizing:border-box;box-sizing:border-box}.row-fluid [class*="offset"]:first-child{margin-left:0}.input-large,.input-xlarge,.input-xxlarge,input[class*="span"],select[class*="span"],textarea[class*="span"],.uneditable-input{display:block;width:100%;min-height:30px;-webkit-box-sizing:border-box;-moz-box-sizing:border-box;box-sizing:border-box}.input-prepend input,.input-append input,.input-prepend input[class*="span"],.input-append input[class*="span"]{display:inline-block;width:auto}.controls-row [class*="span"]+[class*="span"]{margin-left:0}.modal{position:fixed;top:20px;right:20px;left:20px;width:auto;margin:0}.modal.fade{top:-100px}.modal.fade.in{top:20px}}@media(max-width:480px){.nav-collapse{-webkit-transform:translate3d(0,0,0)}.page-header h1 small{display:block;line-height:20px}input[type="checkbox"],input[type="radio"]{border:1px solid #ccc}.form-horizontal .control-label{float:none;width:auto;padding-top:0;text-align:left}.form-horizontal .controls{margin-left:0}.form-horizontal .control-list{padding-top:0}.form-horizontal .form-actions{padding-right:10px;padding-left:10px}.media .pull-left,.media .pull-right{display:block;float:none;margin-bottom:10px}.media-object{margin-right:0;margin-left:0}.modal{top:10px;right:10px;left:10px}.modal-header .close{padding:10px;margin:-10px}.carousel-caption{position:static}}@media(max-width:979px){body{padding-top:0}.navbar-fixed-top,.navbar-fixed-bottom{position:static}.navbar-fixed-top{margin-bottom:20px}.navbar-fixed-bottom{margin-top:20px}.navbar-fixed-top .navbar-inner,.navbar-fixed-bottom .navbar-inner{padding:5px}.navbar .container{width:auto;padding:0}.navbar .brand{padding-right:10px;padding-left:10px;margin:0 0 0 -5px}.nav-collapse{clear:both}.nav-collapse .nav{float:none;margin:0 0 10px}.nav-collapse .nav>li{float:none}.nav-collapse .nav>li>a{margin-bottom:2px}.nav-collapse .nav>.divider-vertical{display:none}.nav-collapse .nav .nav-header{color:#777;text-shadow:none}.nav-collapse .nav>li>a,.nav-collapse .dropdown-menu a{padding:9px 15px;font-weight:bold;color:#777;-webkit-border-radius:3px;-moz-border-radius:3px;border-radius:3px}.nav-collapse .btn{padding:4px 10px 4px;font-weight:normal;-webkit-border-radius:4px;-moz-border-radius:4px;border-radius:4px}.nav-collapse .dropdown-menu li+li a{margin-bottom:2px}.nav-collapse .nav>li>a:hover,.nav-collapse .nav>li>a:focus,.nav-collapse .dropdown-menu a:hover,.nav-collapse .dropdown-menu a:focus{background-color:#f2f2f2}.navbar-inverse .nav-collapse .nav>li>a,.navbar-inverse .nav-collapse .dropdown-menu a{color:#999}.navbar-inverse .nav-collapse .nav>li>a:hover,.navbar-inverse .nav-collapse .nav>li>a:focus,.navbar-inverse .nav-collapse .dropdown-menu a:hover,.navbar-inverse .nav-collapse .dropdown-menu a:focus{background-color:#111}.nav-collapse.in .btn-group{padding:0;margin-top:5px}.nav-collapse .dropdown-menu{position:static;top:auto;left:auto;display:none;float:none;max-width:none;padding:0;margin:0 15px;background-color:transparent;border:0;-webkit-border-radius:0;-moz-border-radius:0;border-radius:0;-webkit-box-shadow:none;-moz-box-shadow:none;box-shadow:none}.nav-collapse .open>.dropdown-menu{display:block}.nav-collapse .dropdown-menu:before,.nav-collapse .dropdown-menu:after{display:none}.nav-collapse .dropdown-menu .divider{display:none}.nav-collapse .nav>li>.dropdown-menu:before,.nav-collapse .nav>li>.dropdown-menu:after{display:none}.nav-collapse .navbar-form,.nav-collapse .navbar-search{float:none;padding:10px 15px;margin:10px 0;border-top:1px solid #f2f2f2;border-bottom:1px solid #f2f2f2;-webkit-box-shadow:inset 0 1px 0 rgba(255,255,255,0.1),0 1px 0 rgba(255,255,255,0.1);-moz-box-shadow:inset 0 1px 0 rgba(255,255,255,0.1),0 1px 0 rgba(255,255,255,0.1);box-shadow:inset 0 1px 0 rgba(255,255,255,0.1),0 1px 0 rgba(255,255,255,0.1)}.navbar-inverse .nav-collapse .navbar-form,.navbar-inverse .nav-collapse .navbar-search{border-top-color:#111;border-bottom-color:#111}.navbar .nav-collapse .nav.pull-right{float:none;margin-left:0}.nav-collapse,.nav-collapse.collapse{height:0;overflow:hidden}.navbar .btn-navbar{display:block}.navbar-static .navbar-inner{padding-right:10px;padding-left:10px}}@media(min-width:980px){.nav-collapse.collapse{height:auto!important;overflow:visible!important}} \ No newline at end of file diff --git a/themes/freemind/source/css/bootstrap.css.map b/themes/freemind/source/css/bootstrap.css.map new file mode 100644 index 0000000..6c0461b --- /dev/null +++ b/themes/freemind/source/css/bootstrap.css.map @@ -0,0 +1 @@ +{"version":3,"sources":["less/normalize.less","less/print.less","less/glyphicons.less","less/scaffolding.less","less/mixins/vendor-prefixes.less","less/variables.less","less/mixins/tab-focus.less","less/thumbnails.less","less/carousel.less","less/mixins/image.less","less/type.less","less/mixins/text-emphasis.less","less/mixins/background-variant.less","less/mixins/text-overflow.less","less/code.less","less/grid.less","less/mixins/grid.less","less/mixins/grid-framework.less","less/tables.less","less/mixins/table-row.less","less/forms.less","less/mixins/forms.less","less/buttons.less","less/mixins/buttons.less","less/button-groups.less","less/component-animations.less","less/dropdowns.less","less/mixins/nav-divider.less","less/mixins/reset-filter.less","less/mixins/border-radius.less","less/input-groups.less","less/navs.less","less/navbar.less","less/mixins/nav-vertical-align.less","less/utilities.less","less/breadcrumbs.less","less/pagination.less","less/mixins/pagination.less","less/pager.less","less/labels.less","less/mixins/labels.less","less/badges.less","less/jumbotron.less","less/alerts.less","less/mixins/alerts.less","less/progress-bars.less","less/mixins/progress-bar.less","less/media.less","less/list-group.less","less/mixins/list-group.less","less/panels.less","less/mixins/panels.less","less/responsive-embed.less","less/wells.less","less/close.less","less/mixins/opacity.less","less/modals.less","less/tooltip.less","less/popovers.less","less/mixins/clearfix.less","less/mixins/center-block.less","less/mixins/hide-text.less","less/responsive-utilities.less","less/mixins/responsive-visibility.less","less/386.less"],"names":[],"mappings":"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","sourcesContent":["/*! normalize.css v3.0.2 | MIT License | git.io/normalize */\n\n//\n// 1. Set default font family to sans-serif.\n// 2. Prevent iOS text size adjust after orientation change, without disabling\n// user zoom.\n//\n\nhtml {\n font-family: sans-serif; // 1\n -ms-text-size-adjust: 100%; // 2\n -webkit-text-size-adjust: 100%; // 2\n}\n\n//\n// Remove default margin.\n//\n\nbody {\n margin: 0;\n}\n\n// HTML5 display definitions\n// ==========================================================================\n\n//\n// Correct `block` display not defined for any HTML5 element in IE 8/9.\n// Correct `block` display not defined for `details` or `summary` in IE 10/11\n// and Firefox.\n// Correct `block` display not defined for `main` in IE 11.\n//\n\narticle,\naside,\ndetails,\nfigcaption,\nfigure,\nfooter,\nheader,\nhgroup,\nmain,\nmenu,\nnav,\nsection,\nsummary {\n display: block;\n}\n\n//\n// 1. Correct `inline-block` display not defined in IE 8/9.\n// 2. Normalize vertical alignment of `progress` in Chrome, Firefox, and Opera.\n//\n\naudio,\ncanvas,\nprogress,\nvideo {\n display: inline-block; // 1\n vertical-align: baseline; // 2\n}\n\n//\n// Prevent modern browsers from displaying `audio` without controls.\n// Remove excess height in iOS 5 devices.\n//\n\naudio:not([controls]) {\n display: none;\n height: 0;\n}\n\n//\n// Address `[hidden]` styling not present in IE 8/9/10.\n// Hide the `template` element in IE 8/9/11, Safari, and Firefox < 22.\n//\n\n[hidden],\ntemplate {\n display: none;\n}\n\n// Links\n// ==========================================================================\n\n//\n// Remove the gray background color from active links in IE 10.\n//\n\na {\n background-color: transparent;\n}\n\n//\n// Improve readability when focused and also mouse hovered in all browsers.\n//\n\na:active,\na:hover {\n outline: 0;\n}\n\n// Text-level semantics\n// ==========================================================================\n\n//\n// Address styling not present in IE 8/9/10/11, Safari, and Chrome.\n//\n\nabbr[title] {\n border-bottom: 1px dotted;\n}\n\n//\n// Address style set to `bolder` in Firefox 4+, Safari, and Chrome.\n//\n\nb,\nstrong {\n font-weight: normal;\n}\n\n//\n// Address styling not present in Safari and Chrome.\n//\n\ndfn {\n font-style: normal;\n}\n\n//\n// Address variable `h1` font-size and margin within `section` and `article`\n// contexts in Firefox 4+, Safari, and Chrome.\n//\n\nh1 {\n font-size: @font-size-base;\n margin: 0;\n}\n\n//\n// Address styling not present in IE 8/9.\n//\n\nmark {\n background: #ff0;\n color: #000;\n}\n\n//\n// Address inconsistent and variable font size in all browsers.\n//\n\nsmall {\n font-size: @font-size-base;\n}\n\n//\n// Prevent `sub` and `sup` affecting `line-height` in all browsers.\n//\n\nsub,\nsup {\n font-size: @font-size-base;\n line-height: 0;\n position: relative;\n vertical-align: baseline;\n}\n\nsup {\n top: -0.5em;\n}\n\nsub {\n bottom: -0.25em;\n}\n\n// Embedded content\n// ==========================================================================\n\n//\n// Remove border when inside `a` element in IE 8/9/10.\n//\n\nimg {\n border: 0;\n}\n\n//\n// Correct overflow not hidden in IE 9/10/11.\n//\n\nsvg:not(:root) {\n overflow: hidden;\n}\n\n// Grouping content\n// ==========================================================================\n\n//\n// Address margin not present in IE 8/9 and Safari.\n//\n\nfigure {\n margin: 1em 40px;\n}\n\n//\n// Address differences between Firefox and other browsers.\n//\n\nhr {\n -moz-box-sizing: content-box;\n box-sizing: content-box;\n height: 0;\n}\n\n//\n// Contain overflow in all browsers.\n//\n\npre {\n overflow: auto;\n}\n\n//\n// Address odd `em`-unit font size rendering in all browsers.\n//\n\ncode,\nkbd,\npre,\nsamp {\n font-family: monospace, monospace;\n font-size: @font-size-base;\n}\n\n// Forms\n// ==========================================================================\n\n//\n// Known limitation: by default, Chrome and Safari on OS X allow very limited\n// styling of `select`, unless a `border` property is set.\n//\n\n//\n// 1. Correct color not being inherited.\n// Known issue: affects color of disabled elements.\n// 2. Correct font properties not being inherited.\n// 3. Address margins set differently in Firefox 4+, Safari, and Chrome.\n//\n\nbutton,\ninput,\noptgroup,\nselect,\ntextarea {\n color: inherit; // 1\n font: inherit; // 2\n margin: 0; // 3\n}\n\n//\n// Address `overflow` set to `hidden` in IE 8/9/10/11.\n//\n\nbutton {\n overflow: visible;\n}\n\n//\n// Address inconsistent `text-transform` inheritance for `button` and `select`.\n// All other form control elements do not inherit `text-transform` values.\n// Correct `button` style inheritance in Firefox, IE 8/9/10/11, and Opera.\n// Correct `select` style inheritance in Firefox.\n//\n\nbutton,\nselect {\n text-transform: none;\n}\n\n//\n// 1. Avoid the WebKit bug in Android 4.0.* where (2) destroys native `audio`\n// and `video` controls.\n// 2. Correct inability to style clickable `input` types in iOS.\n// 3. Improve usability and consistency of cursor style between image-type\n// `input` and others.\n//\n\nbutton,\nhtml input[type=\"button\"], // 1\ninput[type=\"reset\"],\ninput[type=\"submit\"] {\n -webkit-appearance: button; // 2\n}\n\n//\n// Re-set default cursor for disabled elements.\n//\n\nbutton[disabled],\nhtml input[disabled] {\n cursor: default;\n}\n\n//\n// Remove inner padding and border in Firefox 4+.\n//\n\nbutton::-moz-focus-inner,\ninput::-moz-focus-inner {\n border: 0;\n padding: 0;\n}\n\n//\n// Address Firefox 4+ setting `line-height` on `input` using `!important` in\n// the UA stylesheet.\n//\n\ninput {\n line-height: normal;\n}\n\n//\n// It's recommended that you don't attempt to style these elements.\n// Firefox's implementation doesn't respect box-sizing, padding, or width.\n//\n// 1. Address box sizing set to `content-box` in IE 8/9/10.\n// 2. Remove excess padding in IE 8/9/10.\n//\n\ninput[type=\"checkbox\"],\ninput[type=\"radio\"] {\n box-sizing: border-box; // 1\n padding: 0; // 2\n}\n\n//\n// Fix the cursor style for Chrome's increment/decrement buttons. For certain\n// `font-size` values of the `input`, it causes the cursor style of the\n// decrement button to change from `default` to `text`.\n//\n\ninput[type=\"number\"]::-webkit-inner-spin-button,\ninput[type=\"number\"]::-webkit-outer-spin-button {\n height: auto;\n}\n\n//\n// 1. Address `appearance` set to `searchfield` in Safari and Chrome.\n// 2. Address `box-sizing` set to `border-box` in Safari and Chrome\n// (include `-moz` to future-proof).\n//\n\ninput[type=\"search\"] {\n -webkit-appearance: textfield; // 1\n -moz-box-sizing: content-box;\n -webkit-box-sizing: content-box; // 2\n box-sizing: content-box;\n}\n\n//\n// Remove inner padding and search cancel button in Safari and Chrome on OS X.\n// Safari (but not Chrome) clips the cancel button when the search input has\n// padding (and `textfield` appearance).\n//\n\ninput[type=\"search\"]::-webkit-search-cancel-button,\ninput[type=\"search\"]::-webkit-search-decoration {\n -webkit-appearance: none;\n}\n\n//\n// Define consistent border, margin, and padding.\n//\n\nfieldset {\n border: 1px solid #c0c0c0;\n margin: 0 2px;\n padding: 0.35em 0.625em 0.75em;\n}\n\n//\n// 1. Correct `color` not being inherited in IE 8/9/10/11.\n// 2. Remove padding so people aren't caught out if they zero out fieldsets.\n//\n\nlegend {\n border: 0; // 1\n padding: 0; // 2\n}\n\n//\n// Remove default vertical scrollbar in IE 8/9/10/11.\n//\n\ntextarea {\n overflow: auto;\n}\n\n//\n// Don't inherit the `font-weight` (applied by a rule above).\n// NOTE: the default cannot safely be changed in Chrome and Safari on OS X.\n//\n\noptgroup {\n font-weight: normal;\n}\n\n// Tables\n// ==========================================================================\n\n//\n// Remove most spacing between table cells.\n//\n\ntable {\n border-collapse: collapse;\n border-spacing: 0;\n}\n\nli,ul {\n list-style-type: square;\n}\n\ntd,\nth {\n padding: 0;\n}\n","/*! Source: https://github.com/h5bp/html5-boilerplate/blob/master/src/css/main.css */\n\n// ==========================================================================\n// Print styles.\n// Inlined to avoid the additional HTTP request: h5bp.com/r\n// ==========================================================================\n\n@media print {\n *,\n *:before,\n *:after {\n background: transparent !important;\n color: #000 !important; // Black prints faster: h5bp.com/s\n box-shadow: none !important;\n text-shadow: none !important;\n }\n\n a,\n a:visited {\n text-decoration: underline;\n }\n\n a[href]:after {\n content: \" (\" attr(href) \")\";\n }\n\n abbr[title]:after {\n content: \" (\" attr(title) \")\";\n }\n\n // Don't show links that are fragment identifiers,\n // or use the `javascript:` pseudo protocol\n a[href^=\"#\"]:after,\n a[href^=\"javascript:\"]:after {\n content: \"\";\n }\n\n pre,\n blockquote {\n border: 1px solid #999;\n page-break-inside: avoid;\n }\n\n thead {\n display: table-header-group; // h5bp.com/t\n }\n\n tr,\n img {\n page-break-inside: avoid;\n }\n\n img {\n max-width: 100% !important;\n }\n\n p,\n h2,\n h3 {\n orphans: 3;\n widows: 3;\n }\n\n h2,\n h3 {\n page-break-after: avoid;\n }\n\n // Bootstrap specific changes start\n //\n // Chrome (OSX) fix for https://github.com/twbs/bootstrap/issues/11245\n // Once fixed, we can just straight up remove this.\n select {\n background: #fff !important;\n }\n\n // Bootstrap components\n .navbar {\n display: none;\n }\n .btn,\n .dropup > .btn {\n > .caret {\n border-top-color: #000 !important;\n }\n }\n .label {\n border: 1px solid #000;\n }\n\n .table {\n border-collapse: collapse !important;\n\n td,\n th {\n background-color: #fff !important;\n }\n }\n .table-bordered {\n th,\n td {\n border: 1px solid #ddd !important;\n }\n }\n\n // Bootstrap specific changes end\n}\n","//\n// Glyphicons for Bootstrap\n//\n// Since icons are fonts, they can be placed anywhere text is placed and are\n// thus automatically sized to match the surrounding child. To use, create an\n// inline element with the appropriate classes, like so:\n//\n// Star\n\n// Import the fonts\n@font-face {\n font-family: 'Glyphicons Halflings';\n src: url('@{icon-font-path}@{icon-font-name}.eot');\n src: url('@{icon-font-path}@{icon-font-name}.eot?#iefix') format('embedded-opentype'),\n url('@{icon-font-path}@{icon-font-name}.woff2') format('woff2'),\n url('@{icon-font-path}@{icon-font-name}.woff') format('woff'),\n url('@{icon-font-path}@{icon-font-name}.ttf') format('truetype'),\n url('@{icon-font-path}@{icon-font-name}.svg#@{icon-font-svg-id}') format('svg');\n}\n\n// Catchall baseclass\n.glyphicon {\n position: relative;\n top: 1px;\n display: inline-block;\n font-family: 'Glyphicons Halflings';\n font-style: normal;\n font-weight: normal;\n line-height: 1;\n -webkit-font-smoothing: antialiased;\n -moz-osx-font-smoothing: grayscale;\n}\n\n// Individual icons\n.glyphicon-asterisk { &:before { content: \"\\2a\"; } }\n.glyphicon-plus { &:before { content: \"\\2b\"; } }\n.glyphicon-euro,\n.glyphicon-eur { &:before { content: \"\\20ac\"; } }\n.glyphicon-minus { &:before { content: \"\\2212\"; } }\n.glyphicon-cloud { &:before { content: \"\\2601\"; } }\n.glyphicon-envelope { &:before { content: \"\\2709\"; } }\n.glyphicon-pencil { &:before { content: \"\\270f\"; } }\n.glyphicon-glass { &:before { content: \"\\e001\"; } }\n.glyphicon-music { &:before { content: \"\\e002\"; } }\n.glyphicon-search { &:before { content: \"\\e003\"; } }\n.glyphicon-heart { &:before { content: \"\\e005\"; } }\n.glyphicon-star { &:before { content: \"\\e006\"; } }\n.glyphicon-star-empty { &:before { content: \"\\e007\"; } }\n.glyphicon-user { &:before { content: \"\\e008\"; } }\n.glyphicon-film { &:before { content: \"\\e009\"; } }\n.glyphicon-th-large { &:before { content: \"\\e010\"; } }\n.glyphicon-th { &:before { content: \"\\e011\"; } }\n.glyphicon-th-list { &:before { content: \"\\e012\"; } }\n.glyphicon-ok { &:before { content: \"\\e013\"; } }\n.glyphicon-remove { &:before { content: \"\\e014\"; } }\n.glyphicon-zoom-in { &:before { content: \"\\e015\"; } }\n.glyphicon-zoom-out { &:before { content: \"\\e016\"; } }\n.glyphicon-off { &:before { content: \"\\e017\"; } }\n.glyphicon-signal { &:before { content: \"\\e018\"; } }\n.glyphicon-cog { &:before { content: \"\\e019\"; } }\n.glyphicon-trash { &:before { content: \"\\e020\"; } }\n.glyphicon-home { &:before { content: \"\\e021\"; } }\n.glyphicon-file { &:before { content: \"\\e022\"; } }\n.glyphicon-time { &:before { content: \"\\e023\"; } }\n.glyphicon-road { &:before { content: \"\\e024\"; } }\n.glyphicon-download-alt { &:before { content: \"\\e025\"; } }\n.glyphicon-download { &:before { content: \"\\e026\"; } }\n.glyphicon-upload { &:before { content: \"\\e027\"; } }\n.glyphicon-inbox { &:before { content: \"\\e028\"; } }\n.glyphicon-play-circle { &:before { content: \"\\e029\"; } }\n.glyphicon-repeat { &:before { content: \"\\e030\"; } }\n.glyphicon-refresh { &:before { content: \"\\e031\"; } }\n.glyphicon-list-alt { &:before { content: \"\\e032\"; } }\n.glyphicon-lock { &:before { content: \"\\e033\"; } }\n.glyphicon-flag { &:before { content: \"\\e034\"; } }\n.glyphicon-headphones { &:before { content: \"\\e035\"; } }\n.glyphicon-volume-off { &:before { content: \"\\e036\"; } }\n.glyphicon-volume-down { &:before { content: \"\\e037\"; } }\n.glyphicon-volume-up { &:before { content: \"\\e038\"; } }\n.glyphicon-qrcode { &:before { content: \"\\e039\"; } }\n.glyphicon-barcode { &:before { content: \"\\e040\"; } }\n.glyphicon-tag { &:before { content: \"\\e041\"; } }\n.glyphicon-tags { &:before { content: \"\\e042\"; } }\n.glyphicon-book { &:before { content: \"\\e043\"; } }\n.glyphicon-bookmark { &:before { content: \"\\e044\"; } }\n.glyphicon-print { &:before { content: \"\\e045\"; } }\n.glyphicon-camera { &:before { content: \"\\e046\"; } }\n.glyphicon-font { &:before { content: \"\\e047\"; } }\n.glyphicon-bold { &:before { content: \"\\e048\"; } }\n.glyphicon-italic { &:before { content: \"\\e049\"; } }\n.glyphicon-text-height { &:before { content: \"\\e050\"; } }\n.glyphicon-text-width { &:before { content: \"\\e051\"; } }\n.glyphicon-align-left { &:before { content: \"\\e052\"; } }\n.glyphicon-align-center { &:before { content: \"\\e053\"; } }\n.glyphicon-align-right { &:before { content: \"\\e054\"; } }\n.glyphicon-align-justify { &:before { content: \"\\e055\"; } }\n.glyphicon-list { &:before { content: \"\\e056\"; } }\n.glyphicon-indent-left { &:before { content: \"\\e057\"; } }\n.glyphicon-indent-right { &:before { content: \"\\e058\"; } }\n.glyphicon-facetime-video { &:before { content: \"\\e059\"; } }\n.glyphicon-picture { &:before { content: \"\\e060\"; } }\n.glyphicon-map-marker { &:before { content: \"\\e062\"; } }\n.glyphicon-adjust { &:before { content: \"\\e063\"; } }\n.glyphicon-tint { &:before { content: \"\\e064\"; } }\n.glyphicon-edit { &:before { content: \"\\e065\"; } }\n.glyphicon-share { &:before { content: \"\\e066\"; } }\n.glyphicon-check { &:before { content: \"\\e067\"; } }\n.glyphicon-move { &:before { content: \"\\e068\"; } }\n.glyphicon-step-backward { &:before { content: \"\\e069\"; } }\n.glyphicon-fast-backward { &:before { content: \"\\e070\"; } }\n.glyphicon-backward { &:before { content: \"\\e071\"; } }\n.glyphicon-play { &:before { content: \"\\e072\"; } }\n.glyphicon-pause { &:before { content: \"\\e073\"; } }\n.glyphicon-stop { &:before { content: \"\\e074\"; } }\n.glyphicon-forward { &:before { content: \"\\e075\"; } }\n.glyphicon-fast-forward { &:before { content: \"\\e076\"; } }\n.glyphicon-step-forward { &:before { content: \"\\e077\"; } }\n.glyphicon-eject { &:before { content: \"\\e078\"; } }\n.glyphicon-chevron-left { &:before { content: \"\\e079\"; } }\n.glyphicon-chevron-right { &:before { content: \"\\e080\"; } }\n.glyphicon-plus-sign { &:before { content: \"\\e081\"; } }\n.glyphicon-minus-sign { &:before { content: \"\\e082\"; } }\n.glyphicon-remove-sign { &:before { content: \"\\e083\"; } }\n.glyphicon-ok-sign { &:before { content: \"\\e084\"; } }\n.glyphicon-question-sign { &:before { content: \"\\e085\"; } }\n.glyphicon-info-sign { &:before { content: \"\\e086\"; } }\n.glyphicon-screenshot { &:before { content: \"\\e087\"; } }\n.glyphicon-remove-circle { &:before { content: \"\\e088\"; } }\n.glyphicon-ok-circle { &:before { content: \"\\e089\"; } }\n.glyphicon-ban-circle { &:before { content: \"\\e090\"; } }\n.glyphicon-arrow-left { &:before { content: \"\\e091\"; } }\n.glyphicon-arrow-right { &:before { content: \"\\e092\"; } }\n.glyphicon-arrow-up { &:before { content: \"\\e093\"; } }\n.glyphicon-arrow-down { &:before { content: \"\\e094\"; } }\n.glyphicon-share-alt { &:before { content: \"\\e095\"; } }\n.glyphicon-resize-full { &:before { content: \"\\e096\"; } }\n.glyphicon-resize-small { &:before { content: \"\\e097\"; } }\n.glyphicon-exclamation-sign { &:before { content: \"\\e101\"; } }\n.glyphicon-gift { &:before { content: \"\\e102\"; } }\n.glyphicon-leaf { &:before { content: \"\\e103\"; } }\n.glyphicon-fire { &:before { content: \"\\e104\"; } }\n.glyphicon-eye-open { &:before { content: \"\\e105\"; } }\n.glyphicon-eye-close { &:before { content: \"\\e106\"; } }\n.glyphicon-warning-sign { &:before { content: \"\\e107\"; } }\n.glyphicon-plane { &:before { content: \"\\e108\"; } }\n.glyphicon-calendar { &:before { content: \"\\e109\"; } }\n.glyphicon-random { &:before { content: \"\\e110\"; } }\n.glyphicon-comment { &:before { content: \"\\e111\"; } }\n.glyphicon-magnet { &:before { content: \"\\e112\"; } }\n.glyphicon-chevron-up { &:before { content: \"\\e113\"; } }\n.glyphicon-chevron-down { &:before { content: \"\\e114\"; } }\n.glyphicon-retweet { &:before { content: \"\\e115\"; } }\n.glyphicon-shopping-cart { &:before { content: \"\\e116\"; } }\n.glyphicon-folder-close { &:before { content: \"\\e117\"; } }\n.glyphicon-folder-open { &:before { content: \"\\e118\"; } }\n.glyphicon-resize-vertical { &:before { content: \"\\e119\"; } }\n.glyphicon-resize-horizontal { &:before { content: \"\\e120\"; } }\n.glyphicon-hdd { &:before { content: \"\\e121\"; } }\n.glyphicon-bullhorn { &:before { content: \"\\e122\"; } }\n.glyphicon-bell { &:before { content: \"\\e123\"; } }\n.glyphicon-certificate { &:before { content: \"\\e124\"; } }\n.glyphicon-thumbs-up { &:before { content: \"\\e125\"; } }\n.glyphicon-thumbs-down { &:before { content: \"\\e126\"; } }\n.glyphicon-hand-right { &:before { content: \"\\e127\"; } }\n.glyphicon-hand-left { &:before { content: \"\\e128\"; } }\n.glyphicon-hand-up { &:before { content: \"\\e129\"; } }\n.glyphicon-hand-down { &:before { content: \"\\e130\"; } }\n.glyphicon-circle-arrow-right { &:before { content: \"\\e131\"; } }\n.glyphicon-circle-arrow-left { &:before { content: \"\\e132\"; } }\n.glyphicon-circle-arrow-up { &:before { content: \"\\e133\"; } }\n.glyphicon-circle-arrow-down { &:before { content: \"\\e134\"; } }\n.glyphicon-globe { &:before { content: \"\\e135\"; } }\n.glyphicon-wrench { &:before { content: \"\\e136\"; } }\n.glyphicon-tasks { &:before { content: \"\\e137\"; } }\n.glyphicon-filter { &:before { content: \"\\e138\"; } }\n.glyphicon-briefcase { &:before { content: \"\\e139\"; } }\n.glyphicon-fullscreen { &:before { content: \"\\e140\"; } }\n.glyphicon-dashboard { &:before { content: \"\\e141\"; } }\n.glyphicon-paperclip { &:before { content: \"\\e142\"; } }\n.glyphicon-heart-empty { &:before { content: \"\\e143\"; } }\n.glyphicon-link { &:before { content: \"\\e144\"; } }\n.glyphicon-phone { &:before { content: \"\\e145\"; } }\n.glyphicon-pushpin { &:before { content: \"\\e146\"; } }\n.glyphicon-usd { &:before { content: \"\\e148\"; } }\n.glyphicon-gbp { &:before { content: \"\\e149\"; } }\n.glyphicon-sort { &:before { content: \"\\e150\"; } }\n.glyphicon-sort-by-alphabet { &:before { content: \"\\e151\"; } }\n.glyphicon-sort-by-alphabet-alt { &:before { content: \"\\e152\"; } }\n.glyphicon-sort-by-order { &:before { content: \"\\e153\"; } }\n.glyphicon-sort-by-order-alt { &:before { content: \"\\e154\"; } }\n.glyphicon-sort-by-attributes { &:before { content: \"\\e155\"; } }\n.glyphicon-sort-by-attributes-alt { &:before { content: \"\\e156\"; } }\n.glyphicon-unchecked { &:before { content: \"\\e157\"; } }\n.glyphicon-expand { &:before { content: \"\\e158\"; } }\n.glyphicon-collapse-down { &:before { content: \"\\e159\"; } }\n.glyphicon-collapse-up { &:before { content: \"\\e160\"; } }\n.glyphicon-log-in { &:before { content: \"\\e161\"; } }\n.glyphicon-flash { &:before { content: \"\\e162\"; } }\n.glyphicon-log-out { &:before { content: \"\\e163\"; } }\n.glyphicon-new-window { &:before { content: \"\\e164\"; } }\n.glyphicon-record { &:before { content: \"\\e165\"; } }\n.glyphicon-save { &:before { content: \"\\e166\"; } }\n.glyphicon-open { &:before { content: \"\\e167\"; } }\n.glyphicon-saved { &:before { content: \"\\e168\"; } }\n.glyphicon-import { &:before { content: \"\\e169\"; } }\n.glyphicon-export { &:before { content: \"\\e170\"; } }\n.glyphicon-send { &:before { content: \"\\e171\"; } }\n.glyphicon-floppy-disk { &:before { content: \"\\e172\"; } }\n.glyphicon-floppy-saved { &:before { content: \"\\e173\"; } }\n.glyphicon-floppy-remove { &:before { content: \"\\e174\"; } }\n.glyphicon-floppy-save { &:before { content: \"\\e175\"; } }\n.glyphicon-floppy-open { &:before { content: \"\\e176\"; } }\n.glyphicon-credit-card { &:before { content: \"\\e177\"; } }\n.glyphicon-transfer { &:before { content: \"\\e178\"; } }\n.glyphicon-cutlery { &:before { content: \"\\e179\"; } }\n.glyphicon-header { &:before { content: \"\\e180\"; } }\n.glyphicon-compressed { &:before { content: \"\\e181\"; } }\n.glyphicon-earphone { &:before { content: \"\\e182\"; } }\n.glyphicon-phone-alt { &:before { content: \"\\e183\"; } }\n.glyphicon-tower { &:before { content: \"\\e184\"; } }\n.glyphicon-stats { &:before { content: \"\\e185\"; } }\n.glyphicon-sd-video { &:before { content: \"\\e186\"; } }\n.glyphicon-hd-video { &:before { content: \"\\e187\"; } }\n.glyphicon-subtitles { &:before { content: \"\\e188\"; } }\n.glyphicon-sound-stereo { &:before { content: \"\\e189\"; } }\n.glyphicon-sound-dolby { &:before { content: \"\\e190\"; } }\n.glyphicon-sound-5-1 { &:before { content: \"\\e191\"; } }\n.glyphicon-sound-6-1 { &:before { content: \"\\e192\"; } }\n.glyphicon-sound-7-1 { &:before { content: \"\\e193\"; } }\n.glyphicon-copyright-mark { &:before { content: \"\\e194\"; } }\n.glyphicon-registration-mark { &:before { content: \"\\e195\"; } }\n.glyphicon-cloud-download { &:before { content: \"\\e197\"; } }\n.glyphicon-cloud-upload { &:before { content: \"\\e198\"; } }\n.glyphicon-tree-conifer { &:before { content: \"\\e199\"; } }\n.glyphicon-tree-deciduous { &:before { content: \"\\e200\"; } }\n.glyphicon-cd { &:before { content: \"\\e201\"; } }\n.glyphicon-save-file { &:before { content: \"\\e202\"; } }\n.glyphicon-open-file { &:before { content: \"\\e203\"; } }\n.glyphicon-level-up { &:before { content: \"\\e204\"; } }\n.glyphicon-copy { &:before { content: \"\\e205\"; } }\n.glyphicon-paste { &:before { content: \"\\e206\"; } }\n// The following 2 Glyphicons are omitted for the time being because\n// they currently use Unicode codepoints that are outside the\n// Basic Multilingual Plane (BMP). Older buggy versions of WebKit can't handle\n// non-BMP codepoints in CSS string escapes, and thus can't display these two icons.\n// Notably, the bug affects some older versions of the Android Browser.\n// More info: https://github.com/twbs/bootstrap/issues/10106\n// .glyphicon-door { &:before { content: \"\\1f6aa\"; } }\n// .glyphicon-key { &:before { content: \"\\1f511\"; } }\n.glyphicon-alert { &:before { content: \"\\e209\"; } }\n.glyphicon-equalizer { &:before { content: \"\\e210\"; } }\n.glyphicon-king { &:before { content: \"\\e211\"; } }\n.glyphicon-queen { &:before { content: \"\\e212\"; } }\n.glyphicon-pawn { &:before { content: \"\\e213\"; } }\n.glyphicon-bishop { &:before { content: \"\\e214\"; } }\n.glyphicon-knight { &:before { content: \"\\e215\"; } }\n.glyphicon-baby-formula { &:before { content: \"\\e216\"; } }\n.glyphicon-tent { &:before { content: \"\\26fa\"; } }\n.glyphicon-blackboard { &:before { content: \"\\e218\"; } }\n.glyphicon-bed { &:before { content: \"\\e219\"; } }\n.glyphicon-apple { &:before { content: \"\\f8ff\"; } }\n.glyphicon-erase { &:before { content: \"\\e221\"; } }\n.glyphicon-hourglass { &:before { content: \"\\231b\"; } }\n.glyphicon-lamp { &:before { content: \"\\e223\"; } }\n.glyphicon-duplicate { &:before { content: \"\\e224\"; } }\n.glyphicon-piggy-bank { &:before { content: \"\\e225\"; } }\n.glyphicon-scissors { &:before { content: \"\\e226\"; } }\n.glyphicon-bitcoin { &:before { content: \"\\e227\"; } }\n.glyphicon-yen { &:before { content: \"\\00a5\"; } }\n.glyphicon-ruble { &:before { content: \"\\20bd\"; } }\n.glyphicon-scale { &:before { content: \"\\e230\"; } }\n.glyphicon-ice-lolly { &:before { content: \"\\e231\"; } }\n.glyphicon-ice-lolly-tasted { &:before { content: \"\\e232\"; } }\n.glyphicon-education { &:before { content: \"\\e233\"; } }\n.glyphicon-option-horizontal { &:before { content: \"\\e234\"; } }\n.glyphicon-option-vertical { &:before { content: \"\\e235\"; } }\n.glyphicon-menu-hamburger { &:before { content: \"\\e236\"; } }\n.glyphicon-modal-window { &:before { content: \"\\e237\"; } }\n.glyphicon-oil { &:before { content: \"\\e238\"; } }\n.glyphicon-grain { &:before { content: \"\\e239\"; } }\n.glyphicon-sunglasses { &:before { content: \"\\e240\"; } }\n.glyphicon-text-size { &:before { content: \"\\e241\"; } }\n.glyphicon-text-color { &:before { content: \"\\e242\"; } }\n.glyphicon-text-background { &:before { content: \"\\e243\"; } }\n.glyphicon-object-align-top { &:before { content: \"\\e244\"; } }\n.glyphicon-object-align-bottom { &:before { content: \"\\e245\"; } }\n.glyphicon-object-align-horizontal{ &:before { content: \"\\e246\"; } }\n.glyphicon-object-align-left { &:before { content: \"\\e247\"; } }\n.glyphicon-object-align-vertical { &:before { content: \"\\e248\"; } }\n.glyphicon-object-align-right { &:before { content: \"\\e249\"; } }\n.glyphicon-triangle-right { &:before { content: \"\\e250\"; } }\n.glyphicon-triangle-left { &:before { content: \"\\e251\"; } }\n.glyphicon-triangle-bottom { &:before { content: \"\\e252\"; } }\n.glyphicon-triangle-top { &:before { content: \"\\e253\"; } }\n.glyphicon-console { &:before { content: \"\\e254\"; } }\n.glyphicon-superscript { &:before { content: \"\\e255\"; } }\n.glyphicon-subscript { &:before { content: \"\\e256\"; } }\n.glyphicon-menu-left { &:before { content: \"\\e257\"; } }\n.glyphicon-menu-right { &:before { content: \"\\e258\"; } }\n.glyphicon-menu-down { &:before { content: \"\\e259\"; } }\n.glyphicon-menu-up { &:before { content: \"\\e260\"; } }\n","//\n// Scaffolding\n// --------------------------------------------------\n@font-face {\n font-family: 'DOS';\n src: url('fonts/Fixedsys500c.eot');\n src: local('☺'), url('fonts/Fixedsys500c.woff') format('woff'), url('fonts/Fixedsys500c.ttf') format('truetype'), url('fonts/Fixedsys500c.svg') format('svg');\n font-weight: normal;\n font-style: normal;\n}\n\n// Reset the box-sizing\n//\n// Heads up! This reset may cause conflicts with some third-party widgets.\n// For recommendations on resolving such conflicts, see\n// http://getbootstrap.com/getting-started/#third-box-sizing\n* {\n .box-sizing(border-box);\n}\n*:before,\n*:after {\n .box-sizing(border-box);\n}\n\n\n// Body reset\n\nhtml {\n font-size: @font-size-base;\n -webkit-tap-highlight-color: @black;\n}\n\nbody {\n font-family: @font-family-base;\n font-size: @font-size-base;\n line-height: @line-height-base;\n color: @text-color;\n background-color: @body-bg;\n}\n\n// Reset fonts for relevant elements\ninput,\nbutton,\nselect,\ntextarea {\n font-family: inherit;\n font-size: inherit;\n line-height: inherit;\n}\n\n\n// Links\n\na {\n color: inherit;\n text-decoration: none;\n\n &:hover,\n &:focus {\n color: @link-hover-color;\n background: @component-active-bg;\n text-decoration: @link-hover-decoration;\n &::first-letter {\n color: @gray;\n }\n }\n\n &:focus {\n .tab-focus();\n }\n}\n\n\n// Figures\n//\n// We reset this here because previously Normalize had no `figure` margins. This\n// ensures we don't break anyone's use of the element.\n\nfigure {\n margin: 0;\n}\n\n\n// Images\n\nimg {\n vertical-align: middle;\n}\n\n// Responsive images (ensure images don't scale beyond their parents)\n.img-responsive {\n .img-responsive();\n}\n\n// Rounded corners\n.img-rounded {\n}\n\n// Image thumbnails\n//\n// Heads up! This is mixin-ed into thumbnails.less for `.thumbnail`.\n.img-thumbnail {\n padding: @thumbnail-padding;\n line-height: @line-height-base;\n background-color: @thumbnail-bg;\n border: @borderWidth solid @thumbnail-border;\n\n // Keep them at most 100% wide\n .img-responsive(inline-block);\n}\n\n// Perfect circle\n.img-circle {\n}\n\n\n// Horizontal rules\n\nhr {\n margin-top: @bs;\n padding-top: @ts;\n border: 0;\n border-top: @borderWidth solid @hr-border;\n}\n\n\n// Only display content to screen readers\n//\n// See: http://a11yproject.com/posts/how-to-hide-content/\n\n.sr-only {\n position: absolute;\n width: 1px;\n height: 1px;\n margin: -1px;\n padding: 0;\n overflow: hidden;\n clip: rect(0,0,0,0);\n border: 0;\n}\n\n// Use in conjunction with .sr-only to only display content when it's focused.\n// Useful for \"Skip to main content\" links; see http://www.w3.org/TR/2013/NOTE-WCAG20-TECHS-20130905/G1\n// Credit: HTML5 Boilerplate\n\n.sr-only-focusable {\n &:active,\n &:focus {\n position: static;\n width: auto;\n height: auto;\n margin: 0;\n overflow: visible;\n clip: auto;\n }\n}\n","// Vendor Prefixes\n//\n// All vendor mixins are deprecated as of v3.2.0 due to the introduction of\n// Autoprefixer in our Gruntfile. They will be removed in v4.\n\n// - Animations\n// - Backface visibility\n// - Box shadow\n// - Box sizing\n// - Content columns\n// - Hyphens\n// - Placeholder text\n// - Transformations\n// - Transitions\n// - User Select\n\n\n// Animations\n.animation(@animation) {\n -webkit-animation: @animation;\n -o-animation: @animation;\n animation: @animation;\n}\n.animation-name(@name) {\n -webkit-animation-name: @name;\n animation-name: @name;\n}\n.animation-duration(@duration) {\n -webkit-animation-duration: @duration;\n animation-duration: @duration;\n}\n.animation-timing-function(@timing-function) {\n -webkit-animation-timing-function: @timing-function;\n animation-timing-function: @timing-function;\n}\n.animation-delay(@delay) {\n -webkit-animation-delay: @delay;\n animation-delay: @delay;\n}\n.animation-iteration-count(@iteration-count) {\n -webkit-animation-iteration-count: @iteration-count;\n animation-iteration-count: @iteration-count;\n}\n.animation-direction(@direction) {\n -webkit-animation-direction: @direction;\n animation-direction: @direction;\n}\n.animation-fill-mode(@fill-mode) {\n -webkit-animation-fill-mode: @fill-mode;\n animation-fill-mode: @fill-mode;\n}\n\n// Backface visibility\n// Prevent browsers from flickering when using CSS 3D transforms.\n// Default value is `visible`, but can be changed to `hidden`\n\n.backface-visibility(@visibility){\n -webkit-backface-visibility: @visibility;\n -moz-backface-visibility: @visibility;\n backface-visibility: @visibility;\n}\n\n// Drop shadows\n//\n// Note: Deprecated `.box-shadow()` as of v3.1.0 since all of Bootstrap's\n// supported browsers that have box shadow capabilities now support it.\n\n.box-shadow(@shadow) {\n -webkit-box-shadow: @shadow; // iOS <4.3 & Android <4.1\n box-shadow: @shadow;\n}\n\n// Box sizing\n.box-sizing(@boxmodel) {\n -webkit-box-sizing: @boxmodel;\n -moz-box-sizing: @boxmodel;\n box-sizing: @boxmodel;\n}\n\n// CSS3 Content Columns\n.content-columns(@column-count; @column-gap: @grid-gutter-width) {\n -webkit-column-count: @column-count;\n -moz-column-count: @column-count;\n column-count: @column-count;\n -webkit-column-gap: @column-gap;\n -moz-column-gap: @column-gap;\n column-gap: @column-gap;\n}\n\n// Optional hyphenation\n.hyphens(@mode: auto) {\n word-wrap: break-word;\n -webkit-hyphens: @mode;\n -moz-hyphens: @mode;\n -ms-hyphens: @mode; // IE10+\n -o-hyphens: @mode;\n hyphens: @mode;\n}\n\n// Placeholder text\n.placeholder(@color: @input-color-placeholder) {\n // Firefox\n &::-moz-placeholder {\n color: @color;\n opacity: 1; // Override Firefox's unusual default opacity; see https://github.com/twbs/bootstrap/pull/11526\n }\n &:-ms-input-placeholder { color: @color; } // Internet Explorer 10+\n &::-webkit-input-placeholder { color: @color; } // Safari and Chrome\n}\n\n// Transformations\n.scale(@ratio) {\n -webkit-transform: scale(@ratio);\n -ms-transform: scale(@ratio); // IE9 only\n -o-transform: scale(@ratio);\n transform: scale(@ratio);\n}\n.scale(@ratioX; @ratioY) {\n -webkit-transform: scale(@ratioX, @ratioY);\n -ms-transform: scale(@ratioX, @ratioY); // IE9 only\n -o-transform: scale(@ratioX, @ratioY);\n transform: scale(@ratioX, @ratioY);\n}\n.scaleX(@ratio) {\n -webkit-transform: scaleX(@ratio);\n -ms-transform: scaleX(@ratio); // IE9 only\n -o-transform: scaleX(@ratio);\n transform: scaleX(@ratio);\n}\n.scaleY(@ratio) {\n -webkit-transform: scaleY(@ratio);\n -ms-transform: scaleY(@ratio); // IE9 only\n -o-transform: scaleY(@ratio);\n transform: scaleY(@ratio);\n}\n.skew(@x; @y) {\n -webkit-transform: skewX(@x) skewY(@y);\n -ms-transform: skewX(@x) skewY(@y); // See https://github.com/twbs/bootstrap/issues/4885; IE9+\n -o-transform: skewX(@x) skewY(@y);\n transform: skewX(@x) skewY(@y);\n}\n.translate(@x; @y) {\n -webkit-transform: translate(@x, @y);\n -ms-transform: translate(@x, @y); // IE9 only\n -o-transform: translate(@x, @y);\n transform: translate(@x, @y);\n}\n.translate3d(@x; @y; @z) {\n -webkit-transform: translate3d(@x, @y, @z);\n transform: translate3d(@x, @y, @z);\n}\n.rotate(@degrees) {\n -webkit-transform: rotate(@degrees);\n -ms-transform: rotate(@degrees); // IE9 only\n -o-transform: rotate(@degrees);\n transform: rotate(@degrees);\n}\n.rotateX(@degrees) {\n -webkit-transform: rotateX(@degrees);\n -ms-transform: rotateX(@degrees); // IE9 only\n -o-transform: rotateX(@degrees);\n transform: rotateX(@degrees);\n}\n.rotateY(@degrees) {\n -webkit-transform: rotateY(@degrees);\n -ms-transform: rotateY(@degrees); // IE9 only\n -o-transform: rotateY(@degrees);\n transform: rotateY(@degrees);\n}\n.perspective(@perspective) {\n -webkit-perspective: @perspective;\n -moz-perspective: @perspective;\n perspective: @perspective;\n}\n.perspective-origin(@perspective) {\n -webkit-perspective-origin: @perspective;\n -moz-perspective-origin: @perspective;\n perspective-origin: @perspective;\n}\n.transform-origin(@origin) {\n -webkit-transform-origin: @origin;\n -moz-transform-origin: @origin;\n -ms-transform-origin: @origin; // IE9 only\n transform-origin: @origin;\n}\n\n\n// Transitions\n\n.transition(@transition) {\n -webkit-transition: @transition;\n -o-transition: @transition;\n transition: @transition;\n}\n.transition-property(@transition-property) {\n -webkit-transition-property: @transition-property;\n transition-property: @transition-property;\n}\n.transition-delay(@transition-delay) {\n -webkit-transition-delay: @transition-delay;\n transition-delay: @transition-delay;\n}\n.transition-duration(@transition-duration) {\n -webkit-transition-duration: @transition-duration;\n transition-duration: @transition-duration;\n}\n.transition-timing-function(@timing-function) {\n -webkit-transition-timing-function: @timing-function;\n transition-timing-function: @timing-function;\n}\n.transition-transform(@transition) {\n -webkit-transition: -webkit-transform @transition;\n -moz-transition: -moz-transform @transition;\n -o-transition: -o-transform @transition;\n transition: transform @transition;\n}\n\n\n// User select\n// For selecting text on the page\n\n.user-select(@select) {\n -webkit-user-select: @select;\n -moz-user-select: @select;\n -ms-user-select: @select; // IE10+\n user-select: @select;\n}\n","//\n// Variables\n// --------------------------------------------------\n\n\n//== Colors\n//\n//## Gray and brand colors for use across Bootstrap.\n\n//// colors from bs-2 \n// Grays\n// -------------------------\n@black: #000;\n@grayDark: #555;\n@gray: #bbb;\n@grayLight: #bbb;\n@white: #FFF;\n\n\n// Accent colors\n// -------------------------\n@blue: #5555Ff;\n@cyan: #55FFFF;\n@cyanDark: #00AAAA;\n@blueDark: #000084;\n@green: #55FF55;\n@greenDark: #00AA00;\n@magenta: #FF55FF;\n@magentaDark: #AA00AA;\n@red: #FF5555;\n@redDark: #AA0000;\n@yellow: #FEFE54;\n@brown: #AA5500;\n@orange: #A85400;\n@pink: #FE54FE;\n@purple: #FE5454;\n\n// end colors\n\n@gray-base: @gray;\n@gray-darker: @grayDark; \n@gray-dark: @grayDark;\n@gray-light: @grayLight;\n@gray-lighter: @grayLight;\n\n@brand-primary: @gray;\n@brand-primary-bg: @cyanDark;\n@brand-success: @greenDark;\n@brand-info: @brown;\n@brand-warning: @magentaDark;\n@brand-danger: @redDark;\n\n\n//== Scaffolding\n//\n//## Settings for some of the most global styles.\n\n//** Background color for ``.\n@body-bg: @blueDark;\n//** Global text color on ``.\n@text-color: @gray-light;\n\n//** Global textual link color.\n@link-color: @brand-primary;\n//** Link hover color set via `darken()` function.\n@link-hover-color: @white;\n//** Link hover decoration.\n@link-hover-decoration: none;\n\n\n//== Typography\n//\n//## Font, line-height, and color for body text, headings, and more.\n\n@font-family-sans-serif: DOS, Monaco, Menlo, Consolas, \"Courier New\", monospace;\n@font-family-serif: DOS, Monaco, Menlo, Consolas, \"Courier New\", monospace;\n//** Default monospace fonts for ``, ``, and `
    `.\n@font-family-monospace:   DOS, Monaco, Menlo, Consolas, \"Courier New\", monospace;\n@font-family-base:        @font-family-sans-serif;\n\n@baseWidth:               10px;\n@font-size-base:          18px;\n@font-size-large:         @font-size-base;\n@font-size-small:         @font-size-base;\n\n@font-size-h1:            @font-size-base;\n@font-size-h2:            @font-size-base;\n@font-size-h3:            @font-size-base;\n@font-size-h4:            @font-size-base;\n@font-size-h5:            @font-size-base;\n@font-size-h6:            @font-size-base;\n\n//** Unit-less `line-height` for use in components like buttons.\n@baseLineHeight:          19px;\n@line-height-base:        @baseLineHeight;\n//** Computed \"line-height\" (`font-size` * `line-height`) for use with `margin`, `padding`, etc.\n@line-height-computed:    @line-height-base;\n\n//** By default, this inherits from the ``.\n@headings-font-family:    inherit;\n@headings-font-weight:    normal;\n@headings-line-height:    @line-height-base; \n@headings-color:          inherit;\n\n@space:                 @baseWidth;\n@halfbaseLineHeight:    (@baseLineHeight / 2);\n@borderWidth:           2px;\n@baseLineWidth:         (@baseLineHeight / 2);\n@halfSpace:             (@baseWidth / 2);\n@lhsNB:                 (@baseWidth / 2 + 1);\n@rhsNB:                 (@baseWidth / 2 - 1);\n@lhs:                   (@lhsNB - (@borderWidth));\n@rhs:                   (@rhsNB - (@borderWidth / 2));\n@tsNB:                  (@baseLineHeight / 2);\n@bsNB:                  @tsNB;\n@ts:                    (@tsNB - (@borderWidth / 2));\n@bs:                    @ts;\n@tsMargin:              3px;\n\n\n//== Iconography\n//\n//## Specify custom location and filename of the included Glyphicons icon font. Useful for those including Bootstrap via Bower.\n\n//** Load fonts from this directory.\n@icon-font-path:          \"../fonts/\";\n//** File name for all font files.\n@icon-font-name:          \"glyphicons-halflings-regular\";\n//** Element ID within SVG icon file.\n@icon-font-svg-id:        \"glyphicons_halflingsregular\";\n\n\n//== Components\n//\n//## Define common padding and border radius sizes and more. Values based on 14px text and 1.428 line-height (~20px to start).\n\n@padding-base-vertical:     0px;\n@padding-base-horizontal:   0px;\n\n@padding-large-vertical:    0px;\n@padding-large-horizontal:  @halfSpace;\n\n@padding-small-vertical:    0px;\n@padding-small-horizontal:  0px;\n\n@padding-xs-vertical:       0px;\n@padding-xs-horizontal:     0px;\n\n@line-height-large:         @baseLineHeight;\n@line-height-small:         @baseLineHeight;\n\n@border-radius-base:        0;\n@border-radius-large:       0;\n@border-radius-small:       0;\n\n//** Global color for active items (e.g., navs or dropdowns).\n@component-active-color:    @white;\n//** Global background color for active items (e.g., navs or dropdowns).\n@component-active-bg:       @black;\n\n//** Width of the `border` for generating carets that indicator dropdowns.\n@caret-width-base:          4px;\n//** Carets increase slightly in size for larger components.\n@caret-width-large:         5px;\n\n\n//== Tables\n//\n//## Customizes the `.table` component with basic values, each used across all table variations.\n\n//** Padding for ``s and ``s.\n@table-cell-padding:            @ts @rhs @bs @lhs; \n//** Padding for cells in `.table-condensed`.\n@table-condensed-cell-padding:  @ts @rhs @bs @lhs;\n\n//** Default background color used for all tables.\n@table-bg:                      transparent;\n//** Background color used for `.table-striped`.\n@table-bg-accent:               @black;\n//** Background color used for `.table-hover`.\n@table-bg-hover:                #f5f5f5;\n@table-bg-active:               @table-bg-hover;\n\n//** Border color for table and cell borders.\n@table-border-color:            @gray;\n\n\n//== Buttons\n//\n//## For each of Bootstrap's buttons, define text, background and border color.\n\n@btn-font-weight:                normal;\n\n@btn-default-color:              @black;\n@btn-default-bg:                 @grayLight;\n@btn-default-border:             @grayLight;\n\n@btn-primary-color:              @black;\n@btn-primary-bg:                 @cyanDark;\n@btn-primary-border:             @grayLight;\n\n@btn-success-color:              #fff;\n@btn-success-bg:                 @brand-success;\n@btn-success-border:             @btn-success-bg;\n\n@btn-info-color:                 #fff;\n@btn-info-bg:                    @brand-info;\n@btn-info-border:                @btn-info-bg;\n\n@btn-warning-color:              #fff;\n@btn-warning-bg:                 @brand-warning;\n@btn-warning-border:             @btn-warning-bg;\n\n@btn-danger-color:               #fff;\n@btn-danger-bg:                  @brand-danger;\n@btn-danger-border:              @btn-danger-bg;\n\n@btn-link-disabled-color:        @gray-light;\n\n\n//== Forms\n//\n//##\n\n//** `` background color\n@input-bg:                       @cyanDark;\n//** `` background color\n@input-bg-disabled:              @gray-lighter;\n\n//** Text color for ``s\n@input-color:                    @white;\n//** `` border color\n@input-border:                   #ccc;\n\n// TODO: Rename `@input-border-radius` to `@input-border-radius-base` in v4\n//** Default `.form-control` border radius\n// This has no effect on ``s in CSS.\n@input-border-radius:            @border-radius-base;\n//** Large `.form-control` border radius\n@input-border-radius-large:      @border-radius-large;\n//** Small `.form-control` border radius\n@input-border-radius-small:      @border-radius-small;\n\n//** Border color for inputs on focus\n@input-border-focus:             @black;\n\n//** Placeholder text color\n@input-color-placeholder:        @black;\n\n//** Default `.form-control` height\n@input-height-base:              @line-height-computed;\n//** Large `.form-control` height\n@input-height-large:             @input-height-base;\n//** Small `.form-control` height\n@input-height-small:             @input-height-base;\n\n@legend-color:                   @gray-dark;\n@legend-border-color:            #e5e5e5;\n\n//** Background color for textual input addons\n@input-group-addon-bg:           @gray-lighter;\n//** Border color for textual input addons\n@input-group-addon-border-color: @input-border;\n\n//** Disabled cursor for form controls and buttons.\n@cursor-disabled:                not-allowed;\n\n\n//== Dropdowns\n//\n//## Dropdown menu container and contents.\n\n//** Background for the dropdown menu.\n@dropdown-bg:                    @gray;\n//** Dropdown menu `border-color`.\n@dropdown-border:                rgb(0,0,0);\n//** Dropdown menu `border-color` **for IE8**.\n@dropdown-fallback-border:       #ccc;\n//** Divider color for between dropdown items.\n@dropdown-divider-bg:            @black;\n\n//** Dropdown link text color.\n@dropdown-link-color:            @black;\n//** Hover color for dropdown links.\n@dropdown-link-hover-color:      @gray;\n//** Hover background for dropdown links.\n@dropdown-link-hover-bg:         @black;\n\n//** Active dropdown menu item text color.\n@dropdown-link-active-color:     @component-active-color;\n//** Active dropdown menu item background color.\n@dropdown-link-active-bg:        @component-active-bg;\n\n//** Disabled dropdown menu item background color.\n@dropdown-link-disabled-color:   @gray-light;\n\n//** Text color for headers within dropdown menus.\n@dropdown-header-color:          @black;\n\n//** Deprecated `@dropdown-caret-color` as of v3.1.0\n@dropdown-caret-color:           #000;\n\n\n//-- Z-index master list\n//\n// Warning: Avoid customizing these values. They're used for a bird's eye view\n// of components dependent on the z-axis and are designed to all work together.\n//\n// Note: These variables are not generated into the Customizer.\n\n@zindex-navbar:            1000;\n@zindex-dropdown:          1000;\n@zindex-popover:           1060;\n@zindex-tooltip:           1070;\n@zindex-navbar-fixed:      1030;\n@zindex-modal:             1040;\n\n\n//== Media queries breakpoints\n//\n//## Define the breakpoints at which your layout will change, adapting to different screen sizes.\n\n// Extra small screen / phone\n//** Deprecated `@screen-xs` as of v3.0.1\n@screen-xs:                  480px;\n//** Deprecated `@screen-xs-min` as of v3.2.0\n@screen-xs-min:              @screen-xs;\n//** Deprecated `@screen-phone` as of v3.0.1\n@screen-phone:               @screen-xs-min;\n\n// Small screen / tablet\n//** Deprecated `@screen-sm` as of v3.0.1\n@screen-sm:                  768px;\n@screen-sm-min:              @screen-sm;\n//** Deprecated `@screen-tablet` as of v3.0.1\n@screen-tablet:              @screen-sm-min;\n\n// Medium screen / desktop\n//** Deprecated `@screen-md` as of v3.0.1\n@screen-md:                  992px;\n@screen-md-min:              @screen-md;\n//** Deprecated `@screen-desktop` as of v3.0.1\n@screen-desktop:             @screen-md-min;\n\n// Large screen / wide desktop\n//** Deprecated `@screen-lg` as of v3.0.1\n@screen-lg:                  1200px;\n@screen-lg-min:              @screen-lg;\n//** Deprecated `@screen-lg-desktop` as of v3.0.1\n@screen-lg-desktop:          @screen-lg-min;\n\n// So media queries don't overlap when required, provide a maximum\n@screen-xs-max:              (@screen-sm-min - 1);\n@screen-sm-max:              (@screen-md-min - 1);\n@screen-md-max:              (@screen-lg-min - 1);\n\n\n//== Grid system\n//\n//## Define your custom responsive grid.\n\n//** Number of columns in the grid.\n@grid-columns:              12;\n//** Padding between columns. Gets divided in half for the left and right.\n@grid-gutter-width:         (@baseWidth * 2);\n// Navbar collapse\n//** Point at which the navbar becomes uncollapsed.\n@grid-float-breakpoint:     @screen-sm-min;\n//** Point at which the navbar begins collapsing.\n@grid-float-breakpoint-max: (@grid-float-breakpoint);\n\n\n//== Container sizes\n//\n//## Define the maximum width of `.container` for different screen sizes.\n\n// Small screen / tablet\n@container-tablet:             (720px + @grid-gutter-width);\n//** For `@screen-sm-min` and up.\n@container-sm:                 @container-tablet;\n\n// Medium screen / desktop\n@container-desktop:            (940px + @grid-gutter-width);\n//** For `@screen-md-min` and up.\n@container-md:                 @container-desktop;\n\n// Large screen / wide desktop\n@container-large-desktop:      (1140px + @grid-gutter-width);\n//** For `@screen-lg-min` and up.\n@container-lg:                 @container-large-desktop;\n\n\n//== Navbar\n//\n//##\n\n// Basics of a navbar\n@navbar-height:                    0px;\n@navbar-margin-bottom:             @line-height-computed;\n@navbar-border-radius:             @border-radius-base;\n@navbar-padding-horizontal:        (@baseWidth * 2);\n@navbar-padding-vertical:          0;\n@navbar-collapse-max-height:       340px;\n\n@navbar-default-color:             @black;\n@navbar-default-bg:                @grayLight;\n@navbar-default-border:            @navbar-default-bg;\n\n// Navbar links\n@navbar-default-link-color:                @black;\n@navbar-default-link-hover-color:          @white;\n@navbar-default-link-hover-bg:             @black;\n@navbar-default-link-active-color:         @white;\n@navbar-default-link-active-bg:            @black;\n@navbar-default-link-disabled-color:       @gray;\n@navbar-default-link-disabled-bg:          transparent;\n\n// Navbar brand label\n@navbar-default-brand-color:               @navbar-default-link-color;\n@navbar-default-brand-hover-color:         @navbar-default-brand-color;\n@navbar-default-brand-hover-bg:            transparent;\n\n// Navbar toggle\n@navbar-default-toggle-hover-bg:           #ddd;\n@navbar-default-toggle-icon-bar-bg:        #888;\n@navbar-default-toggle-border-color:       #ddd;\n\n\n// Inverted navbar\n// Reset inverted navbar basics\n@navbar-inverse-color:                      @gray;\n@navbar-inverse-bg:                         @black;\n@navbar-inverse-border:                     @navbar-inverse-bg;\n\n// Inverted navbar links\n@navbar-inverse-link-color:                 @gray-light;\n@navbar-inverse-link-hover-color:           @black;\n@navbar-inverse-link-hover-bg:              @grayLight;\n@navbar-inverse-link-active-color:          @white;\n@navbar-inverse-link-active-bg:             @grayDark;\n@navbar-inverse-link-disabled-color:        @gray;\n@navbar-inverse-link-disabled-bg:           transparent;\n\n// Inverted navbar brand label\n@navbar-inverse-brand-color:                @navbar-inverse-link-color;\n@navbar-inverse-brand-hover-color:          #fff;\n@navbar-inverse-brand-hover-bg:             transparent;\n\n// Inverted navbar toggle\n@navbar-inverse-toggle-hover-bg:            @grayLight;\n@navbar-inverse-toggle-icon-bar-bg:         #fff;\n@navbar-inverse-toggle-border-color:        #333;\n\n\n//== Navs\n//\n//##\n\n//=== Shared nav styles\n@nav-link-padding:                          0 @baseWidth;\n@nav-link-hover-bg:                         @gray-lighter;\n\n@nav-disabled-link-color:                   @gray-light;\n@nav-disabled-link-hover-color:             @gray-light;\n\n//== Tabs\n@nav-tabs-border-color:                     #ddd;\n\n@nav-tabs-link-hover-border-color:          @gray-lighter;\n\n@nav-tabs-active-link-hover-bg:             @black;\n@nav-tabs-active-link-hover-color:          @white;\n\n@nav-tabs-justified-active-link-border-color:     @body-bg;\n\n//== Pills\n@nav-pills-border-radius:                   @border-radius-base;\n@nav-pills-active-link-hover-bg:            @component-active-bg;\n@nav-pills-active-link-hover-color:         @component-active-color;\n\n\n//== Pagination\n//\n//##\n\n@pagination-color:                     @black;\n@pagination-bg:                        @gray;\n@pagination-border:                    #ddd;\n\n@pagination-hover-color:               @link-hover-color;\n@pagination-hover-bg:                  @gray-lighter;\n@pagination-hover-border:              #ddd;\n\n@pagination-active-color:              #fff;\n@pagination-active-bg:                 @brand-primary;\n@pagination-active-border:             @brand-primary;\n\n@pagination-disabled-color:            @gray-light;\n@pagination-disabled-bg:               #fff;\n@pagination-disabled-border:           #ddd;\n\n\n//== Pager\n//\n//##\n\n@pager-bg:                             @pagination-bg;\n@pager-border:                         @pagination-border;\n@pager-border-radius:                  0;\n\n@pager-hover-bg:                       @pagination-hover-bg;\n\n@pager-active-bg:                      @pagination-active-bg;\n@pager-active-color:                   @pagination-active-color;\n\n@pager-disabled-color:                 @pagination-disabled-color;\n\n\n//== Jumbotron\n//\n//##\n\n@jumbotron-padding:              (@ts) (@rhs + @baseWidth) (@bs) (@lhs + @baseWidth);\n@jumbotron-color:                @white;\n@jumbotron-bg:                   transparent;\n@jumbotron-heading-color:        inherit;\n@jumbotron-font-size:            @font-size-base;\n\n\n//== Form states and alerts\n//\n//## Define colors for form feedback states and, by default, alerts.\n\n@state-success-text:             @green;\n@state-success-bg:               @greenDark;\n@state-success-border:           @state-success-bg;\n\n@state-info-text:                @yellow;\n@state-info-bg:                  @brown;\n@state-info-border:              @state-info-bg;\n\n@state-warning-text:             @magenta;\n@state-warning-bg:               @magentaDark;\n@state-warning-border:           @state-warning-bg;\n\n@state-danger-text:              @red;\n@state-danger-bg:                @black;\n@state-danger-border:            @state-danger-bg;\n\n\n//== Tooltips\n//\n//##\n\n//** Tooltip max width\n@tooltip-max-width:           (@baseWidth * 25);\n//** Tooltip text color\n@tooltip-color:               @white;\n//** Tooltip background color\n@tooltip-bg:                  @grayDark;\n@tooltip-opacity:             1;\n\n//** Tooltip arrow width\n@tooltip-arrow-width:         0px;\n//** Tooltip arrow color\n@tooltip-arrow-color:         @tooltip-bg;\n\n\n//== Popovers\n//\n//##\n\n//** Popover body background color\n@popover-bg:                          @gray;\n//** Popover maximum width\n@popover-max-width:                   (@baseWidth * 20);\n//** Popover border color\n@popover-border-color:                rgb(0,0,0);\n//** Popover fallback border color\n@popover-fallback-border-color:       #ccc;\n\n//** Popover title background color\n@popover-title-bg:                    @greenDark;\n\n//** Popover arrow width\n@popover-arrow-width:                 10px;\n//** Popover arrow color\n@popover-arrow-color:                 @popover-bg;\n\n//** Popover outer arrow width\n@popover-arrow-outer-width:           (@popover-arrow-width + 1);\n//** Popover outer arrow color\n@popover-arrow-outer-color:           @popover-border-color;\n//** Popover outer arrow fallback color\n@popover-arrow-outer-fallback-color:  @popover-fallback-border-color;\n\n\n//== Labels\n//\n//##\n\n//** Default label background color\n@label-default-bg:            @gray-light;\n//** Primary label background color\n@label-primary-bg:            @brand-primary-bg;\n//** Success label background color\n@label-success-bg:            @brand-success;\n//** Info label background color\n@label-info-bg:               @brand-info;\n//** Warning label background color\n@label-warning-bg:            @brand-warning;\n//** Danger label background color\n@label-danger-bg:             @brand-danger;\n\n//** Default label text color\n@label-color:                 #fff;\n//** Default text color of a linked label\n@label-link-hover-color:      #fff;\n\n\n//== Modals\n//\n//##\n\n//** Padding applied to the modal body\n@modal-inner-padding:         0 @baseWidth;\n\n//** Padding applied to the modal title\n@modal-title-padding:         0 @baseWidth;\n//** Modal title line-height\n@modal-title-line-height:     @line-height-base;\n\n//** Background color of modal content area\n@modal-content-bg:                             @gray;\n//** Modal content border color\n@modal-content-border-color:                   rgb(0,0,0);\n//** Modal content border color **for IE8**\n@modal-content-fallback-border-color:          #999;\n\n//** Modal backdrop background color\n@modal-backdrop-bg:           #000;\n//** Modal backdrop opacity\n@modal-backdrop-opacity:      .5;\n//** Modal header border color\n@modal-header-border-color:   #e5e5e5;\n//** Modal footer border color\n@modal-footer-border-color:   @modal-header-border-color;\n\n@modal-lg:                    900px;\n@modal-md:                    600px;\n@modal-sm:                    300px;\n\n\n//== Alerts\n//\n//## Define alert colors, border radius, and padding.\n\n@alert-padding:               @line-height-base (@baseWidth * 2);\n@alert-border-radius:         @border-radius-base;\n@alert-link-font-weight:      normal;\n\n@alert-success-bg:            @state-success-bg;\n@alert-success-text:          @state-success-text;\n@alert-success-border:        @state-success-border;\n\n@alert-info-bg:               @state-info-bg;\n@alert-info-text:             @state-info-text;\n@alert-info-border:           @state-info-border;\n\n@alert-warning-bg:            @state-warning-bg;\n@alert-warning-text:          @state-warning-text;\n@alert-warning-border:        @state-warning-border;\n\n@alert-danger-bg:             @state-danger-bg;\n@alert-danger-text:           @state-danger-text;\n@alert-danger-border:         @state-danger-border;\n\n\n//== Progress bars\n//\n//##\n\n//** Background color of the whole progress component\n@progress-bg:                 @black;\n//** Progress bar text color\n@progress-bar-color:          @black;\n//** Variable for setting rounded corners on progress bar.\n@progress-border-radius:      @border-radius-base;\n\n//** Default progress bar color\n@progress-bar-bg:             @brand-primary;\n//** Success progress bar color\n@progress-bar-success-bg:     @brand-success;\n//** Warning progress bar color\n@progress-bar-warning-bg:     @brand-warning;\n//** Danger progress bar color\n@progress-bar-danger-bg:      @brand-danger;\n//** Info progress bar color\n@progress-bar-info-bg:        @brand-info;\n\n\n//== List group\n//\n//##\n\n//** Background color on `.list-group-item`\n@list-group-bg:                 @gray;\n//** `.list-group-item` border color\n@list-group-border:             #ddd;\n//** List group border radius\n@list-group-border-radius:      @border-radius-base;\n\n//** Background color of single list items on hover\n@list-group-hover-bg:           @black;\n//** Text color of active list items\n@list-group-active-color:       @component-active-color;\n//** Background color of active list items\n@list-group-active-bg:          @component-active-bg;\n//** Border color of active list elements\n@list-group-active-border:      @list-group-active-bg;\n//** Text color for content within active list items\n@list-group-active-text-color:  @component-active-color;\n\n//** Text color of disabled list items\n@list-group-disabled-color:      @gray-dark;\n//** Background color of disabled list items\n@list-group-disabled-bg:         @gray-lighter;\n//** Text color for content within disabled list items\n@list-group-disabled-text-color: @list-group-disabled-color;\n\n@list-group-link-color:         @black;\n@list-group-link-hover-color:   @list-group-link-color;\n@list-group-link-heading-color: #333;\n\n\n//== Panels\n//\n//##\n\n@panel-bg:                    @gray;\n@panel-body-padding:          0 @rhsNB 0 @lhsNB;\n@panel-heading-padding:       0 @rhsNB 0 @lhsNB;\n@panel-footer-padding:        @panel-heading-padding;\n@panel-border-radius:         @border-radius-base;\n\n//** Border color for elements within panels\n@panel-inner-border:          #ddd;\n@panel-footer-bg:             #f5f5f5;\n\n@panel-default-text:          @white;\n@panel-default-border:        #ddd;\n@panel-default-heading-bg:    @grayDark;\n\n@panel-primary-text:          @white;\n@panel-primary-border:        @brand-primary;\n@panel-primary-heading-bg:    @cyanDark;\n\n@panel-success-text:          @state-success-text;\n@panel-success-border:        @state-success-border;\n@panel-success-heading-bg:    @state-success-bg;\n\n@panel-info-text:             @state-info-text;\n@panel-info-border:           @state-info-border;\n@panel-info-heading-bg:       @state-info-bg;\n\n@panel-warning-text:          @state-warning-text;\n@panel-warning-border:        @state-warning-border;\n@panel-warning-heading-bg:    @state-warning-bg;\n\n@panel-danger-text:           @state-danger-text;\n@panel-danger-border:         @state-danger-border;\n@panel-danger-heading-bg:     @state-danger-bg;\n\n\n//== Thumbnails\n//\n//##\n\n//** Padding around the thumbnail image\n@thumbnail-padding:           4px;\n//** Thumbnail background color\n@thumbnail-bg:                @body-bg;\n//** Thumbnail border color\n@thumbnail-border:            #ddd;\n//** Thumbnail border radius\n@thumbnail-border-radius:     @border-radius-base;\n\n//** Custom text color for thumbnail captions\n@thumbnail-caption-color:     @text-color;\n//** Padding around the thumbnail caption\n@thumbnail-caption-padding:   9px;\n\n\n//== Wells\n//\n//##\n\n@well-bg:                     @greenDark;\n@well-border:                 @well-bg;\n\n\n//== Badges\n//\n//##\n\n@badge-color:                 @black;\n//** Linked badge text color on hover\n@badge-link-hover-color:      #fff;\n@badge-bg:                    @gray-light;\n\n//** Badge text color in active nav link\n@badge-active-color:          @link-color;\n//** Badge background color in active nav link\n@badge-active-bg:             @black;\n\n@badge-font-weight:           normal;\n@badge-line-height:           @line-height-base;\n@badge-border-radius:         0;\n\n\n//== Breadcrumbs\n//\n//##\n\n@breadcrumb-padding-vertical:   8px;\n@breadcrumb-padding-horizontal: 15px;\n//** Breadcrumb background color\n@breadcrumb-bg:                 #f5f5f5;\n//** Breadcrumb text color\n@breadcrumb-color:              #ccc;\n//** Text color of current page in the breadcrumb\n@breadcrumb-active-color:       @gray-light;\n//** Textual separator for between breadcrumb elements\n@breadcrumb-separator:          \"/\";\n\n\n//== Carousel\n//\n//##\n\n@carousel-text-shadow:                        none;\n\n@carousel-control-color:                      #fff;\n@carousel-control-width:                      15%;\n@carousel-control-opacity:                    1;\n@carousel-control-font-size:                  @font-size-base;\n\n@carousel-indicator-active-bg:                #fff;\n@carousel-indicator-border-color:             #fff;\n\n@carousel-caption-color:                      #fff;\n\n\n//== Close\n//\n//##\n\n@close-font-weight:           normal;\n@close-color:                 #000;\n@close-text-shadow:           none;\n\n\n//== Code\n//\n//##\n\n@code-color:                  #c7254e;\n@code-bg:                     #f9f2f4;\n\n@kbd-color:                   #fff;\n@kbd-bg:                      #333;\n\n@pre-bg:                      #f5f5f5;\n@pre-color:                   @gray-dark;\n@pre-border-color:            #ccc;\n@pre-scrollable-max-height:   340px;\n\n\n//== Type\n//\n//##\n\n//** Horizontal offset for forms and lists.\n@component-offset-horizontal: 180px;\n//** Text muted color\n@text-muted:                  @gray-dark;\n//** Abbreviations and acronyms border color\n@abbr-border-color:           @gray-light;\n//** Headings small color\n@headings-small-color:        @gray-light;\n//** Blockquote small color\n@blockquote-small-color:      @gray-light;\n//** Blockquote font size\n@blockquote-font-size:        @font-size-base;\n//** Blockquote border color\n@blockquote-border-color:     @gray-lighter;\n//** Page header border color\n@page-header-border-color:    @gray-lighter;\n//** Width of horizontal description list titles\n@dl-horizontal-offset:        @component-offset-horizontal;\n//** Horizontal line color.\n@hr-border:                   @black;\n","// WebKit-style focus\n\n.tab-focus() {\n  // Default\n  outline: thin dotted;\n  // WebKit\n  outline: 5px auto -webkit-focus-ring-color;\n  outline-offset: -2px;\n}\n","//\n// Thumbnails\n// --------------------------------------------------\n\n\n// Mixin and adjust the regular image class\n.thumbnail {\n  display: block;\n  padding: @thumbnail-padding;\n  margin-bottom: @line-height-computed;\n  line-height: @line-height-base;\n  background-color: @thumbnail-bg;\n  border: @borderWidth solid @thumbnail-border;\n\n  > img,\n  a > img {\n    &:extend(.img-responsive);\n    margin-left: auto;\n    margin-right: auto;\n  }\n\n  // Add a hover state for linked versions only\n  a&:hover,\n  a&:focus,\n  a&.active {\n    border-color: @link-color;\n  }\n\n  // Image captions\n  .caption {\n    padding: @thumbnail-caption-padding;\n    color: @thumbnail-caption-color;\n  }\n}\n","//\n// Carousel\n// --------------------------------------------------\n\n\n// Wrapper for the slide container and indicators\n.carousel {\n  position: relative;\n}\n\n.carousel-inner {\n  position: relative;\n  overflow: hidden;\n  width: 100%;\n\n  > .item {\n    display: none;\n    position: relative;\n\n    // Account for jankitude on images\n    > img,\n    > a > img {\n      &:extend(.img-responsive);\n      line-height: 1;\n    }\n\n    // WebKit CSS3 transforms for supported devices\n    @media all and (transform-3d), (-webkit-transform-3d) {\n      .backface-visibility(~'hidden');\n      .perspective(1000);\n\n      &.next,\n      &.active.right {\n        .translate3d(100%, 0, 0);\n        left: 0;\n      }\n      &.prev,\n      &.active.left {\n        .translate3d(-100%, 0, 0);\n        left: 0;\n      }\n      &.next.left,\n      &.prev.right,\n      &.active {\n        .translate3d(0, 0, 0);\n        left: 0;\n      }\n    }\n  }\n\n  > .active,\n  > .next,\n  > .prev {\n    display: block;\n  }\n\n  > .active {\n    left: 0;\n  }\n\n  > .next,\n  > .prev {\n    position: absolute;\n    top: 0;\n    width: 100%;\n  }\n\n  > .next {\n    left: 100%;\n  }\n  > .prev {\n    left: -100%;\n  }\n  > .next.left,\n  > .prev.right {\n    left: 0;\n  }\n\n  > .active.left {\n    left: -100%;\n  }\n  > .active.right {\n    left: 100%;\n  }\n\n}\n\n// Left/right controls for nav\n// ---------------------------\n\n.carousel-control {\n  position: absolute;\n  top: 0;\n  left: 0;\n  bottom: 0;\n  width: @carousel-control-width;\n  .opacity(@carousel-control-opacity);\n  font-size: @carousel-control-font-size;\n  color: @carousel-control-color;\n  text-align: center;\n  text-shadow: @carousel-text-shadow;\n  // We can't have this transition here because WebKit cancels the carousel\n  // animation if you trip this while in the middle of another animation.\n\n  // Set gradients for backgrounds\n  &.left {\n  }\n  &.right {\n    left: auto;\n    right: 0;\n  }\n\n  // Hover/focus state\n  &:hover,\n  &:focus {\n    outline: 0;\n    color: @carousel-control-color;\n    text-decoration: none;\n    .opacity(.9);\n  }\n\n  // Toggles\n  .icon-prev,\n  .icon-next,\n  .glyphicon-chevron-left,\n  .glyphicon-chevron-right {\n    position: absolute;\n    top: 50%;\n    z-index: 5;\n    display: inline-block;\n  }\n  .icon-prev,\n  .glyphicon-chevron-left {\n    left: 50%;\n    margin-left: -10px;\n  }\n  .icon-next,\n  .glyphicon-chevron-right {\n    right: 50%;\n    margin-right: -10px;\n  }\n  .icon-prev,\n  .icon-next {\n    width:  20px;\n    height: 20px;\n    margin-top: -10px;\n    line-height: 1;\n    font-family: serif;\n  }\n\n\n  .icon-prev {\n    &:before {\n      content: '\\2039';// SINGLE LEFT-POINTING ANGLE QUOTATION MARK (U+2039)\n    }\n  }\n  .icon-next {\n    &:before {\n      content: '\\203a';// SINGLE RIGHT-POINTING ANGLE QUOTATION MARK (U+203A)\n    }\n  }\n}\n\n// Optional indicator pips\n//\n// Add an unordered list with the following class and add a list item for each\n// slide your carousel holds.\n\n.carousel-indicators {\n  position: absolute;\n  bottom: 10px;\n  left: 50%;\n  z-index: 15;\n  width: 60%;\n  margin-left: -30%;\n  padding-left: 0;\n  list-style: none;\n  text-align: center;\n\n  li {\n    display: inline-block;\n    width:  10px;\n    height: 10px;\n    margin: 1px;\n    text-indent: -999px;\n    border: @borderWidth solid @carousel-indicator-border-color;\n    cursor: pointer;\n\n    // IE8-9 hack for event handling\n    //\n    // Internet Explorer 8-9 does not support clicks on elements without a set\n    // `background-color`. We cannot use `filter` since that's not viewed as a\n    // background color by the browser. Thus, a hack is needed.\n    // See https://developer.mozilla.org/en-US/docs/Web/Events/click#Internet_Explorer\n    //\n    // For IE8, we set solid black as it doesn't support `rgba()`. For IE9, we\n    // set alpha transparency for the best results possible.\n    background-color: #000 \\9; // IE8\n    background-color: rgba(0,0,0,0); // IE9\n  }\n  .active {\n    margin: 0;\n    width:  12px;\n    height: 12px;\n    background-color: @carousel-indicator-active-bg;\n  }\n}\n\n// Optional captions\n// -----------------------------\n// Hidden by default for smaller viewports\n.carousel-caption {\n  position: absolute;\n  left: 15%;\n  right: 15%;\n  bottom: 20px;\n  z-index: 10;\n  padding-top: 20px;\n  padding-bottom: 20px;\n  color: @carousel-caption-color;\n  text-align: center;\n  text-shadow: @carousel-text-shadow;\n  & .btn {\n    text-shadow: none; // No shadow for button elements in carousel-caption\n  }\n}\n\n\n// Scale up controls for tablets and up\n@media screen and (min-width: @screen-sm-min) {\n\n  // Scale up the controls a smidge\n  .carousel-control {\n    .glyphicon-chevron-left,\n    .glyphicon-chevron-right,\n    .icon-prev,\n    .icon-next {\n      width: 30px;\n      height: 30px;\n      margin-top: -15px;\n      font-size: @font-size-base;\n    }\n    .glyphicon-chevron-left,\n    .icon-prev {\n      margin-left: -15px;\n    }\n    .glyphicon-chevron-right,\n    .icon-next {\n      margin-right: -15px;\n    }\n  }\n\n  // Show and left align the captions\n  .carousel-caption {\n    left: 20%;\n    right: 20%;\n    padding-bottom: 30px;\n  }\n\n  // Move up the indicators\n  .carousel-indicators {\n    bottom: 20px;\n  }\n}\n","// Image Mixins\n// - Responsive image\n// - Retina image\n\n\n// Responsive image\n//\n// Keep images from scaling beyond the width of their parents.\n.img-responsive(@display: block) {\n  display: @display;\n  max-width: 100%; // Part 1: Set a maximum relative to the parent\n  height: auto; // Part 2: Scale the height according to the width, otherwise you get stretching\n}\n\n\n// Retina image\n//\n// Short retina mixin for setting background-image and -size. Note that the\n// spelling of `min--moz-device-pixel-ratio` is intentional.\n.img-retina(@file-1x; @file-2x; @width-1x; @height-1x) {\n  background-image: url(\"@{file-1x}\");\n\n  @media\n  only screen and (-webkit-min-device-pixel-ratio: 2),\n  only screen and (   min--moz-device-pixel-ratio: 2),\n  only screen and (     -o-min-device-pixel-ratio: 2/1),\n  only screen and (        min-device-pixel-ratio: 2),\n  only screen and (                min-resolution: 192dpi),\n  only screen and (                min-resolution: 2dppx) {\n    background-image: url(\"@{file-2x}\");\n    background-size: @width-1x @height-1x;\n  }\n}\n","//\n// Typography\n// --------------------------------------------------\n\n\n// Headings\n// -------------------------\n\nh1, h2, h3, h4, h5, h6,\n.h1, .h2, .h3, .h4, .h5, .h6 {\n  font-family: @headings-font-family;\n  font-weight: @headings-font-weight;\n  line-height: @baseLineHeight;\n  margin: 0 0 @baseLineHeight 0;\n  color: @headings-color;\n\n  small,\n  .small {\n    font-weight: normal;\n    line-height: 1;\n    color: @headings-small-color;\n  }\n}\n\nh1,\nh2,\nh3 { line-height: @baseLineHeight; }\nh3:before {\n  content: \"[\";\n}\nh3:after {\n  content: \"]\";\n}\n\nh1 { font-size: @font-size-base; \ntext-transform: uppercase;} // ~38px\nh2 { font-size: @font-size-base; \nwhite-space:nowrap;\n} // ~32px\nh3 { font-size: @font-size-base; } // ~24px\nh4 { font-size: @font-size-base; color: @white} // ~18px\nh5 { font-size: @font-size-base; }\nh6 { font-size: @font-size-base; } // ~12px\n\nh1 small { font-size: @font-size-base; } // ~24px\nh2 small { font-size: @font-size-base; } // ~18px\nh3 small { font-size: @font-size-base; }\nh4 small { font-size: @font-size-base; }\n\n\n// Body text\n// -------------------------\n\np {\n  margin: 0 0 @line-height-computed;\n}\n\n.lead {\n  margin-bottom: @line-height-computed;\n  font-size: @font-size-base;\n  font-weight: normal;\n  line-height: 1;\n\n  @media (min-width: @screen-sm-min) {\n    font-size: @font-size-base;\n  }\n}\n\n\n// Emphasis & misc\n// -------------------------\n\n// Ex: (12px small font / 14px base font) * 100% = about 85%\nsmall,\n.small {\n  font-size: @font-size-small;\n}\n\nmark,\n.mark {\n  background-color: @state-warning-bg;\n  padding: 0;\n}\n\n// Alignment\n.text-left           { text-align: left; }\n.text-right          { text-align: right; }\n.text-center         { text-align: center; }\n.text-justify        { text-align: justify; }\n.text-nowrap         { white-space: nowrap; }\n\n// Transformation\n.text-lowercase      { text-transform: lowercase; }\n.text-uppercase      { text-transform: uppercase; }\n.text-capitalize     { text-transform: capitalize; }\n\n// Contextual colors\n.text-muted {\n  color: @text-muted;\n}\n.text-primary {\n  .text-emphasis-variant(@brand-primary);\n}\n.text-success {\n  .text-emphasis-variant(@state-success-text);\n}\n.text-info {\n  .text-emphasis-variant(@state-info-text);\n}\n.text-warning {\n  .text-emphasis-variant(@state-warning-text);\n}\n.text-danger {\n  .text-emphasis-variant(@state-danger-text);\n}\n\n// Contextual backgrounds\n// For now we'll leave these alongside the text classes until v4 when we can\n// safely shift things around (per SemVer rules).\n.bg-primary {\n  // Given the contrast here, this is the only class to have its color inverted\n  // automatically.\n  color: #fff;\n  .bg-variant(@brand-primary);\n}\n.bg-success {\n  .bg-variant(@state-success-bg);\n}\n.bg-info {\n  .bg-variant(@state-info-bg);\n}\n.bg-warning {\n  .bg-variant(@state-warning-bg);\n}\n.bg-danger {\n  .bg-variant(@state-danger-bg);\n}\n\n\n// Page header\n// -------------------------\n\n.page-header {\n  padding-bottom: ((@line-height-computed / 2) - 1);\n  margin: (@line-height-computed * 2) 0 @line-height-computed;\n  border-bottom: @borderWidth solid @page-header-border-color;\n}\n\n\n// Lists\n// -------------------------\n\n// Unordered and Ordered lists\nul,\nol {\n  margin-top: 0;\n  margin-bottom: (@line-height-computed / 2);\n  ul,\n  ol {\n    margin-bottom: 0;\n  }\n}\n\ni, cite, em, var, address, dfn,\ndel,s,ins,u {\n  font-style: normal;\n  text-decoration: none;\n}\ndel,s {\n  background: @black;\n  color: @grayDark;\n}\nins {\n  background: @cyanDark;\n  color: @white;\n}\nsmall {\n  text-transform: lowercase;\n}\nsmall:before { content: '*note: '}\nins:before { content: '<'; }\nins:after { content: '>'; }\ndel:before,s:before, { content: '[' };\ndel:after,s:after { content: '](removed)'; }\nu:before, u:after { content: '_'; }\nem:before, em:after { content: '/'; }\n\nstrong {\n  text-transform: uppercase;\n}\n\n// List options\n\n// Unstyled keeps list items block level, just removes default browser padding and list-style\n.list-unstyled {\n  padding-left: 0;\n  list-style: none;\n}\n\n// Inline turns list items into inline-block\n.list-inline {\n  .list-unstyled();\n  margin: 0;\n  padding: 0;\n\n  > li {\n    display: inline-block;\n    padding: 0 @baseWidth;\n  }\n}\n\n// Description Lists\ndl {\n  margin-top: 0; // Remove browser default\n  margin-bottom: @line-height-computed;\n}\ndt,\ndd {\n  line-height: @line-height-base;\n}\ndt {\n  font-weight: normal;\n}\ndd {\n  margin-left: 0; // Undo browser default\n}\n\n// Horizontal description lists\n//\n// Defaults to being stacked without any of the below styles applied, until the\n// grid breakpoint is reached (default of ~768px).\n\n.dl-horizontal {\n  dd {\n    &:extend(.clearfix all); // Clear the floated `dt` if an empty `dd` is present\n  }\n\n  @media (min-width: @grid-float-breakpoint) {\n    dt {\n      float: left;\n      width: (@dl-horizontal-offset - 20);\n      clear: left;\n      text-align: right;\n      .text-overflow();\n    }\n    dd {\n      margin-left: @dl-horizontal-offset;\n    }\n  }\n}\n\n\n// Misc\n// -------------------------\n\n// Abbreviations and acronyms\nabbr[title],\n// Add data-* attribute to help out our tooltip plugin, per https://github.com/twbs/bootstrap/issues/5257\nabbr[data-original-title] {\n  cursor: help;\n  border-bottom: 0px dotted @abbr-border-color;\n}\n.initialism {\n  font-size: @font-size-base;\n  text-transform: uppercase;\n}\n\n// Blockquotes\nblockquote {\n  padding: (@line-height-computed) @line-height-computed;\n  margin: 0 0 @baseLineHeight;\n  border-left: (@baseLineWidth / 2) solid @gray;\n\n  p,\n  ul,\n  ol {\n    &:last-child {\n      margin-bottom: 0;\n    }\n  }\n\n  // Note: Deprecated small and .small as of v3.1.0\n  // Context: https://github.com/twbs/bootstrap/issues/11660\n  footer,\n  small,\n  .small {\n    display: block;\n    font-size: @font-size-base;\n    line-height: @line-height-base;\n    color: @blockquote-small-color;\n\n    &:before {\n      content: '\\2014 \\00A0'; // em dash, nbsp\n    }\n  }\n}\n\n// Opposite alignment of blockquote\n//\n// Heads up: `blockquote.pull-right` has been deprecated as of v3.1.0.\n.blockquote-reverse,\nblockquote.pull-right {\n  padding-right: @baseWidth;\n  padding-left: 0;\n  border-right: (@baseLineWidth / 2) solid @gray;\n  border-left: 0;\n  text-align: right;\n\n  // Account for citation\n  footer,\n  small,\n  .small {\n    &:before { content: ''; }\n    &:after {\n      content: '\\00A0 \\2014'; // nbsp, em dash\n    }\n  }\n}\n\n// Addresses\naddress {\n  margin-bottom: @line-height-computed;\n  font-style: normal;\n  line-height: @line-height-base;\n}\n","// Typography\n\n.text-emphasis-variant(@color) {\n  color: @color;\n  a&:hover {\n    color: darken(@color, 10%);\n  }\n}\n","// Contextual backgrounds\n\n.bg-variant(@color) {\n  background-color: @color;\n  a&:hover {\n    background-color: darken(@color, 10%);\n  }\n}\n","// Text overflow\n// Requires inline-block or block for proper styling\n\n.text-overflow() {\n  overflow: hidden;\n  text-overflow: ellipsis;\n  white-space: nowrap;\n}\n","//\n// Code (inline and block)\n// --------------------------------------------------\n\n\n// Inline and block code styles\ncode,\nkbd,\npre,\nsamp {\n  font-family: @font-family-monospace;\n}\n\n// Inline code\ncode {\n  padding: 0;\n  font-size: @font-size-base;\n  color: @code-color;\n  background-color: @code-bg;\n}\n\n// User input typically entered via keyboard\nkbd {\n  padding: 0;\n  font-size: @font-size-base;\n  color: @kbd-color;\n  background-color: @kbd-bg;\n\n  kbd {\n    padding: 0;\n    font-size: @font-size-base;\n    font-weight: normal;\n  }\n}\n\n// Blocks of code\npre {\n  display: block;\n  padding: ((@line-height-computed - 1) / 2);\n  margin: 0 0 (@line-height-computed / 2);\n  font-size: @font-size-base;\n  line-height: @line-height-base;\n  word-break: break-all;\n  word-wrap: break-word;\n  color: @pre-color;\n  background-color: @pre-bg;\n  border: @borderWidth solid @pre-border-color;\n\n  // Account for some code outputs that place code tags in pre tags\n  code {\n    padding: 0;\n    font-size: inherit;\n    color: inherit;\n    white-space: pre-wrap;\n    background-color: transparent;\n  }\n}\n\n// Enable scrollable blocks of code\n.pre-scrollable {\n  max-height: @pre-scrollable-max-height;\n  overflow-y: scroll;\n}\n","//\n// Grid system\n// --------------------------------------------------\n\n\n// Container widths\n//\n// Set the container width, and override it for fixed navbars in media queries.\n\n.container {\n  .container-fixed();\n\n  @media (min-width: @screen-sm-min) {\n    width: @container-sm;\n  }\n  @media (min-width: @screen-md-min) {\n    width: @container-md;\n  }\n  @media (min-width: @screen-lg-min) {\n    width: @container-lg;\n  }\n}\n\n\n// Fluid container\n//\n// Utilizes the mixin meant for fixed width containers, but without any defined\n// width for fluid, full width layouts.\n\n.container-fluid {\n  .container-fixed();\n}\n\n\n// Row\n//\n// Rows contain and clear the floats of your columns.\n\n.row {\n  .make-row();\n}\n\n\n// Columns\n//\n// Common styles for small and large grid columns\n\n.make-grid-columns();\n\n\n// Extra small grid\n//\n// Columns, offsets, pushes, and pulls for extra small devices like\n// smartphones.\n\n.make-grid(xs);\n\n\n// Small grid\n//\n// Columns, offsets, pushes, and pulls for the small device range, from phones\n// to tablets.\n\n@media (min-width: @screen-sm-min) {\n  .make-grid(sm);\n}\n\n\n// Medium grid\n//\n// Columns, offsets, pushes, and pulls for the desktop device range.\n\n@media (min-width: @screen-md-min) {\n  .make-grid(md);\n}\n\n\n// Large grid\n//\n// Columns, offsets, pushes, and pulls for the large desktop device range.\n\n@media (min-width: @screen-lg-min) {\n  .make-grid(lg);\n}\n","// Grid system\n//\n// Generate semantic grid columns with these mixins.\n\n// Centered container element\n.container-fixed(@gutter: @grid-gutter-width) {\n  margin-right: auto;\n  margin-left: auto;\n  padding-left:  (@gutter / 2);\n  padding-right: (@gutter / 2);\n  &:extend(.clearfix all);\n}\n\n// Creates a wrapper for a series of columns\n.make-row(@gutter: @grid-gutter-width) {\n  margin-left:  (@gutter / -2);\n  margin-right: (@gutter / -2);\n  &:extend(.clearfix all);\n}\n\n// Generate the extra small columns\n.make-xs-column(@columns; @gutter: @grid-gutter-width) {\n  position: relative;\n  float: left;\n  width: percentage((@columns / @grid-columns));\n  min-height: 1px;\n  padding-left:  (@gutter / 2);\n  padding-right: (@gutter / 2);\n}\n.make-xs-column-offset(@columns) {\n  margin-left: percentage((@columns / @grid-columns));\n}\n.make-xs-column-push(@columns) {\n  left: percentage((@columns / @grid-columns));\n}\n.make-xs-column-pull(@columns) {\n  right: percentage((@columns / @grid-columns));\n}\n\n// Generate the small columns\n.make-sm-column(@columns; @gutter: @grid-gutter-width) {\n  position: relative;\n  min-height: 1px;\n  padding-left:  (@gutter / 2);\n  padding-right: (@gutter / 2);\n\n  @media (min-width: @screen-sm-min) {\n    float: left;\n    width: percentage((@columns / @grid-columns));\n  }\n}\n.make-sm-column-offset(@columns) {\n  @media (min-width: @screen-sm-min) {\n    margin-left: percentage((@columns / @grid-columns));\n  }\n}\n.make-sm-column-push(@columns) {\n  @media (min-width: @screen-sm-min) {\n    left: percentage((@columns / @grid-columns));\n  }\n}\n.make-sm-column-pull(@columns) {\n  @media (min-width: @screen-sm-min) {\n    right: percentage((@columns / @grid-columns));\n  }\n}\n\n// Generate the medium columns\n.make-md-column(@columns; @gutter: @grid-gutter-width) {\n  position: relative;\n  min-height: 1px;\n  padding-left:  (@gutter / 2);\n  padding-right: (@gutter / 2);\n\n  @media (min-width: @screen-md-min) {\n    float: left;\n    width: percentage((@columns / @grid-columns));\n  }\n}\n.make-md-column-offset(@columns) {\n  @media (min-width: @screen-md-min) {\n    margin-left: percentage((@columns / @grid-columns));\n  }\n}\n.make-md-column-push(@columns) {\n  @media (min-width: @screen-md-min) {\n    left: percentage((@columns / @grid-columns));\n  }\n}\n.make-md-column-pull(@columns) {\n  @media (min-width: @screen-md-min) {\n    right: percentage((@columns / @grid-columns));\n  }\n}\n\n// Generate the large columns\n.make-lg-column(@columns; @gutter: @grid-gutter-width) {\n  position: relative;\n  min-height: 1px;\n  padding-left:  (@gutter / 2);\n  padding-right: (@gutter / 2);\n\n  @media (min-width: @screen-lg-min) {\n    float: left;\n    width: percentage((@columns / @grid-columns));\n  }\n}\n.make-lg-column-offset(@columns) {\n  @media (min-width: @screen-lg-min) {\n    margin-left: percentage((@columns / @grid-columns));\n  }\n}\n.make-lg-column-push(@columns) {\n  @media (min-width: @screen-lg-min) {\n    left: percentage((@columns / @grid-columns));\n  }\n}\n.make-lg-column-pull(@columns) {\n  @media (min-width: @screen-lg-min) {\n    right: percentage((@columns / @grid-columns));\n  }\n}\n","// Framework grid generation\n//\n// Used only by Bootstrap to generate the correct number of grid classes given\n// any value of `@grid-columns`.\n\n.make-grid-columns() {\n  // Common styles for all sizes of grid columns, widths 1-12\n  .col(@index) { // initial\n    @item: ~\".col-xs-@{index}, .col-sm-@{index}, .col-md-@{index}, .col-lg-@{index}\";\n    .col((@index + 1), @item);\n  }\n  .col(@index, @list) when (@index =< @grid-columns) { // general; \"=<\" isn't a typo\n    @item: ~\".col-xs-@{index}, .col-sm-@{index}, .col-md-@{index}, .col-lg-@{index}\";\n    .col((@index + 1), ~\"@{list}, @{item}\");\n  }\n  .col(@index, @list) when (@index > @grid-columns) { // terminal\n    @{list} {\n      position: relative;\n      // Prevent columns from collapsing when empty\n      min-height: 1px;\n      // Inner gutter via padding\n      padding-left:  (@grid-gutter-width / 2);\n      padding-right: (@grid-gutter-width / 2);\n    }\n  }\n  .col(1); // kickstart it\n}\n\n.float-grid-columns(@class) {\n  .col(@index) { // initial\n    @item: ~\".col-@{class}-@{index}\";\n    .col((@index + 1), @item);\n  }\n  .col(@index, @list) when (@index =< @grid-columns) { // general\n    @item: ~\".col-@{class}-@{index}\";\n    .col((@index + 1), ~\"@{list}, @{item}\");\n  }\n  .col(@index, @list) when (@index > @grid-columns) { // terminal\n    @{list} {\n      float: left;\n    }\n  }\n  .col(1); // kickstart it\n}\n\n.calc-grid-column(@index, @class, @type) when (@type = width) and (@index > 0) {\n  .col-@{class}-@{index} {\n    width: percentage((@index / @grid-columns));\n  }\n}\n.calc-grid-column(@index, @class, @type) when (@type = push) and (@index > 0) {\n  .col-@{class}-push-@{index} {\n    left: percentage((@index / @grid-columns));\n  }\n}\n.calc-grid-column(@index, @class, @type) when (@type = push) and (@index = 0) {\n  .col-@{class}-push-0 {\n    left: auto;\n  }\n}\n.calc-grid-column(@index, @class, @type) when (@type = pull) and (@index > 0) {\n  .col-@{class}-pull-@{index} {\n    right: percentage((@index / @grid-columns));\n  }\n}\n.calc-grid-column(@index, @class, @type) when (@type = pull) and (@index = 0) {\n  .col-@{class}-pull-0 {\n    right: auto;\n  }\n}\n.calc-grid-column(@index, @class, @type) when (@type = offset) {\n  .col-@{class}-offset-@{index} {\n    margin-left: percentage((@index / @grid-columns));\n  }\n}\n\n// Basic looping in LESS\n.loop-grid-columns(@index, @class, @type) when (@index >= 0) {\n  .calc-grid-column(@index, @class, @type);\n  // next iteration\n  .loop-grid-columns((@index - 1), @class, @type);\n}\n\n// Create grid for specific class\n.make-grid(@class) {\n  .float-grid-columns(@class);\n  .loop-grid-columns(@grid-columns, @class, width);\n  .loop-grid-columns(@grid-columns, @class, pull);\n  .loop-grid-columns(@grid-columns, @class, push);\n  .loop-grid-columns(@grid-columns, @class, offset);\n}\n","//\n// Tables\n// --------------------------------------------------\n\n\ntable {\n  background-color: @table-bg;\n}\ncaption {\n  padding-top: @table-cell-padding;\n  padding-bottom: @table-cell-padding;\n  color: @text-muted;\n  text-align: left;\n}\nth {\n  text-align: left;\n  font-weight: normal;\n}\n\n\n// Baseline styles\n\n.table {\n  width: 100%;\n  max-width: 100%;\n  margin-bottom: @line-height-computed;\n  // Cells\n  > thead,\n  > tbody,\n  > tfoot {\n    > tr {\n      > th,\n      > td {\n        padding: @table-cell-padding;\n        line-height: @line-height-base;\n        vertical-align: top;\n        border-top: @borderWidth solid @table-border-color;\n      }\n    }\n  }\n  // Bottom align for column headings\n  > thead > tr > th {\n    vertical-align: bottom;\n    border-bottom: @borderWidth solid @table-border-color;\n  }\n  // Remove top border from thead by default\n  > caption + thead,\n  > colgroup + thead,\n  > thead:first-child {\n    > tr:first-child {\n      > th,\n      > td {\n        border-top: 1px;\n      }\n    }\n  }\n  // Account for multiple tbody instances\n  > tbody + tbody {\n    border-top: @borderWidth solid @table-border-color;\n  }\n\n  // Nesting\n  .table {\n    background-color: @body-bg;\n  }\n}\n\n\n// Condensed table w/ half padding\n\n.table-condensed {\n  > thead,\n  > tbody,\n  > tfoot {\n    > tr {\n      > th,\n      > td {\n        padding: @table-condensed-cell-padding;\n      }\n    }\n  }\n}\n\n\n// Bordered version\n//\n// Add borders all around the table and between all the columns.\n\n.table-bordered {\n  border: 1px solid @table-border-color;\n  > thead,\n  > tbody,\n  > tfoot {\n    > tr {\n      > th,\n      > td {\n        border: @borderWidth solid @table-border-color;\n      }\n    }\n  }\n  > thead > tr {\n    > th,\n    > td {\n      border-bottom-width: @borderWidth;\n    }\n  }\n}\n\n\n// Zebra-striping\n//\n// Default zebra-stripe styles (alternating gray and transparent backgrounds)\n\n.table-striped {\n  > tbody > tr:nth-of-type(odd) {\n    color: @cyan;\n  }\n}\n\n\n// Hover effect\n//\n// Placed here since it has to come after the potential zebra striping\n\n.table-hover {\n  > tbody > tr:hover {\n    background-color: @table-bg-hover;\n  }\n}\n\n\n// Table cell sizing\n//\n// Reset default table behavior\n\ntable col[class*=\"col-\"] {\n  position: static; // Prevent border hiding in Firefox and IE9-11 (see https://github.com/twbs/bootstrap/issues/11623)\n  float: none;\n  display: table-column;\n}\ntable {\n  td,\n  th {\n    &[class*=\"col-\"] {\n      position: static; // Prevent border hiding in Firefox and IE9-11 (see https://github.com/twbs/bootstrap/issues/11623)\n      float: none;\n      display: table-cell;\n    }\n  }\n}\n\n\n// Table backgrounds\n//\n// Exact selectors below required to override `.table-striped` and prevent\n// inheritance to nested tables.\n\n// Generate the contextual variants\n.table-row-variant(active; @table-bg-active);\n.table-row-variant(success; @state-success-bg);\n.table-row-variant(info; @state-info-bg);\n.table-row-variant(warning; @state-warning-bg);\n.table-row-variant(danger; @state-danger-bg);\n\n\n// Responsive tables\n//\n// Wrap your tables in `.table-responsive` and we'll make them mobile friendly\n// by enabling horizontal scrolling. Only applies <768px. Everything above that\n// will display normally.\n\n.table-responsive {\n  overflow-x: auto;\n  min-height: 0.01%; // Workaround for IE9 bug (see https://github.com/twbs/bootstrap/issues/14837)\n\n  @media screen and (max-width: @screen-xs-max) {\n    width: 100%;\n    margin-bottom: @bs;\n    overflow-y: hidden;\n    -ms-overflow-style: -ms-autohiding-scrollbar;\n    border: @borderWidth solid @table-border-color;\n\n    // Tighten up spacing\n    > .table {\n      margin-bottom: 0;\n\n      // Ensure the content doesn't wrap\n      > thead,\n      > tbody,\n      > tfoot {\n        > tr {\n          > th,\n          > td {\n            white-space: nowrap;\n          }\n        }\n      }\n    }\n\n    // Special overrides for the bordered tables\n    > .table-bordered {\n      border: 0;\n\n      // Nuke the appropriate borders so that the parent can handle them\n      > thead,\n      > tbody,\n      > tfoot {\n        > tr {\n          > th:first-child,\n          > td:first-child {\n          }\n          > th:last-child,\n          > td:last-child {\n          }\n        }\n      }\n\n      // Only nuke the last row's bottom-border in `tbody` and `tfoot` since\n      // chances are there will be only one `tr` in a `thead` and that would\n      // remove the border altogether.\n      > tbody,\n      > tfoot {\n        > tr:last-child {\n          > th,\n          > td {\n          }\n        }\n      }\n\n    }\n  }\n}\n","// Tables\n\n.table-row-variant(@state; @background) {\n  // Exact selectors below required to override `.table-striped` and prevent\n  // inheritance to nested tables.\n  .table > thead > tr,\n  .table > tbody > tr,\n  .table > tfoot > tr {\n    > td.@{state},\n    > th.@{state},\n    &.@{state} > td,\n    &.@{state} > th {\n      color: @background;\n    }\n  }\n}\n","//\n// Forms\n// --------------------------------------------------\n\n\n// Normalize non-controls\n//\n// Restyle and baseline non-control form elements.\n\nfieldset {\n  padding: 0;\n  margin: 0;\n  border: 0;\n  // Chrome and Firefox set a `min-width: min-content;` on fieldsets,\n  // so we reset that to ensure it behaves more like a standard block element.\n  // See https://github.com/twbs/bootstrap/issues/12359.\n  min-width: 0;\n}\n\nlegend {\n  display: block;\n  width: 100%;\n  padding: 0;\n  margin-bottom: @line-height-computed;\n  font-size: @font-size-base;\n  line-height: @baseLineHeight;\n  color: @legend-color;\n  border: 0;\n}\nlegend:before {\n  content: \"## \";\n}\nlegend:after {\n  content: \" ##\";\n}\n\nlabel {\n  display: inline-block;\n  max-width: 100%; // Force IE8 to wrap long content (see https://github.com/twbs/bootstrap/issues/13141)\n  font-weight: normal;\n}\n\n\n// Normalize form controls\n//\n// While most of our form styles require extra classes, some basic normalization\n// is required to ensure optimum display with or without those classes to better\n// address browser inconsistencies.\n\n// Override content-box in Normalize (* isn't specific enough)\ninput[type=\"search\"] {\n  .box-sizing(border-box);\n}\n\n// Position radios and checkboxes better\ninput[type=\"radio\"],\ninput[type=\"checkbox\"] {\n  margin: 0 (@baseLineWidth / 2);\n  line-height: @baseLineHeight;\n}\ninput[type=\"text\"]:before {\n  content: \"[\";\n}\ninput[type=\"text\"]:after {\n  content: \"]\";\n}\n\n// Set the height of file controls to match text inputs\ninput[type=\"file\"] {\n  display: block;\n}\n\n// Make range inputs behave like textual form controls\ninput[type=\"range\"] {\n  display: block;\n  width: 100%;\n}\n\n// Make multiple select elements height not fixed\nselect[multiple],\nselect[size] {\n  height: auto;\n}\n\n// Focus for file, radio, and checkbox\ninput[type=\"file\"]:focus,\ninput[type=\"radio\"]:focus,\ninput[type=\"checkbox\"]:focus {\n  .tab-focus();\n}\n\n// Adjust output element\noutput {\n  display: block;\n  padding-top: 0;\n  font-size: @font-size-base;\n  line-height: @line-height-base;\n  color: @input-color;\n}\n\n\n// Common form controls\n//\n// Shared size and type resets for form controls. Apply `.form-control` to any\n// of the following form controls:\n//\n// select\n// textarea\n// input[type=\"text\"]\n// input[type=\"password\"]\n// input[type=\"datetime\"]\n// input[type=\"datetime-local\"]\n// input[type=\"date\"]\n// input[type=\"month\"]\n// input[type=\"time\"]\n// input[type=\"week\"]\n// input[type=\"number\"]\n// input[type=\"email\"]\n// input[type=\"url\"]\n// input[type=\"search\"]\n// input[type=\"tel\"]\n// input[type=\"color\"]\n\n.form-control {\n  display: block;\n  width: 100%;\n  height: @input-height-base; // Make inputs at least the height of their button counterpart (base line-height + padding + border)\n  padding: @padding-base-vertical @padding-base-horizontal;\n  line-height: @line-height-base;\n  color: @input-color;\n  background-color: @input-bg;\n  background-image: none; // Reset unusual Firefox-on-Android default style; see https://github.com/necolas/normalize.css/issues/214\n  border: none;\n\n  // Customize the `:focus` state to imitate native WebKit styles.\n  .form-control-focus();\n\n  // Placeholder\n  .placeholder();\n\n  // Disabled and read-only inputs\n  //\n  // HTML5 says that controls under a fieldset > legend:first-child won't be\n  // disabled if the fieldset is disabled. Due to implementation difficulty, we\n  // don't honor that edge case; we style them as disabled anyway.\n  &[disabled],\n  &[readonly],\n  fieldset[disabled] & {\n    cursor: @cursor-disabled;\n    background-color: @input-bg-disabled;\n    opacity: 1; // iOS fix for unreadable disabled content; see https://github.com/twbs/bootstrap/issues/11655\n  }\n\n  // Reset height for `textarea`s\n  textarea& {\n    height: auto;\n  }\n}\n\n\n// Search inputs in iOS\n//\n// This overrides the extra rounded corners on search inputs in iOS so that our\n// `.form-control` class can properly style them. Note that this cannot simply\n// be added to `.form-control` as it's not specific enough. For details, see\n// https://github.com/twbs/bootstrap/issues/11586.\n\ninput[type=\"search\"] {\n  -webkit-appearance: none;\n}\n\n\n// Special styles for iOS temporal inputs\n//\n// In Mobile Safari, setting `display: block` on temporal inputs causes the\n// text within the input to become vertically misaligned. As a workaround, we\n// set a pixel line-height that matches the given height of the input, but only\n// for Safari. See https://bugs.webkit.org/show_bug.cgi?id=139848\n\n@media screen and (-webkit-min-device-pixel-ratio: 0) {\n  input[type=\"date\"],\n  input[type=\"time\"],\n  input[type=\"datetime-local\"],\n  input[type=\"month\"] {\n    line-height: @input-height-base;\n\n    &.input-sm,\n    .input-group-sm & {\n      line-height: @input-height-small;\n    }\n\n    &.input-lg,\n    .input-group-lg & {\n      line-height: @input-height-large;\n    }\n  }\n}\n\n\n// Form groups\n//\n// Designed to help with the organization and spacing of vertical forms. For\n// horizontal forms, use the predefined grid classes.\n\n.form-group {\n  margin-bottom: @baseLineHeight;\n}\n\n\n// Checkboxes and radios\n//\n// Indent the labels to position radios/checkboxes as hanging controls.\n\n.radio,\n.checkbox {\n  position: relative;\n  display: block;\n  margin-top: @ts;\n  margin-bottom: @bs;\n\n  label {\n    min-height: @line-height-computed; // Ensure the input doesn't jump when there is no text\n    padding-left: 20px;\n    margin-bottom: 0;\n    font-weight: normal;\n    cursor: pointer;\n  }\n}\n.radio input[type=\"radio\"],\n.radio-inline input[type=\"radio\"],\n.checkbox input[type=\"checkbox\"],\n.checkbox-inline input[type=\"checkbox\"] {\n  position: absolute;\n  margin-left: -20px;\n  margin-top: 4px \\9;\n}\n\n.radio + .radio,\n.checkbox + .checkbox {\n  margin-top: -@ts; // Move up sibling radios or checkboxes for tighter spacing\n}\n\n// Radios and checkboxes on same line\n.radio-inline,\n.checkbox-inline {\n  display: inline-block;\n  padding-left: @baseWidth;\n  margin-bottom: 0;\n  vertical-align: middle;\n  font-weight: normal;\n  cursor: pointer;\n}\n.radio-inline + .radio-inline,\n.checkbox-inline + .checkbox-inline {\n  margin-top: 0;\n  margin-left: 10px; // space out consecutive inline controls\n}\n\n// Apply same disabled cursor tweak as for inputs\n// Some special care is needed because