From 906383b88e04d975c1a58d5cef434a58d059ef0d Mon Sep 17 00:00:00 2001 From: Henk Verlinde Date: Tue, 8 Nov 2022 09:11:00 +0100 Subject: [PATCH] feat: initial commit --- .gitignore | 1 + CHANGELOG.md | 5 + LICENSE | 320 + __tests__/cli.spec.ts | 98 + build.config.ts | 35 + dist/index.mjs | 7489 +++++++++++++++++ index.js | 3 + package-lock.json | 4685 +++++++++++ package.json | 47 + src/index.ts | 358 + template-bs-starter-recommended/.editorconfig | 11 + template-bs-starter-recommended/.eslintignore | 2 + .../.eslintrc.json | 31 + template-bs-starter-recommended/.gitignore | 5 + .../.markdownlint-cli2.jsonc | 11 + .../.stylelintignore | 2 + .../.stylelintrc.json | 37 + template-bs-starter-recommended/LICENSE | 21 + .../config/_default/config.toml | 44 + .../config/_default/markup.toml | 29 + .../config/_default/menus.toml | 14 + .../config/_default/module.toml | 39 + .../config/_default/params.toml | 64 + .../config/babel.config.js | 17 + .../config/next/config.toml | 1 + .../config/postcss.config.js | 35 + .../config/production/config.toml | 1 + .../content/_index.md | 11 + .../content/blog/_index.md | 15 + .../content/quick-start/index.md | 32 + template-bs-starter-recommended/netlify.toml | 60 + template-bs-starter-recommended/package.json | 39 + .../static/android-chrome-192x192.png | Bin 0 -> 6450 bytes .../static/android-chrome-512x512.png | Bin 0 -> 22135 bytes .../static/apple-touch-icon.png | Bin 0 -> 5960 bytes .../static/favicon-16x16.png | Bin 0 -> 520 bytes .../static/favicon-32x32.png | Bin 0 -> 1003 bytes .../static/favicon.ico | Bin 0 -> 15406 bytes .../static/favicon.svg | 1 + .../vendor/inter/inter-v2-latin-500.woff | Bin 0 -> 22404 bytes .../vendor/inter/inter-v2-latin-500.woff2 | Bin 0 -> 17728 bytes .../static/images/hyas-schema-image.png | Bin 0 -> 8215 bytes .../static/images/hyas-schema-logo.png | Bin 0 -> 22135 bytes .../static/images/hyas-schema-logo.svg | 1 + .../static/images/hyas-screenshot.png | Bin 0 -> 58631 bytes .../static/site.webmanifest | 1 + template-bs-starter/.editorconfig | 11 + template-bs-starter/.eslintignore | 2 + template-bs-starter/.eslintrc.json | 31 + template-bs-starter/.gitignore | 5 + template-bs-starter/.markdownlint-cli2.jsonc | 11 + template-bs-starter/.stylelintignore | 2 + template-bs-starter/.stylelintrc.json | 37 + template-bs-starter/LICENSE | 21 + .../config/_default/config.toml | 44 + .../config/_default/markup.toml | 29 + .../config/_default/menus.toml | 14 + .../config/_default/module.toml | 31 + .../config/_default/params.toml | 17 + template-bs-starter/config/babel.config.js | 17 + template-bs-starter/config/next/config.toml | 1 + template-bs-starter/config/postcss.config.js | 35 + .../config/production/config.toml | 1 + template-bs-starter/content/_index.md | 11 + template-bs-starter/content/blog/_index.md | 15 + .../content/quick-start/index.md | 32 + template-bs-starter/netlify.toml | 60 + template-bs-starter/package.json | 37 + .../static/android-chrome-192x192.png | Bin 0 -> 6450 bytes .../static/android-chrome-512x512.png | Bin 0 -> 22135 bytes .../static/apple-touch-icon.png | Bin 0 -> 5960 bytes template-bs-starter/static/favicon-16x16.png | Bin 0 -> 520 bytes template-bs-starter/static/favicon-32x32.png | Bin 0 -> 1003 bytes template-bs-starter/static/favicon.ico | Bin 0 -> 15406 bytes template-bs-starter/static/favicon.svg | 1 + .../vendor/inter/inter-v2-latin-500.woff | Bin 0 -> 22404 bytes .../vendor/inter/inter-v2-latin-500.woff2 | Bin 0 -> 17728 bytes .../static/images/hyas-schema-image.png | Bin 0 -> 8215 bytes .../static/images/hyas-schema-logo.png | Bin 0 -> 22135 bytes .../static/images/hyas-schema-logo.svg | 1 + .../static/images/hyas-screenshot.png | Bin 0 -> 58631 bytes template-bs-starter/static/site.webmanifest | 1 + template-doks-recommended/.editorconfig | 11 + template-doks-recommended/.eslintignore | 2 + template-doks-recommended/.eslintrc.json | 31 + template-doks-recommended/.gitignore | 5 + .../.markdownlint-cli2.jsonc | 11 + template-doks-recommended/.stylelintignore | 2 + template-doks-recommended/.stylelintrc.json | 37 + template-doks-recommended/LICENSE | 21 + .../config/_default/config.toml | 65 + .../config/_default/languages.toml | 28 + .../config/_default/markup.toml | 29 + .../config/_default/menus.toml | 14 + .../config/_default/menus/menus.en.toml | 83 + .../config/_default/menus/menus.nl.toml | 39 + .../config/_default/module.toml | 83 + .../config/_default/params.toml | 96 + .../config/babel.config.js | 17 + .../config/next/config.toml | 1 + .../config/postcss.config.js | 52 + .../config/production/config.toml | 1 + template-doks-recommended/netlify.toml | 60 + template-doks-recommended/package.json | 39 + template-doks/.editorconfig | 11 + template-doks/.eslintignore | 2 + template-doks/.eslintrc.json | 31 + template-doks/.gitignore | 5 + template-doks/.markdownlint-cli2.jsonc | 11 + template-doks/.stylelintignore | 2 + template-doks/.stylelintrc.json | 37 + template-doks/LICENSE | 21 + template-doks/config/_default/config.toml | 65 + template-doks/config/_default/languages.toml | 28 + template-doks/config/_default/markup.toml | 29 + template-doks/config/_default/menus.toml | 14 + .../config/_default/menus/menus.en.toml | 83 + .../config/_default/menus/menus.nl.toml | 39 + template-doks/config/_default/module.toml | 75 + template-doks/config/_default/params.toml | 49 + template-doks/config/babel.config.js | 17 + template-doks/config/next/config.toml | 1 + template-doks/config/postcss.config.js | 52 + template-doks/config/production/config.toml | 1 + template-doks/netlify.toml | 60 + template-doks/package.json | 37 + template-no-theme-recommended/.editorconfig | 11 + template-no-theme-recommended/.eslintignore | 2 + template-no-theme-recommended/.eslintrc.json | 31 + template-no-theme-recommended/.gitignore | 5 + .../.markdownlint-cli2.jsonc | 11 + .../.stylelintignore | 2 + .../.stylelintrc.json | 37 + template-no-theme-recommended/LICENSE | 21 + .../config/_default/config.toml | 44 + .../config/_default/markup.toml | 29 + .../config/_default/menus.toml | 14 + .../config/_default/module.toml | 27 + .../config/_default/params.toml | 56 + .../config/babel.config.js | 17 + .../config/next/config.toml | 1 + .../config/postcss.config.js | 32 + .../config/production/config.toml | 1 + .../content/_index.md | 11 + .../content/blog/_index.md | 15 + .../content/quick-start/index.md | 32 + template-no-theme-recommended/netlify.toml | 60 + template-no-theme-recommended/package.json | 38 + .../static/android-chrome-192x192.png | Bin 0 -> 6450 bytes .../static/android-chrome-512x512.png | Bin 0 -> 22135 bytes .../static/apple-touch-icon.png | Bin 0 -> 5960 bytes .../static/favicon-16x16.png | Bin 0 -> 520 bytes .../static/favicon-32x32.png | Bin 0 -> 1003 bytes .../static/favicon.ico | Bin 0 -> 15406 bytes .../static/favicon.svg | 1 + .../vendor/inter/inter-v2-latin-500.woff | Bin 0 -> 22404 bytes .../vendor/inter/inter-v2-latin-500.woff2 | Bin 0 -> 17728 bytes .../static/images/hyas-schema-image.png | Bin 0 -> 8215 bytes .../static/images/hyas-schema-logo.png | Bin 0 -> 22135 bytes .../static/images/hyas-schema-logo.svg | 1 + .../static/images/hyas-screenshot.png | Bin 0 -> 58631 bytes .../static/site.webmanifest | 1 + template-no-theme/.editorconfig | 11 + template-no-theme/.eslintignore | 2 + template-no-theme/.eslintrc.json | 31 + template-no-theme/.gitignore | 5 + template-no-theme/.markdownlint-cli2.jsonc | 11 + template-no-theme/.stylelintignore | 2 + template-no-theme/.stylelintrc.json | 37 + template-no-theme/LICENSE | 21 + template-no-theme/config/_default/config.toml | 44 + template-no-theme/config/_default/markup.toml | 29 + template-no-theme/config/_default/menus.toml | 14 + template-no-theme/config/_default/module.toml | 19 + template-no-theme/config/_default/params.toml | 9 + template-no-theme/config/babel.config.js | 17 + template-no-theme/config/next/config.toml | 1 + template-no-theme/config/postcss.config.js | 32 + .../config/production/config.toml | 1 + template-no-theme/content/_index.md | 11 + template-no-theme/content/blog/_index.md | 15 + .../content/quick-start/index.md | 32 + template-no-theme/netlify.toml | 60 + template-no-theme/package.json | 36 + .../static/android-chrome-192x192.png | Bin 0 -> 6450 bytes .../static/android-chrome-512x512.png | Bin 0 -> 22135 bytes template-no-theme/static/apple-touch-icon.png | Bin 0 -> 5960 bytes template-no-theme/static/favicon-16x16.png | Bin 0 -> 520 bytes template-no-theme/static/favicon-32x32.png | Bin 0 -> 1003 bytes template-no-theme/static/favicon.ico | Bin 0 -> 15406 bytes template-no-theme/static/favicon.svg | 1 + .../vendor/inter/inter-v2-latin-500.woff | Bin 0 -> 22404 bytes .../vendor/inter/inter-v2-latin-500.woff2 | Bin 0 -> 17728 bytes .../static/images/hyas-schema-image.png | Bin 0 -> 8215 bytes .../static/images/hyas-schema-logo.png | Bin 0 -> 22135 bytes .../static/images/hyas-schema-logo.svg | 1 + .../static/images/hyas-screenshot.png | Bin 0 -> 58631 bytes template-no-theme/static/site.webmanifest | 1 + tsconfig.json | 14 + 199 files changed, 16386 insertions(+) create mode 100644 .gitignore create mode 100644 CHANGELOG.md create mode 100644 LICENSE create mode 100644 __tests__/cli.spec.ts create mode 100644 build.config.ts create mode 100644 dist/index.mjs create mode 100644 index.js create mode 100644 package-lock.json create mode 100644 package.json create mode 100644 src/index.ts create mode 100644 template-bs-starter-recommended/.editorconfig create mode 100644 template-bs-starter-recommended/.eslintignore create mode 100644 template-bs-starter-recommended/.eslintrc.json create mode 100644 template-bs-starter-recommended/.gitignore create mode 100644 template-bs-starter-recommended/.markdownlint-cli2.jsonc create mode 100644 template-bs-starter-recommended/.stylelintignore create mode 100644 template-bs-starter-recommended/.stylelintrc.json create mode 100644 template-bs-starter-recommended/LICENSE create mode 100644 template-bs-starter-recommended/config/_default/config.toml create mode 100644 template-bs-starter-recommended/config/_default/markup.toml create mode 100644 template-bs-starter-recommended/config/_default/menus.toml create mode 100644 template-bs-starter-recommended/config/_default/module.toml create mode 100644 template-bs-starter-recommended/config/_default/params.toml create mode 100644 template-bs-starter-recommended/config/babel.config.js create mode 100644 template-bs-starter-recommended/config/next/config.toml create mode 100644 template-bs-starter-recommended/config/postcss.config.js create mode 100644 template-bs-starter-recommended/config/production/config.toml create mode 100644 template-bs-starter-recommended/content/_index.md create mode 100644 template-bs-starter-recommended/content/blog/_index.md create mode 100644 template-bs-starter-recommended/content/quick-start/index.md create mode 100644 template-bs-starter-recommended/netlify.toml create mode 100644 template-bs-starter-recommended/package.json create mode 100644 template-bs-starter-recommended/static/android-chrome-192x192.png create mode 100644 template-bs-starter-recommended/static/android-chrome-512x512.png create mode 100644 template-bs-starter-recommended/static/apple-touch-icon.png create mode 100644 template-bs-starter-recommended/static/favicon-16x16.png create mode 100644 template-bs-starter-recommended/static/favicon-32x32.png create mode 100644 template-bs-starter-recommended/static/favicon.ico create mode 100644 template-bs-starter-recommended/static/favicon.svg create mode 100644 template-bs-starter-recommended/static/fonts/vendor/inter/inter-v2-latin-500.woff create mode 100644 template-bs-starter-recommended/static/fonts/vendor/inter/inter-v2-latin-500.woff2 create mode 100644 template-bs-starter-recommended/static/images/hyas-schema-image.png create mode 100644 template-bs-starter-recommended/static/images/hyas-schema-logo.png create mode 100644 template-bs-starter-recommended/static/images/hyas-schema-logo.svg create mode 100644 template-bs-starter-recommended/static/images/hyas-screenshot.png create mode 100644 template-bs-starter-recommended/static/site.webmanifest create mode 100644 template-bs-starter/.editorconfig create mode 100644 template-bs-starter/.eslintignore create mode 100644 template-bs-starter/.eslintrc.json create mode 100644 template-bs-starter/.gitignore create mode 100644 template-bs-starter/.markdownlint-cli2.jsonc create mode 100644 template-bs-starter/.stylelintignore create mode 100644 template-bs-starter/.stylelintrc.json create mode 100644 template-bs-starter/LICENSE create mode 100644 template-bs-starter/config/_default/config.toml create mode 100644 template-bs-starter/config/_default/markup.toml create mode 100644 template-bs-starter/config/_default/menus.toml create mode 100644 template-bs-starter/config/_default/module.toml create mode 100644 template-bs-starter/config/_default/params.toml create mode 100644 template-bs-starter/config/babel.config.js create mode 100644 template-bs-starter/config/next/config.toml create mode 100644 template-bs-starter/config/postcss.config.js create mode 100644 template-bs-starter/config/production/config.toml create mode 100644 template-bs-starter/content/_index.md create mode 100644 template-bs-starter/content/blog/_index.md create mode 100644 template-bs-starter/content/quick-start/index.md create mode 100644 template-bs-starter/netlify.toml create mode 100644 template-bs-starter/package.json create mode 100644 template-bs-starter/static/android-chrome-192x192.png create mode 100644 template-bs-starter/static/android-chrome-512x512.png create mode 100644 template-bs-starter/static/apple-touch-icon.png create mode 100644 template-bs-starter/static/favicon-16x16.png create mode 100644 template-bs-starter/static/favicon-32x32.png create mode 100644 template-bs-starter/static/favicon.ico create mode 100644 template-bs-starter/static/favicon.svg create mode 100644 template-bs-starter/static/fonts/vendor/inter/inter-v2-latin-500.woff create mode 100644 template-bs-starter/static/fonts/vendor/inter/inter-v2-latin-500.woff2 create mode 100644 template-bs-starter/static/images/hyas-schema-image.png create mode 100644 template-bs-starter/static/images/hyas-schema-logo.png create mode 100644 template-bs-starter/static/images/hyas-schema-logo.svg create mode 100644 template-bs-starter/static/images/hyas-screenshot.png create mode 100644 template-bs-starter/static/site.webmanifest create mode 100644 template-doks-recommended/.editorconfig create mode 100644 template-doks-recommended/.eslintignore create mode 100644 template-doks-recommended/.eslintrc.json create mode 100644 template-doks-recommended/.gitignore create mode 100644 template-doks-recommended/.markdownlint-cli2.jsonc create mode 100644 template-doks-recommended/.stylelintignore create mode 100644 template-doks-recommended/.stylelintrc.json create mode 100644 template-doks-recommended/LICENSE create mode 100644 template-doks-recommended/config/_default/config.toml create mode 100644 template-doks-recommended/config/_default/languages.toml create mode 100644 template-doks-recommended/config/_default/markup.toml create mode 100644 template-doks-recommended/config/_default/menus.toml create mode 100644 template-doks-recommended/config/_default/menus/menus.en.toml create mode 100644 template-doks-recommended/config/_default/menus/menus.nl.toml create mode 100644 template-doks-recommended/config/_default/module.toml create mode 100644 template-doks-recommended/config/_default/params.toml create mode 100644 template-doks-recommended/config/babel.config.js create mode 100644 template-doks-recommended/config/next/config.toml create mode 100644 template-doks-recommended/config/postcss.config.js create mode 100644 template-doks-recommended/config/production/config.toml create mode 100644 template-doks-recommended/netlify.toml create mode 100644 template-doks-recommended/package.json create mode 100644 template-doks/.editorconfig create mode 100644 template-doks/.eslintignore create mode 100644 template-doks/.eslintrc.json create mode 100644 template-doks/.gitignore create mode 100644 template-doks/.markdownlint-cli2.jsonc create mode 100644 template-doks/.stylelintignore create mode 100644 template-doks/.stylelintrc.json create mode 100644 template-doks/LICENSE create mode 100644 template-doks/config/_default/config.toml create mode 100644 template-doks/config/_default/languages.toml create mode 100644 template-doks/config/_default/markup.toml create mode 100644 template-doks/config/_default/menus.toml create mode 100644 template-doks/config/_default/menus/menus.en.toml create mode 100644 template-doks/config/_default/menus/menus.nl.toml create mode 100644 template-doks/config/_default/module.toml create mode 100644 template-doks/config/_default/params.toml create mode 100644 template-doks/config/babel.config.js create mode 100644 template-doks/config/next/config.toml create mode 100644 template-doks/config/postcss.config.js create mode 100644 template-doks/config/production/config.toml create mode 100644 template-doks/netlify.toml create mode 100644 template-doks/package.json create mode 100644 template-no-theme-recommended/.editorconfig create mode 100644 template-no-theme-recommended/.eslintignore create mode 100644 template-no-theme-recommended/.eslintrc.json create mode 100644 template-no-theme-recommended/.gitignore create mode 100644 template-no-theme-recommended/.markdownlint-cli2.jsonc create mode 100644 template-no-theme-recommended/.stylelintignore create mode 100644 template-no-theme-recommended/.stylelintrc.json create mode 100644 template-no-theme-recommended/LICENSE create mode 100644 template-no-theme-recommended/config/_default/config.toml create mode 100644 template-no-theme-recommended/config/_default/markup.toml create mode 100644 template-no-theme-recommended/config/_default/menus.toml create mode 100644 template-no-theme-recommended/config/_default/module.toml create mode 100644 template-no-theme-recommended/config/_default/params.toml create mode 100644 template-no-theme-recommended/config/babel.config.js create mode 100644 template-no-theme-recommended/config/next/config.toml create mode 100644 template-no-theme-recommended/config/postcss.config.js create mode 100644 template-no-theme-recommended/config/production/config.toml create mode 100644 template-no-theme-recommended/content/_index.md create mode 100644 template-no-theme-recommended/content/blog/_index.md create mode 100644 template-no-theme-recommended/content/quick-start/index.md create mode 100644 template-no-theme-recommended/netlify.toml create mode 100644 template-no-theme-recommended/package.json create mode 100644 template-no-theme-recommended/static/android-chrome-192x192.png create mode 100644 template-no-theme-recommended/static/android-chrome-512x512.png create mode 100644 template-no-theme-recommended/static/apple-touch-icon.png create mode 100644 template-no-theme-recommended/static/favicon-16x16.png create mode 100644 template-no-theme-recommended/static/favicon-32x32.png create mode 100644 template-no-theme-recommended/static/favicon.ico create mode 100644 template-no-theme-recommended/static/favicon.svg create mode 100644 template-no-theme-recommended/static/fonts/vendor/inter/inter-v2-latin-500.woff create mode 100644 template-no-theme-recommended/static/fonts/vendor/inter/inter-v2-latin-500.woff2 create mode 100644 template-no-theme-recommended/static/images/hyas-schema-image.png create mode 100644 template-no-theme-recommended/static/images/hyas-schema-logo.png create mode 100644 template-no-theme-recommended/static/images/hyas-schema-logo.svg create mode 100644 template-no-theme-recommended/static/images/hyas-screenshot.png create mode 100644 template-no-theme-recommended/static/site.webmanifest create mode 100644 template-no-theme/.editorconfig create mode 100644 template-no-theme/.eslintignore create mode 100644 template-no-theme/.eslintrc.json create mode 100644 template-no-theme/.gitignore create mode 100644 template-no-theme/.markdownlint-cli2.jsonc create mode 100644 template-no-theme/.stylelintignore create mode 100644 template-no-theme/.stylelintrc.json create mode 100644 template-no-theme/LICENSE create mode 100644 template-no-theme/config/_default/config.toml create mode 100644 template-no-theme/config/_default/markup.toml create mode 100644 template-no-theme/config/_default/menus.toml create mode 100644 template-no-theme/config/_default/module.toml create mode 100644 template-no-theme/config/_default/params.toml create mode 100644 template-no-theme/config/babel.config.js create mode 100644 template-no-theme/config/next/config.toml create mode 100644 template-no-theme/config/postcss.config.js create mode 100644 template-no-theme/config/production/config.toml create mode 100644 template-no-theme/content/_index.md create mode 100644 template-no-theme/content/blog/_index.md create mode 100644 template-no-theme/content/quick-start/index.md create mode 100644 template-no-theme/netlify.toml create mode 100644 template-no-theme/package.json create mode 100644 template-no-theme/static/android-chrome-192x192.png create mode 100644 template-no-theme/static/android-chrome-512x512.png create mode 100644 template-no-theme/static/apple-touch-icon.png create mode 100644 template-no-theme/static/favicon-16x16.png create mode 100644 template-no-theme/static/favicon-32x32.png create mode 100644 template-no-theme/static/favicon.ico create mode 100644 template-no-theme/static/favicon.svg create mode 100644 template-no-theme/static/fonts/vendor/inter/inter-v2-latin-500.woff create mode 100644 template-no-theme/static/fonts/vendor/inter/inter-v2-latin-500.woff2 create mode 100644 template-no-theme/static/images/hyas-schema-image.png create mode 100644 template-no-theme/static/images/hyas-schema-logo.png create mode 100644 template-no-theme/static/images/hyas-schema-logo.svg create mode 100644 template-no-theme/static/images/hyas-screenshot.png create mode 100644 template-no-theme/static/site.webmanifest create mode 100644 tsconfig.json diff --git a/.gitignore b/.gitignore new file mode 100644 index 0000000..b512c09 --- /dev/null +++ b/.gitignore @@ -0,0 +1 @@ +node_modules \ No newline at end of file diff --git a/CHANGELOG.md b/CHANGELOG.md new file mode 100644 index 0000000..bd48566 --- /dev/null +++ b/CHANGELOG.md @@ -0,0 +1,5 @@ +### Changelog + +All notable changes to this project will be documented in this file. Dates are displayed in UTC. + +Generated by [`auto-changelog`](https://github.com/CookPete/auto-changelog). diff --git a/LICENSE b/LICENSE new file mode 100644 index 0000000..63bba49 --- /dev/null +++ b/LICENSE @@ -0,0 +1,320 @@ +# create-hyas license +create-hyas is released under the MIT license: + +MIT License + +Copyright (c) 2022-present Henk Verlinde + +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. + +# create-vite license +create-vite is released under the MIT license: + +MIT License + +Copyright (c) 2019-present, Yuxi (Evan) You and Vite contributors + +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. + +# Licenses of bundled dependencies +The published create-vite artifact additionally contains code with the following licenses: +ISC, MIT + +# Bundled dependencies: +## cross-spawn +License: MIT +By: André Cruz +Repository: git@github.com:moxystudio/node-cross-spawn.git + +> The MIT License (MIT) +> +> Copyright (c) 2018 Made With MOXY Lda +> +> 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. + +--------------------------------------- + +## isexe +License: ISC +By: Isaac Z. Schlueter +Repository: git+https://github.com/isaacs/isexe.git + +> The ISC License +> +> Copyright (c) Isaac Z. Schlueter and Contributors +> +> Permission to use, copy, modify, and/or distribute this software for any +> purpose with or without fee is hereby granted, provided that the above +> copyright notice and this permission notice appear in all copies. +> +> THE SOFTWARE IS PROVIDED "AS IS" AND THE AUTHOR DISCLAIMS ALL WARRANTIES +> WITH REGARD TO THIS SOFTWARE INCLUDING ALL IMPLIED WARRANTIES OF +> MERCHANTABILITY AND FITNESS. IN NO EVENT SHALL THE AUTHOR BE LIABLE FOR +> ANY SPECIAL, DIRECT, INDIRECT, OR CONSEQUENTIAL DAMAGES OR ANY DAMAGES +> WHATSOEVER RESULTING FROM LOSS OF USE, DATA OR PROFITS, WHETHER IN AN +> ACTION OF CONTRACT, NEGLIGENCE OR OTHER TORTIOUS ACTION, ARISING OUT OF OR +> IN CONNECTION WITH THE USE OR PERFORMANCE OF THIS SOFTWARE. + +--------------------------------------- + +## kleur +License: MIT +By: Luke Edwards +Repository: lukeed/kleur + +> The MIT License (MIT) +> +> Copyright (c) Luke Edwards (lukeed.com) +> +> 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. + +--------------------------------------- + +## kolorist +License: MIT +By: Marvin Hagemeister +Repository: https://github.com/marvinhagemeister/kolorist.git + +> The MIT License (MIT) +> +> Copyright (c) 2020-present Marvin Hagemeister +> +> 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. + +--------------------------------------- + +## minimist +License: MIT +By: James Halliday +Repository: git://github.com/minimistjs/minimist.git + +> This software is released under the MIT license: +> +> 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. + +--------------------------------------- + +## path-key +License: MIT +By: Sindre Sorhus +Repository: sindresorhus/path-key + +> MIT License +> +> Copyright (c) Sindre Sorhus (sindresorhus.com) +> +> 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. + +--------------------------------------- + +## prompts +License: MIT +By: Terkel Gjervig +Repository: terkelg/prompts + +> MIT License +> +> Copyright (c) 2018 Terkel Gjervig Nielsen +> +> 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. + +--------------------------------------- + +## shebang-command +License: MIT +By: Kevin Mårtensson +Repository: kevva/shebang-command + +> MIT License +> +> Copyright (c) Kevin Mårtensson (github.com/kevva) +> +> 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. + +--------------------------------------- + +## shebang-regex +License: MIT +By: Sindre Sorhus +Repository: sindresorhus/shebang-regex + +> MIT License +> +> Copyright (c) Sindre Sorhus (sindresorhus.com) +> +> 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. + +--------------------------------------- + +## sisteransi +License: MIT +By: Terkel Gjervig +Repository: https://github.com/terkelg/sisteransi + +> MIT License +> +> Copyright (c) 2018 Terkel Gjervig Nielsen +> +> 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. + +--------------------------------------- + +## which +License: ISC +By: Isaac Z. Schlueter +Repository: git://github.com/isaacs/node-which.git + +> The ISC License +> +> Copyright (c) Isaac Z. Schlueter and Contributors +> +> Permission to use, copy, modify, and/or distribute this software for any +> purpose with or without fee is hereby granted, provided that the above +> copyright notice and this permission notice appear in all copies. +> +> THE SOFTWARE IS PROVIDED "AS IS" AND THE AUTHOR DISCLAIMS ALL WARRANTIES +> WITH REGARD TO THIS SOFTWARE INCLUDING ALL IMPLIED WARRANTIES OF +> MERCHANTABILITY AND FITNESS. IN NO EVENT SHALL THE AUTHOR BE LIABLE FOR +> ANY SPECIAL, DIRECT, INDIRECT, OR CONSEQUENTIAL DAMAGES OR ANY DAMAGES +> WHATSOEVER RESULTING FROM LOSS OF USE, DATA OR PROFITS, WHETHER IN AN +> ACTION OF CONTRACT, NEGLIGENCE OR OTHER TORTIOUS ACTION, ARISING OUT OF OR +> IN CONNECTION WITH THE USE OR PERFORMANCE OF THIS SOFTWARE. diff --git a/__tests__/cli.spec.ts b/__tests__/cli.spec.ts new file mode 100644 index 0000000..f5d666c --- /dev/null +++ b/__tests__/cli.spec.ts @@ -0,0 +1,98 @@ +import { join } from 'node:path' +import type { ExecaSyncReturnValue, SyncOptions } from 'execa' +import { execaCommandSync } from 'execa' +import { mkdirpSync, readdirSync, remove, writeFileSync } from 'fs-extra' +import { afterEach, beforeAll, expect, test } from 'vitest' + +const CLI_PATH = join(__dirname, '..') + +const projectName = 'test-app' +const genPath = join(__dirname, projectName) + +const run = ( + args: string[], + options: SyncOptions = {} +): ExecaSyncReturnValue => { + return execaCommandSync(`node ${CLI_PATH} ${args.join(' ')}`, options) +} + +// Helper to create a non-empty directory +const createNonEmptyDir = () => { + // Create the temporary directory + mkdirpSync(genPath) + + // Create a package.json file + const pkgJson = join(genPath, 'package.json') + writeFileSync(pkgJson, '{ "foo": "bar" }') +} + +// Vue 3 starter template +const templateFiles = readdirSync(join(CLI_PATH, 'template-vue')) + // _gitignore is renamed to .gitignore + .map((filePath) => (filePath === '_gitignore' ? '.gitignore' : filePath)) + .sort() + +beforeAll(() => remove(genPath)) +afterEach(() => remove(genPath)) + +test('prompts for the project name if none supplied', () => { + const { stdout, exitCode } = run([]) + expect(stdout).toContain('Project name:') +}) + +test('prompts for the framework if none supplied when target dir is current directory', () => { + mkdirpSync(genPath) + const { stdout } = run(['.'], { cwd: genPath }) + expect(stdout).toContain('Select a framework:') +}) + +test('prompts for the framework if none supplied', () => { + const { stdout } = run([projectName]) + expect(stdout).toContain('Select a framework:') +}) + +test('prompts for the framework on not supplying a value for --template', () => { + const { stdout } = run([projectName, '--template']) + expect(stdout).toContain('Select a framework:') +}) + +test('prompts for the framework on supplying an invalid template', () => { + const { stdout } = run([projectName, '--template', 'unknown']) + expect(stdout).toContain( + `"unknown" isn't a valid template. Please choose from below:` + ) +}) + +test('asks to overwrite non-empty target directory', () => { + createNonEmptyDir() + const { stdout } = run([projectName], { cwd: __dirname }) + expect(stdout).toContain(`Target directory "${projectName}" is not empty.`) +}) + +test('asks to overwrite non-empty current directory', () => { + createNonEmptyDir() + const { stdout } = run(['.'], { cwd: genPath }) + expect(stdout).toContain(`Current directory is not empty.`) +}) + +test('successfully scaffolds a project based on vue starter template', () => { + const { stdout } = run([projectName, '--template', 'vue'], { + cwd: __dirname + }) + const generatedFiles = readdirSync(genPath).sort() + + // Assertions + expect(stdout).toContain(`Scaffolding project in ${genPath}`) + expect(templateFiles).toEqual(generatedFiles) +}) + +test('works with the -t alias', () => { + const { stdout } = run([projectName, '-t', 'vue'], { + cwd: __dirname + }) + const generatedFiles = readdirSync(genPath).sort() + + // Assertions + expect(stdout).toContain(`Scaffolding project in ${genPath}`) + expect(templateFiles).toEqual(generatedFiles) +}) diff --git a/build.config.ts b/build.config.ts new file mode 100644 index 0000000..817a89a --- /dev/null +++ b/build.config.ts @@ -0,0 +1,35 @@ +import path from 'node:path' +import url from 'node:url' +import { defineBuildConfig } from 'unbuild' +import licensePlugin from '../../scripts/rollupLicensePlugin.mjs' + +const __dirname = path.dirname(url.fileURLToPath(import.meta.url)) + +export default defineBuildConfig({ + entries: ['src/index'], + clean: true, + rollup: { + inlineDependencies: true, + esbuild: { + minify: true + } + }, + alias: { + // we can always use non-transpiled code since we support 14.18.0+ + prompts: 'prompts/lib/index.js' + }, + hooks: { + 'rollup:options'(ctx, options) { + if (!options.plugins) { + options.plugins = [] + } + options.plugins.push( + licensePlugin( + path.resolve(__dirname, './LICENSE'), + 'create-hyas license', + 'create-hyas' + ) + ) + } + } +}) diff --git a/dist/index.mjs b/dist/index.mjs new file mode 100644 index 0000000..4baceee --- /dev/null +++ b/dist/index.mjs @@ -0,0 +1,7489 @@ +import fs$1 from 'node:fs'; +import path$3 from 'node:path'; +import { fileURLToPath } from 'node:url'; +import require$$0$2 from 'child_process'; +import require$$0$1 from 'path'; +import require$$0 from 'fs'; +import require$$0$3 from 'readline'; +import require$$2 from 'events'; + +var commonjsGlobal = typeof globalThis !== 'undefined' ? globalThis : typeof window !== 'undefined' ? window : typeof global !== 'undefined' ? global : typeof self !== 'undefined' ? self : {}; + +var crossSpawn = {exports: {}}; + +var windows; +var hasRequiredWindows; + +function requireWindows () { + if (hasRequiredWindows) return windows; + hasRequiredWindows = 1; + windows = isexe; + isexe.sync = sync; + + var fs = require$$0; + + function checkPathExt (path, options) { + var pathext = options.pathExt !== undefined ? + options.pathExt : process.env.PATHEXT; + + if (!pathext) { + return true + } + + pathext = pathext.split(';'); + if (pathext.indexOf('') !== -1) { + return true + } + for (var i = 0; i < pathext.length; i++) { + var p = pathext[i].toLowerCase(); + if (p && path.substr(-p.length).toLowerCase() === p) { + return true + } + } + return false + } + + function checkStat (stat, path, options) { + if (!stat.isSymbolicLink() && !stat.isFile()) { + return false + } + return checkPathExt(path, options) + } + + function isexe (path, options, cb) { + fs.stat(path, function (er, stat) { + cb(er, er ? false : checkStat(stat, path, options)); + }); + } + + function sync (path, options) { + return checkStat(fs.statSync(path), path, options) + } + return windows; +} + +var mode; +var hasRequiredMode; + +function requireMode () { + if (hasRequiredMode) return mode; + hasRequiredMode = 1; + mode = isexe; + isexe.sync = sync; + + var fs = require$$0; + + function isexe (path, options, cb) { + fs.stat(path, function (er, stat) { + cb(er, er ? false : checkStat(stat, options)); + }); + } + + function sync (path, options) { + return checkStat(fs.statSync(path), options) + } + + function checkStat (stat, options) { + return stat.isFile() && checkMode(stat, options) + } + + function checkMode (stat, options) { + var mod = stat.mode; + var uid = stat.uid; + var gid = stat.gid; + + var myUid = options.uid !== undefined ? + options.uid : process.getuid && process.getuid(); + var myGid = options.gid !== undefined ? + options.gid : process.getgid && process.getgid(); + + var u = parseInt('100', 8); + var g = parseInt('010', 8); + var o = parseInt('001', 8); + var ug = u | g; + + var ret = (mod & o) || + (mod & g) && gid === myGid || + (mod & u) && uid === myUid || + (mod & ug) && myUid === 0; + + return ret + } + return mode; +} + +var core; +if (process.platform === 'win32' || commonjsGlobal.TESTING_WINDOWS) { + core = requireWindows(); +} else { + core = requireMode(); +} + +var isexe_1 = isexe$1; +isexe$1.sync = sync; + +function isexe$1 (path, options, cb) { + if (typeof options === 'function') { + cb = options; + options = {}; + } + + if (!cb) { + if (typeof Promise !== 'function') { + throw new TypeError('callback not provided') + } + + return new Promise(function (resolve, reject) { + isexe$1(path, options || {}, function (er, is) { + if (er) { + reject(er); + } else { + resolve(is); + } + }); + }) + } + + core(path, options || {}, function (er, is) { + // ignore EACCES because that just means we aren't allowed to run it + if (er) { + if (er.code === 'EACCES' || options && options.ignoreErrors) { + er = null; + is = false; + } + } + cb(er, is); + }); +} + +function sync (path, options) { + // my kingdom for a filtered catch + try { + return core.sync(path, options || {}) + } catch (er) { + if (options && options.ignoreErrors || er.code === 'EACCES') { + return false + } else { + throw er + } + } +} + +const isWindows = process.platform === 'win32' || + process.env.OSTYPE === 'cygwin' || + process.env.OSTYPE === 'msys'; + +const path$2 = require$$0$1; +const COLON = isWindows ? ';' : ':'; +const isexe = isexe_1; + +const getNotFoundError = (cmd) => + Object.assign(new Error(`not found: ${cmd}`), { code: 'ENOENT' }); + +const getPathInfo = (cmd, opt) => { + const colon = opt.colon || COLON; + + // If it has a slash, then we don't bother searching the pathenv. + // just check the file itself, and that's it. + const pathEnv = cmd.match(/\//) || isWindows && cmd.match(/\\/) ? [''] + : ( + [ + // windows always checks the cwd first + ...(isWindows ? [process.cwd()] : []), + ...(opt.path || process.env.PATH || + /* istanbul ignore next: very unusual */ '').split(colon), + ] + ); + const pathExtExe = isWindows + ? opt.pathExt || process.env.PATHEXT || '.EXE;.CMD;.BAT;.COM' + : ''; + const pathExt = isWindows ? pathExtExe.split(colon) : ['']; + + if (isWindows) { + if (cmd.indexOf('.') !== -1 && pathExt[0] !== '') + pathExt.unshift(''); + } + + return { + pathEnv, + pathExt, + pathExtExe, + } +}; + +const which$1 = (cmd, opt, cb) => { + if (typeof opt === 'function') { + cb = opt; + opt = {}; + } + if (!opt) + opt = {}; + + const { pathEnv, pathExt, pathExtExe } = getPathInfo(cmd, opt); + const found = []; + + const step = i => new Promise((resolve, reject) => { + if (i === pathEnv.length) + return opt.all && found.length ? resolve(found) + : reject(getNotFoundError(cmd)) + + const ppRaw = pathEnv[i]; + const pathPart = /^".*"$/.test(ppRaw) ? ppRaw.slice(1, -1) : ppRaw; + + const pCmd = path$2.join(pathPart, cmd); + const p = !pathPart && /^\.[\\\/]/.test(cmd) ? cmd.slice(0, 2) + pCmd + : pCmd; + + resolve(subStep(p, i, 0)); + }); + + const subStep = (p, i, ii) => new Promise((resolve, reject) => { + if (ii === pathExt.length) + return resolve(step(i + 1)) + const ext = pathExt[ii]; + isexe(p + ext, { pathExt: pathExtExe }, (er, is) => { + if (!er && is) { + if (opt.all) + found.push(p + ext); + else + return resolve(p + ext) + } + return resolve(subStep(p, i, ii + 1)) + }); + }); + + return cb ? step(0).then(res => cb(null, res), cb) : step(0) +}; + +const whichSync = (cmd, opt) => { + opt = opt || {}; + + const { pathEnv, pathExt, pathExtExe } = getPathInfo(cmd, opt); + const found = []; + + for (let i = 0; i < pathEnv.length; i ++) { + const ppRaw = pathEnv[i]; + const pathPart = /^".*"$/.test(ppRaw) ? ppRaw.slice(1, -1) : ppRaw; + + const pCmd = path$2.join(pathPart, cmd); + const p = !pathPart && /^\.[\\\/]/.test(cmd) ? cmd.slice(0, 2) + pCmd + : pCmd; + + for (let j = 0; j < pathExt.length; j ++) { + const cur = p + pathExt[j]; + try { + const is = isexe.sync(cur, { pathExt: pathExtExe }); + if (is) { + if (opt.all) + found.push(cur); + else + return cur + } + } catch (ex) {} + } + } + + if (opt.all && found.length) + return found + + if (opt.nothrow) + return null + + throw getNotFoundError(cmd) +}; + +var which_1 = which$1; +which$1.sync = whichSync; + +var pathKey$1 = {exports: {}}; + +const pathKey = (options = {}) => { + const environment = options.env || process.env; + const platform = options.platform || process.platform; + + if (platform !== 'win32') { + return 'PATH'; + } + + return Object.keys(environment).reverse().find(key => key.toUpperCase() === 'PATH') || 'Path'; +}; + +pathKey$1.exports = pathKey; +// TODO: Remove this for the next major release +pathKey$1.exports.default = pathKey; + +const path$1 = require$$0$1; +const which = which_1; +const getPathKey = pathKey$1.exports; + +function resolveCommandAttempt(parsed, withoutPathExt) { + const env = parsed.options.env || process.env; + const cwd = process.cwd(); + const hasCustomCwd = parsed.options.cwd != null; + // Worker threads do not have process.chdir() + const shouldSwitchCwd = hasCustomCwd && process.chdir !== undefined && !process.chdir.disabled; + + // If a custom `cwd` was specified, we need to change the process cwd + // because `which` will do stat calls but does not support a custom cwd + if (shouldSwitchCwd) { + try { + process.chdir(parsed.options.cwd); + } catch (err) { + /* Empty */ + } + } + + let resolved; + + try { + resolved = which.sync(parsed.command, { + path: env[getPathKey({ env })], + pathExt: withoutPathExt ? path$1.delimiter : undefined, + }); + } catch (e) { + /* Empty */ + } finally { + if (shouldSwitchCwd) { + process.chdir(cwd); + } + } + + // If we successfully resolved, ensure that an absolute path is returned + // Note that when a custom `cwd` was used, we need to resolve to an absolute path based on it + if (resolved) { + resolved = path$1.resolve(hasCustomCwd ? parsed.options.cwd : '', resolved); + } + + return resolved; +} + +function resolveCommand$1(parsed) { + return resolveCommandAttempt(parsed) || resolveCommandAttempt(parsed, true); +} + +var resolveCommand_1 = resolveCommand$1; + +var _escape = {}; + +// See http://www.robvanderwoude.com/escapechars.php +const metaCharsRegExp = /([()\][%!^"`<>&|;, *?])/g; + +function escapeCommand(arg) { + // Escape meta chars + arg = arg.replace(metaCharsRegExp, '^$1'); + + return arg; +} + +function escapeArgument(arg, doubleEscapeMetaChars) { + // Convert to string + arg = `${arg}`; + + // Algorithm below is based on https://qntm.org/cmd + + // Sequence of backslashes followed by a double quote: + // double up all the backslashes and escape the double quote + arg = arg.replace(/(\\*)"/g, '$1$1\\"'); + + // Sequence of backslashes followed by the end of the string + // (which will become a double quote later): + // double up all the backslashes + arg = arg.replace(/(\\*)$/, '$1$1'); + + // All other backslashes occur literally + + // Quote the whole thing: + arg = `"${arg}"`; + + // Escape meta chars + arg = arg.replace(metaCharsRegExp, '^$1'); + + // Double escape meta chars if necessary + if (doubleEscapeMetaChars) { + arg = arg.replace(metaCharsRegExp, '^$1'); + } + + return arg; +} + +_escape.command = escapeCommand; +_escape.argument = escapeArgument; + +var shebangRegex$1 = /^#!(.*)/; + +const shebangRegex = shebangRegex$1; + +var shebangCommand$1 = (string = '') => { + const match = string.match(shebangRegex); + + if (!match) { + return null; + } + + const [path, argument] = match[0].replace(/#! ?/, '').split(' '); + const binary = path.split('/').pop(); + + if (binary === 'env') { + return argument; + } + + return argument ? `${binary} ${argument}` : binary; +}; + +const fs = require$$0; +const shebangCommand = shebangCommand$1; + +function readShebang$1(command) { + // Read the first 150 bytes from the file + const size = 150; + const buffer = Buffer.alloc(size); + + let fd; + + try { + fd = fs.openSync(command, 'r'); + fs.readSync(fd, buffer, 0, size, 0); + fs.closeSync(fd); + } catch (e) { /* Empty */ } + + // Attempt to extract shebang (null is returned if not a shebang) + return shebangCommand(buffer.toString()); +} + +var readShebang_1 = readShebang$1; + +const path = require$$0$1; +const resolveCommand = resolveCommand_1; +const escape = _escape; +const readShebang = readShebang_1; + +const isWin$1 = process.platform === 'win32'; +const isExecutableRegExp = /\.(?:com|exe)$/i; +const isCmdShimRegExp = /node_modules[\\/].bin[\\/][^\\/]+\.cmd$/i; + +function detectShebang(parsed) { + parsed.file = resolveCommand(parsed); + + const shebang = parsed.file && readShebang(parsed.file); + + if (shebang) { + parsed.args.unshift(parsed.file); + parsed.command = shebang; + + return resolveCommand(parsed); + } + + return parsed.file; +} + +function parseNonShell(parsed) { + if (!isWin$1) { + return parsed; + } + + // Detect & add support for shebangs + const commandFile = detectShebang(parsed); + + // We don't need a shell if the command filename is an executable + const needsShell = !isExecutableRegExp.test(commandFile); + + // If a shell is required, use cmd.exe and take care of escaping everything correctly + // Note that `forceShell` is an hidden option used only in tests + if (parsed.options.forceShell || needsShell) { + // Need to double escape meta chars if the command is a cmd-shim located in `node_modules/.bin/` + // The cmd-shim simply calls execute the package bin file with NodeJS, proxying any argument + // Because the escape of metachars with ^ gets interpreted when the cmd.exe is first called, + // we need to double escape them + const needsDoubleEscapeMetaChars = isCmdShimRegExp.test(commandFile); + + // Normalize posix paths into OS compatible paths (e.g.: foo/bar -> foo\bar) + // This is necessary otherwise it will always fail with ENOENT in those cases + parsed.command = path.normalize(parsed.command); + + // Escape command & arguments + parsed.command = escape.command(parsed.command); + parsed.args = parsed.args.map((arg) => escape.argument(arg, needsDoubleEscapeMetaChars)); + + const shellCommand = [parsed.command].concat(parsed.args).join(' '); + + parsed.args = ['/d', '/s', '/c', `"${shellCommand}"`]; + parsed.command = process.env.comspec || 'cmd.exe'; + parsed.options.windowsVerbatimArguments = true; // Tell node's spawn that the arguments are already escaped + } + + return parsed; +} + +function parse$1(command, args, options) { + // Normalize arguments, similar to nodejs + if (args && !Array.isArray(args)) { + options = args; + args = null; + } + + args = args ? args.slice(0) : []; // Clone array to avoid changing the original + options = Object.assign({}, options); // Clone object to avoid changing the original + + // Build our parsed object + const parsed = { + command, + args, + options, + file: undefined, + original: { + command, + args, + }, + }; + + // Delegate further parsing to shell or non-shell + return options.shell ? parsed : parseNonShell(parsed); +} + +var parse_1 = parse$1; + +const isWin = process.platform === 'win32'; + +function notFoundError(original, syscall) { + return Object.assign(new Error(`${syscall} ${original.command} ENOENT`), { + code: 'ENOENT', + errno: 'ENOENT', + syscall: `${syscall} ${original.command}`, + path: original.command, + spawnargs: original.args, + }); +} + +function hookChildProcess(cp, parsed) { + if (!isWin) { + return; + } + + const originalEmit = cp.emit; + + cp.emit = function (name, arg1) { + // If emitting "exit" event and exit code is 1, we need to check if + // the command exists and emit an "error" instead + // See https://github.com/IndigoUnited/node-cross-spawn/issues/16 + if (name === 'exit') { + const err = verifyENOENT(arg1, parsed); + + if (err) { + return originalEmit.call(cp, 'error', err); + } + } + + return originalEmit.apply(cp, arguments); // eslint-disable-line prefer-rest-params + }; +} + +function verifyENOENT(status, parsed) { + if (isWin && status === 1 && !parsed.file) { + return notFoundError(parsed.original, 'spawn'); + } + + return null; +} + +function verifyENOENTSync(status, parsed) { + if (isWin && status === 1 && !parsed.file) { + return notFoundError(parsed.original, 'spawnSync'); + } + + return null; +} + +var enoent$1 = { + hookChildProcess, + verifyENOENT, + verifyENOENTSync, + notFoundError, +}; + +const cp = require$$0$2; +const parse = parse_1; +const enoent = enoent$1; + +function spawn(command, args, options) { + // Parse the arguments + const parsed = parse(command, args, options); + + // Spawn the child process + const spawned = cp.spawn(parsed.command, parsed.args, parsed.options); + + // Hook into child process "exit" event to emit an error if the command + // does not exists, see: https://github.com/IndigoUnited/node-cross-spawn/issues/16 + enoent.hookChildProcess(spawned, parsed); + + return spawned; +} + +function spawnSync(command, args, options) { + // Parse the arguments + const parsed = parse(command, args, options); + + // Spawn the child process + const result = cp.spawnSync(parsed.command, parsed.args, parsed.options); + + // Analyze if the command does not exist, see: https://github.com/IndigoUnited/node-cross-spawn/issues/16 + result.error = result.error || enoent.verifyENOENTSync(result.status, parsed); + + return result; +} + +crossSpawn.exports = spawn; +crossSpawn.exports.spawn = spawn; +crossSpawn.exports.sync = spawnSync; + +crossSpawn.exports._parse = parse; +crossSpawn.exports._enoent = enoent; + +var minimist = function (args, opts) { + if (!opts) opts = {}; + + var flags = { bools : {}, strings : {}, unknownFn: null }; + + if (typeof opts['unknown'] === 'function') { + flags.unknownFn = opts['unknown']; + } + + if (typeof opts['boolean'] === 'boolean' && opts['boolean']) { + flags.allBools = true; + } else { + [].concat(opts['boolean']).filter(Boolean).forEach(function (key) { + flags.bools[key] = true; + }); + } + + var aliases = {}; + Object.keys(opts.alias || {}).forEach(function (key) { + aliases[key] = [].concat(opts.alias[key]); + aliases[key].forEach(function (x) { + aliases[x] = [key].concat(aliases[key].filter(function (y) { + return x !== y; + })); + }); + }); + + [].concat(opts.string).filter(Boolean).forEach(function (key) { + flags.strings[key] = true; + if (aliases[key]) { + flags.strings[aliases[key]] = true; + } + }); + + var defaults = opts['default'] || {}; + + var argv = { _ : [] }; + Object.keys(flags.bools).forEach(function (key) { + setArg(key, defaults[key] === undefined ? false : defaults[key]); + }); + + var notFlags = []; + + if (args.indexOf('--') !== -1) { + notFlags = args.slice(args.indexOf('--')+1); + args = args.slice(0, args.indexOf('--')); + } + + function argDefined(key, arg) { + return (flags.allBools && /^--[^=]+$/.test(arg)) || + flags.strings[key] || flags.bools[key] || aliases[key]; + } + + function setArg (key, val, arg) { + if (arg && flags.unknownFn && !argDefined(key, arg)) { + if (flags.unknownFn(arg) === false) return; + } + + var value = !flags.strings[key] && isNumber(val) + ? Number(val) : val + ; + setKey(argv, key.split('.'), value); + + (aliases[key] || []).forEach(function (x) { + setKey(argv, x.split('.'), value); + }); + } + + function setKey (obj, keys, value) { + var o = obj; + for (var i = 0; i < keys.length-1; i++) { + var key = keys[i]; + if (isConstructorOrProto(o, key)) return; + if (o[key] === undefined) o[key] = {}; + if (o[key] === Object.prototype || o[key] === Number.prototype + || o[key] === String.prototype) o[key] = {}; + if (o[key] === Array.prototype) o[key] = []; + o = o[key]; + } + + var key = keys[keys.length - 1]; + if (isConstructorOrProto(o, key)) return; + if (o === Object.prototype || o === Number.prototype + || o === String.prototype) o = {}; + if (o === Array.prototype) o = []; + if (o[key] === undefined || flags.bools[key] || typeof o[key] === 'boolean') { + o[key] = value; + } + else if (Array.isArray(o[key])) { + o[key].push(value); + } + else { + o[key] = [ o[key], value ]; + } + } + + function aliasIsBoolean(key) { + return aliases[key].some(function (x) { + return flags.bools[x]; + }); + } + + for (var i = 0; i < args.length; i++) { + var arg = args[i]; + + if (/^--.+=/.test(arg)) { + // Using [\s\S] instead of . because js doesn't support the + // 'dotall' regex modifier. See: + // http://stackoverflow.com/a/1068308/13216 + var m = arg.match(/^--([^=]+)=([\s\S]*)$/); + var key = m[1]; + var value = m[2]; + if (flags.bools[key]) { + value = value !== 'false'; + } + setArg(key, value, arg); + } + else if (/^--no-.+/.test(arg)) { + var key = arg.match(/^--no-(.+)/)[1]; + setArg(key, false, arg); + } + else if (/^--.+/.test(arg)) { + var key = arg.match(/^--(.+)/)[1]; + var next = args[i + 1]; + if (next !== undefined && !/^-/.test(next) + && !flags.bools[key] + && !flags.allBools + && (aliases[key] ? !aliasIsBoolean(key) : true)) { + setArg(key, next, arg); + i++; + } + else if (/^(true|false)$/.test(next)) { + setArg(key, next === 'true', arg); + i++; + } + else { + setArg(key, flags.strings[key] ? '' : true, arg); + } + } + else if (/^-[^-]+/.test(arg)) { + var letters = arg.slice(1,-1).split(''); + + var broken = false; + for (var j = 0; j < letters.length; j++) { + var next = arg.slice(j+2); + + if (next === '-') { + setArg(letters[j], next, arg); + continue; + } + + if (/[A-Za-z]/.test(letters[j]) && /=/.test(next)) { + setArg(letters[j], next.split('=')[1], arg); + broken = true; + break; + } + + if (/[A-Za-z]/.test(letters[j]) + && /-?\d+(\.\d*)?(e-?\d+)?$/.test(next)) { + setArg(letters[j], next, arg); + broken = true; + break; + } + + if (letters[j+1] && letters[j+1].match(/\W/)) { + setArg(letters[j], arg.slice(j+2), arg); + broken = true; + break; + } + else { + setArg(letters[j], flags.strings[letters[j]] ? '' : true, arg); + } + } + + var key = arg.slice(-1)[0]; + if (!broken && key !== '-') { + if (args[i+1] && !/^(-|--)[^-]/.test(args[i+1]) + && !flags.bools[key] + && (aliases[key] ? !aliasIsBoolean(key) : true)) { + setArg(key, args[i+1], arg); + i++; + } + else if (args[i+1] && /^(true|false)$/.test(args[i+1])) { + setArg(key, args[i+1] === 'true', arg); + i++; + } + else { + setArg(key, flags.strings[key] ? '' : true, arg); + } + } + } + else { + if (!flags.unknownFn || flags.unknownFn(arg) !== false) { + argv._.push( + flags.strings['_'] || !isNumber(arg) ? arg : Number(arg) + ); + } + if (opts.stopEarly) { + argv._.push.apply(argv._, args.slice(i + 1)); + break; + } + } + } + + Object.keys(defaults).forEach(function (key) { + if (!hasKey(argv, key.split('.'))) { + setKey(argv, key.split('.'), defaults[key]); + + (aliases[key] || []).forEach(function (x) { + setKey(argv, x.split('.'), defaults[key]); + }); + } + }); + + if (opts['--']) { + argv['--'] = new Array(); + notFlags.forEach(function(key) { + argv['--'].push(key); + }); + } + else { + notFlags.forEach(function(key) { + argv._.push(key); + }); + } + + return argv; +}; + +function hasKey (obj, keys) { + var o = obj; + keys.slice(0,-1).forEach(function (key) { + o = (o[key] || {}); + }); + + var key = keys[keys.length - 1]; + return key in o; +} + +function isNumber (x) { + if (typeof x === 'number') return true; + if (/^0x[0-9a-f]+$/i.test(x)) return true; + return /^[-+]?(?:\d+(?:\.\d*)?|\.\d+)(e[-+]?\d+)?$/.test(x); +} + + +function isConstructorOrProto (obj, key) { + return key === 'constructor' && typeof obj[key] === 'function' || key === '__proto__'; +} + +var prompts$2 = {}; + +var kleur; +var hasRequiredKleur; + +function requireKleur () { + if (hasRequiredKleur) return kleur; + hasRequiredKleur = 1; + + const { FORCE_COLOR, NODE_DISABLE_COLORS, TERM } = process.env; + + const $ = { + enabled: !NODE_DISABLE_COLORS && TERM !== 'dumb' && FORCE_COLOR !== '0', + + // modifiers + reset: init(0, 0), + bold: init(1, 22), + dim: init(2, 22), + italic: init(3, 23), + underline: init(4, 24), + inverse: init(7, 27), + hidden: init(8, 28), + strikethrough: init(9, 29), + + // colors + black: init(30, 39), + red: init(31, 39), + green: init(32, 39), + yellow: init(33, 39), + blue: init(34, 39), + magenta: init(35, 39), + cyan: init(36, 39), + white: init(37, 39), + gray: init(90, 39), + grey: init(90, 39), + + // background colors + bgBlack: init(40, 49), + bgRed: init(41, 49), + bgGreen: init(42, 49), + bgYellow: init(43, 49), + bgBlue: init(44, 49), + bgMagenta: init(45, 49), + bgCyan: init(46, 49), + bgWhite: init(47, 49) + }; + + function run(arr, str) { + let i=0, tmp, beg='', end=''; + for (; i < arr.length; i++) { + tmp = arr[i]; + beg += tmp.open; + end += tmp.close; + if (str.includes(tmp.close)) { + str = str.replace(tmp.rgx, tmp.close + tmp.open); + } + } + return beg + str + end; + } + + function chain(has, keys) { + let ctx = { has, keys }; + + ctx.reset = $.reset.bind(ctx); + ctx.bold = $.bold.bind(ctx); + ctx.dim = $.dim.bind(ctx); + ctx.italic = $.italic.bind(ctx); + ctx.underline = $.underline.bind(ctx); + ctx.inverse = $.inverse.bind(ctx); + ctx.hidden = $.hidden.bind(ctx); + ctx.strikethrough = $.strikethrough.bind(ctx); + + ctx.black = $.black.bind(ctx); + ctx.red = $.red.bind(ctx); + ctx.green = $.green.bind(ctx); + ctx.yellow = $.yellow.bind(ctx); + ctx.blue = $.blue.bind(ctx); + ctx.magenta = $.magenta.bind(ctx); + ctx.cyan = $.cyan.bind(ctx); + ctx.white = $.white.bind(ctx); + ctx.gray = $.gray.bind(ctx); + ctx.grey = $.grey.bind(ctx); + + ctx.bgBlack = $.bgBlack.bind(ctx); + ctx.bgRed = $.bgRed.bind(ctx); + ctx.bgGreen = $.bgGreen.bind(ctx); + ctx.bgYellow = $.bgYellow.bind(ctx); + ctx.bgBlue = $.bgBlue.bind(ctx); + ctx.bgMagenta = $.bgMagenta.bind(ctx); + ctx.bgCyan = $.bgCyan.bind(ctx); + ctx.bgWhite = $.bgWhite.bind(ctx); + + return ctx; + } + + function init(open, close) { + let blk = { + open: `\x1b[${open}m`, + close: `\x1b[${close}m`, + rgx: new RegExp(`\\x1b\\[${close}m`, 'g') + }; + return function (txt) { + if (this !== void 0 && this.has !== void 0) { + this.has.includes(open) || (this.has.push(open),this.keys.push(blk)); + return txt === void 0 ? this : $.enabled ? run(this.keys, txt+'') : txt+''; + } + return txt === void 0 ? chain([open], [blk]) : $.enabled ? run([blk], txt+'') : txt+''; + }; + } + + kleur = $; + return kleur; +} + +var action$1; +var hasRequiredAction$1; + +function requireAction$1 () { + if (hasRequiredAction$1) return action$1; + hasRequiredAction$1 = 1; + + action$1 = (key, isSelect) => { + if (key.meta && key.name !== 'escape') return; + + if (key.ctrl) { + if (key.name === 'a') return 'first'; + if (key.name === 'c') return 'abort'; + if (key.name === 'd') return 'abort'; + if (key.name === 'e') return 'last'; + if (key.name === 'g') return 'reset'; + } + + if (isSelect) { + if (key.name === 'j') return 'down'; + if (key.name === 'k') return 'up'; + } + + if (key.name === 'return') return 'submit'; + if (key.name === 'enter') return 'submit'; // ctrl + J + + if (key.name === 'backspace') return 'delete'; + if (key.name === 'delete') return 'deleteForward'; + if (key.name === 'abort') return 'abort'; + if (key.name === 'escape') return 'exit'; + if (key.name === 'tab') return 'next'; + if (key.name === 'pagedown') return 'nextPage'; + if (key.name === 'pageup') return 'prevPage'; // TODO create home() in prompt types (e.g. TextPrompt) + + if (key.name === 'home') return 'home'; // TODO create end() in prompt types (e.g. TextPrompt) + + if (key.name === 'end') return 'end'; + if (key.name === 'up') return 'up'; + if (key.name === 'down') return 'down'; + if (key.name === 'right') return 'right'; + if (key.name === 'left') return 'left'; + return false; + }; + return action$1; +} + +var strip$1; +var hasRequiredStrip$1; + +function requireStrip$1 () { + if (hasRequiredStrip$1) return strip$1; + hasRequiredStrip$1 = 1; + + strip$1 = str => { + const pattern = ['[\\u001B\\u009B][[\\]()#;?]*(?:(?:(?:(?:;[-a-zA-Z\\d\\/#&.:=?%@~_]+)*|[a-zA-Z\\d]+(?:;[-a-zA-Z\\d\\/#&.:=?%@~_]*)*)?\\u0007)', '(?:(?:\\d{1,4}(?:;\\d{0,4})*)?[\\dA-PRZcf-ntqry=><~]))'].join('|'); + const RGX = new RegExp(pattern, 'g'); + return typeof str === 'string' ? str.replace(RGX, '') : str; + }; + return strip$1; +} + +var src; +var hasRequiredSrc; + +function requireSrc () { + if (hasRequiredSrc) return src; + hasRequiredSrc = 1; + + const ESC = '\x1B'; + const CSI = `${ESC}[`; + const beep = '\u0007'; + + const cursor = { + to(x, y) { + if (!y) return `${CSI}${x + 1}G`; + return `${CSI}${y + 1};${x + 1}H`; + }, + move(x, y) { + let ret = ''; + + if (x < 0) ret += `${CSI}${-x}D`; + else if (x > 0) ret += `${CSI}${x}C`; + + if (y < 0) ret += `${CSI}${-y}A`; + else if (y > 0) ret += `${CSI}${y}B`; + + return ret; + }, + up: (count = 1) => `${CSI}${count}A`, + down: (count = 1) => `${CSI}${count}B`, + forward: (count = 1) => `${CSI}${count}C`, + backward: (count = 1) => `${CSI}${count}D`, + nextLine: (count = 1) => `${CSI}E`.repeat(count), + prevLine: (count = 1) => `${CSI}F`.repeat(count), + left: `${CSI}G`, + hide: `${CSI}?25l`, + show: `${CSI}?25h`, + save: `${ESC}7`, + restore: `${ESC}8` + }; + + const scroll = { + up: (count = 1) => `${CSI}S`.repeat(count), + down: (count = 1) => `${CSI}T`.repeat(count) + }; + + const erase = { + screen: `${CSI}2J`, + up: (count = 1) => `${CSI}1J`.repeat(count), + down: (count = 1) => `${CSI}J`.repeat(count), + line: `${CSI}2K`, + lineEnd: `${CSI}K`, + lineStart: `${CSI}1K`, + lines(count) { + let clear = ''; + for (let i = 0; i < count; i++) + clear += this.line + (i < count - 1 ? cursor.up() : ''); + if (count) + clear += cursor.left; + return clear; + } + }; + + src = { cursor, scroll, erase, beep }; + return src; +} + +var clear$1; +var hasRequiredClear$1; + +function requireClear$1 () { + if (hasRequiredClear$1) return clear$1; + hasRequiredClear$1 = 1; + + function _createForOfIteratorHelper(o, allowArrayLike) { var it = typeof Symbol !== "undefined" && o[Symbol.iterator] || o["@@iterator"]; if (!it) { if (Array.isArray(o) || (it = _unsupportedIterableToArray(o)) || allowArrayLike && o && typeof o.length === "number") { if (it) o = it; var i = 0; var F = function F() {}; return { s: F, n: function n() { if (i >= o.length) return { done: true }; return { done: false, value: o[i++] }; }, e: function e(_e) { throw _e; }, f: F }; } throw new TypeError("Invalid attempt to iterate non-iterable instance.\nIn order to be iterable, non-array objects must have a [Symbol.iterator]() method."); } var normalCompletion = true, didErr = false, err; return { s: function s() { it = it.call(o); }, n: function n() { var step = it.next(); normalCompletion = step.done; return step; }, e: function e(_e2) { didErr = true; err = _e2; }, f: function f() { try { if (!normalCompletion && it.return != null) it.return(); } finally { if (didErr) throw err; } } }; } + + function _unsupportedIterableToArray(o, minLen) { if (!o) return; if (typeof o === "string") return _arrayLikeToArray(o, minLen); var n = Object.prototype.toString.call(o).slice(8, -1); if (n === "Object" && o.constructor) n = o.constructor.name; if (n === "Map" || n === "Set") return Array.from(o); if (n === "Arguments" || /^(?:Ui|I)nt(?:8|16|32)(?:Clamped)?Array$/.test(n)) return _arrayLikeToArray(o, minLen); } + + function _arrayLikeToArray(arr, len) { if (len == null || len > arr.length) len = arr.length; for (var i = 0, arr2 = new Array(len); i < len; i++) arr2[i] = arr[i]; return arr2; } + + const strip = requireStrip$1(); + + const _require = requireSrc(), + erase = _require.erase, + cursor = _require.cursor; + + const width = str => [...strip(str)].length; + /** + * @param {string} prompt + * @param {number} perLine + */ + + + clear$1 = function (prompt, perLine) { + if (!perLine) return erase.line + cursor.to(0); + let rows = 0; + const lines = prompt.split(/\r?\n/); + + var _iterator = _createForOfIteratorHelper(lines), + _step; + + try { + for (_iterator.s(); !(_step = _iterator.n()).done;) { + let line = _step.value; + rows += 1 + Math.floor(Math.max(width(line) - 1, 0) / perLine); + } + } catch (err) { + _iterator.e(err); + } finally { + _iterator.f(); + } + + return erase.lines(rows); + }; + return clear$1; +} + +var figures_1$1; +var hasRequiredFigures$1; + +function requireFigures$1 () { + if (hasRequiredFigures$1) return figures_1$1; + hasRequiredFigures$1 = 1; + + const main = { + arrowUp: '↑', + arrowDown: '↓', + arrowLeft: '←', + arrowRight: '→', + radioOn: '◉', + radioOff: '◯', + tick: '✔', + cross: '✖', + ellipsis: '…', + pointerSmall: '›', + line: '─', + pointer: '❯' + }; + const win = { + arrowUp: main.arrowUp, + arrowDown: main.arrowDown, + arrowLeft: main.arrowLeft, + arrowRight: main.arrowRight, + radioOn: '(*)', + radioOff: '( )', + tick: '√', + cross: '×', + ellipsis: '...', + pointerSmall: '»', + line: '─', + pointer: '>' + }; + const figures = process.platform === 'win32' ? win : main; + figures_1$1 = figures; + return figures_1$1; +} + +var style$1; +var hasRequiredStyle$1; + +function requireStyle$1 () { + if (hasRequiredStyle$1) return style$1; + hasRequiredStyle$1 = 1; + + const c = requireKleur(); + + const figures = requireFigures$1(); // rendering user input. + + + const styles = Object.freeze({ + password: { + scale: 1, + render: input => '*'.repeat(input.length) + }, + emoji: { + scale: 2, + render: input => '😃'.repeat(input.length) + }, + invisible: { + scale: 0, + render: input => '' + }, + default: { + scale: 1, + render: input => `${input}` + } + }); + + const render = type => styles[type] || styles.default; // icon to signalize a prompt. + + + const symbols = Object.freeze({ + aborted: c.red(figures.cross), + done: c.green(figures.tick), + exited: c.yellow(figures.cross), + default: c.cyan('?') + }); + + const symbol = (done, aborted, exited) => aborted ? symbols.aborted : exited ? symbols.exited : done ? symbols.done : symbols.default; // between the question and the user's input. + + + const delimiter = completing => c.gray(completing ? figures.ellipsis : figures.pointerSmall); + + const item = (expandable, expanded) => c.gray(expandable ? expanded ? figures.pointerSmall : '+' : figures.line); + + style$1 = { + styles, + render, + symbols, + symbol, + delimiter, + item + }; + return style$1; +} + +var lines$1; +var hasRequiredLines$1; + +function requireLines$1 () { + if (hasRequiredLines$1) return lines$1; + hasRequiredLines$1 = 1; + + const strip = requireStrip$1(); + /** + * @param {string} msg + * @param {number} perLine + */ + + + lines$1 = function (msg, perLine) { + let lines = String(strip(msg) || '').split(/\r?\n/); + if (!perLine) return lines.length; + return lines.map(l => Math.ceil(l.length / perLine)).reduce((a, b) => a + b); + }; + return lines$1; +} + +var wrap$1; +var hasRequiredWrap$1; + +function requireWrap$1 () { + if (hasRequiredWrap$1) return wrap$1; + hasRequiredWrap$1 = 1; + /** + * @param {string} msg The message to wrap + * @param {object} opts + * @param {number|string} [opts.margin] Left margin + * @param {number} opts.width Maximum characters per line including the margin + */ + + wrap$1 = (msg, opts = {}) => { + const tab = Number.isSafeInteger(parseInt(opts.margin)) ? new Array(parseInt(opts.margin)).fill(' ').join('') : opts.margin || ''; + const width = opts.width; + return (msg || '').split(/\r?\n/g).map(line => line.split(/\s+/g).reduce((arr, w) => { + if (w.length + tab.length >= width || arr[arr.length - 1].length + w.length + 1 < width) arr[arr.length - 1] += ` ${w}`;else arr.push(`${tab}${w}`); + return arr; + }, [tab]).join('\n')).join('\n'); + }; + return wrap$1; +} + +var entriesToDisplay$1; +var hasRequiredEntriesToDisplay$1; + +function requireEntriesToDisplay$1 () { + if (hasRequiredEntriesToDisplay$1) return entriesToDisplay$1; + hasRequiredEntriesToDisplay$1 = 1; + /** + * Determine what entries should be displayed on the screen, based on the + * currently selected index and the maximum visible. Used in list-based + * prompts like `select` and `multiselect`. + * + * @param {number} cursor the currently selected entry + * @param {number} total the total entries available to display + * @param {number} [maxVisible] the number of entries that can be displayed + */ + + entriesToDisplay$1 = (cursor, total, maxVisible) => { + maxVisible = maxVisible || total; + let startIndex = Math.min(total - maxVisible, cursor - Math.floor(maxVisible / 2)); + if (startIndex < 0) startIndex = 0; + let endIndex = Math.min(startIndex + maxVisible, total); + return { + startIndex, + endIndex + }; + }; + return entriesToDisplay$1; +} + +var util$1; +var hasRequiredUtil$1; + +function requireUtil$1 () { + if (hasRequiredUtil$1) return util$1; + hasRequiredUtil$1 = 1; + + util$1 = { + action: requireAction$1(), + clear: requireClear$1(), + style: requireStyle$1(), + strip: requireStrip$1(), + figures: requireFigures$1(), + lines: requireLines$1(), + wrap: requireWrap$1(), + entriesToDisplay: requireEntriesToDisplay$1() + }; + return util$1; +} + +var prompt$1; +var hasRequiredPrompt$1; + +function requirePrompt$1 () { + if (hasRequiredPrompt$1) return prompt$1; + hasRequiredPrompt$1 = 1; + + const readline = require$$0$3; + + const _require = requireUtil$1(), + action = _require.action; + + const EventEmitter = require$$2; + + const _require2 = requireSrc(), + beep = _require2.beep, + cursor = _require2.cursor; + + const color = requireKleur(); + /** + * Base prompt skeleton + * @param {Stream} [opts.stdin] The Readable stream to listen to + * @param {Stream} [opts.stdout] The Writable stream to write readline data to + */ + + + class Prompt extends EventEmitter { + constructor(opts = {}) { + super(); + this.firstRender = true; + this.in = opts.stdin || process.stdin; + this.out = opts.stdout || process.stdout; + + this.onRender = (opts.onRender || (() => void 0)).bind(this); + + const rl = readline.createInterface({ + input: this.in, + escapeCodeTimeout: 50 + }); + readline.emitKeypressEvents(this.in, rl); + if (this.in.isTTY) this.in.setRawMode(true); + const isSelect = ['SelectPrompt', 'MultiselectPrompt'].indexOf(this.constructor.name) > -1; + + const keypress = (str, key) => { + let a = action(key, isSelect); + + if (a === false) { + this._ && this._(str, key); + } else if (typeof this[a] === 'function') { + this[a](key); + } else { + this.bell(); + } + }; + + this.close = () => { + this.out.write(cursor.show); + this.in.removeListener('keypress', keypress); + if (this.in.isTTY) this.in.setRawMode(false); + rl.close(); + this.emit(this.aborted ? 'abort' : this.exited ? 'exit' : 'submit', this.value); + this.closed = true; + }; + + this.in.on('keypress', keypress); + } + + fire() { + this.emit('state', { + value: this.value, + aborted: !!this.aborted, + exited: !!this.exited + }); + } + + bell() { + this.out.write(beep); + } + + render() { + this.onRender(color); + if (this.firstRender) this.firstRender = false; + } + + } + + prompt$1 = Prompt; + return prompt$1; +} + +var text$1; +var hasRequiredText$1; + +function requireText$1 () { + if (hasRequiredText$1) return text$1; + hasRequiredText$1 = 1; + + function asyncGeneratorStep(gen, resolve, reject, _next, _throw, key, arg) { try { var info = gen[key](arg); var value = info.value; } catch (error) { reject(error); return; } if (info.done) { resolve(value); } else { Promise.resolve(value).then(_next, _throw); } } + + function _asyncToGenerator(fn) { return function () { var self = this, args = arguments; return new Promise(function (resolve, reject) { var gen = fn.apply(self, args); function _next(value) { asyncGeneratorStep(gen, resolve, reject, _next, _throw, "next", value); } function _throw(err) { asyncGeneratorStep(gen, resolve, reject, _next, _throw, "throw", err); } _next(undefined); }); }; } + + const color = requireKleur(); + + const Prompt = requirePrompt$1(); + + const _require = requireSrc(), + erase = _require.erase, + cursor = _require.cursor; + + const _require2 = requireUtil$1(), + style = _require2.style, + clear = _require2.clear, + lines = _require2.lines, + figures = _require2.figures; + /** + * TextPrompt Base Element + * @param {Object} opts Options + * @param {String} opts.message Message + * @param {String} [opts.style='default'] Render style + * @param {String} [opts.initial] Default value + * @param {Function} [opts.validate] Validate function + * @param {Stream} [opts.stdin] The Readable stream to listen to + * @param {Stream} [opts.stdout] The Writable stream to write readline data to + * @param {String} [opts.error] The invalid error label + */ + + + class TextPrompt extends Prompt { + constructor(opts = {}) { + super(opts); + this.transform = style.render(opts.style); + this.scale = this.transform.scale; + this.msg = opts.message; + this.initial = opts.initial || ``; + + this.validator = opts.validate || (() => true); + + this.value = ``; + this.errorMsg = opts.error || `Please Enter A Valid Value`; + this.cursor = Number(!!this.initial); + this.cursorOffset = 0; + this.clear = clear(``, this.out.columns); + this.render(); + } + + set value(v) { + if (!v && this.initial) { + this.placeholder = true; + this.rendered = color.gray(this.transform.render(this.initial)); + } else { + this.placeholder = false; + this.rendered = this.transform.render(v); + } + + this._value = v; + this.fire(); + } + + get value() { + return this._value; + } + + reset() { + this.value = ``; + this.cursor = Number(!!this.initial); + this.cursorOffset = 0; + this.fire(); + this.render(); + } + + exit() { + this.abort(); + } + + abort() { + this.value = this.value || this.initial; + this.done = this.aborted = true; + this.error = false; + this.red = false; + this.fire(); + this.render(); + this.out.write('\n'); + this.close(); + } + + validate() { + var _this = this; + + return _asyncToGenerator(function* () { + let valid = yield _this.validator(_this.value); + + if (typeof valid === `string`) { + _this.errorMsg = valid; + valid = false; + } + + _this.error = !valid; + })(); + } + + submit() { + var _this2 = this; + + return _asyncToGenerator(function* () { + _this2.value = _this2.value || _this2.initial; + _this2.cursorOffset = 0; + _this2.cursor = _this2.rendered.length; + yield _this2.validate(); + + if (_this2.error) { + _this2.red = true; + + _this2.fire(); + + _this2.render(); + + return; + } + + _this2.done = true; + _this2.aborted = false; + + _this2.fire(); + + _this2.render(); + + _this2.out.write('\n'); + + _this2.close(); + })(); + } + + next() { + if (!this.placeholder) return this.bell(); + this.value = this.initial; + this.cursor = this.rendered.length; + this.fire(); + this.render(); + } + + moveCursor(n) { + if (this.placeholder) return; + this.cursor = this.cursor + n; + this.cursorOffset += n; + } + + _(c, key) { + let s1 = this.value.slice(0, this.cursor); + let s2 = this.value.slice(this.cursor); + this.value = `${s1}${c}${s2}`; + this.red = false; + this.cursor = this.placeholder ? 0 : s1.length + 1; + this.render(); + } + + delete() { + if (this.isCursorAtStart()) return this.bell(); + let s1 = this.value.slice(0, this.cursor - 1); + let s2 = this.value.slice(this.cursor); + this.value = `${s1}${s2}`; + this.red = false; + + if (this.isCursorAtStart()) { + this.cursorOffset = 0; + } else { + this.cursorOffset++; + this.moveCursor(-1); + } + + this.render(); + } + + deleteForward() { + if (this.cursor * this.scale >= this.rendered.length || this.placeholder) return this.bell(); + let s1 = this.value.slice(0, this.cursor); + let s2 = this.value.slice(this.cursor + 1); + this.value = `${s1}${s2}`; + this.red = false; + + if (this.isCursorAtEnd()) { + this.cursorOffset = 0; + } else { + this.cursorOffset++; + } + + this.render(); + } + + first() { + this.cursor = 0; + this.render(); + } + + last() { + this.cursor = this.value.length; + this.render(); + } + + left() { + if (this.cursor <= 0 || this.placeholder) return this.bell(); + this.moveCursor(-1); + this.render(); + } + + right() { + if (this.cursor * this.scale >= this.rendered.length || this.placeholder) return this.bell(); + this.moveCursor(1); + this.render(); + } + + isCursorAtStart() { + return this.cursor === 0 || this.placeholder && this.cursor === 1; + } + + isCursorAtEnd() { + return this.cursor === this.rendered.length || this.placeholder && this.cursor === this.rendered.length + 1; + } + + render() { + if (this.closed) return; + + if (!this.firstRender) { + if (this.outputError) this.out.write(cursor.down(lines(this.outputError, this.out.columns) - 1) + clear(this.outputError, this.out.columns)); + this.out.write(clear(this.outputText, this.out.columns)); + } + + super.render(); + this.outputError = ''; + this.outputText = [style.symbol(this.done, this.aborted), color.bold(this.msg), style.delimiter(this.done), this.red ? color.red(this.rendered) : this.rendered].join(` `); + + if (this.error) { + this.outputError += this.errorMsg.split(`\n`).reduce((a, l, i) => a + `\n${i ? ' ' : figures.pointerSmall} ${color.red().italic(l)}`, ``); + } + + this.out.write(erase.line + cursor.to(0) + this.outputText + cursor.save + this.outputError + cursor.restore + cursor.move(this.cursorOffset, 0)); + } + + } + + text$1 = TextPrompt; + return text$1; +} + +var select$1; +var hasRequiredSelect$1; + +function requireSelect$1 () { + if (hasRequiredSelect$1) return select$1; + hasRequiredSelect$1 = 1; + + const color = requireKleur(); + + const Prompt = requirePrompt$1(); + + const _require = requireUtil$1(), + style = _require.style, + clear = _require.clear, + figures = _require.figures, + wrap = _require.wrap, + entriesToDisplay = _require.entriesToDisplay; + + const _require2 = requireSrc(), + cursor = _require2.cursor; + /** + * SelectPrompt Base Element + * @param {Object} opts Options + * @param {String} opts.message Message + * @param {Array} opts.choices Array of choice objects + * @param {String} [opts.hint] Hint to display + * @param {Number} [opts.initial] Index of default value + * @param {Stream} [opts.stdin] The Readable stream to listen to + * @param {Stream} [opts.stdout] The Writable stream to write readline data to + * @param {Number} [opts.optionsPerPage=10] Max options to display at once + */ + + + class SelectPrompt extends Prompt { + constructor(opts = {}) { + super(opts); + this.msg = opts.message; + this.hint = opts.hint || '- Use arrow-keys. Return to submit.'; + this.warn = opts.warn || '- This option is disabled'; + this.cursor = opts.initial || 0; + this.choices = opts.choices.map((ch, idx) => { + if (typeof ch === 'string') ch = { + title: ch, + value: idx + }; + return { + title: ch && (ch.title || ch.value || ch), + value: ch && (ch.value === undefined ? idx : ch.value), + description: ch && ch.description, + selected: ch && ch.selected, + disabled: ch && ch.disabled + }; + }); + this.optionsPerPage = opts.optionsPerPage || 10; + this.value = (this.choices[this.cursor] || {}).value; + this.clear = clear('', this.out.columns); + this.render(); + } + + moveCursor(n) { + this.cursor = n; + this.value = this.choices[n].value; + this.fire(); + } + + reset() { + this.moveCursor(0); + this.fire(); + this.render(); + } + + exit() { + this.abort(); + } + + abort() { + this.done = this.aborted = true; + this.fire(); + this.render(); + this.out.write('\n'); + this.close(); + } + + submit() { + if (!this.selection.disabled) { + this.done = true; + this.aborted = false; + this.fire(); + this.render(); + this.out.write('\n'); + this.close(); + } else this.bell(); + } + + first() { + this.moveCursor(0); + this.render(); + } + + last() { + this.moveCursor(this.choices.length - 1); + this.render(); + } + + up() { + if (this.cursor === 0) { + this.moveCursor(this.choices.length - 1); + } else { + this.moveCursor(this.cursor - 1); + } + + this.render(); + } + + down() { + if (this.cursor === this.choices.length - 1) { + this.moveCursor(0); + } else { + this.moveCursor(this.cursor + 1); + } + + this.render(); + } + + next() { + this.moveCursor((this.cursor + 1) % this.choices.length); + this.render(); + } + + _(c, key) { + if (c === ' ') return this.submit(); + } + + get selection() { + return this.choices[this.cursor]; + } + + render() { + if (this.closed) return; + if (this.firstRender) this.out.write(cursor.hide);else this.out.write(clear(this.outputText, this.out.columns)); + super.render(); + + let _entriesToDisplay = entriesToDisplay(this.cursor, this.choices.length, this.optionsPerPage), + startIndex = _entriesToDisplay.startIndex, + endIndex = _entriesToDisplay.endIndex; // Print prompt + + + this.outputText = [style.symbol(this.done, this.aborted), color.bold(this.msg), style.delimiter(false), this.done ? this.selection.title : this.selection.disabled ? color.yellow(this.warn) : color.gray(this.hint)].join(' '); // Print choices + + if (!this.done) { + this.outputText += '\n'; + + for (let i = startIndex; i < endIndex; i++) { + let title, + prefix, + desc = '', + v = this.choices[i]; // Determine whether to display "more choices" indicators + + if (i === startIndex && startIndex > 0) { + prefix = figures.arrowUp; + } else if (i === endIndex - 1 && endIndex < this.choices.length) { + prefix = figures.arrowDown; + } else { + prefix = ' '; + } + + if (v.disabled) { + title = this.cursor === i ? color.gray().underline(v.title) : color.strikethrough().gray(v.title); + prefix = (this.cursor === i ? color.bold().gray(figures.pointer) + ' ' : ' ') + prefix; + } else { + title = this.cursor === i ? color.cyan().underline(v.title) : v.title; + prefix = (this.cursor === i ? color.cyan(figures.pointer) + ' ' : ' ') + prefix; + + if (v.description && this.cursor === i) { + desc = ` - ${v.description}`; + + if (prefix.length + title.length + desc.length >= this.out.columns || v.description.split(/\r?\n/).length > 1) { + desc = '\n' + wrap(v.description, { + margin: 3, + width: this.out.columns + }); + } + } + } + + this.outputText += `${prefix} ${title}${color.gray(desc)}\n`; + } + } + + this.out.write(this.outputText); + } + + } + + select$1 = SelectPrompt; + return select$1; +} + +var toggle$1; +var hasRequiredToggle$1; + +function requireToggle$1 () { + if (hasRequiredToggle$1) return toggle$1; + hasRequiredToggle$1 = 1; + + const color = requireKleur(); + + const Prompt = requirePrompt$1(); + + const _require = requireUtil$1(), + style = _require.style, + clear = _require.clear; + + const _require2 = requireSrc(), + cursor = _require2.cursor, + erase = _require2.erase; + /** + * TogglePrompt Base Element + * @param {Object} opts Options + * @param {String} opts.message Message + * @param {Boolean} [opts.initial=false] Default value + * @param {String} [opts.active='no'] Active label + * @param {String} [opts.inactive='off'] Inactive label + * @param {Stream} [opts.stdin] The Readable stream to listen to + * @param {Stream} [opts.stdout] The Writable stream to write readline data to + */ + + + class TogglePrompt extends Prompt { + constructor(opts = {}) { + super(opts); + this.msg = opts.message; + this.value = !!opts.initial; + this.active = opts.active || 'on'; + this.inactive = opts.inactive || 'off'; + this.initialValue = this.value; + this.render(); + } + + reset() { + this.value = this.initialValue; + this.fire(); + this.render(); + } + + exit() { + this.abort(); + } + + abort() { + this.done = this.aborted = true; + this.fire(); + this.render(); + this.out.write('\n'); + this.close(); + } + + submit() { + this.done = true; + this.aborted = false; + this.fire(); + this.render(); + this.out.write('\n'); + this.close(); + } + + deactivate() { + if (this.value === false) return this.bell(); + this.value = false; + this.render(); + } + + activate() { + if (this.value === true) return this.bell(); + this.value = true; + this.render(); + } + + delete() { + this.deactivate(); + } + + left() { + this.deactivate(); + } + + right() { + this.activate(); + } + + down() { + this.deactivate(); + } + + up() { + this.activate(); + } + + next() { + this.value = !this.value; + this.fire(); + this.render(); + } + + _(c, key) { + if (c === ' ') { + this.value = !this.value; + } else if (c === '1') { + this.value = true; + } else if (c === '0') { + this.value = false; + } else return this.bell(); + + this.render(); + } + + render() { + if (this.closed) return; + if (this.firstRender) this.out.write(cursor.hide);else this.out.write(clear(this.outputText, this.out.columns)); + super.render(); + this.outputText = [style.symbol(this.done, this.aborted), color.bold(this.msg), style.delimiter(this.done), this.value ? this.inactive : color.cyan().underline(this.inactive), color.gray('/'), this.value ? color.cyan().underline(this.active) : this.active].join(' '); + this.out.write(erase.line + cursor.to(0) + this.outputText); + } + + } + + toggle$1 = TogglePrompt; + return toggle$1; +} + +var datepart$1; +var hasRequiredDatepart$1; + +function requireDatepart$1 () { + if (hasRequiredDatepart$1) return datepart$1; + hasRequiredDatepart$1 = 1; + + class DatePart { + constructor({ + token, + date, + parts, + locales + }) { + this.token = token; + this.date = date || new Date(); + this.parts = parts || [this]; + this.locales = locales || {}; + } + + up() {} + + down() {} + + next() { + const currentIdx = this.parts.indexOf(this); + return this.parts.find((part, idx) => idx > currentIdx && part instanceof DatePart); + } + + setTo(val) {} + + prev() { + let parts = [].concat(this.parts).reverse(); + const currentIdx = parts.indexOf(this); + return parts.find((part, idx) => idx > currentIdx && part instanceof DatePart); + } + + toString() { + return String(this.date); + } + + } + + datepart$1 = DatePart; + return datepart$1; +} + +var meridiem$1; +var hasRequiredMeridiem$1; + +function requireMeridiem$1 () { + if (hasRequiredMeridiem$1) return meridiem$1; + hasRequiredMeridiem$1 = 1; + + const DatePart = requireDatepart$1(); + + class Meridiem extends DatePart { + constructor(opts = {}) { + super(opts); + } + + up() { + this.date.setHours((this.date.getHours() + 12) % 24); + } + + down() { + this.up(); + } + + toString() { + let meridiem = this.date.getHours() > 12 ? 'pm' : 'am'; + return /\A/.test(this.token) ? meridiem.toUpperCase() : meridiem; + } + + } + + meridiem$1 = Meridiem; + return meridiem$1; +} + +var day$1; +var hasRequiredDay$1; + +function requireDay$1 () { + if (hasRequiredDay$1) return day$1; + hasRequiredDay$1 = 1; + + const DatePart = requireDatepart$1(); + + const pos = n => { + n = n % 10; + return n === 1 ? 'st' : n === 2 ? 'nd' : n === 3 ? 'rd' : 'th'; + }; + + class Day extends DatePart { + constructor(opts = {}) { + super(opts); + } + + up() { + this.date.setDate(this.date.getDate() + 1); + } + + down() { + this.date.setDate(this.date.getDate() - 1); + } + + setTo(val) { + this.date.setDate(parseInt(val.substr(-2))); + } + + toString() { + let date = this.date.getDate(); + let day = this.date.getDay(); + return this.token === 'DD' ? String(date).padStart(2, '0') : this.token === 'Do' ? date + pos(date) : this.token === 'd' ? day + 1 : this.token === 'ddd' ? this.locales.weekdaysShort[day] : this.token === 'dddd' ? this.locales.weekdays[day] : date; + } + + } + + day$1 = Day; + return day$1; +} + +var hours$1; +var hasRequiredHours$1; + +function requireHours$1 () { + if (hasRequiredHours$1) return hours$1; + hasRequiredHours$1 = 1; + + const DatePart = requireDatepart$1(); + + class Hours extends DatePart { + constructor(opts = {}) { + super(opts); + } + + up() { + this.date.setHours(this.date.getHours() + 1); + } + + down() { + this.date.setHours(this.date.getHours() - 1); + } + + setTo(val) { + this.date.setHours(parseInt(val.substr(-2))); + } + + toString() { + let hours = this.date.getHours(); + if (/h/.test(this.token)) hours = hours % 12 || 12; + return this.token.length > 1 ? String(hours).padStart(2, '0') : hours; + } + + } + + hours$1 = Hours; + return hours$1; +} + +var milliseconds$1; +var hasRequiredMilliseconds$1; + +function requireMilliseconds$1 () { + if (hasRequiredMilliseconds$1) return milliseconds$1; + hasRequiredMilliseconds$1 = 1; + + const DatePart = requireDatepart$1(); + + class Milliseconds extends DatePart { + constructor(opts = {}) { + super(opts); + } + + up() { + this.date.setMilliseconds(this.date.getMilliseconds() + 1); + } + + down() { + this.date.setMilliseconds(this.date.getMilliseconds() - 1); + } + + setTo(val) { + this.date.setMilliseconds(parseInt(val.substr(-this.token.length))); + } + + toString() { + return String(this.date.getMilliseconds()).padStart(4, '0').substr(0, this.token.length); + } + + } + + milliseconds$1 = Milliseconds; + return milliseconds$1; +} + +var minutes$1; +var hasRequiredMinutes$1; + +function requireMinutes$1 () { + if (hasRequiredMinutes$1) return minutes$1; + hasRequiredMinutes$1 = 1; + + const DatePart = requireDatepart$1(); + + class Minutes extends DatePart { + constructor(opts = {}) { + super(opts); + } + + up() { + this.date.setMinutes(this.date.getMinutes() + 1); + } + + down() { + this.date.setMinutes(this.date.getMinutes() - 1); + } + + setTo(val) { + this.date.setMinutes(parseInt(val.substr(-2))); + } + + toString() { + let m = this.date.getMinutes(); + return this.token.length > 1 ? String(m).padStart(2, '0') : m; + } + + } + + minutes$1 = Minutes; + return minutes$1; +} + +var month$1; +var hasRequiredMonth$1; + +function requireMonth$1 () { + if (hasRequiredMonth$1) return month$1; + hasRequiredMonth$1 = 1; + + const DatePart = requireDatepart$1(); + + class Month extends DatePart { + constructor(opts = {}) { + super(opts); + } + + up() { + this.date.setMonth(this.date.getMonth() + 1); + } + + down() { + this.date.setMonth(this.date.getMonth() - 1); + } + + setTo(val) { + val = parseInt(val.substr(-2)) - 1; + this.date.setMonth(val < 0 ? 0 : val); + } + + toString() { + let month = this.date.getMonth(); + let tl = this.token.length; + return tl === 2 ? String(month + 1).padStart(2, '0') : tl === 3 ? this.locales.monthsShort[month] : tl === 4 ? this.locales.months[month] : String(month + 1); + } + + } + + month$1 = Month; + return month$1; +} + +var seconds$1; +var hasRequiredSeconds$1; + +function requireSeconds$1 () { + if (hasRequiredSeconds$1) return seconds$1; + hasRequiredSeconds$1 = 1; + + const DatePart = requireDatepart$1(); + + class Seconds extends DatePart { + constructor(opts = {}) { + super(opts); + } + + up() { + this.date.setSeconds(this.date.getSeconds() + 1); + } + + down() { + this.date.setSeconds(this.date.getSeconds() - 1); + } + + setTo(val) { + this.date.setSeconds(parseInt(val.substr(-2))); + } + + toString() { + let s = this.date.getSeconds(); + return this.token.length > 1 ? String(s).padStart(2, '0') : s; + } + + } + + seconds$1 = Seconds; + return seconds$1; +} + +var year$1; +var hasRequiredYear$1; + +function requireYear$1 () { + if (hasRequiredYear$1) return year$1; + hasRequiredYear$1 = 1; + + const DatePart = requireDatepart$1(); + + class Year extends DatePart { + constructor(opts = {}) { + super(opts); + } + + up() { + this.date.setFullYear(this.date.getFullYear() + 1); + } + + down() { + this.date.setFullYear(this.date.getFullYear() - 1); + } + + setTo(val) { + this.date.setFullYear(val.substr(-4)); + } + + toString() { + let year = String(this.date.getFullYear()).padStart(4, '0'); + return this.token.length === 2 ? year.substr(-2) : year; + } + + } + + year$1 = Year; + return year$1; +} + +var dateparts$1; +var hasRequiredDateparts$1; + +function requireDateparts$1 () { + if (hasRequiredDateparts$1) return dateparts$1; + hasRequiredDateparts$1 = 1; + + dateparts$1 = { + DatePart: requireDatepart$1(), + Meridiem: requireMeridiem$1(), + Day: requireDay$1(), + Hours: requireHours$1(), + Milliseconds: requireMilliseconds$1(), + Minutes: requireMinutes$1(), + Month: requireMonth$1(), + Seconds: requireSeconds$1(), + Year: requireYear$1() + }; + return dateparts$1; +} + +var date$1; +var hasRequiredDate$1; + +function requireDate$1 () { + if (hasRequiredDate$1) return date$1; + hasRequiredDate$1 = 1; + + function asyncGeneratorStep(gen, resolve, reject, _next, _throw, key, arg) { try { var info = gen[key](arg); var value = info.value; } catch (error) { reject(error); return; } if (info.done) { resolve(value); } else { Promise.resolve(value).then(_next, _throw); } } + + function _asyncToGenerator(fn) { return function () { var self = this, args = arguments; return new Promise(function (resolve, reject) { var gen = fn.apply(self, args); function _next(value) { asyncGeneratorStep(gen, resolve, reject, _next, _throw, "next", value); } function _throw(err) { asyncGeneratorStep(gen, resolve, reject, _next, _throw, "throw", err); } _next(undefined); }); }; } + + const color = requireKleur(); + + const Prompt = requirePrompt$1(); + + const _require = requireUtil$1(), + style = _require.style, + clear = _require.clear, + figures = _require.figures; + + const _require2 = requireSrc(), + erase = _require2.erase, + cursor = _require2.cursor; + + const _require3 = requireDateparts$1(), + DatePart = _require3.DatePart, + Meridiem = _require3.Meridiem, + Day = _require3.Day, + Hours = _require3.Hours, + Milliseconds = _require3.Milliseconds, + Minutes = _require3.Minutes, + Month = _require3.Month, + Seconds = _require3.Seconds, + Year = _require3.Year; + + const regex = /\\(.)|"((?:\\["\\]|[^"])+)"|(D[Do]?|d{3,4}|d)|(M{1,4})|(YY(?:YY)?)|([aA])|([Hh]{1,2})|(m{1,2})|(s{1,2})|(S{1,4})|./g; + const regexGroups = { + 1: ({ + token + }) => token.replace(/\\(.)/g, '$1'), + 2: opts => new Day(opts), + // Day // TODO + 3: opts => new Month(opts), + // Month + 4: opts => new Year(opts), + // Year + 5: opts => new Meridiem(opts), + // AM/PM // TODO (special) + 6: opts => new Hours(opts), + // Hours + 7: opts => new Minutes(opts), + // Minutes + 8: opts => new Seconds(opts), + // Seconds + 9: opts => new Milliseconds(opts) // Fractional seconds + + }; + const dfltLocales = { + months: 'January,February,March,April,May,June,July,August,September,October,November,December'.split(','), + monthsShort: 'Jan,Feb,Mar,Apr,May,Jun,Jul,Aug,Sep,Oct,Nov,Dec'.split(','), + weekdays: 'Sunday,Monday,Tuesday,Wednesday,Thursday,Friday,Saturday'.split(','), + weekdaysShort: 'Sun,Mon,Tue,Wed,Thu,Fri,Sat'.split(',') + }; + /** + * DatePrompt Base Element + * @param {Object} opts Options + * @param {String} opts.message Message + * @param {Number} [opts.initial] Index of default value + * @param {String} [opts.mask] The format mask + * @param {object} [opts.locales] The date locales + * @param {String} [opts.error] The error message shown on invalid value + * @param {Function} [opts.validate] Function to validate the submitted value + * @param {Stream} [opts.stdin] The Readable stream to listen to + * @param {Stream} [opts.stdout] The Writable stream to write readline data to + */ + + class DatePrompt extends Prompt { + constructor(opts = {}) { + super(opts); + this.msg = opts.message; + this.cursor = 0; + this.typed = ''; + this.locales = Object.assign(dfltLocales, opts.locales); + this._date = opts.initial || new Date(); + this.errorMsg = opts.error || 'Please Enter A Valid Value'; + + this.validator = opts.validate || (() => true); + + this.mask = opts.mask || 'YYYY-MM-DD HH:mm:ss'; + this.clear = clear('', this.out.columns); + this.render(); + } + + get value() { + return this.date; + } + + get date() { + return this._date; + } + + set date(date) { + if (date) this._date.setTime(date.getTime()); + } + + set mask(mask) { + let result; + this.parts = []; + + while (result = regex.exec(mask)) { + let match = result.shift(); + let idx = result.findIndex(gr => gr != null); + this.parts.push(idx in regexGroups ? regexGroups[idx]({ + token: result[idx] || match, + date: this.date, + parts: this.parts, + locales: this.locales + }) : result[idx] || match); + } + + let parts = this.parts.reduce((arr, i) => { + if (typeof i === 'string' && typeof arr[arr.length - 1] === 'string') arr[arr.length - 1] += i;else arr.push(i); + return arr; + }, []); + this.parts.splice(0); + this.parts.push(...parts); + this.reset(); + } + + moveCursor(n) { + this.typed = ''; + this.cursor = n; + this.fire(); + } + + reset() { + this.moveCursor(this.parts.findIndex(p => p instanceof DatePart)); + this.fire(); + this.render(); + } + + exit() { + this.abort(); + } + + abort() { + this.done = this.aborted = true; + this.error = false; + this.fire(); + this.render(); + this.out.write('\n'); + this.close(); + } + + validate() { + var _this = this; + + return _asyncToGenerator(function* () { + let valid = yield _this.validator(_this.value); + + if (typeof valid === 'string') { + _this.errorMsg = valid; + valid = false; + } + + _this.error = !valid; + })(); + } + + submit() { + var _this2 = this; + + return _asyncToGenerator(function* () { + yield _this2.validate(); + + if (_this2.error) { + _this2.color = 'red'; + + _this2.fire(); + + _this2.render(); + + return; + } + + _this2.done = true; + _this2.aborted = false; + + _this2.fire(); + + _this2.render(); + + _this2.out.write('\n'); + + _this2.close(); + })(); + } + + up() { + this.typed = ''; + this.parts[this.cursor].up(); + this.render(); + } + + down() { + this.typed = ''; + this.parts[this.cursor].down(); + this.render(); + } + + left() { + let prev = this.parts[this.cursor].prev(); + if (prev == null) return this.bell(); + this.moveCursor(this.parts.indexOf(prev)); + this.render(); + } + + right() { + let next = this.parts[this.cursor].next(); + if (next == null) return this.bell(); + this.moveCursor(this.parts.indexOf(next)); + this.render(); + } + + next() { + let next = this.parts[this.cursor].next(); + this.moveCursor(next ? this.parts.indexOf(next) : this.parts.findIndex(part => part instanceof DatePart)); + this.render(); + } + + _(c) { + if (/\d/.test(c)) { + this.typed += c; + this.parts[this.cursor].setTo(this.typed); + this.render(); + } + } + + render() { + if (this.closed) return; + if (this.firstRender) this.out.write(cursor.hide);else this.out.write(clear(this.outputText, this.out.columns)); + super.render(); // Print prompt + + this.outputText = [style.symbol(this.done, this.aborted), color.bold(this.msg), style.delimiter(false), this.parts.reduce((arr, p, idx) => arr.concat(idx === this.cursor && !this.done ? color.cyan().underline(p.toString()) : p), []).join('')].join(' '); // Print error + + if (this.error) { + this.outputText += this.errorMsg.split('\n').reduce((a, l, i) => a + `\n${i ? ` ` : figures.pointerSmall} ${color.red().italic(l)}`, ``); + } + + this.out.write(erase.line + cursor.to(0) + this.outputText); + } + + } + + date$1 = DatePrompt; + return date$1; +} + +var number$1; +var hasRequiredNumber$1; + +function requireNumber$1 () { + if (hasRequiredNumber$1) return number$1; + hasRequiredNumber$1 = 1; + + function asyncGeneratorStep(gen, resolve, reject, _next, _throw, key, arg) { try { var info = gen[key](arg); var value = info.value; } catch (error) { reject(error); return; } if (info.done) { resolve(value); } else { Promise.resolve(value).then(_next, _throw); } } + + function _asyncToGenerator(fn) { return function () { var self = this, args = arguments; return new Promise(function (resolve, reject) { var gen = fn.apply(self, args); function _next(value) { asyncGeneratorStep(gen, resolve, reject, _next, _throw, "next", value); } function _throw(err) { asyncGeneratorStep(gen, resolve, reject, _next, _throw, "throw", err); } _next(undefined); }); }; } + + const color = requireKleur(); + + const Prompt = requirePrompt$1(); + + const _require = requireSrc(), + cursor = _require.cursor, + erase = _require.erase; + + const _require2 = requireUtil$1(), + style = _require2.style, + figures = _require2.figures, + clear = _require2.clear, + lines = _require2.lines; + + const isNumber = /[0-9]/; + + const isDef = any => any !== undefined; + + const round = (number, precision) => { + let factor = Math.pow(10, precision); + return Math.round(number * factor) / factor; + }; + /** + * NumberPrompt Base Element + * @param {Object} opts Options + * @param {String} opts.message Message + * @param {String} [opts.style='default'] Render style + * @param {Number} [opts.initial] Default value + * @param {Number} [opts.max=+Infinity] Max value + * @param {Number} [opts.min=-Infinity] Min value + * @param {Boolean} [opts.float=false] Parse input as floats + * @param {Number} [opts.round=2] Round floats to x decimals + * @param {Number} [opts.increment=1] Number to increment by when using arrow-keys + * @param {Function} [opts.validate] Validate function + * @param {Stream} [opts.stdin] The Readable stream to listen to + * @param {Stream} [opts.stdout] The Writable stream to write readline data to + * @param {String} [opts.error] The invalid error label + */ + + + class NumberPrompt extends Prompt { + constructor(opts = {}) { + super(opts); + this.transform = style.render(opts.style); + this.msg = opts.message; + this.initial = isDef(opts.initial) ? opts.initial : ''; + this.float = !!opts.float; + this.round = opts.round || 2; + this.inc = opts.increment || 1; + this.min = isDef(opts.min) ? opts.min : -Infinity; + this.max = isDef(opts.max) ? opts.max : Infinity; + this.errorMsg = opts.error || `Please Enter A Valid Value`; + + this.validator = opts.validate || (() => true); + + this.color = `cyan`; + this.value = ``; + this.typed = ``; + this.lastHit = 0; + this.render(); + } + + set value(v) { + if (!v && v !== 0) { + this.placeholder = true; + this.rendered = color.gray(this.transform.render(`${this.initial}`)); + this._value = ``; + } else { + this.placeholder = false; + this.rendered = this.transform.render(`${round(v, this.round)}`); + this._value = round(v, this.round); + } + + this.fire(); + } + + get value() { + return this._value; + } + + parse(x) { + return this.float ? parseFloat(x) : parseInt(x); + } + + valid(c) { + return c === `-` || c === `.` && this.float || isNumber.test(c); + } + + reset() { + this.typed = ``; + this.value = ``; + this.fire(); + this.render(); + } + + exit() { + this.abort(); + } + + abort() { + let x = this.value; + this.value = x !== `` ? x : this.initial; + this.done = this.aborted = true; + this.error = false; + this.fire(); + this.render(); + this.out.write(`\n`); + this.close(); + } + + validate() { + var _this = this; + + return _asyncToGenerator(function* () { + let valid = yield _this.validator(_this.value); + + if (typeof valid === `string`) { + _this.errorMsg = valid; + valid = false; + } + + _this.error = !valid; + })(); + } + + submit() { + var _this2 = this; + + return _asyncToGenerator(function* () { + yield _this2.validate(); + + if (_this2.error) { + _this2.color = `red`; + + _this2.fire(); + + _this2.render(); + + return; + } + + let x = _this2.value; + _this2.value = x !== `` ? x : _this2.initial; + _this2.done = true; + _this2.aborted = false; + _this2.error = false; + + _this2.fire(); + + _this2.render(); + + _this2.out.write(`\n`); + + _this2.close(); + })(); + } + + up() { + this.typed = ``; + + if (this.value === '') { + this.value = this.min - this.inc; + } + + if (this.value >= this.max) return this.bell(); + this.value += this.inc; + this.color = `cyan`; + this.fire(); + this.render(); + } + + down() { + this.typed = ``; + + if (this.value === '') { + this.value = this.min + this.inc; + } + + if (this.value <= this.min) return this.bell(); + this.value -= this.inc; + this.color = `cyan`; + this.fire(); + this.render(); + } + + delete() { + let val = this.value.toString(); + if (val.length === 0) return this.bell(); + this.value = this.parse(val = val.slice(0, -1)) || ``; + + if (this.value !== '' && this.value < this.min) { + this.value = this.min; + } + + this.color = `cyan`; + this.fire(); + this.render(); + } + + next() { + this.value = this.initial; + this.fire(); + this.render(); + } + + _(c, key) { + if (!this.valid(c)) return this.bell(); + const now = Date.now(); + if (now - this.lastHit > 1000) this.typed = ``; // 1s elapsed + + this.typed += c; + this.lastHit = now; + this.color = `cyan`; + if (c === `.`) return this.fire(); + this.value = Math.min(this.parse(this.typed), this.max); + if (this.value > this.max) this.value = this.max; + if (this.value < this.min) this.value = this.min; + this.fire(); + this.render(); + } + + render() { + if (this.closed) return; + + if (!this.firstRender) { + if (this.outputError) this.out.write(cursor.down(lines(this.outputError, this.out.columns) - 1) + clear(this.outputError, this.out.columns)); + this.out.write(clear(this.outputText, this.out.columns)); + } + + super.render(); + this.outputError = ''; // Print prompt + + this.outputText = [style.symbol(this.done, this.aborted), color.bold(this.msg), style.delimiter(this.done), !this.done || !this.done && !this.placeholder ? color[this.color]().underline(this.rendered) : this.rendered].join(` `); // Print error + + if (this.error) { + this.outputError += this.errorMsg.split(`\n`).reduce((a, l, i) => a + `\n${i ? ` ` : figures.pointerSmall} ${color.red().italic(l)}`, ``); + } + + this.out.write(erase.line + cursor.to(0) + this.outputText + cursor.save + this.outputError + cursor.restore); + } + + } + + number$1 = NumberPrompt; + return number$1; +} + +var multiselect$1; +var hasRequiredMultiselect$1; + +function requireMultiselect$1 () { + if (hasRequiredMultiselect$1) return multiselect$1; + hasRequiredMultiselect$1 = 1; + + const color = requireKleur(); + + const _require = requireSrc(), + cursor = _require.cursor; + + const Prompt = requirePrompt$1(); + + const _require2 = requireUtil$1(), + clear = _require2.clear, + figures = _require2.figures, + style = _require2.style, + wrap = _require2.wrap, + entriesToDisplay = _require2.entriesToDisplay; + /** + * MultiselectPrompt Base Element + * @param {Object} opts Options + * @param {String} opts.message Message + * @param {Array} opts.choices Array of choice objects + * @param {String} [opts.hint] Hint to display + * @param {String} [opts.warn] Hint shown for disabled choices + * @param {Number} [opts.max] Max choices + * @param {Number} [opts.cursor=0] Cursor start position + * @param {Number} [opts.optionsPerPage=10] Max options to display at once + * @param {Stream} [opts.stdin] The Readable stream to listen to + * @param {Stream} [opts.stdout] The Writable stream to write readline data to + */ + + + class MultiselectPrompt extends Prompt { + constructor(opts = {}) { + super(opts); + this.msg = opts.message; + this.cursor = opts.cursor || 0; + this.scrollIndex = opts.cursor || 0; + this.hint = opts.hint || ''; + this.warn = opts.warn || '- This option is disabled -'; + this.minSelected = opts.min; + this.showMinError = false; + this.maxChoices = opts.max; + this.instructions = opts.instructions; + this.optionsPerPage = opts.optionsPerPage || 10; + this.value = opts.choices.map((ch, idx) => { + if (typeof ch === 'string') ch = { + title: ch, + value: idx + }; + return { + title: ch && (ch.title || ch.value || ch), + description: ch && ch.description, + value: ch && (ch.value === undefined ? idx : ch.value), + selected: ch && ch.selected, + disabled: ch && ch.disabled + }; + }); + this.clear = clear('', this.out.columns); + + if (!opts.overrideRender) { + this.render(); + } + } + + reset() { + this.value.map(v => !v.selected); + this.cursor = 0; + this.fire(); + this.render(); + } + + selected() { + return this.value.filter(v => v.selected); + } + + exit() { + this.abort(); + } + + abort() { + this.done = this.aborted = true; + this.fire(); + this.render(); + this.out.write('\n'); + this.close(); + } + + submit() { + const selected = this.value.filter(e => e.selected); + + if (this.minSelected && selected.length < this.minSelected) { + this.showMinError = true; + this.render(); + } else { + this.done = true; + this.aborted = false; + this.fire(); + this.render(); + this.out.write('\n'); + this.close(); + } + } + + first() { + this.cursor = 0; + this.render(); + } + + last() { + this.cursor = this.value.length - 1; + this.render(); + } + + next() { + this.cursor = (this.cursor + 1) % this.value.length; + this.render(); + } + + up() { + if (this.cursor === 0) { + this.cursor = this.value.length - 1; + } else { + this.cursor--; + } + + this.render(); + } + + down() { + if (this.cursor === this.value.length - 1) { + this.cursor = 0; + } else { + this.cursor++; + } + + this.render(); + } + + left() { + this.value[this.cursor].selected = false; + this.render(); + } + + right() { + if (this.value.filter(e => e.selected).length >= this.maxChoices) return this.bell(); + this.value[this.cursor].selected = true; + this.render(); + } + + handleSpaceToggle() { + const v = this.value[this.cursor]; + + if (v.selected) { + v.selected = false; + this.render(); + } else if (v.disabled || this.value.filter(e => e.selected).length >= this.maxChoices) { + return this.bell(); + } else { + v.selected = true; + this.render(); + } + } + + toggleAll() { + if (this.maxChoices !== undefined || this.value[this.cursor].disabled) { + return this.bell(); + } + + const newSelected = !this.value[this.cursor].selected; + this.value.filter(v => !v.disabled).forEach(v => v.selected = newSelected); + this.render(); + } + + _(c, key) { + if (c === ' ') { + this.handleSpaceToggle(); + } else if (c === 'a') { + this.toggleAll(); + } else { + return this.bell(); + } + } + + renderInstructions() { + if (this.instructions === undefined || this.instructions) { + if (typeof this.instructions === 'string') { + return this.instructions; + } + + return '\nInstructions:\n' + ` ${figures.arrowUp}/${figures.arrowDown}: Highlight option\n` + ` ${figures.arrowLeft}/${figures.arrowRight}/[space]: Toggle selection\n` + (this.maxChoices === undefined ? ` a: Toggle all\n` : '') + ` enter/return: Complete answer`; + } + + return ''; + } + + renderOption(cursor, v, i, arrowIndicator) { + const prefix = (v.selected ? color.green(figures.radioOn) : figures.radioOff) + ' ' + arrowIndicator + ' '; + let title, desc; + + if (v.disabled) { + title = cursor === i ? color.gray().underline(v.title) : color.strikethrough().gray(v.title); + } else { + title = cursor === i ? color.cyan().underline(v.title) : v.title; + + if (cursor === i && v.description) { + desc = ` - ${v.description}`; + + if (prefix.length + title.length + desc.length >= this.out.columns || v.description.split(/\r?\n/).length > 1) { + desc = '\n' + wrap(v.description, { + margin: prefix.length, + width: this.out.columns + }); + } + } + } + + return prefix + title + color.gray(desc || ''); + } // shared with autocompleteMultiselect + + + paginateOptions(options) { + if (options.length === 0) { + return color.red('No matches for this query.'); + } + + let _entriesToDisplay = entriesToDisplay(this.cursor, options.length, this.optionsPerPage), + startIndex = _entriesToDisplay.startIndex, + endIndex = _entriesToDisplay.endIndex; + + let prefix, + styledOptions = []; + + for (let i = startIndex; i < endIndex; i++) { + if (i === startIndex && startIndex > 0) { + prefix = figures.arrowUp; + } else if (i === endIndex - 1 && endIndex < options.length) { + prefix = figures.arrowDown; + } else { + prefix = ' '; + } + + styledOptions.push(this.renderOption(this.cursor, options[i], i, prefix)); + } + + return '\n' + styledOptions.join('\n'); + } // shared with autocomleteMultiselect + + + renderOptions(options) { + if (!this.done) { + return this.paginateOptions(options); + } + + return ''; + } + + renderDoneOrInstructions() { + if (this.done) { + return this.value.filter(e => e.selected).map(v => v.title).join(', '); + } + + const output = [color.gray(this.hint), this.renderInstructions()]; + + if (this.value[this.cursor].disabled) { + output.push(color.yellow(this.warn)); + } + + return output.join(' '); + } + + render() { + if (this.closed) return; + if (this.firstRender) this.out.write(cursor.hide); + super.render(); // print prompt + + let prompt = [style.symbol(this.done, this.aborted), color.bold(this.msg), style.delimiter(false), this.renderDoneOrInstructions()].join(' '); + + if (this.showMinError) { + prompt += color.red(`You must select a minimum of ${this.minSelected} choices.`); + this.showMinError = false; + } + + prompt += this.renderOptions(this.value); + this.out.write(this.clear + prompt); + this.clear = clear(prompt, this.out.columns); + } + + } + + multiselect$1 = MultiselectPrompt; + return multiselect$1; +} + +var autocomplete$1; +var hasRequiredAutocomplete$1; + +function requireAutocomplete$1 () { + if (hasRequiredAutocomplete$1) return autocomplete$1; + hasRequiredAutocomplete$1 = 1; + + function asyncGeneratorStep(gen, resolve, reject, _next, _throw, key, arg) { try { var info = gen[key](arg); var value = info.value; } catch (error) { reject(error); return; } if (info.done) { resolve(value); } else { Promise.resolve(value).then(_next, _throw); } } + + function _asyncToGenerator(fn) { return function () { var self = this, args = arguments; return new Promise(function (resolve, reject) { var gen = fn.apply(self, args); function _next(value) { asyncGeneratorStep(gen, resolve, reject, _next, _throw, "next", value); } function _throw(err) { asyncGeneratorStep(gen, resolve, reject, _next, _throw, "throw", err); } _next(undefined); }); }; } + + const color = requireKleur(); + + const Prompt = requirePrompt$1(); + + const _require = requireSrc(), + erase = _require.erase, + cursor = _require.cursor; + + const _require2 = requireUtil$1(), + style = _require2.style, + clear = _require2.clear, + figures = _require2.figures, + wrap = _require2.wrap, + entriesToDisplay = _require2.entriesToDisplay; + + const getVal = (arr, i) => arr[i] && (arr[i].value || arr[i].title || arr[i]); + + const getTitle = (arr, i) => arr[i] && (arr[i].title || arr[i].value || arr[i]); + + const getIndex = (arr, valOrTitle) => { + const index = arr.findIndex(el => el.value === valOrTitle || el.title === valOrTitle); + return index > -1 ? index : undefined; + }; + /** + * TextPrompt Base Element + * @param {Object} opts Options + * @param {String} opts.message Message + * @param {Array} opts.choices Array of auto-complete choices objects + * @param {Function} [opts.suggest] Filter function. Defaults to sort by title + * @param {Number} [opts.limit=10] Max number of results to show + * @param {Number} [opts.cursor=0] Cursor start position + * @param {String} [opts.style='default'] Render style + * @param {String} [opts.fallback] Fallback message - initial to default value + * @param {String} [opts.initial] Index of the default value + * @param {Boolean} [opts.clearFirst] The first ESCAPE keypress will clear the input + * @param {Stream} [opts.stdin] The Readable stream to listen to + * @param {Stream} [opts.stdout] The Writable stream to write readline data to + * @param {String} [opts.noMatches] The no matches found label + */ + + + class AutocompletePrompt extends Prompt { + constructor(opts = {}) { + super(opts); + this.msg = opts.message; + this.suggest = opts.suggest; + this.choices = opts.choices; + this.initial = typeof opts.initial === 'number' ? opts.initial : getIndex(opts.choices, opts.initial); + this.select = this.initial || opts.cursor || 0; + this.i18n = { + noMatches: opts.noMatches || 'no matches found' + }; + this.fallback = opts.fallback || this.initial; + this.clearFirst = opts.clearFirst || false; + this.suggestions = []; + this.input = ''; + this.limit = opts.limit || 10; + this.cursor = 0; + this.transform = style.render(opts.style); + this.scale = this.transform.scale; + this.render = this.render.bind(this); + this.complete = this.complete.bind(this); + this.clear = clear('', this.out.columns); + this.complete(this.render); + this.render(); + } + + set fallback(fb) { + this._fb = Number.isSafeInteger(parseInt(fb)) ? parseInt(fb) : fb; + } + + get fallback() { + let choice; + if (typeof this._fb === 'number') choice = this.choices[this._fb];else if (typeof this._fb === 'string') choice = { + title: this._fb + }; + return choice || this._fb || { + title: this.i18n.noMatches + }; + } + + moveSelect(i) { + this.select = i; + if (this.suggestions.length > 0) this.value = getVal(this.suggestions, i);else this.value = this.fallback.value; + this.fire(); + } + + complete(cb) { + var _this = this; + + return _asyncToGenerator(function* () { + const p = _this.completing = _this.suggest(_this.input, _this.choices); + + const suggestions = yield p; + if (_this.completing !== p) return; + _this.suggestions = suggestions.map((s, i, arr) => ({ + title: getTitle(arr, i), + value: getVal(arr, i), + description: s.description + })); + _this.completing = false; + const l = Math.max(suggestions.length - 1, 0); + + _this.moveSelect(Math.min(l, _this.select)); + + cb && cb(); + })(); + } + + reset() { + this.input = ''; + this.complete(() => { + this.moveSelect(this.initial !== void 0 ? this.initial : 0); + this.render(); + }); + this.render(); + } + + exit() { + if (this.clearFirst && this.input.length > 0) { + this.reset(); + } else { + this.done = this.exited = true; + this.aborted = false; + this.fire(); + this.render(); + this.out.write('\n'); + this.close(); + } + } + + abort() { + this.done = this.aborted = true; + this.exited = false; + this.fire(); + this.render(); + this.out.write('\n'); + this.close(); + } + + submit() { + this.done = true; + this.aborted = this.exited = false; + this.fire(); + this.render(); + this.out.write('\n'); + this.close(); + } + + _(c, key) { + let s1 = this.input.slice(0, this.cursor); + let s2 = this.input.slice(this.cursor); + this.input = `${s1}${c}${s2}`; + this.cursor = s1.length + 1; + this.complete(this.render); + this.render(); + } + + delete() { + if (this.cursor === 0) return this.bell(); + let s1 = this.input.slice(0, this.cursor - 1); + let s2 = this.input.slice(this.cursor); + this.input = `${s1}${s2}`; + this.complete(this.render); + this.cursor = this.cursor - 1; + this.render(); + } + + deleteForward() { + if (this.cursor * this.scale >= this.rendered.length) return this.bell(); + let s1 = this.input.slice(0, this.cursor); + let s2 = this.input.slice(this.cursor + 1); + this.input = `${s1}${s2}`; + this.complete(this.render); + this.render(); + } + + first() { + this.moveSelect(0); + this.render(); + } + + last() { + this.moveSelect(this.suggestions.length - 1); + this.render(); + } + + up() { + if (this.select === 0) { + this.moveSelect(this.suggestions.length - 1); + } else { + this.moveSelect(this.select - 1); + } + + this.render(); + } + + down() { + if (this.select === this.suggestions.length - 1) { + this.moveSelect(0); + } else { + this.moveSelect(this.select + 1); + } + + this.render(); + } + + next() { + if (this.select === this.suggestions.length - 1) { + this.moveSelect(0); + } else this.moveSelect(this.select + 1); + + this.render(); + } + + nextPage() { + this.moveSelect(Math.min(this.select + this.limit, this.suggestions.length - 1)); + this.render(); + } + + prevPage() { + this.moveSelect(Math.max(this.select - this.limit, 0)); + this.render(); + } + + left() { + if (this.cursor <= 0) return this.bell(); + this.cursor = this.cursor - 1; + this.render(); + } + + right() { + if (this.cursor * this.scale >= this.rendered.length) return this.bell(); + this.cursor = this.cursor + 1; + this.render(); + } + + renderOption(v, hovered, isStart, isEnd) { + let desc; + let prefix = isStart ? figures.arrowUp : isEnd ? figures.arrowDown : ' '; + let title = hovered ? color.cyan().underline(v.title) : v.title; + prefix = (hovered ? color.cyan(figures.pointer) + ' ' : ' ') + prefix; + + if (v.description) { + desc = ` - ${v.description}`; + + if (prefix.length + title.length + desc.length >= this.out.columns || v.description.split(/\r?\n/).length > 1) { + desc = '\n' + wrap(v.description, { + margin: 3, + width: this.out.columns + }); + } + } + + return prefix + ' ' + title + color.gray(desc || ''); + } + + render() { + if (this.closed) return; + if (this.firstRender) this.out.write(cursor.hide);else this.out.write(clear(this.outputText, this.out.columns)); + super.render(); + + let _entriesToDisplay = entriesToDisplay(this.select, this.choices.length, this.limit), + startIndex = _entriesToDisplay.startIndex, + endIndex = _entriesToDisplay.endIndex; + + this.outputText = [style.symbol(this.done, this.aborted, this.exited), color.bold(this.msg), style.delimiter(this.completing), this.done && this.suggestions[this.select] ? this.suggestions[this.select].title : this.rendered = this.transform.render(this.input)].join(' '); + + if (!this.done) { + const suggestions = this.suggestions.slice(startIndex, endIndex).map((item, i) => this.renderOption(item, this.select === i + startIndex, i === 0 && startIndex > 0, i + startIndex === endIndex - 1 && endIndex < this.choices.length)).join('\n'); + this.outputText += `\n` + (suggestions || color.gray(this.fallback.title)); + } + + this.out.write(erase.line + cursor.to(0) + this.outputText); + } + + } + + autocomplete$1 = AutocompletePrompt; + return autocomplete$1; +} + +var autocompleteMultiselect$1; +var hasRequiredAutocompleteMultiselect$1; + +function requireAutocompleteMultiselect$1 () { + if (hasRequiredAutocompleteMultiselect$1) return autocompleteMultiselect$1; + hasRequiredAutocompleteMultiselect$1 = 1; + + const color = requireKleur(); + + const _require = requireSrc(), + cursor = _require.cursor; + + const MultiselectPrompt = requireMultiselect$1(); + + const _require2 = requireUtil$1(), + clear = _require2.clear, + style = _require2.style, + figures = _require2.figures; + /** + * MultiselectPrompt Base Element + * @param {Object} opts Options + * @param {String} opts.message Message + * @param {Array} opts.choices Array of choice objects + * @param {String} [opts.hint] Hint to display + * @param {String} [opts.warn] Hint shown for disabled choices + * @param {Number} [opts.max] Max choices + * @param {Number} [opts.cursor=0] Cursor start position + * @param {Stream} [opts.stdin] The Readable stream to listen to + * @param {Stream} [opts.stdout] The Writable stream to write readline data to + */ + + + class AutocompleteMultiselectPrompt extends MultiselectPrompt { + constructor(opts = {}) { + opts.overrideRender = true; + super(opts); + this.inputValue = ''; + this.clear = clear('', this.out.columns); + this.filteredOptions = this.value; + this.render(); + } + + last() { + this.cursor = this.filteredOptions.length - 1; + this.render(); + } + + next() { + this.cursor = (this.cursor + 1) % this.filteredOptions.length; + this.render(); + } + + up() { + if (this.cursor === 0) { + this.cursor = this.filteredOptions.length - 1; + } else { + this.cursor--; + } + + this.render(); + } + + down() { + if (this.cursor === this.filteredOptions.length - 1) { + this.cursor = 0; + } else { + this.cursor++; + } + + this.render(); + } + + left() { + this.filteredOptions[this.cursor].selected = false; + this.render(); + } + + right() { + if (this.value.filter(e => e.selected).length >= this.maxChoices) return this.bell(); + this.filteredOptions[this.cursor].selected = true; + this.render(); + } + + delete() { + if (this.inputValue.length) { + this.inputValue = this.inputValue.substr(0, this.inputValue.length - 1); + this.updateFilteredOptions(); + } + } + + updateFilteredOptions() { + const currentHighlight = this.filteredOptions[this.cursor]; + this.filteredOptions = this.value.filter(v => { + if (this.inputValue) { + if (typeof v.title === 'string') { + if (v.title.toLowerCase().includes(this.inputValue.toLowerCase())) { + return true; + } + } + + if (typeof v.value === 'string') { + if (v.value.toLowerCase().includes(this.inputValue.toLowerCase())) { + return true; + } + } + + return false; + } + + return true; + }); + const newHighlightIndex = this.filteredOptions.findIndex(v => v === currentHighlight); + this.cursor = newHighlightIndex < 0 ? 0 : newHighlightIndex; + this.render(); + } + + handleSpaceToggle() { + const v = this.filteredOptions[this.cursor]; + + if (v.selected) { + v.selected = false; + this.render(); + } else if (v.disabled || this.value.filter(e => e.selected).length >= this.maxChoices) { + return this.bell(); + } else { + v.selected = true; + this.render(); + } + } + + handleInputChange(c) { + this.inputValue = this.inputValue + c; + this.updateFilteredOptions(); + } + + _(c, key) { + if (c === ' ') { + this.handleSpaceToggle(); + } else { + this.handleInputChange(c); + } + } + + renderInstructions() { + if (this.instructions === undefined || this.instructions) { + if (typeof this.instructions === 'string') { + return this.instructions; + } + + return ` +Instructions: + ${figures.arrowUp}/${figures.arrowDown}: Highlight option + ${figures.arrowLeft}/${figures.arrowRight}/[space]: Toggle selection + [a,b,c]/delete: Filter choices + enter/return: Complete answer +`; + } + + return ''; + } + + renderCurrentInput() { + return ` +Filtered results for: ${this.inputValue ? this.inputValue : color.gray('Enter something to filter')}\n`; + } + + renderOption(cursor, v, i) { + let title; + if (v.disabled) title = cursor === i ? color.gray().underline(v.title) : color.strikethrough().gray(v.title);else title = cursor === i ? color.cyan().underline(v.title) : v.title; + return (v.selected ? color.green(figures.radioOn) : figures.radioOff) + ' ' + title; + } + + renderDoneOrInstructions() { + if (this.done) { + return this.value.filter(e => e.selected).map(v => v.title).join(', '); + } + + const output = [color.gray(this.hint), this.renderInstructions(), this.renderCurrentInput()]; + + if (this.filteredOptions.length && this.filteredOptions[this.cursor].disabled) { + output.push(color.yellow(this.warn)); + } + + return output.join(' '); + } + + render() { + if (this.closed) return; + if (this.firstRender) this.out.write(cursor.hide); + super.render(); // print prompt + + let prompt = [style.symbol(this.done, this.aborted), color.bold(this.msg), style.delimiter(false), this.renderDoneOrInstructions()].join(' '); + + if (this.showMinError) { + prompt += color.red(`You must select a minimum of ${this.minSelected} choices.`); + this.showMinError = false; + } + + prompt += this.renderOptions(this.filteredOptions); + this.out.write(this.clear + prompt); + this.clear = clear(prompt, this.out.columns); + } + + } + + autocompleteMultiselect$1 = AutocompleteMultiselectPrompt; + return autocompleteMultiselect$1; +} + +var confirm$1; +var hasRequiredConfirm$1; + +function requireConfirm$1 () { + if (hasRequiredConfirm$1) return confirm$1; + hasRequiredConfirm$1 = 1; + + const color = requireKleur(); + + const Prompt = requirePrompt$1(); + + const _require = requireUtil$1(), + style = _require.style, + clear = _require.clear; + + const _require2 = requireSrc(), + erase = _require2.erase, + cursor = _require2.cursor; + /** + * ConfirmPrompt Base Element + * @param {Object} opts Options + * @param {String} opts.message Message + * @param {Boolean} [opts.initial] Default value (true/false) + * @param {Stream} [opts.stdin] The Readable stream to listen to + * @param {Stream} [opts.stdout] The Writable stream to write readline data to + * @param {String} [opts.yes] The "Yes" label + * @param {String} [opts.yesOption] The "Yes" option when choosing between yes/no + * @param {String} [opts.no] The "No" label + * @param {String} [opts.noOption] The "No" option when choosing between yes/no + */ + + + class ConfirmPrompt extends Prompt { + constructor(opts = {}) { + super(opts); + this.msg = opts.message; + this.value = opts.initial; + this.initialValue = !!opts.initial; + this.yesMsg = opts.yes || 'yes'; + this.yesOption = opts.yesOption || '(Y/n)'; + this.noMsg = opts.no || 'no'; + this.noOption = opts.noOption || '(y/N)'; + this.render(); + } + + reset() { + this.value = this.initialValue; + this.fire(); + this.render(); + } + + exit() { + this.abort(); + } + + abort() { + this.done = this.aborted = true; + this.fire(); + this.render(); + this.out.write('\n'); + this.close(); + } + + submit() { + this.value = this.value || false; + this.done = true; + this.aborted = false; + this.fire(); + this.render(); + this.out.write('\n'); + this.close(); + } + + _(c, key) { + if (c.toLowerCase() === 'y') { + this.value = true; + return this.submit(); + } + + if (c.toLowerCase() === 'n') { + this.value = false; + return this.submit(); + } + + return this.bell(); + } + + render() { + if (this.closed) return; + if (this.firstRender) this.out.write(cursor.hide);else this.out.write(clear(this.outputText, this.out.columns)); + super.render(); + this.outputText = [style.symbol(this.done, this.aborted), color.bold(this.msg), style.delimiter(this.done), this.done ? this.value ? this.yesMsg : this.noMsg : color.gray(this.initialValue ? this.yesOption : this.noOption)].join(' '); + this.out.write(erase.line + cursor.to(0) + this.outputText); + } + + } + + confirm$1 = ConfirmPrompt; + return confirm$1; +} + +var elements$1; +var hasRequiredElements$1; + +function requireElements$1 () { + if (hasRequiredElements$1) return elements$1; + hasRequiredElements$1 = 1; + + elements$1 = { + TextPrompt: requireText$1(), + SelectPrompt: requireSelect$1(), + TogglePrompt: requireToggle$1(), + DatePrompt: requireDate$1(), + NumberPrompt: requireNumber$1(), + MultiselectPrompt: requireMultiselect$1(), + AutocompletePrompt: requireAutocomplete$1(), + AutocompleteMultiselectPrompt: requireAutocompleteMultiselect$1(), + ConfirmPrompt: requireConfirm$1() + }; + return elements$1; +} + +var hasRequiredPrompts$1; + +function requirePrompts$1 () { + if (hasRequiredPrompts$1) return prompts$2; + hasRequiredPrompts$1 = 1; + (function (exports) { + + const $ = exports; + + const el = requireElements$1(); + + const noop = v => v; + + function toPrompt(type, args, opts = {}) { + return new Promise((res, rej) => { + const p = new el[type](args); + const onAbort = opts.onAbort || noop; + const onSubmit = opts.onSubmit || noop; + const onExit = opts.onExit || noop; + p.on('state', args.onState || noop); + p.on('submit', x => res(onSubmit(x))); + p.on('exit', x => res(onExit(x))); + p.on('abort', x => rej(onAbort(x))); + }); + } + /** + * Text prompt + * @param {string} args.message Prompt message to display + * @param {string} [args.initial] Default string value + * @param {string} [args.style="default"] Render style ('default', 'password', 'invisible') + * @param {function} [args.onState] On state change callback + * @param {function} [args.validate] Function to validate user input + * @param {Stream} [args.stdin] The Readable stream to listen to + * @param {Stream} [args.stdout] The Writable stream to write readline data to + * @returns {Promise} Promise with user input + */ + + + $.text = args => toPrompt('TextPrompt', args); + /** + * Password prompt with masked input + * @param {string} args.message Prompt message to display + * @param {string} [args.initial] Default string value + * @param {function} [args.onState] On state change callback + * @param {function} [args.validate] Function to validate user input + * @param {Stream} [args.stdin] The Readable stream to listen to + * @param {Stream} [args.stdout] The Writable stream to write readline data to + * @returns {Promise} Promise with user input + */ + + + $.password = args => { + args.style = 'password'; + return $.text(args); + }; + /** + * Prompt where input is invisible, like sudo + * @param {string} args.message Prompt message to display + * @param {string} [args.initial] Default string value + * @param {function} [args.onState] On state change callback + * @param {function} [args.validate] Function to validate user input + * @param {Stream} [args.stdin] The Readable stream to listen to + * @param {Stream} [args.stdout] The Writable stream to write readline data to + * @returns {Promise} Promise with user input + */ + + + $.invisible = args => { + args.style = 'invisible'; + return $.text(args); + }; + /** + * Number prompt + * @param {string} args.message Prompt message to display + * @param {number} args.initial Default number value + * @param {function} [args.onState] On state change callback + * @param {number} [args.max] Max value + * @param {number} [args.min] Min value + * @param {string} [args.style="default"] Render style ('default', 'password', 'invisible') + * @param {Boolean} [opts.float=false] Parse input as floats + * @param {Number} [opts.round=2] Round floats to x decimals + * @param {Number} [opts.increment=1] Number to increment by when using arrow-keys + * @param {function} [args.validate] Function to validate user input + * @param {Stream} [args.stdin] The Readable stream to listen to + * @param {Stream} [args.stdout] The Writable stream to write readline data to + * @returns {Promise} Promise with user input + */ + + + $.number = args => toPrompt('NumberPrompt', args); + /** + * Date prompt + * @param {string} args.message Prompt message to display + * @param {number} args.initial Default number value + * @param {function} [args.onState] On state change callback + * @param {number} [args.max] Max value + * @param {number} [args.min] Min value + * @param {string} [args.style="default"] Render style ('default', 'password', 'invisible') + * @param {Boolean} [opts.float=false] Parse input as floats + * @param {Number} [opts.round=2] Round floats to x decimals + * @param {Number} [opts.increment=1] Number to increment by when using arrow-keys + * @param {function} [args.validate] Function to validate user input + * @param {Stream} [args.stdin] The Readable stream to listen to + * @param {Stream} [args.stdout] The Writable stream to write readline data to + * @returns {Promise} Promise with user input + */ + + + $.date = args => toPrompt('DatePrompt', args); + /** + * Classic yes/no prompt + * @param {string} args.message Prompt message to display + * @param {boolean} [args.initial=false] Default value + * @param {function} [args.onState] On state change callback + * @param {Stream} [args.stdin] The Readable stream to listen to + * @param {Stream} [args.stdout] The Writable stream to write readline data to + * @returns {Promise} Promise with user input + */ + + + $.confirm = args => toPrompt('ConfirmPrompt', args); + /** + * List prompt, split intput string by `seperator` + * @param {string} args.message Prompt message to display + * @param {string} [args.initial] Default string value + * @param {string} [args.style="default"] Render style ('default', 'password', 'invisible') + * @param {string} [args.separator] String separator + * @param {function} [args.onState] On state change callback + * @param {Stream} [args.stdin] The Readable stream to listen to + * @param {Stream} [args.stdout] The Writable stream to write readline data to + * @returns {Promise} Promise with user input, in form of an `Array` + */ + + + $.list = args => { + const sep = args.separator || ','; + return toPrompt('TextPrompt', args, { + onSubmit: str => str.split(sep).map(s => s.trim()) + }); + }; + /** + * Toggle/switch prompt + * @param {string} args.message Prompt message to display + * @param {boolean} [args.initial=false] Default value + * @param {string} [args.active="on"] Text for `active` state + * @param {string} [args.inactive="off"] Text for `inactive` state + * @param {function} [args.onState] On state change callback + * @param {Stream} [args.stdin] The Readable stream to listen to + * @param {Stream} [args.stdout] The Writable stream to write readline data to + * @returns {Promise} Promise with user input + */ + + + $.toggle = args => toPrompt('TogglePrompt', args); + /** + * Interactive select prompt + * @param {string} args.message Prompt message to display + * @param {Array} args.choices Array of choices objects `[{ title, value }, ...]` + * @param {number} [args.initial] Index of default value + * @param {String} [args.hint] Hint to display + * @param {function} [args.onState] On state change callback + * @param {Stream} [args.stdin] The Readable stream to listen to + * @param {Stream} [args.stdout] The Writable stream to write readline data to + * @returns {Promise} Promise with user input + */ + + + $.select = args => toPrompt('SelectPrompt', args); + /** + * Interactive multi-select / autocompleteMultiselect prompt + * @param {string} args.message Prompt message to display + * @param {Array} args.choices Array of choices objects `[{ title, value, [selected] }, ...]` + * @param {number} [args.max] Max select + * @param {string} [args.hint] Hint to display user + * @param {Number} [args.cursor=0] Cursor start position + * @param {function} [args.onState] On state change callback + * @param {Stream} [args.stdin] The Readable stream to listen to + * @param {Stream} [args.stdout] The Writable stream to write readline data to + * @returns {Promise} Promise with user input + */ + + + $.multiselect = args => { + args.choices = [].concat(args.choices || []); + + const toSelected = items => items.filter(item => item.selected).map(item => item.value); + + return toPrompt('MultiselectPrompt', args, { + onAbort: toSelected, + onSubmit: toSelected + }); + }; + + $.autocompleteMultiselect = args => { + args.choices = [].concat(args.choices || []); + + const toSelected = items => items.filter(item => item.selected).map(item => item.value); + + return toPrompt('AutocompleteMultiselectPrompt', args, { + onAbort: toSelected, + onSubmit: toSelected + }); + }; + + const byTitle = (input, choices) => Promise.resolve(choices.filter(item => item.title.slice(0, input.length).toLowerCase() === input.toLowerCase())); + /** + * Interactive auto-complete prompt + * @param {string} args.message Prompt message to display + * @param {Array} args.choices Array of auto-complete choices objects `[{ title, value }, ...]` + * @param {Function} [args.suggest] Function to filter results based on user input. Defaults to sort by `title` + * @param {number} [args.limit=10] Max number of results to show + * @param {string} [args.style="default"] Render style ('default', 'password', 'invisible') + * @param {String} [args.initial] Index of the default value + * @param {boolean} [opts.clearFirst] The first ESCAPE keypress will clear the input + * @param {String} [args.fallback] Fallback message - defaults to initial value + * @param {function} [args.onState] On state change callback + * @param {Stream} [args.stdin] The Readable stream to listen to + * @param {Stream} [args.stdout] The Writable stream to write readline data to + * @returns {Promise} Promise with user input + */ + + + $.autocomplete = args => { + args.suggest = args.suggest || byTitle; + args.choices = [].concat(args.choices || []); + return toPrompt('AutocompletePrompt', args); + }; +} (prompts$2)); + return prompts$2; +} + +var dist; +var hasRequiredDist; + +function requireDist () { + if (hasRequiredDist) return dist; + hasRequiredDist = 1; + + function ownKeys(object, enumerableOnly) { var keys = Object.keys(object); if (Object.getOwnPropertySymbols) { var symbols = Object.getOwnPropertySymbols(object); if (enumerableOnly) { symbols = symbols.filter(function (sym) { return Object.getOwnPropertyDescriptor(object, sym).enumerable; }); } keys.push.apply(keys, symbols); } return keys; } + + function _objectSpread(target) { for (var i = 1; i < arguments.length; i++) { var source = arguments[i] != null ? arguments[i] : {}; if (i % 2) { ownKeys(Object(source), true).forEach(function (key) { _defineProperty(target, key, source[key]); }); } else if (Object.getOwnPropertyDescriptors) { Object.defineProperties(target, Object.getOwnPropertyDescriptors(source)); } else { ownKeys(Object(source)).forEach(function (key) { Object.defineProperty(target, key, Object.getOwnPropertyDescriptor(source, key)); }); } } return target; } + + function _defineProperty(obj, key, value) { if (key in obj) { Object.defineProperty(obj, key, { value: value, enumerable: true, configurable: true, writable: true }); } else { obj[key] = value; } return obj; } + + function _createForOfIteratorHelper(o, allowArrayLike) { var it = typeof Symbol !== "undefined" && o[Symbol.iterator] || o["@@iterator"]; if (!it) { if (Array.isArray(o) || (it = _unsupportedIterableToArray(o)) || allowArrayLike && o && typeof o.length === "number") { if (it) o = it; var i = 0; var F = function F() {}; return { s: F, n: function n() { if (i >= o.length) return { done: true }; return { done: false, value: o[i++] }; }, e: function e(_e) { throw _e; }, f: F }; } throw new TypeError("Invalid attempt to iterate non-iterable instance.\nIn order to be iterable, non-array objects must have a [Symbol.iterator]() method."); } var normalCompletion = true, didErr = false, err; return { s: function s() { it = it.call(o); }, n: function n() { var step = it.next(); normalCompletion = step.done; return step; }, e: function e(_e2) { didErr = true; err = _e2; }, f: function f() { try { if (!normalCompletion && it.return != null) it.return(); } finally { if (didErr) throw err; } } }; } + + function _unsupportedIterableToArray(o, minLen) { if (!o) return; if (typeof o === "string") return _arrayLikeToArray(o, minLen); var n = Object.prototype.toString.call(o).slice(8, -1); if (n === "Object" && o.constructor) n = o.constructor.name; if (n === "Map" || n === "Set") return Array.from(o); if (n === "Arguments" || /^(?:Ui|I)nt(?:8|16|32)(?:Clamped)?Array$/.test(n)) return _arrayLikeToArray(o, minLen); } + + function _arrayLikeToArray(arr, len) { if (len == null || len > arr.length) len = arr.length; for (var i = 0, arr2 = new Array(len); i < len; i++) arr2[i] = arr[i]; return arr2; } + + function asyncGeneratorStep(gen, resolve, reject, _next, _throw, key, arg) { try { var info = gen[key](arg); var value = info.value; } catch (error) { reject(error); return; } if (info.done) { resolve(value); } else { Promise.resolve(value).then(_next, _throw); } } + + function _asyncToGenerator(fn) { return function () { var self = this, args = arguments; return new Promise(function (resolve, reject) { var gen = fn.apply(self, args); function _next(value) { asyncGeneratorStep(gen, resolve, reject, _next, _throw, "next", value); } function _throw(err) { asyncGeneratorStep(gen, resolve, reject, _next, _throw, "throw", err); } _next(undefined); }); }; } + + const prompts = requirePrompts$1(); + + const passOn = ['suggest', 'format', 'onState', 'validate', 'onRender', 'type']; + + const noop = () => {}; + /** + * Prompt for a series of questions + * @param {Array|Object} questions Single question object or Array of question objects + * @param {Function} [onSubmit] Callback function called on prompt submit + * @param {Function} [onCancel] Callback function called on cancel/abort + * @returns {Object} Object with values from user input + */ + + + function prompt() { + return _prompt.apply(this, arguments); + } + + function _prompt() { + _prompt = _asyncToGenerator(function* (questions = [], { + onSubmit = noop, + onCancel = noop + } = {}) { + const answers = {}; + const override = prompt._override || {}; + questions = [].concat(questions); + let answer, question, quit, name, type, lastPrompt; + + const getFormattedAnswer = /*#__PURE__*/function () { + var _ref = _asyncToGenerator(function* (question, answer, skipValidation = false) { + if (!skipValidation && question.validate && question.validate(answer) !== true) { + return; + } + + return question.format ? yield question.format(answer, answers) : answer; + }); + + return function getFormattedAnswer(_x, _x2) { + return _ref.apply(this, arguments); + }; + }(); + + var _iterator = _createForOfIteratorHelper(questions), + _step; + + try { + for (_iterator.s(); !(_step = _iterator.n()).done;) { + question = _step.value; + var _question = question; + name = _question.name; + type = _question.type; + + // evaluate type first and skip if type is a falsy value + if (typeof type === 'function') { + type = yield type(answer, _objectSpread({}, answers), question); + question['type'] = type; + } + + if (!type) continue; // if property is a function, invoke it unless it's a special function + + for (let key in question) { + if (passOn.includes(key)) continue; + let value = question[key]; + question[key] = typeof value === 'function' ? yield value(answer, _objectSpread({}, answers), lastPrompt) : value; + } + + lastPrompt = question; + + if (typeof question.message !== 'string') { + throw new Error('prompt message is required'); + } // update vars in case they changed + + + var _question2 = question; + name = _question2.name; + type = _question2.type; + + if (prompts[type] === void 0) { + throw new Error(`prompt type (${type}) is not defined`); + } + + if (override[question.name] !== undefined) { + answer = yield getFormattedAnswer(question, override[question.name]); + + if (answer !== undefined) { + answers[name] = answer; + continue; + } + } + + try { + // Get the injected answer if there is one or prompt the user + answer = prompt._injected ? getInjectedAnswer(prompt._injected, question.initial) : yield prompts[type](question); + answers[name] = answer = yield getFormattedAnswer(question, answer, true); + quit = yield onSubmit(question, answer, answers); + } catch (err) { + quit = !(yield onCancel(question, answers)); + } + + if (quit) return answers; + } + } catch (err) { + _iterator.e(err); + } finally { + _iterator.f(); + } + + return answers; + }); + return _prompt.apply(this, arguments); + } + + function getInjectedAnswer(injected, deafultValue) { + const answer = injected.shift(); + + if (answer instanceof Error) { + throw answer; + } + + return answer === undefined ? deafultValue : answer; + } + + function inject(answers) { + prompt._injected = (prompt._injected || []).concat(answers); + } + + function override(answers) { + prompt._override = Object.assign({}, answers); + } + + dist = Object.assign(prompt, { + prompt, + prompts, + inject, + override + }); + return dist; +} + +var prompts$1 = {}; + +var action; +var hasRequiredAction; + +function requireAction () { + if (hasRequiredAction) return action; + hasRequiredAction = 1; + + action = (key, isSelect) => { + if (key.meta && key.name !== 'escape') return; + + if (key.ctrl) { + if (key.name === 'a') return 'first'; + if (key.name === 'c') return 'abort'; + if (key.name === 'd') return 'abort'; + if (key.name === 'e') return 'last'; + if (key.name === 'g') return 'reset'; + } + + if (isSelect) { + if (key.name === 'j') return 'down'; + if (key.name === 'k') return 'up'; + } + + if (key.name === 'return') return 'submit'; + if (key.name === 'enter') return 'submit'; // ctrl + J + if (key.name === 'backspace') return 'delete'; + if (key.name === 'delete') return 'deleteForward'; + if (key.name === 'abort') return 'abort'; + if (key.name === 'escape') return 'exit'; + if (key.name === 'tab') return 'next'; + if (key.name === 'pagedown') return 'nextPage'; + if (key.name === 'pageup') return 'prevPage'; + // TODO create home() in prompt types (e.g. TextPrompt) + if (key.name === 'home') return 'home'; + // TODO create end() in prompt types (e.g. TextPrompt) + if (key.name === 'end') return 'end'; + + if (key.name === 'up') return 'up'; + if (key.name === 'down') return 'down'; + if (key.name === 'right') return 'right'; + if (key.name === 'left') return 'left'; + + return false; + }; + return action; +} + +var strip; +var hasRequiredStrip; + +function requireStrip () { + if (hasRequiredStrip) return strip; + hasRequiredStrip = 1; + + strip = str => { + const pattern = [ + '[\\u001B\\u009B][[\\]()#;?]*(?:(?:(?:(?:;[-a-zA-Z\\d\\/#&.:=?%@~_]+)*|[a-zA-Z\\d]+(?:;[-a-zA-Z\\d\\/#&.:=?%@~_]*)*)?\\u0007)', + '(?:(?:\\d{1,4}(?:;\\d{0,4})*)?[\\dA-PRZcf-ntqry=><~]))' + ].join('|'); + + const RGX = new RegExp(pattern, 'g'); + return typeof str === 'string' ? str.replace(RGX, '') : str; + }; + return strip; +} + +var clear; +var hasRequiredClear; + +function requireClear () { + if (hasRequiredClear) return clear; + hasRequiredClear = 1; + + const strip = requireStrip(); + const { erase, cursor } = requireSrc(); + + const width = str => [...strip(str)].length; + + /** + * @param {string} prompt + * @param {number} perLine + */ + clear = function(prompt, perLine) { + if (!perLine) return erase.line + cursor.to(0); + + let rows = 0; + const lines = prompt.split(/\r?\n/); + for (let line of lines) { + rows += 1 + Math.floor(Math.max(width(line) - 1, 0) / perLine); + } + + return erase.lines(rows); + }; + return clear; +} + +var figures_1; +var hasRequiredFigures; + +function requireFigures () { + if (hasRequiredFigures) return figures_1; + hasRequiredFigures = 1; + + const main = { + arrowUp: '↑', + arrowDown: '↓', + arrowLeft: '←', + arrowRight: '→', + radioOn: '◉', + radioOff: '◯', + tick: '✔', + cross: '✖', + ellipsis: '…', + pointerSmall: '›', + line: '─', + pointer: '❯' + }; + const win = { + arrowUp: main.arrowUp, + arrowDown: main.arrowDown, + arrowLeft: main.arrowLeft, + arrowRight: main.arrowRight, + radioOn: '(*)', + radioOff: '( )', + tick: '√', + cross: '×', + ellipsis: '...', + pointerSmall: '»', + line: '─', + pointer: '>' + }; + const figures = process.platform === 'win32' ? win : main; + + figures_1 = figures; + return figures_1; +} + +var style; +var hasRequiredStyle; + +function requireStyle () { + if (hasRequiredStyle) return style; + hasRequiredStyle = 1; + + const c = requireKleur(); + const figures = requireFigures(); + + // rendering user input. + const styles = Object.freeze({ + password: { scale: 1, render: input => '*'.repeat(input.length) }, + emoji: { scale: 2, render: input => '😃'.repeat(input.length) }, + invisible: { scale: 0, render: input => '' }, + default: { scale: 1, render: input => `${input}` } + }); + const render = type => styles[type] || styles.default; + + // icon to signalize a prompt. + const symbols = Object.freeze({ + aborted: c.red(figures.cross), + done: c.green(figures.tick), + exited: c.yellow(figures.cross), + default: c.cyan('?') + }); + + const symbol = (done, aborted, exited) => + aborted ? symbols.aborted : exited ? symbols.exited : done ? symbols.done : symbols.default; + + // between the question and the user's input. + const delimiter = completing => + c.gray(completing ? figures.ellipsis : figures.pointerSmall); + + const item = (expandable, expanded) => + c.gray(expandable ? (expanded ? figures.pointerSmall : '+') : figures.line); + + style = { + styles, + render, + symbols, + symbol, + delimiter, + item + }; + return style; +} + +var lines; +var hasRequiredLines; + +function requireLines () { + if (hasRequiredLines) return lines; + hasRequiredLines = 1; + + const strip = requireStrip(); + + /** + * @param {string} msg + * @param {number} perLine + */ + lines = function (msg, perLine) { + let lines = String(strip(msg) || '').split(/\r?\n/); + + if (!perLine) return lines.length; + return lines.map(l => Math.ceil(l.length / perLine)) + .reduce((a, b) => a + b); + }; + return lines; +} + +var wrap; +var hasRequiredWrap; + +function requireWrap () { + if (hasRequiredWrap) return wrap; + hasRequiredWrap = 1; + + /** + * @param {string} msg The message to wrap + * @param {object} opts + * @param {number|string} [opts.margin] Left margin + * @param {number} opts.width Maximum characters per line including the margin + */ + wrap = (msg, opts = {}) => { + const tab = Number.isSafeInteger(parseInt(opts.margin)) + ? new Array(parseInt(opts.margin)).fill(' ').join('') + : (opts.margin || ''); + + const width = opts.width; + + return (msg || '').split(/\r?\n/g) + .map(line => line + .split(/\s+/g) + .reduce((arr, w) => { + if (w.length + tab.length >= width || arr[arr.length - 1].length + w.length + 1 < width) + arr[arr.length - 1] += ` ${w}`; + else arr.push(`${tab}${w}`); + return arr; + }, [ tab ]) + .join('\n')) + .join('\n'); + }; + return wrap; +} + +var entriesToDisplay; +var hasRequiredEntriesToDisplay; + +function requireEntriesToDisplay () { + if (hasRequiredEntriesToDisplay) return entriesToDisplay; + hasRequiredEntriesToDisplay = 1; + + /** + * Determine what entries should be displayed on the screen, based on the + * currently selected index and the maximum visible. Used in list-based + * prompts like `select` and `multiselect`. + * + * @param {number} cursor the currently selected entry + * @param {number} total the total entries available to display + * @param {number} [maxVisible] the number of entries that can be displayed + */ + entriesToDisplay = (cursor, total, maxVisible) => { + maxVisible = maxVisible || total; + + let startIndex = Math.min(total- maxVisible, cursor - Math.floor(maxVisible / 2)); + if (startIndex < 0) startIndex = 0; + + let endIndex = Math.min(startIndex + maxVisible, total); + + return { startIndex, endIndex }; + }; + return entriesToDisplay; +} + +var util; +var hasRequiredUtil; + +function requireUtil () { + if (hasRequiredUtil) return util; + hasRequiredUtil = 1; + + util = { + action: requireAction(), + clear: requireClear(), + style: requireStyle(), + strip: requireStrip(), + figures: requireFigures(), + lines: requireLines(), + wrap: requireWrap(), + entriesToDisplay: requireEntriesToDisplay() + }; + return util; +} + +var prompt; +var hasRequiredPrompt; + +function requirePrompt () { + if (hasRequiredPrompt) return prompt; + hasRequiredPrompt = 1; + + const readline = require$$0$3; + const { action } = requireUtil(); + const EventEmitter = require$$2; + const { beep, cursor } = requireSrc(); + const color = requireKleur(); + + /** + * Base prompt skeleton + * @param {Stream} [opts.stdin] The Readable stream to listen to + * @param {Stream} [opts.stdout] The Writable stream to write readline data to + */ + class Prompt extends EventEmitter { + constructor(opts={}) { + super(); + + this.firstRender = true; + this.in = opts.stdin || process.stdin; + this.out = opts.stdout || process.stdout; + this.onRender = (opts.onRender || (() => void 0)).bind(this); + const rl = readline.createInterface({ input:this.in, escapeCodeTimeout:50 }); + readline.emitKeypressEvents(this.in, rl); + + if (this.in.isTTY) this.in.setRawMode(true); + const isSelect = [ 'SelectPrompt', 'MultiselectPrompt' ].indexOf(this.constructor.name) > -1; + const keypress = (str, key) => { + let a = action(key, isSelect); + if (a === false) { + this._ && this._(str, key); + } else if (typeof this[a] === 'function') { + this[a](key); + } else { + this.bell(); + } + }; + + this.close = () => { + this.out.write(cursor.show); + this.in.removeListener('keypress', keypress); + if (this.in.isTTY) this.in.setRawMode(false); + rl.close(); + this.emit(this.aborted ? 'abort' : this.exited ? 'exit' : 'submit', this.value); + this.closed = true; + }; + + this.in.on('keypress', keypress); + } + + fire() { + this.emit('state', { + value: this.value, + aborted: !!this.aborted, + exited: !!this.exited + }); + } + + bell() { + this.out.write(beep); + } + + render() { + this.onRender(color); + if (this.firstRender) this.firstRender = false; + } + } + + prompt = Prompt; + return prompt; +} + +var text; +var hasRequiredText; + +function requireText () { + if (hasRequiredText) return text; + hasRequiredText = 1; + const color = requireKleur(); + const Prompt = requirePrompt(); + const { erase, cursor } = requireSrc(); + const { style, clear, lines, figures } = requireUtil(); + + /** + * TextPrompt Base Element + * @param {Object} opts Options + * @param {String} opts.message Message + * @param {String} [opts.style='default'] Render style + * @param {String} [opts.initial] Default value + * @param {Function} [opts.validate] Validate function + * @param {Stream} [opts.stdin] The Readable stream to listen to + * @param {Stream} [opts.stdout] The Writable stream to write readline data to + * @param {String} [opts.error] The invalid error label + */ + class TextPrompt extends Prompt { + constructor(opts={}) { + super(opts); + this.transform = style.render(opts.style); + this.scale = this.transform.scale; + this.msg = opts.message; + this.initial = opts.initial || ``; + this.validator = opts.validate || (() => true); + this.value = ``; + this.errorMsg = opts.error || `Please Enter A Valid Value`; + this.cursor = Number(!!this.initial); + this.cursorOffset = 0; + this.clear = clear(``, this.out.columns); + this.render(); + } + + set value(v) { + if (!v && this.initial) { + this.placeholder = true; + this.rendered = color.gray(this.transform.render(this.initial)); + } else { + this.placeholder = false; + this.rendered = this.transform.render(v); + } + this._value = v; + this.fire(); + } + + get value() { + return this._value; + } + + reset() { + this.value = ``; + this.cursor = Number(!!this.initial); + this.cursorOffset = 0; + this.fire(); + this.render(); + } + + exit() { + this.abort(); + } + + abort() { + this.value = this.value || this.initial; + this.done = this.aborted = true; + this.error = false; + this.red = false; + this.fire(); + this.render(); + this.out.write('\n'); + this.close(); + } + + async validate() { + let valid = await this.validator(this.value); + if (typeof valid === `string`) { + this.errorMsg = valid; + valid = false; + } + this.error = !valid; + } + + async submit() { + this.value = this.value || this.initial; + this.cursorOffset = 0; + this.cursor = this.rendered.length; + await this.validate(); + if (this.error) { + this.red = true; + this.fire(); + this.render(); + return; + } + this.done = true; + this.aborted = false; + this.fire(); + this.render(); + this.out.write('\n'); + this.close(); + } + + next() { + if (!this.placeholder) return this.bell(); + this.value = this.initial; + this.cursor = this.rendered.length; + this.fire(); + this.render(); + } + + moveCursor(n) { + if (this.placeholder) return; + this.cursor = this.cursor+n; + this.cursorOffset += n; + } + + _(c, key) { + let s1 = this.value.slice(0, this.cursor); + let s2 = this.value.slice(this.cursor); + this.value = `${s1}${c}${s2}`; + this.red = false; + this.cursor = this.placeholder ? 0 : s1.length+1; + this.render(); + } + + delete() { + if (this.isCursorAtStart()) return this.bell(); + let s1 = this.value.slice(0, this.cursor-1); + let s2 = this.value.slice(this.cursor); + this.value = `${s1}${s2}`; + this.red = false; + if (this.isCursorAtStart()) { + this.cursorOffset = 0; + } else { + this.cursorOffset++; + this.moveCursor(-1); + } + this.render(); + } + + deleteForward() { + if(this.cursor*this.scale >= this.rendered.length || this.placeholder) return this.bell(); + let s1 = this.value.slice(0, this.cursor); + let s2 = this.value.slice(this.cursor+1); + this.value = `${s1}${s2}`; + this.red = false; + if (this.isCursorAtEnd()) { + this.cursorOffset = 0; + } else { + this.cursorOffset++; + } + this.render(); + } + + first() { + this.cursor = 0; + this.render(); + } + + last() { + this.cursor = this.value.length; + this.render(); + } + + left() { + if (this.cursor <= 0 || this.placeholder) return this.bell(); + this.moveCursor(-1); + this.render(); + } + + right() { + if (this.cursor*this.scale >= this.rendered.length || this.placeholder) return this.bell(); + this.moveCursor(1); + this.render(); + } + + isCursorAtStart() { + return this.cursor === 0 || (this.placeholder && this.cursor === 1); + } + + isCursorAtEnd() { + return this.cursor === this.rendered.length || (this.placeholder && this.cursor === this.rendered.length + 1) + } + + render() { + if (this.closed) return; + if (!this.firstRender) { + if (this.outputError) + this.out.write(cursor.down(lines(this.outputError, this.out.columns) - 1) + clear(this.outputError, this.out.columns)); + this.out.write(clear(this.outputText, this.out.columns)); + } + super.render(); + this.outputError = ''; + + this.outputText = [ + style.symbol(this.done, this.aborted), + color.bold(this.msg), + style.delimiter(this.done), + this.red ? color.red(this.rendered) : this.rendered + ].join(` `); + + if (this.error) { + this.outputError += this.errorMsg.split(`\n`) + .reduce((a, l, i) => a + `\n${i ? ' ' : figures.pointerSmall} ${color.red().italic(l)}`, ``); + } + + this.out.write(erase.line + cursor.to(0) + this.outputText + cursor.save + this.outputError + cursor.restore + cursor.move(this.cursorOffset, 0)); + } + } + + text = TextPrompt; + return text; +} + +var select; +var hasRequiredSelect; + +function requireSelect () { + if (hasRequiredSelect) return select; + hasRequiredSelect = 1; + + const color = requireKleur(); + const Prompt = requirePrompt(); + const { style, clear, figures, wrap, entriesToDisplay } = requireUtil(); + const { cursor } = requireSrc(); + + /** + * SelectPrompt Base Element + * @param {Object} opts Options + * @param {String} opts.message Message + * @param {Array} opts.choices Array of choice objects + * @param {String} [opts.hint] Hint to display + * @param {Number} [opts.initial] Index of default value + * @param {Stream} [opts.stdin] The Readable stream to listen to + * @param {Stream} [opts.stdout] The Writable stream to write readline data to + * @param {Number} [opts.optionsPerPage=10] Max options to display at once + */ + class SelectPrompt extends Prompt { + constructor(opts={}) { + super(opts); + this.msg = opts.message; + this.hint = opts.hint || '- Use arrow-keys. Return to submit.'; + this.warn = opts.warn || '- This option is disabled'; + this.cursor = opts.initial || 0; + this.choices = opts.choices.map((ch, idx) => { + if (typeof ch === 'string') + ch = {title: ch, value: idx}; + return { + title: ch && (ch.title || ch.value || ch), + value: ch && (ch.value === undefined ? idx : ch.value), + description: ch && ch.description, + selected: ch && ch.selected, + disabled: ch && ch.disabled + }; + }); + this.optionsPerPage = opts.optionsPerPage || 10; + this.value = (this.choices[this.cursor] || {}).value; + this.clear = clear('', this.out.columns); + this.render(); + } + + moveCursor(n) { + this.cursor = n; + this.value = this.choices[n].value; + this.fire(); + } + + reset() { + this.moveCursor(0); + this.fire(); + this.render(); + } + + exit() { + this.abort(); + } + + abort() { + this.done = this.aborted = true; + this.fire(); + this.render(); + this.out.write('\n'); + this.close(); + } + + submit() { + if (!this.selection.disabled) { + this.done = true; + this.aborted = false; + this.fire(); + this.render(); + this.out.write('\n'); + this.close(); + } else + this.bell(); + } + + first() { + this.moveCursor(0); + this.render(); + } + + last() { + this.moveCursor(this.choices.length - 1); + this.render(); + } + + up() { + if (this.cursor === 0) { + this.moveCursor(this.choices.length - 1); + } else { + this.moveCursor(this.cursor - 1); + } + this.render(); + } + + down() { + if (this.cursor === this.choices.length - 1) { + this.moveCursor(0); + } else { + this.moveCursor(this.cursor + 1); + } + this.render(); + } + + next() { + this.moveCursor((this.cursor + 1) % this.choices.length); + this.render(); + } + + _(c, key) { + if (c === ' ') return this.submit(); + } + + get selection() { + return this.choices[this.cursor]; + } + + render() { + if (this.closed) return; + if (this.firstRender) this.out.write(cursor.hide); + else this.out.write(clear(this.outputText, this.out.columns)); + super.render(); + + let { startIndex, endIndex } = entriesToDisplay(this.cursor, this.choices.length, this.optionsPerPage); + + // Print prompt + this.outputText = [ + style.symbol(this.done, this.aborted), + color.bold(this.msg), + style.delimiter(false), + this.done ? this.selection.title : this.selection.disabled + ? color.yellow(this.warn) : color.gray(this.hint) + ].join(' '); + + // Print choices + if (!this.done) { + this.outputText += '\n'; + for (let i = startIndex; i < endIndex; i++) { + let title, prefix, desc = '', v = this.choices[i]; + + // Determine whether to display "more choices" indicators + if (i === startIndex && startIndex > 0) { + prefix = figures.arrowUp; + } else if (i === endIndex - 1 && endIndex < this.choices.length) { + prefix = figures.arrowDown; + } else { + prefix = ' '; + } + + if (v.disabled) { + title = this.cursor === i ? color.gray().underline(v.title) : color.strikethrough().gray(v.title); + prefix = (this.cursor === i ? color.bold().gray(figures.pointer) + ' ' : ' ') + prefix; + } else { + title = this.cursor === i ? color.cyan().underline(v.title) : v.title; + prefix = (this.cursor === i ? color.cyan(figures.pointer) + ' ' : ' ') + prefix; + if (v.description && this.cursor === i) { + desc = ` - ${v.description}`; + if (prefix.length + title.length + desc.length >= this.out.columns + || v.description.split(/\r?\n/).length > 1) { + desc = '\n' + wrap(v.description, { margin: 3, width: this.out.columns }); + } + } + } + + this.outputText += `${prefix} ${title}${color.gray(desc)}\n`; + } + } + + this.out.write(this.outputText); + } + } + + select = SelectPrompt; + return select; +} + +var toggle; +var hasRequiredToggle; + +function requireToggle () { + if (hasRequiredToggle) return toggle; + hasRequiredToggle = 1; + const color = requireKleur(); + const Prompt = requirePrompt(); + const { style, clear } = requireUtil(); + const { cursor, erase } = requireSrc(); + + /** + * TogglePrompt Base Element + * @param {Object} opts Options + * @param {String} opts.message Message + * @param {Boolean} [opts.initial=false] Default value + * @param {String} [opts.active='no'] Active label + * @param {String} [opts.inactive='off'] Inactive label + * @param {Stream} [opts.stdin] The Readable stream to listen to + * @param {Stream} [opts.stdout] The Writable stream to write readline data to + */ + class TogglePrompt extends Prompt { + constructor(opts={}) { + super(opts); + this.msg = opts.message; + this.value = !!opts.initial; + this.active = opts.active || 'on'; + this.inactive = opts.inactive || 'off'; + this.initialValue = this.value; + this.render(); + } + + reset() { + this.value = this.initialValue; + this.fire(); + this.render(); + } + + exit() { + this.abort(); + } + + abort() { + this.done = this.aborted = true; + this.fire(); + this.render(); + this.out.write('\n'); + this.close(); + } + + submit() { + this.done = true; + this.aborted = false; + this.fire(); + this.render(); + this.out.write('\n'); + this.close(); + } + + deactivate() { + if (this.value === false) return this.bell(); + this.value = false; + this.render(); + } + + activate() { + if (this.value === true) return this.bell(); + this.value = true; + this.render(); + } + + delete() { + this.deactivate(); + } + left() { + this.deactivate(); + } + right() { + this.activate(); + } + down() { + this.deactivate(); + } + up() { + this.activate(); + } + + next() { + this.value = !this.value; + this.fire(); + this.render(); + } + + _(c, key) { + if (c === ' ') { + this.value = !this.value; + } else if (c === '1') { + this.value = true; + } else if (c === '0') { + this.value = false; + } else return this.bell(); + this.render(); + } + + render() { + if (this.closed) return; + if (this.firstRender) this.out.write(cursor.hide); + else this.out.write(clear(this.outputText, this.out.columns)); + super.render(); + + this.outputText = [ + style.symbol(this.done, this.aborted), + color.bold(this.msg), + style.delimiter(this.done), + this.value ? this.inactive : color.cyan().underline(this.inactive), + color.gray('/'), + this.value ? color.cyan().underline(this.active) : this.active + ].join(' '); + + this.out.write(erase.line + cursor.to(0) + this.outputText); + } + } + + toggle = TogglePrompt; + return toggle; +} + +var datepart; +var hasRequiredDatepart; + +function requireDatepart () { + if (hasRequiredDatepart) return datepart; + hasRequiredDatepart = 1; + + class DatePart { + constructor({token, date, parts, locales}) { + this.token = token; + this.date = date || new Date(); + this.parts = parts || [this]; + this.locales = locales || {}; + } + + up() {} + + down() {} + + next() { + const currentIdx = this.parts.indexOf(this); + return this.parts.find((part, idx) => idx > currentIdx && part instanceof DatePart); + } + + setTo(val) {} + + prev() { + let parts = [].concat(this.parts).reverse(); + const currentIdx = parts.indexOf(this); + return parts.find((part, idx) => idx > currentIdx && part instanceof DatePart); + } + + toString() { + return String(this.date); + } + } + + datepart = DatePart; + return datepart; +} + +var meridiem; +var hasRequiredMeridiem; + +function requireMeridiem () { + if (hasRequiredMeridiem) return meridiem; + hasRequiredMeridiem = 1; + + const DatePart = requireDatepart(); + + class Meridiem extends DatePart { + constructor(opts={}) { + super(opts); + } + + up() { + this.date.setHours((this.date.getHours() + 12) % 24); + } + + down() { + this.up(); + } + + toString() { + let meridiem = this.date.getHours() > 12 ? 'pm' : 'am'; + return /\A/.test(this.token) ? meridiem.toUpperCase() : meridiem; + } + } + + meridiem = Meridiem; + return meridiem; +} + +var day; +var hasRequiredDay; + +function requireDay () { + if (hasRequiredDay) return day; + hasRequiredDay = 1; + + const DatePart = requireDatepart(); + + const pos = n => { + n = n % 10; + return n === 1 ? 'st' + : n === 2 ? 'nd' + : n === 3 ? 'rd' + : 'th'; + }; + + class Day extends DatePart { + constructor(opts={}) { + super(opts); + } + + up() { + this.date.setDate(this.date.getDate() + 1); + } + + down() { + this.date.setDate(this.date.getDate() - 1); + } + + setTo(val) { + this.date.setDate(parseInt(val.substr(-2))); + } + + toString() { + let date = this.date.getDate(); + let day = this.date.getDay(); + return this.token === 'DD' ? String(date).padStart(2, '0') + : this.token === 'Do' ? date + pos(date) + : this.token === 'd' ? day + 1 + : this.token === 'ddd' ? this.locales.weekdaysShort[day] + : this.token === 'dddd' ? this.locales.weekdays[day] + : date; + } + } + + day = Day; + return day; +} + +var hours; +var hasRequiredHours; + +function requireHours () { + if (hasRequiredHours) return hours; + hasRequiredHours = 1; + + const DatePart = requireDatepart(); + + class Hours extends DatePart { + constructor(opts={}) { + super(opts); + } + + up() { + this.date.setHours(this.date.getHours() + 1); + } + + down() { + this.date.setHours(this.date.getHours() - 1); + } + + setTo(val) { + this.date.setHours(parseInt(val.substr(-2))); + } + + toString() { + let hours = this.date.getHours(); + if (/h/.test(this.token)) + hours = (hours % 12) || 12; + return this.token.length > 1 ? String(hours).padStart(2, '0') : hours; + } + } + + hours = Hours; + return hours; +} + +var milliseconds; +var hasRequiredMilliseconds; + +function requireMilliseconds () { + if (hasRequiredMilliseconds) return milliseconds; + hasRequiredMilliseconds = 1; + + const DatePart = requireDatepart(); + + class Milliseconds extends DatePart { + constructor(opts={}) { + super(opts); + } + + up() { + this.date.setMilliseconds(this.date.getMilliseconds() + 1); + } + + down() { + this.date.setMilliseconds(this.date.getMilliseconds() - 1); + } + + setTo(val) { + this.date.setMilliseconds(parseInt(val.substr(-(this.token.length)))); + } + + toString() { + return String(this.date.getMilliseconds()).padStart(4, '0') + .substr(0, this.token.length); + } + } + + milliseconds = Milliseconds; + return milliseconds; +} + +var minutes; +var hasRequiredMinutes; + +function requireMinutes () { + if (hasRequiredMinutes) return minutes; + hasRequiredMinutes = 1; + + const DatePart = requireDatepart(); + + class Minutes extends DatePart { + constructor(opts={}) { + super(opts); + } + + up() { + this.date.setMinutes(this.date.getMinutes() + 1); + } + + down() { + this.date.setMinutes(this.date.getMinutes() - 1); + } + + setTo(val) { + this.date.setMinutes(parseInt(val.substr(-2))); + } + + toString() { + let m = this.date.getMinutes(); + return this.token.length > 1 ? String(m).padStart(2, '0') : m; + } + } + + minutes = Minutes; + return minutes; +} + +var month; +var hasRequiredMonth; + +function requireMonth () { + if (hasRequiredMonth) return month; + hasRequiredMonth = 1; + + const DatePart = requireDatepart(); + + class Month extends DatePart { + constructor(opts={}) { + super(opts); + } + + up() { + this.date.setMonth(this.date.getMonth() + 1); + } + + down() { + this.date.setMonth(this.date.getMonth() - 1); + } + + setTo(val) { + val = parseInt(val.substr(-2)) - 1; + this.date.setMonth(val < 0 ? 0 : val); + } + + toString() { + let month = this.date.getMonth(); + let tl = this.token.length; + return tl === 2 ? String(month + 1).padStart(2, '0') + : tl === 3 ? this.locales.monthsShort[month] + : tl === 4 ? this.locales.months[month] + : String(month + 1); + } + } + + month = Month; + return month; +} + +var seconds; +var hasRequiredSeconds; + +function requireSeconds () { + if (hasRequiredSeconds) return seconds; + hasRequiredSeconds = 1; + + const DatePart = requireDatepart(); + + class Seconds extends DatePart { + constructor(opts={}) { + super(opts); + } + + up() { + this.date.setSeconds(this.date.getSeconds() + 1); + } + + down() { + this.date.setSeconds(this.date.getSeconds() - 1); + } + + setTo(val) { + this.date.setSeconds(parseInt(val.substr(-2))); + } + + toString() { + let s = this.date.getSeconds(); + return this.token.length > 1 ? String(s).padStart(2, '0') : s; + } + } + + seconds = Seconds; + return seconds; +} + +var year; +var hasRequiredYear; + +function requireYear () { + if (hasRequiredYear) return year; + hasRequiredYear = 1; + + const DatePart = requireDatepart(); + + class Year extends DatePart { + constructor(opts={}) { + super(opts); + } + + up() { + this.date.setFullYear(this.date.getFullYear() + 1); + } + + down() { + this.date.setFullYear(this.date.getFullYear() - 1); + } + + setTo(val) { + this.date.setFullYear(val.substr(-4)); + } + + toString() { + let year = String(this.date.getFullYear()).padStart(4, '0'); + return this.token.length === 2 ? year.substr(-2) : year; + } + } + + year = Year; + return year; +} + +var dateparts; +var hasRequiredDateparts; + +function requireDateparts () { + if (hasRequiredDateparts) return dateparts; + hasRequiredDateparts = 1; + + dateparts = { + DatePart: requireDatepart(), + Meridiem: requireMeridiem(), + Day: requireDay(), + Hours: requireHours(), + Milliseconds: requireMilliseconds(), + Minutes: requireMinutes(), + Month: requireMonth(), + Seconds: requireSeconds(), + Year: requireYear(), + }; + return dateparts; +} + +var date; +var hasRequiredDate; + +function requireDate () { + if (hasRequiredDate) return date; + hasRequiredDate = 1; + + const color = requireKleur(); + const Prompt = requirePrompt(); + const { style, clear, figures } = requireUtil(); + const { erase, cursor } = requireSrc(); + const { DatePart, Meridiem, Day, Hours, Milliseconds, Minutes, Month, Seconds, Year } = requireDateparts(); + + const regex = /\\(.)|"((?:\\["\\]|[^"])+)"|(D[Do]?|d{3,4}|d)|(M{1,4})|(YY(?:YY)?)|([aA])|([Hh]{1,2})|(m{1,2})|(s{1,2})|(S{1,4})|./g; + const regexGroups = { + 1: ({token}) => token.replace(/\\(.)/g, '$1'), + 2: (opts) => new Day(opts), // Day // TODO + 3: (opts) => new Month(opts), // Month + 4: (opts) => new Year(opts), // Year + 5: (opts) => new Meridiem(opts), // AM/PM // TODO (special) + 6: (opts) => new Hours(opts), // Hours + 7: (opts) => new Minutes(opts), // Minutes + 8: (opts) => new Seconds(opts), // Seconds + 9: (opts) => new Milliseconds(opts), // Fractional seconds + }; + + const dfltLocales = { + months: 'January,February,March,April,May,June,July,August,September,October,November,December'.split(','), + monthsShort: 'Jan,Feb,Mar,Apr,May,Jun,Jul,Aug,Sep,Oct,Nov,Dec'.split(','), + weekdays: 'Sunday,Monday,Tuesday,Wednesday,Thursday,Friday,Saturday'.split(','), + weekdaysShort: 'Sun,Mon,Tue,Wed,Thu,Fri,Sat'.split(',') + }; + + + /** + * DatePrompt Base Element + * @param {Object} opts Options + * @param {String} opts.message Message + * @param {Number} [opts.initial] Index of default value + * @param {String} [opts.mask] The format mask + * @param {object} [opts.locales] The date locales + * @param {String} [opts.error] The error message shown on invalid value + * @param {Function} [opts.validate] Function to validate the submitted value + * @param {Stream} [opts.stdin] The Readable stream to listen to + * @param {Stream} [opts.stdout] The Writable stream to write readline data to + */ + class DatePrompt extends Prompt { + constructor(opts={}) { + super(opts); + this.msg = opts.message; + this.cursor = 0; + this.typed = ''; + this.locales = Object.assign(dfltLocales, opts.locales); + this._date = opts.initial || new Date(); + this.errorMsg = opts.error || 'Please Enter A Valid Value'; + this.validator = opts.validate || (() => true); + this.mask = opts.mask || 'YYYY-MM-DD HH:mm:ss'; + this.clear = clear('', this.out.columns); + this.render(); + } + + get value() { + return this.date + } + + get date() { + return this._date; + } + + set date(date) { + if (date) this._date.setTime(date.getTime()); + } + + set mask(mask) { + let result; + this.parts = []; + while(result = regex.exec(mask)) { + let match = result.shift(); + let idx = result.findIndex(gr => gr != null); + this.parts.push(idx in regexGroups + ? regexGroups[idx]({ token: result[idx] || match, date: this.date, parts: this.parts, locales: this.locales }) + : result[idx] || match); + } + + let parts = this.parts.reduce((arr, i) => { + if (typeof i === 'string' && typeof arr[arr.length - 1] === 'string') + arr[arr.length - 1] += i; + else arr.push(i); + return arr; + }, []); + + this.parts.splice(0); + this.parts.push(...parts); + this.reset(); + } + + moveCursor(n) { + this.typed = ''; + this.cursor = n; + this.fire(); + } + + reset() { + this.moveCursor(this.parts.findIndex(p => p instanceof DatePart)); + this.fire(); + this.render(); + } + + exit() { + this.abort(); + } + + abort() { + this.done = this.aborted = true; + this.error = false; + this.fire(); + this.render(); + this.out.write('\n'); + this.close(); + } + + async validate() { + let valid = await this.validator(this.value); + if (typeof valid === 'string') { + this.errorMsg = valid; + valid = false; + } + this.error = !valid; + } + + async submit() { + await this.validate(); + if (this.error) { + this.color = 'red'; + this.fire(); + this.render(); + return; + } + this.done = true; + this.aborted = false; + this.fire(); + this.render(); + this.out.write('\n'); + this.close(); + } + + up() { + this.typed = ''; + this.parts[this.cursor].up(); + this.render(); + } + + down() { + this.typed = ''; + this.parts[this.cursor].down(); + this.render(); + } + + left() { + let prev = this.parts[this.cursor].prev(); + if (prev == null) return this.bell(); + this.moveCursor(this.parts.indexOf(prev)); + this.render(); + } + + right() { + let next = this.parts[this.cursor].next(); + if (next == null) return this.bell(); + this.moveCursor(this.parts.indexOf(next)); + this.render(); + } + + next() { + let next = this.parts[this.cursor].next(); + this.moveCursor(next + ? this.parts.indexOf(next) + : this.parts.findIndex((part) => part instanceof DatePart)); + this.render(); + } + + _(c) { + if (/\d/.test(c)) { + this.typed += c; + this.parts[this.cursor].setTo(this.typed); + this.render(); + } + } + + render() { + if (this.closed) return; + if (this.firstRender) this.out.write(cursor.hide); + else this.out.write(clear(this.outputText, this.out.columns)); + super.render(); + + // Print prompt + this.outputText = [ + style.symbol(this.done, this.aborted), + color.bold(this.msg), + style.delimiter(false), + this.parts.reduce((arr, p, idx) => arr.concat(idx === this.cursor && !this.done ? color.cyan().underline(p.toString()) : p), []) + .join('') + ].join(' '); + + // Print error + if (this.error) { + this.outputText += this.errorMsg.split('\n').reduce( + (a, l, i) => a + `\n${i ? ` ` : figures.pointerSmall} ${color.red().italic(l)}`, ``); + } + + this.out.write(erase.line + cursor.to(0) + this.outputText); + } + } + + date = DatePrompt; + return date; +} + +var number; +var hasRequiredNumber; + +function requireNumber () { + if (hasRequiredNumber) return number; + hasRequiredNumber = 1; + const color = requireKleur(); + const Prompt = requirePrompt(); + const { cursor, erase } = requireSrc(); + const { style, figures, clear, lines } = requireUtil(); + + const isNumber = /[0-9]/; + const isDef = any => any !== undefined; + const round = (number, precision) => { + let factor = Math.pow(10, precision); + return Math.round(number * factor) / factor; + }; + + /** + * NumberPrompt Base Element + * @param {Object} opts Options + * @param {String} opts.message Message + * @param {String} [opts.style='default'] Render style + * @param {Number} [opts.initial] Default value + * @param {Number} [opts.max=+Infinity] Max value + * @param {Number} [opts.min=-Infinity] Min value + * @param {Boolean} [opts.float=false] Parse input as floats + * @param {Number} [opts.round=2] Round floats to x decimals + * @param {Number} [opts.increment=1] Number to increment by when using arrow-keys + * @param {Function} [opts.validate] Validate function + * @param {Stream} [opts.stdin] The Readable stream to listen to + * @param {Stream} [opts.stdout] The Writable stream to write readline data to + * @param {String} [opts.error] The invalid error label + */ + class NumberPrompt extends Prompt { + constructor(opts={}) { + super(opts); + this.transform = style.render(opts.style); + this.msg = opts.message; + this.initial = isDef(opts.initial) ? opts.initial : ''; + this.float = !!opts.float; + this.round = opts.round || 2; + this.inc = opts.increment || 1; + this.min = isDef(opts.min) ? opts.min : -Infinity; + this.max = isDef(opts.max) ? opts.max : Infinity; + this.errorMsg = opts.error || `Please Enter A Valid Value`; + this.validator = opts.validate || (() => true); + this.color = `cyan`; + this.value = ``; + this.typed = ``; + this.lastHit = 0; + this.render(); + } + + set value(v) { + if (!v && v !== 0) { + this.placeholder = true; + this.rendered = color.gray(this.transform.render(`${this.initial}`)); + this._value = ``; + } else { + this.placeholder = false; + this.rendered = this.transform.render(`${round(v, this.round)}`); + this._value = round(v, this.round); + } + this.fire(); + } + + get value() { + return this._value; + } + + parse(x) { + return this.float ? parseFloat(x) : parseInt(x); + } + + valid(c) { + return c === `-` || c === `.` && this.float || isNumber.test(c) + } + + reset() { + this.typed = ``; + this.value = ``; + this.fire(); + this.render(); + } + + exit() { + this.abort(); + } + + abort() { + let x = this.value; + this.value = x !== `` ? x : this.initial; + this.done = this.aborted = true; + this.error = false; + this.fire(); + this.render(); + this.out.write(`\n`); + this.close(); + } + + async validate() { + let valid = await this.validator(this.value); + if (typeof valid === `string`) { + this.errorMsg = valid; + valid = false; + } + this.error = !valid; + } + + async submit() { + await this.validate(); + if (this.error) { + this.color = `red`; + this.fire(); + this.render(); + return; + } + let x = this.value; + this.value = x !== `` ? x : this.initial; + this.done = true; + this.aborted = false; + this.error = false; + this.fire(); + this.render(); + this.out.write(`\n`); + this.close(); + } + + up() { + this.typed = ``; + if(this.value === '') { + this.value = this.min - this.inc; + } + if (this.value >= this.max) return this.bell(); + this.value += this.inc; + this.color = `cyan`; + this.fire(); + this.render(); + } + + down() { + this.typed = ``; + if(this.value === '') { + this.value = this.min + this.inc; + } + if (this.value <= this.min) return this.bell(); + this.value -= this.inc; + this.color = `cyan`; + this.fire(); + this.render(); + } + + delete() { + let val = this.value.toString(); + if (val.length === 0) return this.bell(); + this.value = this.parse((val = val.slice(0, -1))) || ``; + if (this.value !== '' && this.value < this.min) { + this.value = this.min; + } + this.color = `cyan`; + this.fire(); + this.render(); + } + + next() { + this.value = this.initial; + this.fire(); + this.render(); + } + + _(c, key) { + if (!this.valid(c)) return this.bell(); + + const now = Date.now(); + if (now - this.lastHit > 1000) this.typed = ``; // 1s elapsed + this.typed += c; + this.lastHit = now; + this.color = `cyan`; + + if (c === `.`) return this.fire(); + + this.value = Math.min(this.parse(this.typed), this.max); + if (this.value > this.max) this.value = this.max; + if (this.value < this.min) this.value = this.min; + this.fire(); + this.render(); + } + + render() { + if (this.closed) return; + if (!this.firstRender) { + if (this.outputError) + this.out.write(cursor.down(lines(this.outputError, this.out.columns) - 1) + clear(this.outputError, this.out.columns)); + this.out.write(clear(this.outputText, this.out.columns)); + } + super.render(); + this.outputError = ''; + + // Print prompt + this.outputText = [ + style.symbol(this.done, this.aborted), + color.bold(this.msg), + style.delimiter(this.done), + !this.done || (!this.done && !this.placeholder) + ? color[this.color]().underline(this.rendered) : this.rendered + ].join(` `); + + // Print error + if (this.error) { + this.outputError += this.errorMsg.split(`\n`) + .reduce((a, l, i) => a + `\n${i ? ` ` : figures.pointerSmall} ${color.red().italic(l)}`, ``); + } + + this.out.write(erase.line + cursor.to(0) + this.outputText + cursor.save + this.outputError + cursor.restore); + } + } + + number = NumberPrompt; + return number; +} + +var multiselect; +var hasRequiredMultiselect; + +function requireMultiselect () { + if (hasRequiredMultiselect) return multiselect; + hasRequiredMultiselect = 1; + + const color = requireKleur(); + const { cursor } = requireSrc(); + const Prompt = requirePrompt(); + const { clear, figures, style, wrap, entriesToDisplay } = requireUtil(); + + /** + * MultiselectPrompt Base Element + * @param {Object} opts Options + * @param {String} opts.message Message + * @param {Array} opts.choices Array of choice objects + * @param {String} [opts.hint] Hint to display + * @param {String} [opts.warn] Hint shown for disabled choices + * @param {Number} [opts.max] Max choices + * @param {Number} [opts.cursor=0] Cursor start position + * @param {Number} [opts.optionsPerPage=10] Max options to display at once + * @param {Stream} [opts.stdin] The Readable stream to listen to + * @param {Stream} [opts.stdout] The Writable stream to write readline data to + */ + class MultiselectPrompt extends Prompt { + constructor(opts={}) { + super(opts); + this.msg = opts.message; + this.cursor = opts.cursor || 0; + this.scrollIndex = opts.cursor || 0; + this.hint = opts.hint || ''; + this.warn = opts.warn || '- This option is disabled -'; + this.minSelected = opts.min; + this.showMinError = false; + this.maxChoices = opts.max; + this.instructions = opts.instructions; + this.optionsPerPage = opts.optionsPerPage || 10; + this.value = opts.choices.map((ch, idx) => { + if (typeof ch === 'string') + ch = {title: ch, value: idx}; + return { + title: ch && (ch.title || ch.value || ch), + description: ch && ch.description, + value: ch && (ch.value === undefined ? idx : ch.value), + selected: ch && ch.selected, + disabled: ch && ch.disabled + }; + }); + this.clear = clear('', this.out.columns); + if (!opts.overrideRender) { + this.render(); + } + } + + reset() { + this.value.map(v => !v.selected); + this.cursor = 0; + this.fire(); + this.render(); + } + + selected() { + return this.value.filter(v => v.selected); + } + + exit() { + this.abort(); + } + + abort() { + this.done = this.aborted = true; + this.fire(); + this.render(); + this.out.write('\n'); + this.close(); + } + + submit() { + const selected = this.value + .filter(e => e.selected); + if (this.minSelected && selected.length < this.minSelected) { + this.showMinError = true; + this.render(); + } else { + this.done = true; + this.aborted = false; + this.fire(); + this.render(); + this.out.write('\n'); + this.close(); + } + } + + first() { + this.cursor = 0; + this.render(); + } + + last() { + this.cursor = this.value.length - 1; + this.render(); + } + next() { + this.cursor = (this.cursor + 1) % this.value.length; + this.render(); + } + + up() { + if (this.cursor === 0) { + this.cursor = this.value.length - 1; + } else { + this.cursor--; + } + this.render(); + } + + down() { + if (this.cursor === this.value.length - 1) { + this.cursor = 0; + } else { + this.cursor++; + } + this.render(); + } + + left() { + this.value[this.cursor].selected = false; + this.render(); + } + + right() { + if (this.value.filter(e => e.selected).length >= this.maxChoices) return this.bell(); + this.value[this.cursor].selected = true; + this.render(); + } + + handleSpaceToggle() { + const v = this.value[this.cursor]; + + if (v.selected) { + v.selected = false; + this.render(); + } else if (v.disabled || this.value.filter(e => e.selected).length >= this.maxChoices) { + return this.bell(); + } else { + v.selected = true; + this.render(); + } + } + + toggleAll() { + if (this.maxChoices !== undefined || this.value[this.cursor].disabled) { + return this.bell(); + } + + const newSelected = !this.value[this.cursor].selected; + this.value.filter(v => !v.disabled).forEach(v => v.selected = newSelected); + this.render(); + } + + _(c, key) { + if (c === ' ') { + this.handleSpaceToggle(); + } else if (c === 'a') { + this.toggleAll(); + } else { + return this.bell(); + } + } + + renderInstructions() { + if (this.instructions === undefined || this.instructions) { + if (typeof this.instructions === 'string') { + return this.instructions; + } + return '\nInstructions:\n' + + ` ${figures.arrowUp}/${figures.arrowDown}: Highlight option\n` + + ` ${figures.arrowLeft}/${figures.arrowRight}/[space]: Toggle selection\n` + + (this.maxChoices === undefined ? ` a: Toggle all\n` : '') + + ` enter/return: Complete answer`; + } + return ''; + } + + renderOption(cursor, v, i, arrowIndicator) { + const prefix = (v.selected ? color.green(figures.radioOn) : figures.radioOff) + ' ' + arrowIndicator + ' '; + let title, desc; + + if (v.disabled) { + title = cursor === i ? color.gray().underline(v.title) : color.strikethrough().gray(v.title); + } else { + title = cursor === i ? color.cyan().underline(v.title) : v.title; + if (cursor === i && v.description) { + desc = ` - ${v.description}`; + if (prefix.length + title.length + desc.length >= this.out.columns + || v.description.split(/\r?\n/).length > 1) { + desc = '\n' + wrap(v.description, { margin: prefix.length, width: this.out.columns }); + } + } + } + + return prefix + title + color.gray(desc || ''); + } + + // shared with autocompleteMultiselect + paginateOptions(options) { + if (options.length === 0) { + return color.red('No matches for this query.'); + } + + let { startIndex, endIndex } = entriesToDisplay(this.cursor, options.length, this.optionsPerPage); + let prefix, styledOptions = []; + + for (let i = startIndex; i < endIndex; i++) { + if (i === startIndex && startIndex > 0) { + prefix = figures.arrowUp; + } else if (i === endIndex - 1 && endIndex < options.length) { + prefix = figures.arrowDown; + } else { + prefix = ' '; + } + styledOptions.push(this.renderOption(this.cursor, options[i], i, prefix)); + } + + return '\n' + styledOptions.join('\n'); + } + + // shared with autocomleteMultiselect + renderOptions(options) { + if (!this.done) { + return this.paginateOptions(options); + } + return ''; + } + + renderDoneOrInstructions() { + if (this.done) { + return this.value + .filter(e => e.selected) + .map(v => v.title) + .join(', '); + } + + const output = [color.gray(this.hint), this.renderInstructions()]; + + if (this.value[this.cursor].disabled) { + output.push(color.yellow(this.warn)); + } + return output.join(' '); + } + + render() { + if (this.closed) return; + if (this.firstRender) this.out.write(cursor.hide); + super.render(); + + // print prompt + let prompt = [ + style.symbol(this.done, this.aborted), + color.bold(this.msg), + style.delimiter(false), + this.renderDoneOrInstructions() + ].join(' '); + if (this.showMinError) { + prompt += color.red(`You must select a minimum of ${this.minSelected} choices.`); + this.showMinError = false; + } + prompt += this.renderOptions(this.value); + + this.out.write(this.clear + prompt); + this.clear = clear(prompt, this.out.columns); + } + } + + multiselect = MultiselectPrompt; + return multiselect; +} + +var autocomplete; +var hasRequiredAutocomplete; + +function requireAutocomplete () { + if (hasRequiredAutocomplete) return autocomplete; + hasRequiredAutocomplete = 1; + + const color = requireKleur(); + const Prompt = requirePrompt(); + const { erase, cursor } = requireSrc(); + const { style, clear, figures, wrap, entriesToDisplay } = requireUtil(); + + const getVal = (arr, i) => arr[i] && (arr[i].value || arr[i].title || arr[i]); + const getTitle = (arr, i) => arr[i] && (arr[i].title || arr[i].value || arr[i]); + const getIndex = (arr, valOrTitle) => { + const index = arr.findIndex(el => el.value === valOrTitle || el.title === valOrTitle); + return index > -1 ? index : undefined; + }; + + /** + * TextPrompt Base Element + * @param {Object} opts Options + * @param {String} opts.message Message + * @param {Array} opts.choices Array of auto-complete choices objects + * @param {Function} [opts.suggest] Filter function. Defaults to sort by title + * @param {Number} [opts.limit=10] Max number of results to show + * @param {Number} [opts.cursor=0] Cursor start position + * @param {String} [opts.style='default'] Render style + * @param {String} [opts.fallback] Fallback message - initial to default value + * @param {String} [opts.initial] Index of the default value + * @param {Boolean} [opts.clearFirst] The first ESCAPE keypress will clear the input + * @param {Stream} [opts.stdin] The Readable stream to listen to + * @param {Stream} [opts.stdout] The Writable stream to write readline data to + * @param {String} [opts.noMatches] The no matches found label + */ + class AutocompletePrompt extends Prompt { + constructor(opts={}) { + super(opts); + this.msg = opts.message; + this.suggest = opts.suggest; + this.choices = opts.choices; + this.initial = typeof opts.initial === 'number' + ? opts.initial + : getIndex(opts.choices, opts.initial); + this.select = this.initial || opts.cursor || 0; + this.i18n = { noMatches: opts.noMatches || 'no matches found' }; + this.fallback = opts.fallback || this.initial; + this.clearFirst = opts.clearFirst || false; + this.suggestions = []; + this.input = ''; + this.limit = opts.limit || 10; + this.cursor = 0; + this.transform = style.render(opts.style); + this.scale = this.transform.scale; + this.render = this.render.bind(this); + this.complete = this.complete.bind(this); + this.clear = clear('', this.out.columns); + this.complete(this.render); + this.render(); + } + + set fallback(fb) { + this._fb = Number.isSafeInteger(parseInt(fb)) ? parseInt(fb) : fb; + } + + get fallback() { + let choice; + if (typeof this._fb === 'number') + choice = this.choices[this._fb]; + else if (typeof this._fb === 'string') + choice = { title: this._fb }; + return choice || this._fb || { title: this.i18n.noMatches }; + } + + moveSelect(i) { + this.select = i; + if (this.suggestions.length > 0) + this.value = getVal(this.suggestions, i); + else this.value = this.fallback.value; + this.fire(); + } + + async complete(cb) { + const p = (this.completing = this.suggest(this.input, this.choices)); + const suggestions = await p; + + if (this.completing !== p) return; + this.suggestions = suggestions + .map((s, i, arr) => ({ title: getTitle(arr, i), value: getVal(arr, i), description: s.description })); + this.completing = false; + const l = Math.max(suggestions.length - 1, 0); + this.moveSelect(Math.min(l, this.select)); + + cb && cb(); + } + + reset() { + this.input = ''; + this.complete(() => { + this.moveSelect(this.initial !== void 0 ? this.initial : 0); + this.render(); + }); + this.render(); + } + + exit() { + if (this.clearFirst && this.input.length > 0) { + this.reset(); + } else { + this.done = this.exited = true; + this.aborted = false; + this.fire(); + this.render(); + this.out.write('\n'); + this.close(); + } + } + + abort() { + this.done = this.aborted = true; + this.exited = false; + this.fire(); + this.render(); + this.out.write('\n'); + this.close(); + } + + submit() { + this.done = true; + this.aborted = this.exited = false; + this.fire(); + this.render(); + this.out.write('\n'); + this.close(); + } + + _(c, key) { + let s1 = this.input.slice(0, this.cursor); + let s2 = this.input.slice(this.cursor); + this.input = `${s1}${c}${s2}`; + this.cursor = s1.length+1; + this.complete(this.render); + this.render(); + } + + delete() { + if (this.cursor === 0) return this.bell(); + let s1 = this.input.slice(0, this.cursor-1); + let s2 = this.input.slice(this.cursor); + this.input = `${s1}${s2}`; + this.complete(this.render); + this.cursor = this.cursor-1; + this.render(); + } + + deleteForward() { + if(this.cursor*this.scale >= this.rendered.length) return this.bell(); + let s1 = this.input.slice(0, this.cursor); + let s2 = this.input.slice(this.cursor+1); + this.input = `${s1}${s2}`; + this.complete(this.render); + this.render(); + } + + first() { + this.moveSelect(0); + this.render(); + } + + last() { + this.moveSelect(this.suggestions.length - 1); + this.render(); + } + + up() { + if (this.select === 0) { + this.moveSelect(this.suggestions.length - 1); + } else { + this.moveSelect(this.select - 1); + } + this.render(); + } + + down() { + if (this.select === this.suggestions.length - 1) { + this.moveSelect(0); + } else { + this.moveSelect(this.select + 1); + } + this.render(); + } + + next() { + if (this.select === this.suggestions.length - 1) { + this.moveSelect(0); + } else this.moveSelect(this.select + 1); + this.render(); + } + + nextPage() { + this.moveSelect(Math.min(this.select + this.limit, this.suggestions.length - 1)); + this.render(); + } + + prevPage() { + this.moveSelect(Math.max(this.select - this.limit, 0)); + this.render(); + } + + left() { + if (this.cursor <= 0) return this.bell(); + this.cursor = this.cursor-1; + this.render(); + } + + right() { + if (this.cursor*this.scale >= this.rendered.length) return this.bell(); + this.cursor = this.cursor+1; + this.render(); + } + + renderOption(v, hovered, isStart, isEnd) { + let desc; + let prefix = isStart ? figures.arrowUp : isEnd ? figures.arrowDown : ' '; + let title = hovered ? color.cyan().underline(v.title) : v.title; + prefix = (hovered ? color.cyan(figures.pointer) + ' ' : ' ') + prefix; + if (v.description) { + desc = ` - ${v.description}`; + if (prefix.length + title.length + desc.length >= this.out.columns + || v.description.split(/\r?\n/).length > 1) { + desc = '\n' + wrap(v.description, { margin: 3, width: this.out.columns }); + } + } + return prefix + ' ' + title + color.gray(desc || ''); + } + + render() { + if (this.closed) return; + if (this.firstRender) this.out.write(cursor.hide); + else this.out.write(clear(this.outputText, this.out.columns)); + super.render(); + + let { startIndex, endIndex } = entriesToDisplay(this.select, this.choices.length, this.limit); + + this.outputText = [ + style.symbol(this.done, this.aborted, this.exited), + color.bold(this.msg), + style.delimiter(this.completing), + this.done && this.suggestions[this.select] + ? this.suggestions[this.select].title + : this.rendered = this.transform.render(this.input) + ].join(' '); + + if (!this.done) { + const suggestions = this.suggestions + .slice(startIndex, endIndex) + .map((item, i) => this.renderOption(item, + this.select === i + startIndex, + i === 0 && startIndex > 0, + i + startIndex === endIndex - 1 && endIndex < this.choices.length)) + .join('\n'); + this.outputText += `\n` + (suggestions || color.gray(this.fallback.title)); + } + + this.out.write(erase.line + cursor.to(0) + this.outputText); + } + } + + autocomplete = AutocompletePrompt; + return autocomplete; +} + +var autocompleteMultiselect; +var hasRequiredAutocompleteMultiselect; + +function requireAutocompleteMultiselect () { + if (hasRequiredAutocompleteMultiselect) return autocompleteMultiselect; + hasRequiredAutocompleteMultiselect = 1; + + const color = requireKleur(); + const { cursor } = requireSrc(); + const MultiselectPrompt = requireMultiselect(); + const { clear, style, figures } = requireUtil(); + /** + * MultiselectPrompt Base Element + * @param {Object} opts Options + * @param {String} opts.message Message + * @param {Array} opts.choices Array of choice objects + * @param {String} [opts.hint] Hint to display + * @param {String} [opts.warn] Hint shown for disabled choices + * @param {Number} [opts.max] Max choices + * @param {Number} [opts.cursor=0] Cursor start position + * @param {Stream} [opts.stdin] The Readable stream to listen to + * @param {Stream} [opts.stdout] The Writable stream to write readline data to + */ + class AutocompleteMultiselectPrompt extends MultiselectPrompt { + constructor(opts={}) { + opts.overrideRender = true; + super(opts); + this.inputValue = ''; + this.clear = clear('', this.out.columns); + this.filteredOptions = this.value; + this.render(); + } + + last() { + this.cursor = this.filteredOptions.length - 1; + this.render(); + } + next() { + this.cursor = (this.cursor + 1) % this.filteredOptions.length; + this.render(); + } + + up() { + if (this.cursor === 0) { + this.cursor = this.filteredOptions.length - 1; + } else { + this.cursor--; + } + this.render(); + } + + down() { + if (this.cursor === this.filteredOptions.length - 1) { + this.cursor = 0; + } else { + this.cursor++; + } + this.render(); + } + + left() { + this.filteredOptions[this.cursor].selected = false; + this.render(); + } + + right() { + if (this.value.filter(e => e.selected).length >= this.maxChoices) return this.bell(); + this.filteredOptions[this.cursor].selected = true; + this.render(); + } + + delete() { + if (this.inputValue.length) { + this.inputValue = this.inputValue.substr(0, this.inputValue.length - 1); + this.updateFilteredOptions(); + } + } + + updateFilteredOptions() { + const currentHighlight = this.filteredOptions[this.cursor]; + this.filteredOptions = this.value + .filter(v => { + if (this.inputValue) { + if (typeof v.title === 'string') { + if (v.title.toLowerCase().includes(this.inputValue.toLowerCase())) { + return true; + } + } + if (typeof v.value === 'string') { + if (v.value.toLowerCase().includes(this.inputValue.toLowerCase())) { + return true; + } + } + return false; + } + return true; + }); + const newHighlightIndex = this.filteredOptions.findIndex(v => v === currentHighlight); + this.cursor = newHighlightIndex < 0 ? 0 : newHighlightIndex; + this.render(); + } + + handleSpaceToggle() { + const v = this.filteredOptions[this.cursor]; + + if (v.selected) { + v.selected = false; + this.render(); + } else if (v.disabled || this.value.filter(e => e.selected).length >= this.maxChoices) { + return this.bell(); + } else { + v.selected = true; + this.render(); + } + } + + handleInputChange(c) { + this.inputValue = this.inputValue + c; + this.updateFilteredOptions(); + } + + _(c, key) { + if (c === ' ') { + this.handleSpaceToggle(); + } else { + this.handleInputChange(c); + } + } + + renderInstructions() { + if (this.instructions === undefined || this.instructions) { + if (typeof this.instructions === 'string') { + return this.instructions; + } + return ` +Instructions: + ${figures.arrowUp}/${figures.arrowDown}: Highlight option + ${figures.arrowLeft}/${figures.arrowRight}/[space]: Toggle selection + [a,b,c]/delete: Filter choices + enter/return: Complete answer +`; + } + return ''; + } + + renderCurrentInput() { + return ` +Filtered results for: ${this.inputValue ? this.inputValue : color.gray('Enter something to filter')}\n`; + } + + renderOption(cursor, v, i) { + let title; + if (v.disabled) title = cursor === i ? color.gray().underline(v.title) : color.strikethrough().gray(v.title); + else title = cursor === i ? color.cyan().underline(v.title) : v.title; + return (v.selected ? color.green(figures.radioOn) : figures.radioOff) + ' ' + title + } + + renderDoneOrInstructions() { + if (this.done) { + return this.value + .filter(e => e.selected) + .map(v => v.title) + .join(', '); + } + + const output = [color.gray(this.hint), this.renderInstructions(), this.renderCurrentInput()]; + + if (this.filteredOptions.length && this.filteredOptions[this.cursor].disabled) { + output.push(color.yellow(this.warn)); + } + return output.join(' '); + } + + render() { + if (this.closed) return; + if (this.firstRender) this.out.write(cursor.hide); + super.render(); + + // print prompt + + let prompt = [ + style.symbol(this.done, this.aborted), + color.bold(this.msg), + style.delimiter(false), + this.renderDoneOrInstructions() + ].join(' '); + + if (this.showMinError) { + prompt += color.red(`You must select a minimum of ${this.minSelected} choices.`); + this.showMinError = false; + } + prompt += this.renderOptions(this.filteredOptions); + + this.out.write(this.clear + prompt); + this.clear = clear(prompt, this.out.columns); + } + } + + autocompleteMultiselect = AutocompleteMultiselectPrompt; + return autocompleteMultiselect; +} + +var confirm; +var hasRequiredConfirm; + +function requireConfirm () { + if (hasRequiredConfirm) return confirm; + hasRequiredConfirm = 1; + const color = requireKleur(); + const Prompt = requirePrompt(); + const { style, clear } = requireUtil(); + const { erase, cursor } = requireSrc(); + + /** + * ConfirmPrompt Base Element + * @param {Object} opts Options + * @param {String} opts.message Message + * @param {Boolean} [opts.initial] Default value (true/false) + * @param {Stream} [opts.stdin] The Readable stream to listen to + * @param {Stream} [opts.stdout] The Writable stream to write readline data to + * @param {String} [opts.yes] The "Yes" label + * @param {String} [opts.yesOption] The "Yes" option when choosing between yes/no + * @param {String} [opts.no] The "No" label + * @param {String} [opts.noOption] The "No" option when choosing between yes/no + */ + class ConfirmPrompt extends Prompt { + constructor(opts={}) { + super(opts); + this.msg = opts.message; + this.value = opts.initial; + this.initialValue = !!opts.initial; + this.yesMsg = opts.yes || 'yes'; + this.yesOption = opts.yesOption || '(Y/n)'; + this.noMsg = opts.no || 'no'; + this.noOption = opts.noOption || '(y/N)'; + this.render(); + } + + reset() { + this.value = this.initialValue; + this.fire(); + this.render(); + } + + exit() { + this.abort(); + } + + abort() { + this.done = this.aborted = true; + this.fire(); + this.render(); + this.out.write('\n'); + this.close(); + } + + submit() { + this.value = this.value || false; + this.done = true; + this.aborted = false; + this.fire(); + this.render(); + this.out.write('\n'); + this.close(); + } + + _(c, key) { + if (c.toLowerCase() === 'y') { + this.value = true; + return this.submit(); + } + if (c.toLowerCase() === 'n') { + this.value = false; + return this.submit(); + } + return this.bell(); + } + + render() { + if (this.closed) return; + if (this.firstRender) this.out.write(cursor.hide); + else this.out.write(clear(this.outputText, this.out.columns)); + super.render(); + + this.outputText = [ + style.symbol(this.done, this.aborted), + color.bold(this.msg), + style.delimiter(this.done), + this.done ? (this.value ? this.yesMsg : this.noMsg) + : color.gray(this.initialValue ? this.yesOption : this.noOption) + ].join(' '); + + this.out.write(erase.line + cursor.to(0) + this.outputText); + } + } + + confirm = ConfirmPrompt; + return confirm; +} + +var elements; +var hasRequiredElements; + +function requireElements () { + if (hasRequiredElements) return elements; + hasRequiredElements = 1; + + elements = { + TextPrompt: requireText(), + SelectPrompt: requireSelect(), + TogglePrompt: requireToggle(), + DatePrompt: requireDate(), + NumberPrompt: requireNumber(), + MultiselectPrompt: requireMultiselect(), + AutocompletePrompt: requireAutocomplete(), + AutocompleteMultiselectPrompt: requireAutocompleteMultiselect(), + ConfirmPrompt: requireConfirm() + }; + return elements; +} + +var hasRequiredPrompts; + +function requirePrompts () { + if (hasRequiredPrompts) return prompts$1; + hasRequiredPrompts = 1; + (function (exports) { + const $ = exports; + const el = requireElements(); + const noop = v => v; + + function toPrompt(type, args, opts={}) { + return new Promise((res, rej) => { + const p = new el[type](args); + const onAbort = opts.onAbort || noop; + const onSubmit = opts.onSubmit || noop; + const onExit = opts.onExit || noop; + p.on('state', args.onState || noop); + p.on('submit', x => res(onSubmit(x))); + p.on('exit', x => res(onExit(x))); + p.on('abort', x => rej(onAbort(x))); + }); + } + + /** + * Text prompt + * @param {string} args.message Prompt message to display + * @param {string} [args.initial] Default string value + * @param {string} [args.style="default"] Render style ('default', 'password', 'invisible') + * @param {function} [args.onState] On state change callback + * @param {function} [args.validate] Function to validate user input + * @param {Stream} [args.stdin] The Readable stream to listen to + * @param {Stream} [args.stdout] The Writable stream to write readline data to + * @returns {Promise} Promise with user input + */ + $.text = args => toPrompt('TextPrompt', args); + + /** + * Password prompt with masked input + * @param {string} args.message Prompt message to display + * @param {string} [args.initial] Default string value + * @param {function} [args.onState] On state change callback + * @param {function} [args.validate] Function to validate user input + * @param {Stream} [args.stdin] The Readable stream to listen to + * @param {Stream} [args.stdout] The Writable stream to write readline data to + * @returns {Promise} Promise with user input + */ + $.password = args => { + args.style = 'password'; + return $.text(args); + }; + + /** + * Prompt where input is invisible, like sudo + * @param {string} args.message Prompt message to display + * @param {string} [args.initial] Default string value + * @param {function} [args.onState] On state change callback + * @param {function} [args.validate] Function to validate user input + * @param {Stream} [args.stdin] The Readable stream to listen to + * @param {Stream} [args.stdout] The Writable stream to write readline data to + * @returns {Promise} Promise with user input + */ + $.invisible = args => { + args.style = 'invisible'; + return $.text(args); + }; + + /** + * Number prompt + * @param {string} args.message Prompt message to display + * @param {number} args.initial Default number value + * @param {function} [args.onState] On state change callback + * @param {number} [args.max] Max value + * @param {number} [args.min] Min value + * @param {string} [args.style="default"] Render style ('default', 'password', 'invisible') + * @param {Boolean} [opts.float=false] Parse input as floats + * @param {Number} [opts.round=2] Round floats to x decimals + * @param {Number} [opts.increment=1] Number to increment by when using arrow-keys + * @param {function} [args.validate] Function to validate user input + * @param {Stream} [args.stdin] The Readable stream to listen to + * @param {Stream} [args.stdout] The Writable stream to write readline data to + * @returns {Promise} Promise with user input + */ + $.number = args => toPrompt('NumberPrompt', args); + + /** + * Date prompt + * @param {string} args.message Prompt message to display + * @param {number} args.initial Default number value + * @param {function} [args.onState] On state change callback + * @param {number} [args.max] Max value + * @param {number} [args.min] Min value + * @param {string} [args.style="default"] Render style ('default', 'password', 'invisible') + * @param {Boolean} [opts.float=false] Parse input as floats + * @param {Number} [opts.round=2] Round floats to x decimals + * @param {Number} [opts.increment=1] Number to increment by when using arrow-keys + * @param {function} [args.validate] Function to validate user input + * @param {Stream} [args.stdin] The Readable stream to listen to + * @param {Stream} [args.stdout] The Writable stream to write readline data to + * @returns {Promise} Promise with user input + */ + $.date = args => toPrompt('DatePrompt', args); + + /** + * Classic yes/no prompt + * @param {string} args.message Prompt message to display + * @param {boolean} [args.initial=false] Default value + * @param {function} [args.onState] On state change callback + * @param {Stream} [args.stdin] The Readable stream to listen to + * @param {Stream} [args.stdout] The Writable stream to write readline data to + * @returns {Promise} Promise with user input + */ + $.confirm = args => toPrompt('ConfirmPrompt', args); + + /** + * List prompt, split intput string by `seperator` + * @param {string} args.message Prompt message to display + * @param {string} [args.initial] Default string value + * @param {string} [args.style="default"] Render style ('default', 'password', 'invisible') + * @param {string} [args.separator] String separator + * @param {function} [args.onState] On state change callback + * @param {Stream} [args.stdin] The Readable stream to listen to + * @param {Stream} [args.stdout] The Writable stream to write readline data to + * @returns {Promise} Promise with user input, in form of an `Array` + */ + $.list = args => { + const sep = args.separator || ','; + return toPrompt('TextPrompt', args, { + onSubmit: str => str.split(sep).map(s => s.trim()) + }); + }; + + /** + * Toggle/switch prompt + * @param {string} args.message Prompt message to display + * @param {boolean} [args.initial=false] Default value + * @param {string} [args.active="on"] Text for `active` state + * @param {string} [args.inactive="off"] Text for `inactive` state + * @param {function} [args.onState] On state change callback + * @param {Stream} [args.stdin] The Readable stream to listen to + * @param {Stream} [args.stdout] The Writable stream to write readline data to + * @returns {Promise} Promise with user input + */ + $.toggle = args => toPrompt('TogglePrompt', args); + + /** + * Interactive select prompt + * @param {string} args.message Prompt message to display + * @param {Array} args.choices Array of choices objects `[{ title, value }, ...]` + * @param {number} [args.initial] Index of default value + * @param {String} [args.hint] Hint to display + * @param {function} [args.onState] On state change callback + * @param {Stream} [args.stdin] The Readable stream to listen to + * @param {Stream} [args.stdout] The Writable stream to write readline data to + * @returns {Promise} Promise with user input + */ + $.select = args => toPrompt('SelectPrompt', args); + + /** + * Interactive multi-select / autocompleteMultiselect prompt + * @param {string} args.message Prompt message to display + * @param {Array} args.choices Array of choices objects `[{ title, value, [selected] }, ...]` + * @param {number} [args.max] Max select + * @param {string} [args.hint] Hint to display user + * @param {Number} [args.cursor=0] Cursor start position + * @param {function} [args.onState] On state change callback + * @param {Stream} [args.stdin] The Readable stream to listen to + * @param {Stream} [args.stdout] The Writable stream to write readline data to + * @returns {Promise} Promise with user input + */ + $.multiselect = args => { + args.choices = [].concat(args.choices || []); + const toSelected = items => items.filter(item => item.selected).map(item => item.value); + return toPrompt('MultiselectPrompt', args, { + onAbort: toSelected, + onSubmit: toSelected + }); + }; + + $.autocompleteMultiselect = args => { + args.choices = [].concat(args.choices || []); + const toSelected = items => items.filter(item => item.selected).map(item => item.value); + return toPrompt('AutocompleteMultiselectPrompt', args, { + onAbort: toSelected, + onSubmit: toSelected + }); + }; + + const byTitle = (input, choices) => Promise.resolve( + choices.filter(item => item.title.slice(0, input.length).toLowerCase() === input.toLowerCase()) + ); + + /** + * Interactive auto-complete prompt + * @param {string} args.message Prompt message to display + * @param {Array} args.choices Array of auto-complete choices objects `[{ title, value }, ...]` + * @param {Function} [args.suggest] Function to filter results based on user input. Defaults to sort by `title` + * @param {number} [args.limit=10] Max number of results to show + * @param {string} [args.style="default"] Render style ('default', 'password', 'invisible') + * @param {String} [args.initial] Index of the default value + * @param {boolean} [opts.clearFirst] The first ESCAPE keypress will clear the input + * @param {String} [args.fallback] Fallback message - defaults to initial value + * @param {function} [args.onState] On state change callback + * @param {Stream} [args.stdin] The Readable stream to listen to + * @param {Stream} [args.stdout] The Writable stream to write readline data to + * @returns {Promise} Promise with user input + */ + $.autocomplete = args => { + args.suggest = args.suggest || byTitle; + args.choices = [].concat(args.choices || []); + return toPrompt('AutocompletePrompt', args); + }; +} (prompts$1)); + return prompts$1; +} + +var lib; +var hasRequiredLib; + +function requireLib () { + if (hasRequiredLib) return lib; + hasRequiredLib = 1; + + const prompts = requirePrompts(); + + const passOn = ['suggest', 'format', 'onState', 'validate', 'onRender', 'type']; + const noop = () => {}; + + /** + * Prompt for a series of questions + * @param {Array|Object} questions Single question object or Array of question objects + * @param {Function} [onSubmit] Callback function called on prompt submit + * @param {Function} [onCancel] Callback function called on cancel/abort + * @returns {Object} Object with values from user input + */ + async function prompt(questions=[], { onSubmit=noop, onCancel=noop }={}) { + const answers = {}; + const override = prompt._override || {}; + questions = [].concat(questions); + let answer, question, quit, name, type, lastPrompt; + + const getFormattedAnswer = async (question, answer, skipValidation = false) => { + if (!skipValidation && question.validate && question.validate(answer) !== true) { + return; + } + return question.format ? await question.format(answer, answers) : answer + }; + + for (question of questions) { + ({ name, type } = question); + + // evaluate type first and skip if type is a falsy value + if (typeof type === 'function') { + type = await type(answer, { ...answers }, question); + question['type'] = type; + } + if (!type) continue; + + // if property is a function, invoke it unless it's a special function + for (let key in question) { + if (passOn.includes(key)) continue; + let value = question[key]; + question[key] = typeof value === 'function' ? await value(answer, { ...answers }, lastPrompt) : value; + } + + lastPrompt = question; + + if (typeof question.message !== 'string') { + throw new Error('prompt message is required'); + } + + // update vars in case they changed + ({ name, type } = question); + + if (prompts[type] === void 0) { + throw new Error(`prompt type (${type}) is not defined`); + } + + if (override[question.name] !== undefined) { + answer = await getFormattedAnswer(question, override[question.name]); + if (answer !== undefined) { + answers[name] = answer; + continue; + } + } + + try { + // Get the injected answer if there is one or prompt the user + answer = prompt._injected ? getInjectedAnswer(prompt._injected, question.initial) : await prompts[type](question); + answers[name] = answer = await getFormattedAnswer(question, answer, true); + quit = await onSubmit(question, answer, answers); + } catch (err) { + quit = !(await onCancel(question, answers)); + } + + if (quit) return answers; + } + + return answers; + } + + function getInjectedAnswer(injected, deafultValue) { + const answer = injected.shift(); + if (answer instanceof Error) { + throw answer; + } + + return (answer === undefined) ? deafultValue : answer; + } + + function inject(answers) { + prompt._injected = (prompt._injected || []).concat(answers); + } + + function override(answers) { + prompt._override = Object.assign({}, answers); + } + + lib = Object.assign(prompt, { prompt, prompts, inject, override }); + return lib; +} + +function isNodeLT(tar) { + tar = (Array.isArray(tar) ? tar : tar.split('.')).map(Number); + let i=0, src=process.versions.node.split('.').map(Number); + for (; i < tar.length; i++) { + if (src[i] > tar[i]) return false; + if (tar[i] > src[i]) return true; + } + return false; +} + +var prompts = + isNodeLT('8.6.0') + ? requireDist() + : requireLib(); + +let enabled = true; +// Support both browser and node environments +const globalVar = typeof self !== 'undefined' + ? self + : typeof window !== 'undefined' + ? window + : typeof global !== 'undefined' + ? global + : {}; +/** + * Detect how much colors the current terminal supports + */ +let supportLevel = 0 /* none */; +if (globalVar.process && globalVar.process.env && globalVar.process.stdout) { + const { FORCE_COLOR, NODE_DISABLE_COLORS, TERM } = globalVar.process.env; + if (NODE_DISABLE_COLORS || FORCE_COLOR === '0') { + enabled = false; + } + else if (FORCE_COLOR === '1') { + enabled = true; + } + else if (TERM === 'dumb') { + enabled = false; + } + else if ('CI' in globalVar.process.env && + [ + 'TRAVIS', + 'CIRCLECI', + 'APPVEYOR', + 'GITLAB_CI', + 'GITHUB_ACTIONS', + 'BUILDKITE', + 'DRONE', + ].some(vendor => vendor in globalVar.process.env)) { + enabled = true; + } + else { + enabled = process.stdout.isTTY; + } + if (enabled) { + supportLevel = + TERM && TERM.endsWith('-256color') + ? 2 /* ansi256 */ + : 1 /* ansi */; + } +} +let options = { + enabled, + supportLevel, +}; +function kolorist(start, end, level = 1 /* ansi */) { + const open = `\x1b[${start}m`; + const close = `\x1b[${end}m`; + const regex = new RegExp(`\\x1b\\[${end}m`, 'g'); + return (str) => { + return options.enabled && options.supportLevel >= level + ? open + ('' + str).replace(regex, open) + close + : '' + str; + }; +} +// modifiers +const reset = kolorist(0, 0); +const red = kolorist(31, 39); +const lightGray = kolorist(37, 39); +const lightYellow = kolorist(93, 39); +const lightBlue = kolorist(94, 39); +const lightCyan = kolorist(96, 39); + +const argv = minimist(process.argv.slice(2), { string: ["_"] }); +const cwd = process.cwd(); +const FRAMEWORKS = [ + { + name: "doks", + display: "Doks", + color: lightCyan, + variants: [ + { + name: "doks-recommended", + display: "Recommended", + color: lightYellow + }, + { + name: "doks", + display: "None", + color: lightBlue + } + ] + }, + { + name: "bootstrap-starter", + display: "Bootstrap starter", + color: lightGray, + variants: [ + { + name: "bs-starter-recommended", + display: "Recommended", + color: lightYellow + }, + { + name: "bs-starter", + display: "None", + color: lightBlue + } + ] + }, + { + name: "no-theme", + display: "None", + color: lightGray, + variants: [ + { + name: "no-theme-recommended", + display: "Recommended", + color: lightYellow + }, + { + name: "no-theme", + display: "None", + color: lightBlue + } + ] + } +]; +const TEMPLATES = FRAMEWORKS.map( + (f) => f.variants && f.variants.map((v) => v.name) || [f.name] +).reduce((a, b) => a.concat(b), []); +const renameFiles = { + _gitignore: ".gitignore" +}; +const defaultTargetDir = "hyas-project"; +async function init() { + const argTargetDir = formatTargetDir(argv._[0]); + const argTemplate = argv.template || argv.t; + let targetDir = argTargetDir || defaultTargetDir; + const getProjectName = () => targetDir === "." ? path$3.basename(path$3.resolve()) : targetDir; + let result; + try { + result = await prompts( + [ + { + type: argTargetDir ? null : "text", + name: "projectName", + message: reset("Project name:"), + initial: defaultTargetDir, + onState: (state) => { + targetDir = formatTargetDir(state.value) || defaultTargetDir; + } + }, + { + type: () => !fs$1.existsSync(targetDir) || isEmpty(targetDir) ? null : "confirm", + name: "overwrite", + message: () => (targetDir === "." ? "Current directory" : `Target directory "${targetDir}"`) + ` is not empty. Remove existing files and continue?` + }, + { + type: (_, { overwrite: overwrite2 }) => { + if (overwrite2 === false) { + throw new Error(red("\u2716") + " Operation cancelled"); + } + return null; + }, + name: "overwriteChecker" + }, + { + type: () => isValidPackageName(getProjectName()) ? null : "text", + name: "packageName", + message: reset("Package name:"), + initial: () => toValidPackageName(getProjectName()), + validate: (dir) => isValidPackageName(dir) || "Invalid package.json name" + }, + { + type: argTemplate && TEMPLATES.includes(argTemplate) ? null : "select", + name: "framework", + message: typeof argTemplate === "string" && !TEMPLATES.includes(argTemplate) ? reset( + `"${argTemplate}" isn't a valid template. Please choose from below: ` + ) : reset("Select a theme:"), + initial: 0, + choices: FRAMEWORKS.map((framework2) => { + const frameworkColor = framework2.color; + return { + title: frameworkColor(framework2.display || framework2.name), + value: framework2 + }; + }) + }, + { + type: (framework2) => framework2 && framework2.variants ? "select" : null, + name: "variant", + message: reset("Select plugins:"), + choices: (framework2) => framework2.variants.map((variant2) => { + const variantColor = variant2.color; + return { + title: variantColor(variant2.display || variant2.name), + value: variant2.name + }; + }) + } + ], + { + onCancel: () => { + throw new Error(red("\u2716") + " Operation cancelled"); + } + } + ); + } catch (cancelled) { + console.log(cancelled.message); + return; + } + const { framework, overwrite, packageName, variant } = result; + const root = path$3.join(cwd, targetDir); + if (overwrite) { + emptyDir(root); + } else if (!fs$1.existsSync(root)) { + fs$1.mkdirSync(root, { recursive: true }); + } + const template = variant || framework?.name || argTemplate; + const pkgInfo = pkgFromUserAgent(process.env.npm_config_user_agent); + const pkgManager = pkgInfo ? pkgInfo.name : "npm"; + const isYarn1 = pkgManager === "yarn" && pkgInfo?.version.startsWith("1."); + const { customCommand } = FRAMEWORKS.flatMap((f) => f.variants).find((v) => v.name === template) ?? {}; + if (customCommand) { + const fullCustomCommand = customCommand.replace("TARGET_DIR", targetDir).replace(/^npm create/, `${pkgManager} create`).replace("@latest", () => isYarn1 ? "" : "@latest").replace(/^npm exec/, () => { + if (pkgManager === "pnpm") { + return "pnpm dlx"; + } + if (pkgManager === "yarn" && !isYarn1) { + return "yarn dlx"; + } + return "npm exec"; + }); + const [command, ...args] = fullCustomCommand.split(" "); + const { status } = crossSpawn.exports.sync(command, args, { + stdio: "inherit" + }); + process.exit(status ?? 0); + } + console.log(` +Scaffolding project in ${root}...`); + const templateDir = path$3.resolve( + fileURLToPath(import.meta.url), + "../..", + `template-${template}` + ); + const write = (file, content) => { + const targetPath = path$3.join(root, renameFiles[file] ?? file); + if (content) { + fs$1.writeFileSync(targetPath, content); + } else { + copy(path$3.join(templateDir, file), targetPath); + } + }; + const files = fs$1.readdirSync(templateDir); + for (const file of files.filter((f) => f !== "package.json")) { + write(file); + } + const pkg = JSON.parse( + fs$1.readFileSync(path$3.join(templateDir, `package.json`), "utf-8") + ); + pkg.name = packageName || getProjectName(); + write("package.json", JSON.stringify(pkg, null, 2)); + console.log(` +Done. Now run: +`); + if (root !== cwd) { + console.log(` cd ${path$3.relative(cwd, root)}`); + } + switch (pkgManager) { + case "yarn": + console.log(" yarn"); + console.log(" yarn dev"); + break; + default: + console.log(` ${pkgManager} install`); + console.log(` ${pkgManager} run dev`); + break; + } + console.log(); +} +function formatTargetDir(targetDir) { + return targetDir?.trim().replace(/\/+$/g, ""); +} +function copy(src, dest) { + const stat = fs$1.statSync(src); + if (stat.isDirectory()) { + copyDir(src, dest); + } else { + fs$1.copyFileSync(src, dest); + } +} +function isValidPackageName(projectName) { + return /^(?:@[a-z0-9-*~][a-z0-9-*._~]*\/)?[a-z0-9-~][a-z0-9-._~]*$/.test( + projectName + ); +} +function toValidPackageName(projectName) { + return projectName.trim().toLowerCase().replace(/\s+/g, "-").replace(/^[._]/, "").replace(/[^a-z0-9-~]+/g, "-"); +} +function copyDir(srcDir, destDir) { + fs$1.mkdirSync(destDir, { recursive: true }); + for (const file of fs$1.readdirSync(srcDir)) { + const srcFile = path$3.resolve(srcDir, file); + const destFile = path$3.resolve(destDir, file); + copy(srcFile, destFile); + } +} +function isEmpty(path2) { + const files = fs$1.readdirSync(path2); + return files.length === 0 || files.length === 1 && files[0] === ".git"; +} +function emptyDir(dir) { + if (!fs$1.existsSync(dir)) { + return; + } + for (const file of fs$1.readdirSync(dir)) { + if (file === ".git") { + continue; + } + fs$1.rmSync(path$3.resolve(dir, file), { recursive: true, force: true }); + } +} +function pkgFromUserAgent(userAgent) { + if (!userAgent) + return void 0; + const pkgSpec = userAgent.split(" ")[0]; + const pkgSpecArr = pkgSpec.split("/"); + return { + name: pkgSpecArr[0], + version: pkgSpecArr[1] + }; +} +init().catch((e) => { + console.error(e); +}); diff --git a/index.js b/index.js new file mode 100644 index 0000000..f5e8e06 --- /dev/null +++ b/index.js @@ -0,0 +1,3 @@ +#!/usr/bin/env node + +import './dist/index.mjs' diff --git a/package-lock.json b/package-lock.json new file mode 100644 index 0000000..779e40e --- /dev/null +++ b/package-lock.json @@ -0,0 +1,4685 @@ +{ + "name": "create-hyas", + "version": "0.1.0", + "lockfileVersion": 2, + "requires": true, + "packages": { + "": { + "name": "create-hyas", + "version": "0.1.0", + "license": "MIT", + "bin": { + "cha": "index.js", + "create-hyas": "index.js" + }, + "devDependencies": { + "auto-changelog": "^2.4.0", + "cross-spawn": "^7.0.3", + "kolorist": "^1.6.0", + "minimist": "^1.2.7", + "prompts": "^2.4.2", + "shx": "^0.3.4", + "unbuild": "^0.9.4" + }, + "engines": { + "node": "^14.18.0 || >=16.0.0" + } + }, + "node_modules/@ampproject/remapping": { + "version": "2.2.0", + "resolved": "https://registry.npmjs.org/@ampproject/remapping/-/remapping-2.2.0.tgz", + "integrity": "sha512-qRmjj8nj9qmLTQXXmaR1cck3UXSRMPrbsLJAasZpF+t3riI71BXed5ebIOYwQntykeZuhjsdweEc9BxH5Jc26w==", + "dev": true, + "dependencies": { + "@jridgewell/gen-mapping": "^0.1.0", + "@jridgewell/trace-mapping": "^0.3.9" + }, + "engines": { + "node": ">=6.0.0" + } + }, + "node_modules/@babel/code-frame": { + "version": "7.18.6", + "resolved": "https://registry.npmjs.org/@babel/code-frame/-/code-frame-7.18.6.tgz", + "integrity": "sha512-TDCmlK5eOvH+eH7cdAFlNXeVJqWIQ7gW9tY1GJIpUtFb6CmjVyq2VM3u71bOyR8CRihcCgMUYoDNyLXao3+70Q==", + "dev": true, + "dependencies": { + "@babel/highlight": "^7.18.6" + }, + "engines": { + "node": ">=6.9.0" + } + }, + "node_modules/@babel/compat-data": { + "version": "7.20.1", + "resolved": "https://registry.npmjs.org/@babel/compat-data/-/compat-data-7.20.1.tgz", + "integrity": "sha512-EWZ4mE2diW3QALKvDMiXnbZpRvlj+nayZ112nK93SnhqOtpdsbVD4W+2tEoT3YNBAG9RBR0ISY758ZkOgsn6pQ==", + "dev": true, + "engines": { + "node": ">=6.9.0" + } + }, + "node_modules/@babel/core": { + "version": "7.20.2", + "resolved": "https://registry.npmjs.org/@babel/core/-/core-7.20.2.tgz", + "integrity": "sha512-w7DbG8DtMrJcFOi4VrLm+8QM4az8Mo+PuLBKLp2zrYRCow8W/f9xiXm5sN53C8HksCyDQwCKha9JiDoIyPjT2g==", + "dev": true, + "dependencies": { + "@ampproject/remapping": "^2.1.0", + "@babel/code-frame": "^7.18.6", + "@babel/generator": "^7.20.2", + "@babel/helper-compilation-targets": "^7.20.0", + "@babel/helper-module-transforms": "^7.20.2", + "@babel/helpers": "^7.20.1", + "@babel/parser": "^7.20.2", + "@babel/template": "^7.18.10", + "@babel/traverse": "^7.20.1", + "@babel/types": "^7.20.2", + "convert-source-map": "^1.7.0", + "debug": "^4.1.0", + "gensync": "^1.0.0-beta.2", + "json5": "^2.2.1", + "semver": "^6.3.0" + }, + "engines": { + "node": ">=6.9.0" + }, + "funding": { + "type": "opencollective", + "url": "https://opencollective.com/babel" + } + }, + "node_modules/@babel/core/node_modules/semver": { + "version": "6.3.0", + "resolved": "https://registry.npmjs.org/semver/-/semver-6.3.0.tgz", + "integrity": "sha512-b39TBaTSfV6yBrapU89p5fKekE2m/NwnDocOVruQFS1/veMgdzuPcnOM34M6CwxW8jH/lxEa5rBoDeUwu5HHTw==", + "dev": true, + "bin": { + "semver": "bin/semver.js" + } + }, + "node_modules/@babel/generator": { + "version": "7.20.3", + "resolved": "https://registry.npmjs.org/@babel/generator/-/generator-7.20.3.tgz", + "integrity": "sha512-Wl5ilw2UD1+ZYprHVprxHZJCFeBWlzZYOovE4SDYLZnqCOD11j+0QzNeEWKLLTWM7nixrZEh7vNIyb76MyJg3A==", + "dev": true, + "dependencies": { + "@babel/types": "^7.20.2", + "@jridgewell/gen-mapping": "^0.3.2", + "jsesc": "^2.5.1" + }, + "engines": { + "node": ">=6.9.0" + } + }, + "node_modules/@babel/generator/node_modules/@jridgewell/gen-mapping": { + "version": "0.3.2", + "resolved": "https://registry.npmjs.org/@jridgewell/gen-mapping/-/gen-mapping-0.3.2.tgz", + "integrity": "sha512-mh65xKQAzI6iBcFzwv28KVWSmCkdRBWoOh+bYQGW3+6OZvbbN3TqMGo5hqYxQniRcH9F2VZIoJCm4pa3BPDK/A==", + "dev": true, + "dependencies": { + "@jridgewell/set-array": "^1.0.1", + "@jridgewell/sourcemap-codec": "^1.4.10", + "@jridgewell/trace-mapping": "^0.3.9" + }, + "engines": { + "node": ">=6.0.0" + } + }, + "node_modules/@babel/helper-compilation-targets": { + "version": "7.20.0", + "resolved": "https://registry.npmjs.org/@babel/helper-compilation-targets/-/helper-compilation-targets-7.20.0.tgz", + "integrity": "sha512-0jp//vDGp9e8hZzBc6N/KwA5ZK3Wsm/pfm4CrY7vzegkVxc65SgSn6wYOnwHe9Js9HRQ1YTCKLGPzDtaS3RoLQ==", + "dev": true, + "dependencies": { + "@babel/compat-data": "^7.20.0", + "@babel/helper-validator-option": "^7.18.6", + "browserslist": "^4.21.3", + "semver": "^6.3.0" + }, + "engines": { + "node": ">=6.9.0" + }, + "peerDependencies": { + "@babel/core": "^7.0.0" + } + }, + "node_modules/@babel/helper-compilation-targets/node_modules/semver": { + "version": "6.3.0", + "resolved": "https://registry.npmjs.org/semver/-/semver-6.3.0.tgz", + "integrity": "sha512-b39TBaTSfV6yBrapU89p5fKekE2m/NwnDocOVruQFS1/veMgdzuPcnOM34M6CwxW8jH/lxEa5rBoDeUwu5HHTw==", + "dev": true, + "bin": { + "semver": "bin/semver.js" + } + }, + "node_modules/@babel/helper-environment-visitor": { + "version": "7.18.9", + "resolved": "https://registry.npmjs.org/@babel/helper-environment-visitor/-/helper-environment-visitor-7.18.9.tgz", + "integrity": "sha512-3r/aACDJ3fhQ/EVgFy0hpj8oHyHpQc+LPtJoY9SzTThAsStm4Ptegq92vqKoE3vD706ZVFWITnMnxucw+S9Ipg==", + "dev": true, + "engines": { + "node": ">=6.9.0" + } + }, + "node_modules/@babel/helper-function-name": { + "version": "7.19.0", + "resolved": "https://registry.npmjs.org/@babel/helper-function-name/-/helper-function-name-7.19.0.tgz", + "integrity": "sha512-WAwHBINyrpqywkUH0nTnNgI5ina5TFn85HKS0pbPDfxFfhyR/aNQEn4hGi1P1JyT//I0t4OgXUlofzWILRvS5w==", + "dev": true, + "dependencies": { + "@babel/template": "^7.18.10", + "@babel/types": "^7.19.0" + }, + "engines": { + "node": ">=6.9.0" + } + }, + "node_modules/@babel/helper-hoist-variables": { + "version": "7.18.6", + "resolved": "https://registry.npmjs.org/@babel/helper-hoist-variables/-/helper-hoist-variables-7.18.6.tgz", + "integrity": "sha512-UlJQPkFqFULIcyW5sbzgbkxn2FKRgwWiRexcuaR8RNJRy8+LLveqPjwZV/bwrLZCN0eUHD/x8D0heK1ozuoo6Q==", + "dev": true, + "dependencies": { + "@babel/types": "^7.18.6" + }, + "engines": { + "node": ">=6.9.0" + } + }, + "node_modules/@babel/helper-module-imports": { + "version": "7.18.6", + "resolved": "https://registry.npmjs.org/@babel/helper-module-imports/-/helper-module-imports-7.18.6.tgz", + "integrity": "sha512-0NFvs3VkuSYbFi1x2Vd6tKrywq+z/cLeYC/RJNFrIX/30Bf5aiGYbtvGXolEktzJH8o5E5KJ3tT+nkxuuZFVlA==", + "dev": true, + "dependencies": { + "@babel/types": "^7.18.6" + }, + "engines": { + "node": ">=6.9.0" + } + }, + "node_modules/@babel/helper-module-transforms": { + "version": "7.20.2", + "resolved": "https://registry.npmjs.org/@babel/helper-module-transforms/-/helper-module-transforms-7.20.2.tgz", + "integrity": "sha512-zvBKyJXRbmK07XhMuujYoJ48B5yvvmM6+wcpv6Ivj4Yg6qO7NOZOSnvZN9CRl1zz1Z4cKf8YejmCMh8clOoOeA==", + "dev": true, + "dependencies": { + "@babel/helper-environment-visitor": "^7.18.9", + "@babel/helper-module-imports": "^7.18.6", + "@babel/helper-simple-access": "^7.20.2", + "@babel/helper-split-export-declaration": "^7.18.6", + "@babel/helper-validator-identifier": "^7.19.1", + "@babel/template": "^7.18.10", + "@babel/traverse": "^7.20.1", + "@babel/types": "^7.20.2" + }, + "engines": { + "node": ">=6.9.0" + } + }, + "node_modules/@babel/helper-simple-access": { + "version": "7.20.2", + "resolved": "https://registry.npmjs.org/@babel/helper-simple-access/-/helper-simple-access-7.20.2.tgz", + "integrity": "sha512-+0woI/WPq59IrqDYbVGfshjT5Dmk/nnbdpcF8SnMhhXObpTq2KNBdLFRFrkVdbDOyUmHBCxzm5FHV1rACIkIbA==", + "dev": true, + "dependencies": { + "@babel/types": "^7.20.2" + }, + "engines": { + "node": ">=6.9.0" + } + }, + "node_modules/@babel/helper-split-export-declaration": { + "version": "7.18.6", + "resolved": "https://registry.npmjs.org/@babel/helper-split-export-declaration/-/helper-split-export-declaration-7.18.6.tgz", + "integrity": "sha512-bde1etTx6ZyTmobl9LLMMQsaizFVZrquTEHOqKeQESMKo4PlObf+8+JA25ZsIpZhT/WEd39+vOdLXAFG/nELpA==", + "dev": true, + "dependencies": { + "@babel/types": "^7.18.6" + }, + "engines": { + "node": ">=6.9.0" + } + }, + "node_modules/@babel/helper-string-parser": { + "version": "7.19.4", + "resolved": "https://registry.npmjs.org/@babel/helper-string-parser/-/helper-string-parser-7.19.4.tgz", + "integrity": "sha512-nHtDoQcuqFmwYNYPz3Rah5ph2p8PFeFCsZk9A/48dPc/rGocJ5J3hAAZ7pb76VWX3fZKu+uEr/FhH5jLx7umrw==", + "dev": true, + "engines": { + "node": ">=6.9.0" + } + }, + "node_modules/@babel/helper-validator-identifier": { + "version": "7.19.1", + "resolved": "https://registry.npmjs.org/@babel/helper-validator-identifier/-/helper-validator-identifier-7.19.1.tgz", + "integrity": "sha512-awrNfaMtnHUr653GgGEs++LlAvW6w+DcPrOliSMXWCKo597CwL5Acf/wWdNkf/tfEQE3mjkeD1YOVZOUV/od1w==", + "dev": true, + "engines": { + "node": ">=6.9.0" + } + }, + "node_modules/@babel/helper-validator-option": { + "version": "7.18.6", + "resolved": "https://registry.npmjs.org/@babel/helper-validator-option/-/helper-validator-option-7.18.6.tgz", + "integrity": "sha512-XO7gESt5ouv/LRJdrVjkShckw6STTaB7l9BrpBaAHDeF5YZT+01PCwmR0SJHnkW6i8OwW/EVWRShfi4j2x+KQw==", + "dev": true, + "engines": { + "node": ">=6.9.0" + } + }, + "node_modules/@babel/helpers": { + "version": "7.20.1", + "resolved": "https://registry.npmjs.org/@babel/helpers/-/helpers-7.20.1.tgz", + "integrity": "sha512-J77mUVaDTUJFZ5BpP6mMn6OIl3rEWymk2ZxDBQJUG3P+PbmyMcF3bYWvz0ma69Af1oobDqT/iAsvzhB58xhQUg==", + "dev": true, + "dependencies": { + "@babel/template": "^7.18.10", + "@babel/traverse": "^7.20.1", + "@babel/types": "^7.20.0" + }, + "engines": { + "node": ">=6.9.0" + } + }, + "node_modules/@babel/highlight": { + "version": "7.18.6", + "resolved": "https://registry.npmjs.org/@babel/highlight/-/highlight-7.18.6.tgz", + "integrity": "sha512-u7stbOuYjaPezCuLj29hNW1v64M2Md2qupEKP1fHc7WdOA3DgLh37suiSrZYY7haUB7iBeQZ9P1uiRF359do3g==", + "dev": true, + "dependencies": { + "@babel/helper-validator-identifier": "^7.18.6", + "chalk": "^2.0.0", + "js-tokens": "^4.0.0" + }, + "engines": { + "node": ">=6.9.0" + } + }, + "node_modules/@babel/highlight/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==", + "dev": true, + "dependencies": { + "ansi-styles": "^3.2.1", + "escape-string-regexp": "^1.0.5", + "supports-color": "^5.3.0" + }, + "engines": { + "node": ">=4" + } + }, + "node_modules/@babel/parser": { + "version": "7.20.3", + "resolved": "https://registry.npmjs.org/@babel/parser/-/parser-7.20.3.tgz", + "integrity": "sha512-OP/s5a94frIPXwjzEcv5S/tpQfc6XhxYUnmWpgdqMWGgYCuErA3SzozaRAMQgSZWKeTJxht9aWAkUY+0UzvOFg==", + "dev": true, + "bin": { + "parser": "bin/babel-parser.js" + }, + "engines": { + "node": ">=6.0.0" + } + }, + "node_modules/@babel/standalone": { + "version": "7.20.3", + "resolved": "https://registry.npmjs.org/@babel/standalone/-/standalone-7.20.3.tgz", + "integrity": "sha512-u6VIhdacVpqVhBhSo21TRb1zcCdnPPyBsIC2LLnLnbmuJxlLsmGMAlLh+Xcsaqko4aGZrAtXIvTaMIQtUBkE8A==", + "dev": true, + "engines": { + "node": ">=6.9.0" + } + }, + "node_modules/@babel/template": { + "version": "7.18.10", + "resolved": "https://registry.npmjs.org/@babel/template/-/template-7.18.10.tgz", + "integrity": "sha512-TI+rCtooWHr3QJ27kJxfjutghu44DLnasDMwpDqCXVTal9RLp3RSYNh4NdBrRP2cQAoG9A8juOQl6P6oZG4JxA==", + "dev": true, + "dependencies": { + "@babel/code-frame": "^7.18.6", + "@babel/parser": "^7.18.10", + "@babel/types": "^7.18.10" + }, + "engines": { + "node": ">=6.9.0" + } + }, + "node_modules/@babel/traverse": { + "version": "7.20.1", + "resolved": "https://registry.npmjs.org/@babel/traverse/-/traverse-7.20.1.tgz", + "integrity": "sha512-d3tN8fkVJwFLkHkBN479SOsw4DMZnz8cdbL/gvuDuzy3TS6Nfw80HuQqhw1pITbIruHyh7d1fMA47kWzmcUEGA==", + "dev": true, + "dependencies": { + "@babel/code-frame": "^7.18.6", + "@babel/generator": "^7.20.1", + "@babel/helper-environment-visitor": "^7.18.9", + "@babel/helper-function-name": "^7.19.0", + "@babel/helper-hoist-variables": "^7.18.6", + "@babel/helper-split-export-declaration": "^7.18.6", + "@babel/parser": "^7.20.1", + "@babel/types": "^7.20.0", + "debug": "^4.1.0", + "globals": "^11.1.0" + }, + "engines": { + "node": ">=6.9.0" + } + }, + "node_modules/@babel/types": { + "version": "7.20.2", + "resolved": "https://registry.npmjs.org/@babel/types/-/types-7.20.2.tgz", + "integrity": "sha512-FnnvsNWgZCr232sqtXggapvlkk/tuwR/qhGzcmxI0GXLCjmPYQPzio2FbdlWuY6y1sHFfQKk+rRbUZ9VStQMog==", + "dev": true, + "dependencies": { + "@babel/helper-string-parser": "^7.19.4", + "@babel/helper-validator-identifier": "^7.19.1", + "to-fast-properties": "^2.0.0" + }, + "engines": { + "node": ">=6.9.0" + } + }, + "node_modules/@esbuild/android-arm": { + "version": "0.15.13", + "resolved": "https://registry.npmjs.org/@esbuild/android-arm/-/android-arm-0.15.13.tgz", + "integrity": "sha512-RY2fVI8O0iFUNvZirXaQ1vMvK0xhCcl0gqRj74Z6yEiO1zAUa7hbsdwZM1kzqbxHK7LFyMizipfXT3JME+12Hw==", + "cpu": [ + "arm" + ], + "dev": true, + "optional": true, + "os": [ + "android" + ], + "engines": { + "node": ">=12" + } + }, + "node_modules/@esbuild/linux-loong64": { + "version": "0.15.13", + "resolved": "https://registry.npmjs.org/@esbuild/linux-loong64/-/linux-loong64-0.15.13.tgz", + "integrity": "sha512-+BoyIm4I8uJmH/QDIH0fu7MG0AEx9OXEDXnqptXCwKOlOqZiS4iraH1Nr7/ObLMokW3sOCeBNyD68ATcV9b9Ag==", + "cpu": [ + "loong64" + ], + "dev": true, + "optional": true, + "os": [ + "linux" + ], + "engines": { + "node": ">=12" + } + }, + "node_modules/@jridgewell/gen-mapping": { + "version": "0.1.1", + "resolved": "https://registry.npmjs.org/@jridgewell/gen-mapping/-/gen-mapping-0.1.1.tgz", + "integrity": "sha512-sQXCasFk+U8lWYEe66WxRDOE9PjVz4vSM51fTu3Hw+ClTpUSQb718772vH3pyS5pShp6lvQM7SxgIDXXXmOX7w==", + "dev": true, + "dependencies": { + "@jridgewell/set-array": "^1.0.0", + "@jridgewell/sourcemap-codec": "^1.4.10" + }, + "engines": { + "node": ">=6.0.0" + } + }, + "node_modules/@jridgewell/resolve-uri": { + "version": "3.1.0", + "resolved": "https://registry.npmjs.org/@jridgewell/resolve-uri/-/resolve-uri-3.1.0.tgz", + "integrity": "sha512-F2msla3tad+Mfht5cJq7LSXcdudKTWCVYUgw6pLFOOHSTtZlj6SWNYAp+AhuqLmWdBO2X5hPrLcu8cVP8fy28w==", + "dev": true, + "engines": { + "node": ">=6.0.0" + } + }, + "node_modules/@jridgewell/set-array": { + "version": "1.1.2", + "resolved": "https://registry.npmjs.org/@jridgewell/set-array/-/set-array-1.1.2.tgz", + "integrity": "sha512-xnkseuNADM0gt2bs+BvhO0p78Mk762YnZdsuzFV018NoG1Sj1SCQvpSqa7XUaTam5vAGasABV9qXASMKnFMwMw==", + "dev": true, + "engines": { + "node": ">=6.0.0" + } + }, + "node_modules/@jridgewell/sourcemap-codec": { + "version": "1.4.14", + "resolved": "https://registry.npmjs.org/@jridgewell/sourcemap-codec/-/sourcemap-codec-1.4.14.tgz", + "integrity": "sha512-XPSJHWmi394fuUuzDnGz1wiKqWfo1yXecHQMRf2l6hztTO+nPru658AyDngaBe7isIxEkRsPR3FZh+s7iVa4Uw==", + "dev": true + }, + "node_modules/@jridgewell/trace-mapping": { + "version": "0.3.17", + "resolved": "https://registry.npmjs.org/@jridgewell/trace-mapping/-/trace-mapping-0.3.17.tgz", + "integrity": "sha512-MCNzAp77qzKca9+W/+I0+sEpaUnZoeasnghNeVc41VZCEKaCH73Vq3BZZ/SzWIgrqE4H4ceI+p+b6C0mHf9T4g==", + "dev": true, + "dependencies": { + "@jridgewell/resolve-uri": "3.1.0", + "@jridgewell/sourcemap-codec": "1.4.14" + } + }, + "node_modules/@nodelib/fs.scandir": { + "version": "2.1.5", + "resolved": "https://registry.npmjs.org/@nodelib/fs.scandir/-/fs.scandir-2.1.5.tgz", + "integrity": "sha512-vq24Bq3ym5HEQm2NKCr3yXDwjc7vTsEThRDnkp2DK9p1uqLR+DHurm/NOTo0KG7HYHU7eppKZj3MyqYuMBf62g==", + "dev": true, + "dependencies": { + "@nodelib/fs.stat": "2.0.5", + "run-parallel": "^1.1.9" + }, + "engines": { + "node": ">= 8" + } + }, + "node_modules/@nodelib/fs.stat": { + "version": "2.0.5", + "resolved": "https://registry.npmjs.org/@nodelib/fs.stat/-/fs.stat-2.0.5.tgz", + "integrity": "sha512-RkhPPp2zrqDAQA/2jNhnztcPAlv64XdhIp7a7454A5ovI7Bukxgt7MX7udwAu3zg1DcpPU0rz3VV1SeaqvY4+A==", + "dev": true, + "engines": { + "node": ">= 8" + } + }, + "node_modules/@nodelib/fs.walk": { + "version": "1.2.8", + "resolved": "https://registry.npmjs.org/@nodelib/fs.walk/-/fs.walk-1.2.8.tgz", + "integrity": "sha512-oGB+UxlgWcgQkgwo8GcEGwemoTFt3FIO9ababBmaGwXIoBKZ+GTy0pP185beGg7Llih/NSHSV2XAs1lnznocSg==", + "dev": true, + "dependencies": { + "@nodelib/fs.scandir": "2.1.5", + "fastq": "^1.6.0" + }, + "engines": { + "node": ">= 8" + } + }, + "node_modules/@rollup/plugin-alias": { + "version": "4.0.2", + "resolved": "https://registry.npmjs.org/@rollup/plugin-alias/-/plugin-alias-4.0.2.tgz", + "integrity": "sha512-1hv7dBOZZwo3SEupxn4UA2N0EDThqSSS+wI1St1TNTBtOZvUchyIClyHcnDcjjrReTPZ47Faedrhblv4n+T5UQ==", + "dev": true, + "dependencies": { + "slash": "^4.0.0" + }, + "engines": { + "node": ">=14.0.0" + }, + "peerDependencies": { + "rollup": "^1.20.0||^2.0.0||^3.0.0" + }, + "peerDependenciesMeta": { + "rollup": { + "optional": true + } + } + }, + "node_modules/@rollup/plugin-commonjs": { + "version": "23.0.2", + "resolved": "https://registry.npmjs.org/@rollup/plugin-commonjs/-/plugin-commonjs-23.0.2.tgz", + "integrity": "sha512-e9ThuiRf93YlVxc4qNIurvv+Hp9dnD+4PjOqQs5vAYfcZ3+AXSrcdzXnVjWxcGQOa6KGJFcRZyUI3ktWLavFjg==", + "dev": true, + "dependencies": { + "@rollup/pluginutils": "^5.0.1", + "commondir": "^1.0.1", + "estree-walker": "^2.0.2", + "glob": "^8.0.3", + "is-reference": "1.2.1", + "magic-string": "^0.26.4" + }, + "engines": { + "node": ">=14.0.0" + }, + "peerDependencies": { + "rollup": "^2.68.0||^3.0.0" + }, + "peerDependenciesMeta": { + "rollup": { + "optional": true + } + } + }, + "node_modules/@rollup/plugin-commonjs/node_modules/brace-expansion": { + "version": "2.0.1", + "resolved": "https://registry.npmjs.org/brace-expansion/-/brace-expansion-2.0.1.tgz", + "integrity": "sha512-XnAIvQ8eM+kC6aULx6wuQiwVsnzsi9d3WxzV3FpWTGA19F621kwdbsAcFKXgKUHZWsy+mY6iL1sHTxWEFCytDA==", + "dev": true, + "dependencies": { + "balanced-match": "^1.0.0" + } + }, + "node_modules/@rollup/plugin-commonjs/node_modules/glob": { + "version": "8.0.3", + "resolved": "https://registry.npmjs.org/glob/-/glob-8.0.3.tgz", + "integrity": "sha512-ull455NHSHI/Y1FqGaaYFaLGkNMMJbavMrEGFXG/PGrg6y7sutWHUHrz6gy6WEBH6akM1M414dWKCNs+IhKdiQ==", + "dev": true, + "dependencies": { + "fs.realpath": "^1.0.0", + "inflight": "^1.0.4", + "inherits": "2", + "minimatch": "^5.0.1", + "once": "^1.3.0" + }, + "engines": { + "node": ">=12" + }, + "funding": { + "url": "https://github.com/sponsors/isaacs" + } + }, + "node_modules/@rollup/plugin-commonjs/node_modules/minimatch": { + "version": "5.1.0", + "resolved": "https://registry.npmjs.org/minimatch/-/minimatch-5.1.0.tgz", + "integrity": "sha512-9TPBGGak4nHfGZsPBohm9AWg6NoT7QTCehS3BIJABslyZbzxfV78QM2Y6+i741OPZIafFAaiiEMh5OyIrJPgtg==", + "dev": true, + "dependencies": { + "brace-expansion": "^2.0.1" + }, + "engines": { + "node": ">=10" + } + }, + "node_modules/@rollup/plugin-json": { + "version": "5.0.1", + "resolved": "https://registry.npmjs.org/@rollup/plugin-json/-/plugin-json-5.0.1.tgz", + "integrity": "sha512-QCwhZZLvM8nRcTHyR1vOgyTMiAnjiNj1ebD/BMRvbO1oc/z14lZH6PfxXeegee2B6mky/u9fia4fxRM4TqrUaw==", + "dev": true, + "dependencies": { + "@rollup/pluginutils": "^5.0.1" + }, + "engines": { + "node": ">=14.0.0" + }, + "peerDependencies": { + "rollup": "^1.20.0||^2.0.0||^3.0.0" + }, + "peerDependenciesMeta": { + "rollup": { + "optional": true + } + } + }, + "node_modules/@rollup/plugin-node-resolve": { + "version": "15.0.1", + "resolved": "https://registry.npmjs.org/@rollup/plugin-node-resolve/-/plugin-node-resolve-15.0.1.tgz", + "integrity": "sha512-ReY88T7JhJjeRVbfCyNj+NXAG3IIsVMsX9b5/9jC98dRP8/yxlZdz7mHZbHk5zHr24wZZICS5AcXsFZAXYUQEg==", + "dev": true, + "dependencies": { + "@rollup/pluginutils": "^5.0.1", + "@types/resolve": "1.20.2", + "deepmerge": "^4.2.2", + "is-builtin-module": "^3.2.0", + "is-module": "^1.0.0", + "resolve": "^1.22.1" + }, + "engines": { + "node": ">=14.0.0" + }, + "peerDependencies": { + "rollup": "^2.78.0||^3.0.0" + }, + "peerDependenciesMeta": { + "rollup": { + "optional": true + } + } + }, + "node_modules/@rollup/plugin-replace": { + "version": "5.0.1", + "resolved": "https://registry.npmjs.org/@rollup/plugin-replace/-/plugin-replace-5.0.1.tgz", + "integrity": "sha512-Z3MfsJ4CK17BfGrZgvrcp/l6WXoKb0kokULO+zt/7bmcyayokDaQ2K3eDJcRLCTAlp5FPI4/gz9MHAsosz4Rag==", + "dev": true, + "dependencies": { + "@rollup/pluginutils": "^5.0.1", + "magic-string": "^0.26.4" + }, + "engines": { + "node": ">=14.0.0" + }, + "peerDependencies": { + "rollup": "^1.20.0||^2.0.0||^3.0.0" + }, + "peerDependenciesMeta": { + "rollup": { + "optional": true + } + } + }, + "node_modules/@rollup/pluginutils": { + "version": "5.0.2", + "resolved": "https://registry.npmjs.org/@rollup/pluginutils/-/pluginutils-5.0.2.tgz", + "integrity": "sha512-pTd9rIsP92h+B6wWwFbW8RkZv4hiR/xKsqre4SIuAOaOEQRxi0lqLke9k2/7WegC85GgUs9pjmOjCUi3In4vwA==", + "dev": true, + "dependencies": { + "@types/estree": "^1.0.0", + "estree-walker": "^2.0.2", + "picomatch": "^2.3.1" + }, + "engines": { + "node": ">=14.0.0" + }, + "peerDependencies": { + "rollup": "^1.20.0||^2.0.0||^3.0.0" + }, + "peerDependenciesMeta": { + "rollup": { + "optional": true + } + } + }, + "node_modules/@types/estree": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/@types/estree/-/estree-1.0.0.tgz", + "integrity": "sha512-WulqXMDUTYAXCjZnk6JtIHPigp55cVtDgDrO2gHRwhyJto21+1zbVCtOYB2L1F9w4qCQ0rOGWBnBe0FNTiEJIQ==", + "dev": true + }, + "node_modules/@types/resolve": { + "version": "1.20.2", + "resolved": "https://registry.npmjs.org/@types/resolve/-/resolve-1.20.2.tgz", + "integrity": "sha512-60BCwRFOZCQhDncwQdxxeOEEkbc5dIMccYLwbxsS4TUNeVECQ/pBJ0j09mrHOl/JJvpRPGwO9SvE4nR2Nb/a4Q==", + "dev": true + }, + "node_modules/acorn": { + "version": "8.8.1", + "resolved": "https://registry.npmjs.org/acorn/-/acorn-8.8.1.tgz", + "integrity": "sha512-7zFpHzhnqYKrkYdUjF1HI1bzd0VygEGX8lFk4k5zVMqHEoES+P+7TKI+EvLO9WVMJ8eekdO0aDEK044xTXwPPA==", + "dev": true, + "bin": { + "acorn": "bin/acorn" + }, + "engines": { + "node": ">=0.4.0" + } + }, + "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==", + "dev": true, + "dependencies": { + "color-convert": "^1.9.0" + }, + "engines": { + "node": ">=4" + } + }, + "node_modules/array-union": { + "version": "2.1.0", + "resolved": "https://registry.npmjs.org/array-union/-/array-union-2.1.0.tgz", + "integrity": "sha512-HGyxoOTYUyCM6stUe6EJgnd4EoewAI7zMdfqO+kGjnlZmBDz/cR5pf8r/cR4Wq60sL/p0IkcjUEEPwS3GFrIyw==", + "dev": true, + "engines": { + "node": ">=8" + } + }, + "node_modules/auto-changelog": { + "version": "2.4.0", + "resolved": "https://registry.npmjs.org/auto-changelog/-/auto-changelog-2.4.0.tgz", + "integrity": "sha512-vh17hko1c0ItsEcw6m7qPRf3m45u+XK5QyCrrBFViElZ8jnKrPC1roSznrd1fIB/0vR/zawdECCRJtTuqIXaJw==", + "dev": true, + "dependencies": { + "commander": "^7.2.0", + "handlebars": "^4.7.7", + "node-fetch": "^2.6.1", + "parse-github-url": "^1.0.2", + "semver": "^7.3.5" + }, + "bin": { + "auto-changelog": "src/index.js" + }, + "engines": { + "node": ">=8.3" + } + }, + "node_modules/balanced-match": { + "version": "1.0.2", + "resolved": "https://registry.npmjs.org/balanced-match/-/balanced-match-1.0.2.tgz", + "integrity": "sha512-3oSeUO0TMV67hN1AmbXsK4yaqU7tjiHlbxRDZOpH0KW9+CeX4bRAaX0Anxt0tx2MrpRpWwQaPwIlISEJhYU5Pw==", + "dev": true + }, + "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==", + "dev": true, + "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==", + "dev": true, + "dependencies": { + "fill-range": "^7.0.1" + }, + "engines": { + "node": ">=8" + } + }, + "node_modules/browserslist": { + "version": "4.21.4", + "resolved": "https://registry.npmjs.org/browserslist/-/browserslist-4.21.4.tgz", + "integrity": "sha512-CBHJJdDmgjl3daYjN5Cp5kbTf1mUhZoS+beLklHIvkOWscs83YAhLlF3Wsh/lciQYAcbBJgTOD44VtG31ZM4Hw==", + "dev": true, + "funding": [ + { + "type": "opencollective", + "url": "https://opencollective.com/browserslist" + }, + { + "type": "tidelift", + "url": "https://tidelift.com/funding/github/npm/browserslist" + } + ], + "dependencies": { + "caniuse-lite": "^1.0.30001400", + "electron-to-chromium": "^1.4.251", + "node-releases": "^2.0.6", + "update-browserslist-db": "^1.0.9" + }, + "bin": { + "browserslist": "cli.js" + }, + "engines": { + "node": "^6 || ^7 || ^8 || ^9 || ^10 || ^11 || ^12 || >=13.7" + } + }, + "node_modules/builtin-modules": { + "version": "3.3.0", + "resolved": "https://registry.npmjs.org/builtin-modules/-/builtin-modules-3.3.0.tgz", + "integrity": "sha512-zhaCDicdLuWN5UbN5IMnFqNMhNfo919sH85y2/ea+5Yg9TsTkeZxpL+JLbp6cgYFS4sRLp3YV4S6yDuqVWHYOw==", + "dev": true, + "engines": { + "node": ">=6" + }, + "funding": { + "url": "https://github.com/sponsors/sindresorhus" + } + }, + "node_modules/caniuse-lite": { + "version": "1.0.30001431", + "resolved": "https://registry.npmjs.org/caniuse-lite/-/caniuse-lite-1.0.30001431.tgz", + "integrity": "sha512-zBUoFU0ZcxpvSt9IU66dXVT/3ctO1cy4y9cscs1szkPlcWb6pasYM144GqrUygUbT+k7cmUCW61cvskjcv0enQ==", + "dev": true, + "funding": [ + { + "type": "opencollective", + "url": "https://opencollective.com/browserslist" + }, + { + "type": "tidelift", + "url": "https://tidelift.com/funding/github/npm/caniuse-lite" + } + ] + }, + "node_modules/chalk": { + "version": "5.1.2", + "resolved": "https://registry.npmjs.org/chalk/-/chalk-5.1.2.tgz", + "integrity": "sha512-E5CkT4jWURs1Vy5qGJye+XwCkNj7Od3Af7CP6SujMetSMkLs8Do2RWJK5yx1wamHV/op8Rz+9rltjaTQWDnEFQ==", + "dev": true, + "engines": { + "node": "^12.17.0 || ^14.13 || >=16.0.0" + }, + "funding": { + "url": "https://github.com/chalk/chalk?sponsor=1" + } + }, + "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==", + "dev": true, + "dependencies": { + "color-name": "1.1.3" + } + }, + "node_modules/color-name": { + "version": "1.1.3", + "resolved": "https://registry.npmjs.org/color-name/-/color-name-1.1.3.tgz", + "integrity": "sha512-72fSenhMw2HZMTVHeCA9KCmpEIbzWiQsjN+BHcBbS9vr1mtt+vJjPdksIBNUmKAW8TFUDPJK5SUU3QhE9NEXDw==", + "dev": true + }, + "node_modules/commander": { + "version": "7.2.0", + "resolved": "https://registry.npmjs.org/commander/-/commander-7.2.0.tgz", + "integrity": "sha512-QrWXB+ZQSVPmIWIhtEO9H+gwHaMGYiF5ChvoJ+K9ZGHG/sVsa6yiesAD1GC/x46sET00Xlwo1u49RVVVzvcSkw==", + "dev": true, + "engines": { + "node": ">= 10" + } + }, + "node_modules/commondir": { + "version": "1.0.1", + "resolved": "https://registry.npmjs.org/commondir/-/commondir-1.0.1.tgz", + "integrity": "sha512-W9pAhw0ja1Edb5GVdIF1mjZw/ASI0AlShXM83UUGe2DVr5TdAPEA1OA8m/g8zWp9x6On7gqufY+FatDbC3MDQg==", + "dev": true + }, + "node_modules/concat-map": { + "version": "0.0.1", + "resolved": "https://registry.npmjs.org/concat-map/-/concat-map-0.0.1.tgz", + "integrity": "sha512-/Srv4dswyQNBfohGpz9o6Yb3Gz3SrUDqBH5rTuhGR7ahtlbYKnVxw2bCFMRljaA7EXHaXZ8wsHdodFvbkhKmqg==", + "dev": true + }, + "node_modules/consola": { + "version": "2.15.3", + "resolved": "https://registry.npmjs.org/consola/-/consola-2.15.3.tgz", + "integrity": "sha512-9vAdYbHj6x2fLKC4+oPH0kFzY/orMZyG2Aj+kNylHxKGJ/Ed4dpNyAQYwJOdqO4zdM7XpVHmyejQDcQHrnuXbw==", + "dev": true + }, + "node_modules/convert-source-map": { + "version": "1.9.0", + "resolved": "https://registry.npmjs.org/convert-source-map/-/convert-source-map-1.9.0.tgz", + "integrity": "sha512-ASFBup0Mz1uyiIjANan1jzLQami9z1PoYSZCiiYW2FczPbenXc45FZdBZLzOT+r6+iciuEModtmCti+hjaAk0A==", + "dev": true + }, + "node_modules/cross-spawn": { + "version": "7.0.3", + "resolved": "https://registry.npmjs.org/cross-spawn/-/cross-spawn-7.0.3.tgz", + "integrity": "sha512-iRDPJKUPVEND7dHPO8rkbOnPpyDygcDFtWjpeWNCgy8WP2rXcxXL8TskReQl6OrB2G7+UJrags1q15Fudc7G6w==", + "dev": true, + "dependencies": { + "path-key": "^3.1.0", + "shebang-command": "^2.0.0", + "which": "^2.0.1" + }, + "engines": { + "node": ">= 8" + } + }, + "node_modules/debug": { + "version": "4.3.4", + "resolved": "https://registry.npmjs.org/debug/-/debug-4.3.4.tgz", + "integrity": "sha512-PRWFHuSU3eDtQJPvnNY7Jcket1j0t5OuOsFzPPzsekD52Zl8qUfFIPEiswXqIvHWGVHOgX+7G/vCNNhehwxfkQ==", + "dev": true, + "dependencies": { + "ms": "2.1.2" + }, + "engines": { + "node": ">=6.0" + }, + "peerDependenciesMeta": { + "supports-color": { + "optional": true + } + } + }, + "node_modules/deepmerge": { + "version": "4.2.2", + "resolved": "https://registry.npmjs.org/deepmerge/-/deepmerge-4.2.2.tgz", + "integrity": "sha512-FJ3UgI4gIl+PHZm53knsuSFpE+nESMr7M4v9QcgB7S63Kj/6WqMiFQJpBBYz1Pt+66bZpP3Q7Lye0Oo9MPKEdg==", + "dev": true, + "engines": { + "node": ">=0.10.0" + } + }, + "node_modules/defu": { + "version": "6.1.0", + "resolved": "https://registry.npmjs.org/defu/-/defu-6.1.0.tgz", + "integrity": "sha512-pOFYRTIhoKujrmbTRhcW5lYQLBXw/dlTwfI8IguF1QCDJOcJzNH1w+YFjxqy6BAuJrClTy6MUE8q+oKJ2FLsIw==", + "dev": true + }, + "node_modules/dir-glob": { + "version": "3.0.1", + "resolved": "https://registry.npmjs.org/dir-glob/-/dir-glob-3.0.1.tgz", + "integrity": "sha512-WkrWp9GR4KXfKGYzOLmTuGVi1UWFfws377n9cc55/tb6DuqyF6pcQ5AbiHEshaDpY9v6oaSr2XCDidGmMwdzIA==", + "dev": true, + "dependencies": { + "path-type": "^4.0.0" + }, + "engines": { + "node": ">=8" + } + }, + "node_modules/electron-to-chromium": { + "version": "1.4.284", + "resolved": "https://registry.npmjs.org/electron-to-chromium/-/electron-to-chromium-1.4.284.tgz", + "integrity": "sha512-M8WEXFuKXMYMVr45fo8mq0wUrrJHheiKZf6BArTKk9ZBYCKJEOU5H8cdWgDT+qCVZf7Na4lVUaZsA+h6uA9+PA==", + "dev": true + }, + "node_modules/esbuild": { + "version": "0.15.13", + "resolved": "https://registry.npmjs.org/esbuild/-/esbuild-0.15.13.tgz", + "integrity": "sha512-Cu3SC84oyzzhrK/YyN4iEVy2jZu5t2fz66HEOShHURcjSkOSAVL8C/gfUT+lDJxkVHpg8GZ10DD0rMHRPqMFaQ==", + "dev": true, + "hasInstallScript": true, + "bin": { + "esbuild": "bin/esbuild" + }, + "engines": { + "node": ">=12" + }, + "optionalDependencies": { + "@esbuild/android-arm": "0.15.13", + "@esbuild/linux-loong64": "0.15.13", + "esbuild-android-64": "0.15.13", + "esbuild-android-arm64": "0.15.13", + "esbuild-darwin-64": "0.15.13", + "esbuild-darwin-arm64": "0.15.13", + "esbuild-freebsd-64": "0.15.13", + "esbuild-freebsd-arm64": "0.15.13", + "esbuild-linux-32": "0.15.13", + "esbuild-linux-64": "0.15.13", + "esbuild-linux-arm": "0.15.13", + "esbuild-linux-arm64": "0.15.13", + "esbuild-linux-mips64le": "0.15.13", + "esbuild-linux-ppc64le": "0.15.13", + "esbuild-linux-riscv64": "0.15.13", + "esbuild-linux-s390x": "0.15.13", + "esbuild-netbsd-64": "0.15.13", + "esbuild-openbsd-64": "0.15.13", + "esbuild-sunos-64": "0.15.13", + "esbuild-windows-32": "0.15.13", + "esbuild-windows-64": "0.15.13", + "esbuild-windows-arm64": "0.15.13" + } + }, + "node_modules/esbuild-android-64": { + "version": "0.15.13", + "resolved": "https://registry.npmjs.org/esbuild-android-64/-/esbuild-android-64-0.15.13.tgz", + "integrity": "sha512-yRorukXBlokwTip+Sy4MYskLhJsO0Kn0/Fj43s1krVblfwP+hMD37a4Wmg139GEsMLl+vh8WXp2mq/cTA9J97g==", + "cpu": [ + "x64" + ], + "dev": true, + "optional": true, + "os": [ + "android" + ], + "engines": { + "node": ">=12" + } + }, + "node_modules/esbuild-android-arm64": { + "version": "0.15.13", + "resolved": "https://registry.npmjs.org/esbuild-android-arm64/-/esbuild-android-arm64-0.15.13.tgz", + "integrity": "sha512-TKzyymLD6PiVeyYa4c5wdPw87BeAiTXNtK6amWUcXZxkV51gOk5u5qzmDaYSwiWeecSNHamFsaFjLoi32QR5/w==", + "cpu": [ + "arm64" + ], + "dev": true, + "optional": true, + "os": [ + "android" + ], + "engines": { + "node": ">=12" + } + }, + "node_modules/esbuild-darwin-64": { + "version": "0.15.13", + "resolved": "https://registry.npmjs.org/esbuild-darwin-64/-/esbuild-darwin-64-0.15.13.tgz", + "integrity": "sha512-WAx7c2DaOS6CrRcoYCgXgkXDliLnFv3pQLV6GeW1YcGEZq2Gnl8s9Pg7ahValZkpOa0iE/ojRVQ87sbUhF1Cbg==", + "cpu": [ + "x64" + ], + "dev": true, + "optional": true, + "os": [ + "darwin" + ], + "engines": { + "node": ">=12" + } + }, + "node_modules/esbuild-darwin-arm64": { + "version": "0.15.13", + "resolved": "https://registry.npmjs.org/esbuild-darwin-arm64/-/esbuild-darwin-arm64-0.15.13.tgz", + "integrity": "sha512-U6jFsPfSSxC3V1CLiQqwvDuj3GGrtQNB3P3nNC3+q99EKf94UGpsG9l4CQ83zBs1NHrk1rtCSYT0+KfK5LsD8A==", + "cpu": [ + "arm64" + ], + "dev": true, + "optional": true, + "os": [ + "darwin" + ], + "engines": { + "node": ">=12" + } + }, + "node_modules/esbuild-freebsd-64": { + "version": "0.15.13", + "resolved": "https://registry.npmjs.org/esbuild-freebsd-64/-/esbuild-freebsd-64-0.15.13.tgz", + "integrity": "sha512-whItJgDiOXaDG/idy75qqevIpZjnReZkMGCgQaBWZuKHoElDJC1rh7MpoUgupMcdfOd+PgdEwNQW9DAE6i8wyA==", + "cpu": [ + "x64" + ], + "dev": true, + "optional": true, + "os": [ + "freebsd" + ], + "engines": { + "node": ">=12" + } + }, + "node_modules/esbuild-freebsd-arm64": { + "version": "0.15.13", + "resolved": "https://registry.npmjs.org/esbuild-freebsd-arm64/-/esbuild-freebsd-arm64-0.15.13.tgz", + "integrity": "sha512-6pCSWt8mLUbPtygv7cufV0sZLeylaMwS5Fznj6Rsx9G2AJJsAjQ9ifA+0rQEIg7DwJmi9it+WjzNTEAzzdoM3Q==", + "cpu": [ + "arm64" + ], + "dev": true, + "optional": true, + "os": [ + "freebsd" + ], + "engines": { + "node": ">=12" + } + }, + "node_modules/esbuild-linux-32": { + "version": "0.15.13", + "resolved": "https://registry.npmjs.org/esbuild-linux-32/-/esbuild-linux-32-0.15.13.tgz", + "integrity": "sha512-VbZdWOEdrJiYApm2kkxoTOgsoCO1krBZ3quHdYk3g3ivWaMwNIVPIfEE0f0XQQ0u5pJtBsnk2/7OPiCFIPOe/w==", + "cpu": [ + "ia32" + ], + "dev": true, + "optional": true, + "os": [ + "linux" + ], + "engines": { + "node": ">=12" + } + }, + "node_modules/esbuild-linux-64": { + "version": "0.15.13", + "resolved": "https://registry.npmjs.org/esbuild-linux-64/-/esbuild-linux-64-0.15.13.tgz", + "integrity": "sha512-rXmnArVNio6yANSqDQlIO4WiP+Cv7+9EuAHNnag7rByAqFVuRusLbGi2697A5dFPNXoO//IiogVwi3AdcfPC6A==", + "cpu": [ + "x64" + ], + "dev": true, + "optional": true, + "os": [ + "linux" + ], + "engines": { + "node": ">=12" + } + }, + "node_modules/esbuild-linux-arm": { + "version": "0.15.13", + "resolved": "https://registry.npmjs.org/esbuild-linux-arm/-/esbuild-linux-arm-0.15.13.tgz", + "integrity": "sha512-Ac6LpfmJO8WhCMQmO253xX2IU2B3wPDbl4IvR0hnqcPrdfCaUa2j/lLMGTjmQ4W5JsJIdHEdW12dG8lFS0MbxQ==", + "cpu": [ + "arm" + ], + "dev": true, + "optional": true, + "os": [ + "linux" + ], + "engines": { + "node": ">=12" + } + }, + "node_modules/esbuild-linux-arm64": { + "version": "0.15.13", + "resolved": "https://registry.npmjs.org/esbuild-linux-arm64/-/esbuild-linux-arm64-0.15.13.tgz", + "integrity": "sha512-alEMGU4Z+d17U7KQQw2IV8tQycO6T+rOrgW8OS22Ua25x6kHxoG6Ngry6Aq6uranC+pNWNMB6aHFPh7aTQdORQ==", + "cpu": [ + "arm64" + ], + "dev": true, + "optional": true, + "os": [ + "linux" + ], + "engines": { + "node": ">=12" + } + }, + "node_modules/esbuild-linux-mips64le": { + "version": "0.15.13", + "resolved": "https://registry.npmjs.org/esbuild-linux-mips64le/-/esbuild-linux-mips64le-0.15.13.tgz", + "integrity": "sha512-47PgmyYEu+yN5rD/MbwS6DxP2FSGPo4Uxg5LwIdxTiyGC2XKwHhHyW7YYEDlSuXLQXEdTO7mYe8zQ74czP7W8A==", + "cpu": [ + "mips64el" + ], + "dev": true, + "optional": true, + "os": [ + "linux" + ], + "engines": { + "node": ">=12" + } + }, + "node_modules/esbuild-linux-ppc64le": { + "version": "0.15.13", + "resolved": "https://registry.npmjs.org/esbuild-linux-ppc64le/-/esbuild-linux-ppc64le-0.15.13.tgz", + "integrity": "sha512-z6n28h2+PC1Ayle9DjKoBRcx/4cxHoOa2e689e2aDJSaKug3jXcQw7mM+GLg+9ydYoNzj8QxNL8ihOv/OnezhA==", + "cpu": [ + "ppc64" + ], + "dev": true, + "optional": true, + "os": [ + "linux" + ], + "engines": { + "node": ">=12" + } + }, + "node_modules/esbuild-linux-riscv64": { + "version": "0.15.13", + "resolved": "https://registry.npmjs.org/esbuild-linux-riscv64/-/esbuild-linux-riscv64-0.15.13.tgz", + "integrity": "sha512-+Lu4zuuXuQhgLUGyZloWCqTslcCAjMZH1k3Xc9MSEJEpEFdpsSU0sRDXAnk18FKOfEjhu4YMGaykx9xjtpA6ow==", + "cpu": [ + "riscv64" + ], + "dev": true, + "optional": true, + "os": [ + "linux" + ], + "engines": { + "node": ">=12" + } + }, + "node_modules/esbuild-linux-s390x": { + "version": "0.15.13", + "resolved": "https://registry.npmjs.org/esbuild-linux-s390x/-/esbuild-linux-s390x-0.15.13.tgz", + "integrity": "sha512-BMeXRljruf7J0TMxD5CIXS65y7puiZkAh+s4XFV9qy16SxOuMhxhVIXYLnbdfLrsYGFzx7U9mcdpFWkkvy/Uag==", + "cpu": [ + "s390x" + ], + "dev": true, + "optional": true, + "os": [ + "linux" + ], + "engines": { + "node": ">=12" + } + }, + "node_modules/esbuild-netbsd-64": { + "version": "0.15.13", + "resolved": "https://registry.npmjs.org/esbuild-netbsd-64/-/esbuild-netbsd-64-0.15.13.tgz", + "integrity": "sha512-EHj9QZOTel581JPj7UO3xYbltFTYnHy+SIqJVq6yd3KkCrsHRbapiPb0Lx3EOOtybBEE9EyqbmfW1NlSDsSzvQ==", + "cpu": [ + "x64" + ], + "dev": true, + "optional": true, + "os": [ + "netbsd" + ], + "engines": { + "node": ">=12" + } + }, + "node_modules/esbuild-openbsd-64": { + "version": "0.15.13", + "resolved": "https://registry.npmjs.org/esbuild-openbsd-64/-/esbuild-openbsd-64-0.15.13.tgz", + "integrity": "sha512-nkuDlIjF/sfUhfx8SKq0+U+Fgx5K9JcPq1mUodnxI0x4kBdCv46rOGWbuJ6eof2n3wdoCLccOoJAbg9ba/bT2w==", + "cpu": [ + "x64" + ], + "dev": true, + "optional": true, + "os": [ + "openbsd" + ], + "engines": { + "node": ">=12" + } + }, + "node_modules/esbuild-sunos-64": { + "version": "0.15.13", + "resolved": "https://registry.npmjs.org/esbuild-sunos-64/-/esbuild-sunos-64-0.15.13.tgz", + "integrity": "sha512-jVeu2GfxZQ++6lRdY43CS0Tm/r4WuQQ0Pdsrxbw+aOrHQPHV0+LNOLnvbN28M7BSUGnJnHkHm2HozGgNGyeIRw==", + "cpu": [ + "x64" + ], + "dev": true, + "optional": true, + "os": [ + "sunos" + ], + "engines": { + "node": ">=12" + } + }, + "node_modules/esbuild-windows-32": { + "version": "0.15.13", + "resolved": "https://registry.npmjs.org/esbuild-windows-32/-/esbuild-windows-32-0.15.13.tgz", + "integrity": "sha512-XoF2iBf0wnqo16SDq+aDGi/+QbaLFpkiRarPVssMh9KYbFNCqPLlGAWwDvxEVz+ywX6Si37J2AKm+AXq1kC0JA==", + "cpu": [ + "ia32" + ], + "dev": true, + "optional": true, + "os": [ + "win32" + ], + "engines": { + "node": ">=12" + } + }, + "node_modules/esbuild-windows-64": { + "version": "0.15.13", + "resolved": "https://registry.npmjs.org/esbuild-windows-64/-/esbuild-windows-64-0.15.13.tgz", + "integrity": "sha512-Et6htEfGycjDrtqb2ng6nT+baesZPYQIW+HUEHK4D1ncggNrDNk3yoboYQ5KtiVrw/JaDMNttz8rrPubV/fvPQ==", + "cpu": [ + "x64" + ], + "dev": true, + "optional": true, + "os": [ + "win32" + ], + "engines": { + "node": ">=12" + } + }, + "node_modules/esbuild-windows-arm64": { + "version": "0.15.13", + "resolved": "https://registry.npmjs.org/esbuild-windows-arm64/-/esbuild-windows-arm64-0.15.13.tgz", + "integrity": "sha512-3bv7tqntThQC9SWLRouMDmZnlOukBhOCTlkzNqzGCmrkCJI7io5LLjwJBOVY6kOUlIvdxbooNZwjtBvj+7uuVg==", + "cpu": [ + "arm64" + ], + "dev": true, + "optional": true, + "os": [ + "win32" + ], + "engines": { + "node": ">=12" + } + }, + "node_modules/escalade": { + "version": "3.1.1", + "resolved": "https://registry.npmjs.org/escalade/-/escalade-3.1.1.tgz", + "integrity": "sha512-k0er2gUkLf8O0zKJiAhmkTnJlTvINGv7ygDNPbeIsX/TJjGJZHuh9B2UxbsaEkmlEo9MfhrSzmhIlhRlI2GXnw==", + "dev": true, + "engines": { + "node": ">=6" + } + }, + "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": "sha512-vbRorB5FUQWvla16U8R/qgaFIya2qGzwDrNmCZuYKrbdSUMG6I1ZCGQRefkRVhuOkIGVne7BQ35DSfo1qvJqFg==", + "dev": true, + "engines": { + "node": ">=0.8.0" + } + }, + "node_modules/estree-walker": { + "version": "2.0.2", + "resolved": "https://registry.npmjs.org/estree-walker/-/estree-walker-2.0.2.tgz", + "integrity": "sha512-Rfkk/Mp/DL7JVje3u18FxFujQlTNR2q6QfMSMB7AvCBx91NGj/ba3kCfza0f6dVDbw7YlRf/nDrn7pQrCCyQ/w==", + "dev": true + }, + "node_modules/fast-glob": { + "version": "3.2.12", + "resolved": "https://registry.npmjs.org/fast-glob/-/fast-glob-3.2.12.tgz", + "integrity": "sha512-DVj4CQIYYow0BlaelwK1pHl5n5cRSJfM60UA0zK891sVInoPri2Ekj7+e1CT3/3qxXenpI+nBBmQAcJPJgaj4w==", + "dev": true, + "dependencies": { + "@nodelib/fs.stat": "^2.0.2", + "@nodelib/fs.walk": "^1.2.3", + "glob-parent": "^5.1.2", + "merge2": "^1.3.0", + "micromatch": "^4.0.4" + }, + "engines": { + "node": ">=8.6.0" + } + }, + "node_modules/fastq": { + "version": "1.13.0", + "resolved": "https://registry.npmjs.org/fastq/-/fastq-1.13.0.tgz", + "integrity": "sha512-YpkpUnK8od0o1hmeSc7UUs/eB/vIPWJYjKck2QKIzAf71Vm1AAQ3EbuZB3g2JIy+pg+ERD0vqI79KyZiB2e2Nw==", + "dev": true, + "dependencies": { + "reusify": "^1.0.4" + } + }, + "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==", + "dev": true, + "dependencies": { + "to-regex-range": "^5.0.1" + }, + "engines": { + "node": ">=8" + } + }, + "node_modules/fs-extra": { + "version": "10.1.0", + "resolved": "https://registry.npmjs.org/fs-extra/-/fs-extra-10.1.0.tgz", + "integrity": "sha512-oRXApq54ETRj4eMiFzGnHWGy+zo5raudjuxN0b8H7s/RU2oW0Wvsx9O0ACRN/kRq9E8Vu/ReskGB5o3ji+FzHQ==", + "dev": true, + "dependencies": { + "graceful-fs": "^4.2.0", + "jsonfile": "^6.0.1", + "universalify": "^2.0.0" + }, + "engines": { + "node": ">=12" + } + }, + "node_modules/fs.realpath": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/fs.realpath/-/fs.realpath-1.0.0.tgz", + "integrity": "sha512-OO0pH2lK6a0hZnAdau5ItzHPI6pUlvI7jMVnxUQRtw4owF2wk8lOSabtGDCTP4Ggrg2MbGnWO9X8K1t4+fGMDw==", + "dev": true + }, + "node_modules/fsevents": { + "version": "2.3.2", + "resolved": "https://registry.npmjs.org/fsevents/-/fsevents-2.3.2.tgz", + "integrity": "sha512-xiqMQR4xAeHTuB9uWm+fFRcIOgKBMiOBP+eXiyT7jsgVCq1bkVygt00oASowB7EdtpOHaaPgKt812P9ab+DDKA==", + "dev": true, + "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==", + "dev": true + }, + "node_modules/gensync": { + "version": "1.0.0-beta.2", + "resolved": "https://registry.npmjs.org/gensync/-/gensync-1.0.0-beta.2.tgz", + "integrity": "sha512-3hN7NaskYvMDLQY55gnW3NQ+mesEAepTqlg+VEbj7zzqEMBVNhzcGYYeqFo/TlYz6eQiFcp1HcsCZO+nGgS8zg==", + "dev": true, + "engines": { + "node": ">=6.9.0" + } + }, + "node_modules/glob": { + "version": "7.2.3", + "resolved": "https://registry.npmjs.org/glob/-/glob-7.2.3.tgz", + "integrity": "sha512-nFR0zLpU2YCaRxwoCJvL6UvCH2JFyFVIvwTLsIf21AuHlMskA1hhTdk+LlYJtOlYt9v6dvszD2BGRqBL+iQK9Q==", + "dev": true, + "dependencies": { + "fs.realpath": "^1.0.0", + "inflight": "^1.0.4", + "inherits": "2", + "minimatch": "^3.1.1", + "once": "^1.3.0", + "path-is-absolute": "^1.0.0" + }, + "engines": { + "node": "*" + }, + "funding": { + "url": "https://github.com/sponsors/isaacs" + } + }, + "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==", + "dev": true, + "dependencies": { + "is-glob": "^4.0.1" + }, + "engines": { + "node": ">= 6" + } + }, + "node_modules/globals": { + "version": "11.12.0", + "resolved": "https://registry.npmjs.org/globals/-/globals-11.12.0.tgz", + "integrity": "sha512-WOBp/EEGUiIsJSp7wcv/y6MO+lV9UoncWqxuFfm8eBwzWNgyfBd6Gz+IeKQ9jCmyhoH99g15M3T+QaVHFjizVA==", + "dev": true, + "engines": { + "node": ">=4" + } + }, + "node_modules/globby": { + "version": "13.1.2", + "resolved": "https://registry.npmjs.org/globby/-/globby-13.1.2.tgz", + "integrity": "sha512-LKSDZXToac40u8Q1PQtZihbNdTYSNMuWe+K5l+oa6KgDzSvVrHXlJy40hUP522RjAIoNLJYBJi7ow+rbFpIhHQ==", + "dev": true, + "dependencies": { + "dir-glob": "^3.0.1", + "fast-glob": "^3.2.11", + "ignore": "^5.2.0", + "merge2": "^1.4.1", + "slash": "^4.0.0" + }, + "engines": { + "node": "^12.20.0 || ^14.13.1 || >=16.0.0" + }, + "funding": { + "url": "https://github.com/sponsors/sindresorhus" + } + }, + "node_modules/graceful-fs": { + "version": "4.2.10", + "resolved": "https://registry.npmjs.org/graceful-fs/-/graceful-fs-4.2.10.tgz", + "integrity": "sha512-9ByhssR2fPVsNZj478qUUbKfmL0+t5BDVyjShtyZZLiK7ZDAArFFfopyOTj0M05wE2tJPisA4iTnnXl2YoPvOA==", + "dev": true + }, + "node_modules/handlebars": { + "version": "4.7.7", + "resolved": "https://registry.npmjs.org/handlebars/-/handlebars-4.7.7.tgz", + "integrity": "sha512-aAcXm5OAfE/8IXkcZvCepKU3VzW1/39Fb5ZuqMtgI/hT8X2YgoMvBY5dLhq/cpOvw7Lk1nK/UF71aLG/ZnVYRA==", + "dev": true, + "dependencies": { + "minimist": "^1.2.5", + "neo-async": "^2.6.0", + "source-map": "^0.6.1", + "wordwrap": "^1.0.0" + }, + "bin": { + "handlebars": "bin/handlebars" + }, + "engines": { + "node": ">=0.4.7" + }, + "optionalDependencies": { + "uglify-js": "^3.1.4" + } + }, + "node_modules/has": { + "version": "1.0.3", + "resolved": "https://registry.npmjs.org/has/-/has-1.0.3.tgz", + "integrity": "sha512-f2dvO0VU6Oej7RkWJGrehjbzMAjFp5/VKPp5tTpWIV4JHHZK1/BxbFRtf/siA2SWTe09caDmVtYYzWEIbBS4zw==", + "dev": true, + "dependencies": { + "function-bind": "^1.1.1" + }, + "engines": { + "node": ">= 0.4.0" + } + }, + "node_modules/has-flag": { + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/has-flag/-/has-flag-3.0.0.tgz", + "integrity": "sha512-sKJf1+ceQBr4SMkvQnBDNDtf4TXpVhVGateu0t918bl30FnbE2m4vNLX+VWe/dpjlb+HugGYzW7uQXH98HPEYw==", + "dev": true, + "engines": { + "node": ">=4" + } + }, + "node_modules/hookable": { + "version": "5.4.1", + "resolved": "https://registry.npmjs.org/hookable/-/hookable-5.4.1.tgz", + "integrity": "sha512-i808BglQ1OuSIcgPSZoWsDapCMLXKe5wLS6XZvIXpaBWdWLUZARM8vOLayu6cXewj5TSbaZaMzKnq+pRnfscEQ==", + "dev": true + }, + "node_modules/ignore": { + "version": "5.2.0", + "resolved": "https://registry.npmjs.org/ignore/-/ignore-5.2.0.tgz", + "integrity": "sha512-CmxgYGiEPCLhfLnpPp1MoRmifwEIOgjcHXxOBjv7mY96c+eWScsOP9c112ZyLdWHi0FxHjI+4uVhKYp/gcdRmQ==", + "dev": true, + "engines": { + "node": ">= 4" + } + }, + "node_modules/inflight": { + "version": "1.0.6", + "resolved": "https://registry.npmjs.org/inflight/-/inflight-1.0.6.tgz", + "integrity": "sha512-k92I/b08q4wvFscXCLvqfsHCrjrF7yiXsQuIVvVE7N82W3+aqpzuUdBbfhWcy/FZR3/4IgflMgKLOsvPDrGCJA==", + "dev": true, + "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==", + "dev": true + }, + "node_modules/interpret": { + "version": "1.4.0", + "resolved": "https://registry.npmjs.org/interpret/-/interpret-1.4.0.tgz", + "integrity": "sha512-agE4QfB2Lkp9uICn7BAqoscw4SZP9kTE2hxiFI3jBPmXJfdqiahTbUuKGsMoN2GtqL9AxhYioAcVvgsb1HvRbA==", + "dev": true, + "engines": { + "node": ">= 0.10" + } + }, + "node_modules/is-builtin-module": { + "version": "3.2.0", + "resolved": "https://registry.npmjs.org/is-builtin-module/-/is-builtin-module-3.2.0.tgz", + "integrity": "sha512-phDA4oSGt7vl1n5tJvTWooWWAsXLY+2xCnxNqvKhGEzujg+A43wPlPOyDg3C8XQHN+6k/JTQWJ/j0dQh/qr+Hw==", + "dev": true, + "dependencies": { + "builtin-modules": "^3.3.0" + }, + "engines": { + "node": ">=6" + }, + "funding": { + "url": "https://github.com/sponsors/sindresorhus" + } + }, + "node_modules/is-core-module": { + "version": "2.11.0", + "resolved": "https://registry.npmjs.org/is-core-module/-/is-core-module-2.11.0.tgz", + "integrity": "sha512-RRjxlvLDkD1YJwDbroBHMb+cukurkDWNyHx7D3oNB5x9rb5ogcksMC5wHCadcXoo67gVr/+3GFySh3134zi6rw==", + "dev": true, + "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": "sha512-SbKbANkN603Vi4jEZv49LeVJMn4yGwsbzZworEoyEiutsN3nJYdbO36zfhGJ6QEDpOZIFkDtnq5JRxmvl3jsoQ==", + "dev": true, + "engines": { + "node": ">=0.10.0" + } + }, + "node_modules/is-glob": { + "version": "4.0.3", + "resolved": "https://registry.npmjs.org/is-glob/-/is-glob-4.0.3.tgz", + "integrity": "sha512-xelSayHH36ZgE7ZWhli7pW34hNbNl8Ojv5KVmkJD4hBdD3th8Tfk9vYasLM+mXWOZhFkgZfxhLSnrwRr4elSSg==", + "dev": true, + "dependencies": { + "is-extglob": "^2.1.1" + }, + "engines": { + "node": ">=0.10.0" + } + }, + "node_modules/is-module": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/is-module/-/is-module-1.0.0.tgz", + "integrity": "sha512-51ypPSPCoTEIN9dy5Oy+h4pShgJmPCygKfyRCISBI+JoWT/2oJvK8QPxmwv7b/p239jXrm9M1mlQbyKJ5A152g==", + "dev": true + }, + "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==", + "dev": true, + "engines": { + "node": ">=0.12.0" + } + }, + "node_modules/is-reference": { + "version": "1.2.1", + "resolved": "https://registry.npmjs.org/is-reference/-/is-reference-1.2.1.tgz", + "integrity": "sha512-U82MsXXiFIrjCK4otLT+o2NA2Cd2g5MLoOVXUZjIOhLurrRxpEXzI8O0KZHr3IjLvlAH1kTPYSuqer5T9ZVBKQ==", + "dev": true, + "dependencies": { + "@types/estree": "*" + } + }, + "node_modules/isexe": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/isexe/-/isexe-2.0.0.tgz", + "integrity": "sha512-RHxMLp9lnKHGHRng9QFhRCMbYAcVpn69smSGcq3f36xjgVVWThj4qqLbTLlq7Ssj8B+fIQ1EuCEGI2lKsyQeIw==", + "dev": true + }, + "node_modules/jiti": { + "version": "1.16.0", + "resolved": "https://registry.npmjs.org/jiti/-/jiti-1.16.0.tgz", + "integrity": "sha512-L3BJStEf5NAqNuzrpfbN71dp43mYIcBUlCRea/vdyv5dW/AYa1d4bpelko4SHdY3I6eN9Wzyasxirj1/vv5kmg==", + "dev": true, + "bin": { + "jiti": "bin/jiti.js" + } + }, + "node_modules/js-tokens": { + "version": "4.0.0", + "resolved": "https://registry.npmjs.org/js-tokens/-/js-tokens-4.0.0.tgz", + "integrity": "sha512-RdJUflcE3cUzKiMqQgsCu06FPu9UdIJO0beYbPhHN4k6apgJtifcoCtT9bcxOpYBtpD2kCM6Sbzg4CausW/PKQ==", + "dev": true + }, + "node_modules/jsesc": { + "version": "2.5.2", + "resolved": "https://registry.npmjs.org/jsesc/-/jsesc-2.5.2.tgz", + "integrity": "sha512-OYu7XEzjkCQ3C5Ps3QIZsQfNpqoJyZZA99wd9aWd05NCtC5pWOkShK2mkL6HXQR6/Cy2lbNdPlZBpuQHXE63gA==", + "dev": true, + "bin": { + "jsesc": "bin/jsesc" + }, + "engines": { + "node": ">=4" + } + }, + "node_modules/json5": { + "version": "2.2.1", + "resolved": "https://registry.npmjs.org/json5/-/json5-2.2.1.tgz", + "integrity": "sha512-1hqLFMSrGHRHxav9q9gNjJ5EXznIxGVO09xQRrwplcS8qs28pZ8s8hupZAmqDwZUmVZ2Qb2jnyPOWcDH8m8dlA==", + "dev": true, + "bin": { + "json5": "lib/cli.js" + }, + "engines": { + "node": ">=6" + } + }, + "node_modules/jsonc-parser": { + "version": "3.2.0", + "resolved": "https://registry.npmjs.org/jsonc-parser/-/jsonc-parser-3.2.0.tgz", + "integrity": "sha512-gfFQZrcTc8CnKXp6Y4/CBT3fTc0OVuDofpre4aEeEpSBPV5X5v4+Vmx+8snU7RLPrNHPKSgLxGo9YuQzz20o+w==", + "dev": true + }, + "node_modules/jsonfile": { + "version": "6.1.0", + "resolved": "https://registry.npmjs.org/jsonfile/-/jsonfile-6.1.0.tgz", + "integrity": "sha512-5dgndWOriYSm5cnYaJNhalLNDKOqFwyDB/rr1E9ZsGciGvKPs8R2xYGCacuf3z6K1YKDz182fd+fY3cn3pMqXQ==", + "dev": true, + "dependencies": { + "universalify": "^2.0.0" + }, + "optionalDependencies": { + "graceful-fs": "^4.1.6" + } + }, + "node_modules/kleur": { + "version": "3.0.3", + "resolved": "https://registry.npmjs.org/kleur/-/kleur-3.0.3.tgz", + "integrity": "sha512-eTIzlVOSUR+JxdDFepEYcBMtZ9Qqdef+rnzWdRZuMbOywu5tO2w2N7rqjoANZ5k9vywhL6Br1VRjUIgTQx4E8w==", + "dev": true, + "engines": { + "node": ">=6" + } + }, + "node_modules/kolorist": { + "version": "1.6.0", + "resolved": "https://registry.npmjs.org/kolorist/-/kolorist-1.6.0.tgz", + "integrity": "sha512-dLkz37Ab97HWMx9KTes3Tbi3D1ln9fCAy2zr2YVExJasDRPGRaKcoE4fycWNtnCAJfjFqe0cnY+f8KT2JePEXQ==", + "dev": true + }, + "node_modules/lru-cache": { + "version": "6.0.0", + "resolved": "https://registry.npmjs.org/lru-cache/-/lru-cache-6.0.0.tgz", + "integrity": "sha512-Jo6dJ04CmSjuznwJSS3pUeWmd/H0ffTlkXXgwZi+eq1UCmqQwCh+eLsYOYCwY991i2Fah4h1BEMCx4qThGbsiA==", + "dev": true, + "dependencies": { + "yallist": "^4.0.0" + }, + "engines": { + "node": ">=10" + } + }, + "node_modules/magic-string": { + "version": "0.26.7", + "resolved": "https://registry.npmjs.org/magic-string/-/magic-string-0.26.7.tgz", + "integrity": "sha512-hX9XH3ziStPoPhJxLq1syWuZMxbDvGNbVchfrdCtanC7D13888bMFow61x8axrx+GfHLtVeAx2kxL7tTGRl+Ow==", + "dev": true, + "dependencies": { + "sourcemap-codec": "^1.4.8" + }, + "engines": { + "node": ">=12" + } + }, + "node_modules/merge2": { + "version": "1.4.1", + "resolved": "https://registry.npmjs.org/merge2/-/merge2-1.4.1.tgz", + "integrity": "sha512-8q7VEgMJW4J8tcfVPy8g09NcQwZdbwFEqhe/WZkoIzjn/3TGDwtOCYtXGxA3O8tPzpczCCDgv+P2P5y00ZJOOg==", + "dev": true, + "engines": { + "node": ">= 8" + } + }, + "node_modules/micromatch": { + "version": "4.0.5", + "resolved": "https://registry.npmjs.org/micromatch/-/micromatch-4.0.5.tgz", + "integrity": "sha512-DMy+ERcEW2q8Z2Po+WNXuw3c5YaUSFjAO5GsJqfEl7UjvtIuFKO6ZrKvcItdy98dwFI2N1tg3zNIdKaQT+aNdA==", + "dev": true, + "dependencies": { + "braces": "^3.0.2", + "picomatch": "^2.3.1" + }, + "engines": { + "node": ">=8.6" + } + }, + "node_modules/minimatch": { + "version": "3.1.2", + "resolved": "https://registry.npmjs.org/minimatch/-/minimatch-3.1.2.tgz", + "integrity": "sha512-J7p63hRiAjw1NDEww1W7i37+ByIrOWO5XQQAzZ3VOcL0PNybwpfmV/N05zFAzwQ9USyEcX6t3UO+K5aqBQOIHw==", + "dev": true, + "dependencies": { + "brace-expansion": "^1.1.7" + }, + "engines": { + "node": "*" + } + }, + "node_modules/minimist": { + "version": "1.2.7", + "resolved": "https://registry.npmjs.org/minimist/-/minimist-1.2.7.tgz", + "integrity": "sha512-bzfL1YUZsP41gmu/qjrEk0Q6i2ix/cVeAhbCbqH9u3zYutS1cLg00qhrD0M2MVdCcx4Sc0UpP2eBWo9rotpq6g==", + "dev": true, + "funding": { + "url": "https://github.com/sponsors/ljharb" + } + }, + "node_modules/mkdirp": { + "version": "1.0.4", + "resolved": "https://registry.npmjs.org/mkdirp/-/mkdirp-1.0.4.tgz", + "integrity": "sha512-vVqVZQyf3WLx2Shd0qJ9xuvqgAyKPLAiqITEtqW0oIUjzo3PePDd6fW9iFz30ef7Ysp/oiWqbhszeGWW2T6Gzw==", + "dev": true, + "bin": { + "mkdirp": "bin/cmd.js" + }, + "engines": { + "node": ">=10" + } + }, + "node_modules/mkdist": { + "version": "0.3.13", + "resolved": "https://registry.npmjs.org/mkdist/-/mkdist-0.3.13.tgz", + "integrity": "sha512-+eCPpkr8l2X630y5PIlkts2tzYEsb+aGIgXdrQv9ZGtWE2bLlD6kVIFfI6FJwFpjjw4dPPyorxQc6Uhm/oXlvg==", + "dev": true, + "dependencies": { + "defu": "^6.0.0", + "esbuild": "^0.14.47", + "fs-extra": "^10.0.0", + "globby": "^11.0.3", + "jiti": "^1.12.9", + "mri": "^1.2.0", + "pathe": "^0.2.0" + }, + "bin": { + "mkdist": "dist/cli.cjs" + }, + "peerDependencies": { + "typescript": ">=4.7.4" + }, + "peerDependenciesMeta": { + "typescript": { + "optional": true + } + } + }, + "node_modules/mkdist/node_modules/@esbuild/linux-loong64": { + "version": "0.14.54", + "resolved": "https://registry.npmjs.org/@esbuild/linux-loong64/-/linux-loong64-0.14.54.tgz", + "integrity": "sha512-bZBrLAIX1kpWelV0XemxBZllyRmM6vgFQQG2GdNb+r3Fkp0FOh1NJSvekXDs7jq70k4euu1cryLMfU+mTXlEpw==", + "cpu": [ + "loong64" + ], + "dev": true, + "optional": true, + "os": [ + "linux" + ], + "engines": { + "node": ">=12" + } + }, + "node_modules/mkdist/node_modules/esbuild": { + "version": "0.14.54", + "resolved": "https://registry.npmjs.org/esbuild/-/esbuild-0.14.54.tgz", + "integrity": "sha512-Cy9llcy8DvET5uznocPyqL3BFRrFXSVqbgpMJ9Wz8oVjZlh/zUSNbPRbov0VX7VxN2JH1Oa0uNxZ7eLRb62pJA==", + "dev": true, + "hasInstallScript": true, + "bin": { + "esbuild": "bin/esbuild" + }, + "engines": { + "node": ">=12" + }, + "optionalDependencies": { + "@esbuild/linux-loong64": "0.14.54", + "esbuild-android-64": "0.14.54", + "esbuild-android-arm64": "0.14.54", + "esbuild-darwin-64": "0.14.54", + "esbuild-darwin-arm64": "0.14.54", + "esbuild-freebsd-64": "0.14.54", + "esbuild-freebsd-arm64": "0.14.54", + "esbuild-linux-32": "0.14.54", + "esbuild-linux-64": "0.14.54", + "esbuild-linux-arm": "0.14.54", + "esbuild-linux-arm64": "0.14.54", + "esbuild-linux-mips64le": "0.14.54", + "esbuild-linux-ppc64le": "0.14.54", + "esbuild-linux-riscv64": "0.14.54", + "esbuild-linux-s390x": "0.14.54", + "esbuild-netbsd-64": "0.14.54", + "esbuild-openbsd-64": "0.14.54", + "esbuild-sunos-64": "0.14.54", + "esbuild-windows-32": "0.14.54", + "esbuild-windows-64": "0.14.54", + "esbuild-windows-arm64": "0.14.54" + } + }, + "node_modules/mkdist/node_modules/esbuild-android-64": { + "version": "0.14.54", + "resolved": "https://registry.npmjs.org/esbuild-android-64/-/esbuild-android-64-0.14.54.tgz", + "integrity": "sha512-Tz2++Aqqz0rJ7kYBfz+iqyE3QMycD4vk7LBRyWaAVFgFtQ/O8EJOnVmTOiDWYZ/uYzB4kvP+bqejYdVKzE5lAQ==", + "cpu": [ + "x64" + ], + "dev": true, + "optional": true, + "os": [ + "android" + ], + "engines": { + "node": ">=12" + } + }, + "node_modules/mkdist/node_modules/esbuild-android-arm64": { + "version": "0.14.54", + "resolved": "https://registry.npmjs.org/esbuild-android-arm64/-/esbuild-android-arm64-0.14.54.tgz", + "integrity": "sha512-F9E+/QDi9sSkLaClO8SOV6etqPd+5DgJje1F9lOWoNncDdOBL2YF59IhsWATSt0TLZbYCf3pNlTHvVV5VfHdvg==", + "cpu": [ + "arm64" + ], + "dev": true, + "optional": true, + "os": [ + "android" + ], + "engines": { + "node": ">=12" + } + }, + "node_modules/mkdist/node_modules/esbuild-darwin-64": { + "version": "0.14.54", + "resolved": "https://registry.npmjs.org/esbuild-darwin-64/-/esbuild-darwin-64-0.14.54.tgz", + "integrity": "sha512-jtdKWV3nBviOd5v4hOpkVmpxsBy90CGzebpbO9beiqUYVMBtSc0AL9zGftFuBon7PNDcdvNCEuQqw2x0wP9yug==", + "cpu": [ + "x64" + ], + "dev": true, + "optional": true, + "os": [ + "darwin" + ], + "engines": { + "node": ">=12" + } + }, + "node_modules/mkdist/node_modules/esbuild-darwin-arm64": { + "version": "0.14.54", + "resolved": "https://registry.npmjs.org/esbuild-darwin-arm64/-/esbuild-darwin-arm64-0.14.54.tgz", + "integrity": "sha512-OPafJHD2oUPyvJMrsCvDGkRrVCar5aVyHfWGQzY1dWnzErjrDuSETxwA2HSsyg2jORLY8yBfzc1MIpUkXlctmw==", + "cpu": [ + "arm64" + ], + "dev": true, + "optional": true, + "os": [ + "darwin" + ], + "engines": { + "node": ">=12" + } + }, + "node_modules/mkdist/node_modules/esbuild-freebsd-64": { + "version": "0.14.54", + "resolved": "https://registry.npmjs.org/esbuild-freebsd-64/-/esbuild-freebsd-64-0.14.54.tgz", + "integrity": "sha512-OKwd4gmwHqOTp4mOGZKe/XUlbDJ4Q9TjX0hMPIDBUWWu/kwhBAudJdBoxnjNf9ocIB6GN6CPowYpR/hRCbSYAg==", + "cpu": [ + "x64" + ], + "dev": true, + "optional": true, + "os": [ + "freebsd" + ], + "engines": { + "node": ">=12" + } + }, + "node_modules/mkdist/node_modules/esbuild-freebsd-arm64": { + "version": "0.14.54", + "resolved": "https://registry.npmjs.org/esbuild-freebsd-arm64/-/esbuild-freebsd-arm64-0.14.54.tgz", + "integrity": "sha512-sFwueGr7OvIFiQT6WeG0jRLjkjdqWWSrfbVwZp8iMP+8UHEHRBvlaxL6IuKNDwAozNUmbb8nIMXa7oAOARGs1Q==", + "cpu": [ + "arm64" + ], + "dev": true, + "optional": true, + "os": [ + "freebsd" + ], + "engines": { + "node": ">=12" + } + }, + "node_modules/mkdist/node_modules/esbuild-linux-32": { + "version": "0.14.54", + "resolved": "https://registry.npmjs.org/esbuild-linux-32/-/esbuild-linux-32-0.14.54.tgz", + "integrity": "sha512-1ZuY+JDI//WmklKlBgJnglpUL1owm2OX+8E1syCD6UAxcMM/XoWd76OHSjl/0MR0LisSAXDqgjT3uJqT67O3qw==", + "cpu": [ + "ia32" + ], + "dev": true, + "optional": true, + "os": [ + "linux" + ], + "engines": { + "node": ">=12" + } + }, + "node_modules/mkdist/node_modules/esbuild-linux-64": { + "version": "0.14.54", + "resolved": "https://registry.npmjs.org/esbuild-linux-64/-/esbuild-linux-64-0.14.54.tgz", + "integrity": "sha512-EgjAgH5HwTbtNsTqQOXWApBaPVdDn7XcK+/PtJwZLT1UmpLoznPd8c5CxqsH2dQK3j05YsB3L17T8vE7cp4cCg==", + "cpu": [ + "x64" + ], + "dev": true, + "optional": true, + "os": [ + "linux" + ], + "engines": { + "node": ">=12" + } + }, + "node_modules/mkdist/node_modules/esbuild-linux-arm": { + "version": "0.14.54", + "resolved": "https://registry.npmjs.org/esbuild-linux-arm/-/esbuild-linux-arm-0.14.54.tgz", + "integrity": "sha512-qqz/SjemQhVMTnvcLGoLOdFpCYbz4v4fUo+TfsWG+1aOu70/80RV6bgNpR2JCrppV2moUQkww+6bWxXRL9YMGw==", + "cpu": [ + "arm" + ], + "dev": true, + "optional": true, + "os": [ + "linux" + ], + "engines": { + "node": ">=12" + } + }, + "node_modules/mkdist/node_modules/esbuild-linux-arm64": { + "version": "0.14.54", + "resolved": "https://registry.npmjs.org/esbuild-linux-arm64/-/esbuild-linux-arm64-0.14.54.tgz", + "integrity": "sha512-WL71L+0Rwv+Gv/HTmxTEmpv0UgmxYa5ftZILVi2QmZBgX3q7+tDeOQNqGtdXSdsL8TQi1vIaVFHUPDe0O0kdig==", + "cpu": [ + "arm64" + ], + "dev": true, + "optional": true, + "os": [ + "linux" + ], + "engines": { + "node": ">=12" + } + }, + "node_modules/mkdist/node_modules/esbuild-linux-mips64le": { + "version": "0.14.54", + "resolved": "https://registry.npmjs.org/esbuild-linux-mips64le/-/esbuild-linux-mips64le-0.14.54.tgz", + "integrity": "sha512-qTHGQB8D1etd0u1+sB6p0ikLKRVuCWhYQhAHRPkO+OF3I/iSlTKNNS0Lh2Oc0g0UFGguaFZZiPJdJey3AGpAlw==", + "cpu": [ + "mips64el" + ], + "dev": true, + "optional": true, + "os": [ + "linux" + ], + "engines": { + "node": ">=12" + } + }, + "node_modules/mkdist/node_modules/esbuild-linux-ppc64le": { + "version": "0.14.54", + "resolved": "https://registry.npmjs.org/esbuild-linux-ppc64le/-/esbuild-linux-ppc64le-0.14.54.tgz", + "integrity": "sha512-j3OMlzHiqwZBDPRCDFKcx595XVfOfOnv68Ax3U4UKZ3MTYQB5Yz3X1mn5GnodEVYzhtZgxEBidLWeIs8FDSfrQ==", + "cpu": [ + "ppc64" + ], + "dev": true, + "optional": true, + "os": [ + "linux" + ], + "engines": { + "node": ">=12" + } + }, + "node_modules/mkdist/node_modules/esbuild-linux-riscv64": { + "version": "0.14.54", + "resolved": "https://registry.npmjs.org/esbuild-linux-riscv64/-/esbuild-linux-riscv64-0.14.54.tgz", + "integrity": "sha512-y7Vt7Wl9dkOGZjxQZnDAqqn+XOqFD7IMWiewY5SPlNlzMX39ocPQlOaoxvT4FllA5viyV26/QzHtvTjVNOxHZg==", + "cpu": [ + "riscv64" + ], + "dev": true, + "optional": true, + "os": [ + "linux" + ], + "engines": { + "node": ">=12" + } + }, + "node_modules/mkdist/node_modules/esbuild-linux-s390x": { + "version": "0.14.54", + "resolved": "https://registry.npmjs.org/esbuild-linux-s390x/-/esbuild-linux-s390x-0.14.54.tgz", + "integrity": "sha512-zaHpW9dziAsi7lRcyV4r8dhfG1qBidQWUXweUjnw+lliChJqQr+6XD71K41oEIC3Mx1KStovEmlzm+MkGZHnHA==", + "cpu": [ + "s390x" + ], + "dev": true, + "optional": true, + "os": [ + "linux" + ], + "engines": { + "node": ">=12" + } + }, + "node_modules/mkdist/node_modules/esbuild-netbsd-64": { + "version": "0.14.54", + "resolved": "https://registry.npmjs.org/esbuild-netbsd-64/-/esbuild-netbsd-64-0.14.54.tgz", + "integrity": "sha512-PR01lmIMnfJTgeU9VJTDY9ZerDWVFIUzAtJuDHwwceppW7cQWjBBqP48NdeRtoP04/AtO9a7w3viI+PIDr6d+w==", + "cpu": [ + "x64" + ], + "dev": true, + "optional": true, + "os": [ + "netbsd" + ], + "engines": { + "node": ">=12" + } + }, + "node_modules/mkdist/node_modules/esbuild-openbsd-64": { + "version": "0.14.54", + "resolved": "https://registry.npmjs.org/esbuild-openbsd-64/-/esbuild-openbsd-64-0.14.54.tgz", + "integrity": "sha512-Qyk7ikT2o7Wu76UsvvDS5q0amJvmRzDyVlL0qf5VLsLchjCa1+IAvd8kTBgUxD7VBUUVgItLkk609ZHUc1oCaw==", + "cpu": [ + "x64" + ], + "dev": true, + "optional": true, + "os": [ + "openbsd" + ], + "engines": { + "node": ">=12" + } + }, + "node_modules/mkdist/node_modules/esbuild-sunos-64": { + "version": "0.14.54", + "resolved": "https://registry.npmjs.org/esbuild-sunos-64/-/esbuild-sunos-64-0.14.54.tgz", + "integrity": "sha512-28GZ24KmMSeKi5ueWzMcco6EBHStL3B6ubM7M51RmPwXQGLe0teBGJocmWhgwccA1GeFXqxzILIxXpHbl9Q/Kw==", + "cpu": [ + "x64" + ], + "dev": true, + "optional": true, + "os": [ + "sunos" + ], + "engines": { + "node": ">=12" + } + }, + "node_modules/mkdist/node_modules/esbuild-windows-32": { + "version": "0.14.54", + "resolved": "https://registry.npmjs.org/esbuild-windows-32/-/esbuild-windows-32-0.14.54.tgz", + "integrity": "sha512-T+rdZW19ql9MjS7pixmZYVObd9G7kcaZo+sETqNH4RCkuuYSuv9AGHUVnPoP9hhuE1WM1ZimHz1CIBHBboLU7w==", + "cpu": [ + "ia32" + ], + "dev": true, + "optional": true, + "os": [ + "win32" + ], + "engines": { + "node": ">=12" + } + }, + "node_modules/mkdist/node_modules/esbuild-windows-64": { + "version": "0.14.54", + "resolved": "https://registry.npmjs.org/esbuild-windows-64/-/esbuild-windows-64-0.14.54.tgz", + "integrity": "sha512-AoHTRBUuYwXtZhjXZbA1pGfTo8cJo3vZIcWGLiUcTNgHpJJMC1rVA44ZereBHMJtotyN71S8Qw0npiCIkW96cQ==", + "cpu": [ + "x64" + ], + "dev": true, + "optional": true, + "os": [ + "win32" + ], + "engines": { + "node": ">=12" + } + }, + "node_modules/mkdist/node_modules/esbuild-windows-arm64": { + "version": "0.14.54", + "resolved": "https://registry.npmjs.org/esbuild-windows-arm64/-/esbuild-windows-arm64-0.14.54.tgz", + "integrity": "sha512-M0kuUvXhot1zOISQGXwWn6YtS+Y/1RT9WrVIOywZnJHo3jCDyewAc79aKNQWFCQm+xNHVTq9h8dZKvygoXQQRg==", + "cpu": [ + "arm64" + ], + "dev": true, + "optional": true, + "os": [ + "win32" + ], + "engines": { + "node": ">=12" + } + }, + "node_modules/mkdist/node_modules/globby": { + "version": "11.1.0", + "resolved": "https://registry.npmjs.org/globby/-/globby-11.1.0.tgz", + "integrity": "sha512-jhIXaOzy1sb8IyocaruWSn1TjmnBVs8Ayhcy83rmxNJ8q2uWKCAj3CnJY+KpGSXCueAPc0i05kVvVKtP1t9S3g==", + "dev": true, + "dependencies": { + "array-union": "^2.1.0", + "dir-glob": "^3.0.1", + "fast-glob": "^3.2.9", + "ignore": "^5.2.0", + "merge2": "^1.4.1", + "slash": "^3.0.0" + }, + "engines": { + "node": ">=10" + }, + "funding": { + "url": "https://github.com/sponsors/sindresorhus" + } + }, + "node_modules/mkdist/node_modules/pathe": { + "version": "0.2.0", + "resolved": "https://registry.npmjs.org/pathe/-/pathe-0.2.0.tgz", + "integrity": "sha512-sTitTPYnn23esFR3RlqYBWn4c45WGeLcsKzQiUpXJAyfcWkolvlYpV8FLo7JishK946oQwMFUCHXQ9AjGPKExw==", + "dev": true + }, + "node_modules/mkdist/node_modules/slash": { + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/slash/-/slash-3.0.0.tgz", + "integrity": "sha512-g9Q1haeby36OSStwb4ntCGGGaKsaVSjQ68fBxoQcutl5fS1vuY18H3wSt3jFyFtrkx+Kz0V1G85A4MyAdDMi2Q==", + "dev": true, + "engines": { + "node": ">=8" + } + }, + "node_modules/mlly": { + "version": "0.5.16", + "resolved": "https://registry.npmjs.org/mlly/-/mlly-0.5.16.tgz", + "integrity": "sha512-LaJ8yuh4v0zEmge/g3c7jjFlhoCPfQn6RCjXgm9A0Qiuochq4BcuOxVfWmdnCoLTlg2MV+hqhOek+W2OhG0Lwg==", + "dev": true, + "dependencies": { + "acorn": "^8.8.0", + "pathe": "^0.3.8", + "pkg-types": "^0.3.5", + "ufo": "^0.8.5" + } + }, + "node_modules/mri": { + "version": "1.2.0", + "resolved": "https://registry.npmjs.org/mri/-/mri-1.2.0.tgz", + "integrity": "sha512-tzzskb3bG8LvYGFF/mDTpq3jpI6Q9wc3LEmBaghu+DdCssd1FakN7Bc0hVNmEyGq1bq3RgfkCb3cmQLpNPOroA==", + "dev": true, + "engines": { + "node": ">=4" + } + }, + "node_modules/ms": { + "version": "2.1.2", + "resolved": "https://registry.npmjs.org/ms/-/ms-2.1.2.tgz", + "integrity": "sha512-sGkPx+VjMtmA6MX27oA4FBFELFCZZ4S4XqeGOXCv68tT+jb3vk/RyaKWP0PTKyWtmLSM0b+adUTEvbs1PEaH2w==", + "dev": true + }, + "node_modules/neo-async": { + "version": "2.6.2", + "resolved": "https://registry.npmjs.org/neo-async/-/neo-async-2.6.2.tgz", + "integrity": "sha512-Yd3UES5mWCSqR+qNT93S3UoYUkqAZ9lLg8a7g9rimsWmYGK8cVToA4/sF3RrshdyV3sAGMXVUmpMYOw+dLpOuw==", + "dev": true + }, + "node_modules/node-fetch": { + "version": "2.6.7", + "resolved": "https://registry.npmjs.org/node-fetch/-/node-fetch-2.6.7.tgz", + "integrity": "sha512-ZjMPFEfVx5j+y2yF35Kzx5sF7kDzxuDj6ziH4FFbOp87zKDZNx8yExJIb05OGF4Nlt9IHFIMBkRl41VdvcNdbQ==", + "dev": true, + "dependencies": { + "whatwg-url": "^5.0.0" + }, + "engines": { + "node": "4.x || >=6.0.0" + }, + "peerDependencies": { + "encoding": "^0.1.0" + }, + "peerDependenciesMeta": { + "encoding": { + "optional": true + } + } + }, + "node_modules/node-releases": { + "version": "2.0.6", + "resolved": "https://registry.npmjs.org/node-releases/-/node-releases-2.0.6.tgz", + "integrity": "sha512-PiVXnNuFm5+iYkLBNeq5211hvO38y63T0i2KKh2KnUs3RpzJ+JtODFjkD8yjLwnDkTYF1eKXheUwdssR+NRZdg==", + "dev": true + }, + "node_modules/once": { + "version": "1.4.0", + "resolved": "https://registry.npmjs.org/once/-/once-1.4.0.tgz", + "integrity": "sha512-lNaJgI+2Q5URQBkccEKHTQOPaXdUxnZZElQTZY0MFUAuaEqe1E+Nyvgdz/aIyNi6Z9MzO5dv1H8n58/GELp3+w==", + "dev": true, + "dependencies": { + "wrappy": "1" + } + }, + "node_modules/parse-github-url": { + "version": "1.0.2", + "resolved": "https://registry.npmjs.org/parse-github-url/-/parse-github-url-1.0.2.tgz", + "integrity": "sha512-kgBf6avCbO3Cn6+RnzRGLkUsv4ZVqv/VfAYkRsyBcgkshNvVBkRn1FEZcW0Jb+npXQWm2vHPnnOqFteZxRRGNw==", + "dev": true, + "bin": { + "parse-github-url": "cli.js" + }, + "engines": { + "node": ">=0.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": "sha512-AVbw3UJ2e9bq64vSaS9Am0fje1Pa8pbGqTTsmXfaIiMpnr5DlDhfJOuLj9Sf95ZPVDAUerDfEk88MPmPe7UCQg==", + "dev": true, + "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==", + "dev": true, + "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==", + "dev": true + }, + "node_modules/path-type": { + "version": "4.0.0", + "resolved": "https://registry.npmjs.org/path-type/-/path-type-4.0.0.tgz", + "integrity": "sha512-gDKb8aZMDeD/tZWs9P6+q0J9Mwkdl6xMV8TjnGP3qJVJ06bdMgkbBlLU8IdfOsIsFz2BW1rNVT3XuNEl8zPAvw==", + "dev": true, + "engines": { + "node": ">=8" + } + }, + "node_modules/pathe": { + "version": "0.3.9", + "resolved": "https://registry.npmjs.org/pathe/-/pathe-0.3.9.tgz", + "integrity": "sha512-6Y6s0vT112P3jD8dGfuS6r+lpa0qqNrLyHPOwvXMnyNTQaYiwgau2DP3aNDsR13xqtGj7rrPo+jFUATpU6/s+g==", + "dev": true + }, + "node_modules/picocolors": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/picocolors/-/picocolors-1.0.0.tgz", + "integrity": "sha512-1fygroTLlHu66zi26VoTDv8yRgm0Fccecssto+MhsZ0D/DGW2sm8E8AjW7NU5VVTRt5GxbeZ5qBuJr+HyLYkjQ==", + "dev": true + }, + "node_modules/picomatch": { + "version": "2.3.1", + "resolved": "https://registry.npmjs.org/picomatch/-/picomatch-2.3.1.tgz", + "integrity": "sha512-JU3teHTNjmE2VCGFzuY8EXzCDVwEqB2a8fsIvwaStHhAWJEeVd1o1QD80CU6+ZdEXXSLbSsuLwJjkCBWqRQUVA==", + "dev": true, + "engines": { + "node": ">=8.6" + }, + "funding": { + "url": "https://github.com/sponsors/jonschlinkert" + } + }, + "node_modules/pkg-types": { + "version": "0.3.6", + "resolved": "https://registry.npmjs.org/pkg-types/-/pkg-types-0.3.6.tgz", + "integrity": "sha512-uQZutkkh6axl1GxDm5/+8ivVdwuJ5pyDGqJeSiIWIUWIqYiK3p9QKozN/Rv6eVvFoeSWkN1uoYeSDBwwBJBtbg==", + "dev": true, + "dependencies": { + "jsonc-parser": "^3.2.0", + "mlly": "^0.5.16", + "pathe": "^0.3.9" + } + }, + "node_modules/pretty-bytes": { + "version": "6.0.0", + "resolved": "https://registry.npmjs.org/pretty-bytes/-/pretty-bytes-6.0.0.tgz", + "integrity": "sha512-6UqkYefdogmzqAZWzJ7laYeJnaXDy2/J+ZqiiMtS7t7OfpXWTlaeGMwX8U6EFvPV/YWWEKRkS8hKS4k60WHTOg==", + "dev": true, + "engines": { + "node": "^14.13.1 || >=16.0.0" + }, + "funding": { + "url": "https://github.com/sponsors/sindresorhus" + } + }, + "node_modules/prompts": { + "version": "2.4.2", + "resolved": "https://registry.npmjs.org/prompts/-/prompts-2.4.2.tgz", + "integrity": "sha512-NxNv/kLguCA7p3jE8oL2aEBsrJWgAakBpgmgK6lpPWV+WuOmY6r2/zbAVnP+T8bQlA0nzHXSJSJW0Hq7ylaD2Q==", + "dev": true, + "dependencies": { + "kleur": "^3.0.3", + "sisteransi": "^1.0.5" + }, + "engines": { + "node": ">= 6" + } + }, + "node_modules/queue-microtask": { + "version": "1.2.3", + "resolved": "https://registry.npmjs.org/queue-microtask/-/queue-microtask-1.2.3.tgz", + "integrity": "sha512-NuaNSa6flKT5JaSYQzJok04JzTL1CA6aGhv5rfLW3PgqA+M2ChpZQnAC8h8i4ZFkBS8X5RqkDBHA7r4hej3K9A==", + "dev": true, + "funding": [ + { + "type": "github", + "url": "https://github.com/sponsors/feross" + }, + { + "type": "patreon", + "url": "https://www.patreon.com/feross" + }, + { + "type": "consulting", + "url": "https://feross.org/support" + } + ] + }, + "node_modules/rechoir": { + "version": "0.6.2", + "resolved": "https://registry.npmjs.org/rechoir/-/rechoir-0.6.2.tgz", + "integrity": "sha512-HFM8rkZ+i3zrV+4LQjwQ0W+ez98pApMGM3HUrN04j3CqzPOzl9nmP15Y8YXNm8QHGv/eacOVEjqhmWpkRV0NAw==", + "dev": true, + "dependencies": { + "resolve": "^1.1.6" + }, + "engines": { + "node": ">= 0.10" + } + }, + "node_modules/resolve": { + "version": "1.22.1", + "resolved": "https://registry.npmjs.org/resolve/-/resolve-1.22.1.tgz", + "integrity": "sha512-nBpuuYuY5jFsli/JIs1oldw6fOQCBioohqWZg/2hiaOybXOft4lonv85uDOKXdf8rhyK159cxU5cDcK/NKk8zw==", + "dev": true, + "dependencies": { + "is-core-module": "^2.9.0", + "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/reusify": { + "version": "1.0.4", + "resolved": "https://registry.npmjs.org/reusify/-/reusify-1.0.4.tgz", + "integrity": "sha512-U9nH88a3fc/ekCF1l0/UP1IosiuIjyTh7hBvXVMHYgVcfGvt897Xguj2UOLDeI5BG2m7/uwyaLVT6fbtCwTyzw==", + "dev": true, + "engines": { + "iojs": ">=1.0.0", + "node": ">=0.10.0" + } + }, + "node_modules/rimraf": { + "version": "3.0.2", + "resolved": "https://registry.npmjs.org/rimraf/-/rimraf-3.0.2.tgz", + "integrity": "sha512-JZkJMZkAGFFPP2YqXZXPbMlMBgsxzE8ILs4lMIX/2o0L9UBw9O/Y3o6wFw/i9YLapcUJWwqbi3kdxIPdC62TIA==", + "dev": true, + "dependencies": { + "glob": "^7.1.3" + }, + "bin": { + "rimraf": "bin.js" + }, + "funding": { + "url": "https://github.com/sponsors/isaacs" + } + }, + "node_modules/rollup": { + "version": "3.2.5", + "resolved": "https://registry.npmjs.org/rollup/-/rollup-3.2.5.tgz", + "integrity": "sha512-/Ha7HhVVofduy+RKWOQJrxe4Qb3xyZo+chcpYiD8SoQa4AG7llhupUtyfKSSrdBM2mWJjhM8wZwmbY23NmlIYw==", + "dev": true, + "bin": { + "rollup": "dist/bin/rollup" + }, + "engines": { + "node": ">=14.18.0", + "npm": ">=8.0.0" + }, + "optionalDependencies": { + "fsevents": "~2.3.2" + } + }, + "node_modules/rollup-plugin-dts": { + "version": "5.0.0", + "resolved": "https://registry.npmjs.org/rollup-plugin-dts/-/rollup-plugin-dts-5.0.0.tgz", + "integrity": "sha512-OO8ayCvuJCKaQSShyVTARxGurVVk4ulzbuvz+0zFd1f93vlnWFU5pBMT7HFeS6uj7MvvZLx4kUAarGATSU1+Ng==", + "dev": true, + "dependencies": { + "magic-string": "^0.26.7" + }, + "engines": { + "node": ">=v14" + }, + "funding": { + "url": "https://github.com/sponsors/Swatinem" + }, + "optionalDependencies": { + "@babel/code-frame": "^7.18.6" + }, + "peerDependencies": { + "rollup": "^3.0.0", + "typescript": "^4.1" + } + }, + "node_modules/run-parallel": { + "version": "1.2.0", + "resolved": "https://registry.npmjs.org/run-parallel/-/run-parallel-1.2.0.tgz", + "integrity": "sha512-5l4VyZR86LZ/lDxZTR6jqL8AFE2S0IFLMP26AbjsLVADxHdhB/c0GUsH+y39UfCi3dzz8OlQuPmnaJOMoDHQBA==", + "dev": true, + "funding": [ + { + "type": "github", + "url": "https://github.com/sponsors/feross" + }, + { + "type": "patreon", + "url": "https://www.patreon.com/feross" + }, + { + "type": "consulting", + "url": "https://feross.org/support" + } + ], + "dependencies": { + "queue-microtask": "^1.2.2" + } + }, + "node_modules/scule": { + "version": "0.3.2", + "resolved": "https://registry.npmjs.org/scule/-/scule-0.3.2.tgz", + "integrity": "sha512-zIvPdjOH8fv8CgrPT5eqtxHQXmPNnV/vHJYffZhE43KZkvULvpCTvOt1HPlFaCZx287INL9qaqrZg34e8NgI4g==", + "dev": true + }, + "node_modules/semver": { + "version": "7.3.8", + "resolved": "https://registry.npmjs.org/semver/-/semver-7.3.8.tgz", + "integrity": "sha512-NB1ctGL5rlHrPJtFDVIVzTyQylMLu9N9VICA6HSFJo8MCGVTMW6gfpicwKmmK/dAjTOrqu5l63JJOpDSrAis3A==", + "dev": true, + "dependencies": { + "lru-cache": "^6.0.0" + }, + "bin": { + "semver": "bin/semver.js" + }, + "engines": { + "node": ">=10" + } + }, + "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==", + "dev": true, + "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==", + "dev": true, + "engines": { + "node": ">=8" + } + }, + "node_modules/shelljs": { + "version": "0.8.5", + "resolved": "https://registry.npmjs.org/shelljs/-/shelljs-0.8.5.tgz", + "integrity": "sha512-TiwcRcrkhHvbrZbnRcFYMLl30Dfov3HKqzp5tO5b4pt6G/SezKcYhmDg15zXVBswHmctSAQKznqNW2LO5tTDow==", + "dev": true, + "dependencies": { + "glob": "^7.0.0", + "interpret": "^1.0.0", + "rechoir": "^0.6.2" + }, + "bin": { + "shjs": "bin/shjs" + }, + "engines": { + "node": ">=4" + } + }, + "node_modules/shx": { + "version": "0.3.4", + "resolved": "https://registry.npmjs.org/shx/-/shx-0.3.4.tgz", + "integrity": "sha512-N6A9MLVqjxZYcVn8hLmtneQWIJtp8IKzMP4eMnx+nqkvXoqinUPCbUFLp2UcWTEIUONhlk0ewxr/jaVGlc+J+g==", + "dev": true, + "dependencies": { + "minimist": "^1.2.3", + "shelljs": "^0.8.5" + }, + "bin": { + "shx": "lib/cli.js" + }, + "engines": { + "node": ">=6" + } + }, + "node_modules/sisteransi": { + "version": "1.0.5", + "resolved": "https://registry.npmjs.org/sisteransi/-/sisteransi-1.0.5.tgz", + "integrity": "sha512-bLGGlR1QxBcynn2d5YmDX4MGjlZvy2MRBDRNHLJ8VI6l6+9FUiyTFNJ0IveOSP0bcXgVDPRcfGqA0pjaqUpfVg==", + "dev": true + }, + "node_modules/slash": { + "version": "4.0.0", + "resolved": "https://registry.npmjs.org/slash/-/slash-4.0.0.tgz", + "integrity": "sha512-3dOsAHXXUkQTpOYcoAxLIorMTp4gIQr5IW3iVb7A7lFIp0VHhnynm9izx6TssdrIcVIESAlVjtnO2K8bg+Coew==", + "dev": true, + "engines": { + "node": ">=12" + }, + "funding": { + "url": "https://github.com/sponsors/sindresorhus" + } + }, + "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==", + "dev": true, + "engines": { + "node": ">=0.10.0" + } + }, + "node_modules/sourcemap-codec": { + "version": "1.4.8", + "resolved": "https://registry.npmjs.org/sourcemap-codec/-/sourcemap-codec-1.4.8.tgz", + "integrity": "sha512-9NykojV5Uih4lgo5So5dtw+f0JgJX30KCNI8gwhz2J9A15wD0Ml6tjHKwf6fTSa6fAdVBdZeNOs9eJ71qCk8vA==", + "dev": true + }, + "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==", + "dev": true, + "dependencies": { + "has-flag": "^3.0.0" + }, + "engines": { + "node": ">=4" + } + }, + "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==", + "dev": true, + "engines": { + "node": ">= 0.4" + }, + "funding": { + "url": "https://github.com/sponsors/ljharb" + } + }, + "node_modules/to-fast-properties": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/to-fast-properties/-/to-fast-properties-2.0.0.tgz", + "integrity": "sha512-/OaKK0xYrs3DmxRYqL/yDc+FxFUVYhDlXMhRmv3z915w2HF1tnN1omB354j8VUGO/hbRzyD6Y3sA7v7GS/ceog==", + "dev": true, + "engines": { + "node": ">=4" + } + }, + "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==", + "dev": true, + "dependencies": { + "is-number": "^7.0.0" + }, + "engines": { + "node": ">=8.0" + } + }, + "node_modules/tr46": { + "version": "0.0.3", + "resolved": "https://registry.npmjs.org/tr46/-/tr46-0.0.3.tgz", + "integrity": "sha512-N3WMsuqV66lT30CrXNbEjx4GEwlow3v6rr4mCcv6prnfwhS01rkgyFdjPNBYd9br7LpXV1+Emh01fHnq2Gdgrw==", + "dev": true + }, + "node_modules/typescript": { + "version": "4.8.4", + "resolved": "https://registry.npmjs.org/typescript/-/typescript-4.8.4.tgz", + "integrity": "sha512-QCh+85mCy+h0IGff8r5XWzOVSbBO+KfeYrMQh7NJ58QujwcE22u+NUSmUxqF+un70P9GXKxa2HCNiTTMJknyjQ==", + "dev": true, + "bin": { + "tsc": "bin/tsc", + "tsserver": "bin/tsserver" + }, + "engines": { + "node": ">=4.2.0" + } + }, + "node_modules/ufo": { + "version": "0.8.6", + "resolved": "https://registry.npmjs.org/ufo/-/ufo-0.8.6.tgz", + "integrity": "sha512-fk6CmUgwKCfX79EzcDQQpSCMxrHstvbLswFChHS0Vump+kFkw7nJBfTZoC1j0bOGoY9I7R3n2DGek5ajbcYnOw==", + "dev": true + }, + "node_modules/uglify-js": { + "version": "3.17.4", + "resolved": "https://registry.npmjs.org/uglify-js/-/uglify-js-3.17.4.tgz", + "integrity": "sha512-T9q82TJI9e/C1TAxYvfb16xO120tMVFZrGA3f9/P4424DNu6ypK103y0GPFVa17yotwSyZW5iYXgjYHkGrJW/g==", + "dev": true, + "optional": true, + "bin": { + "uglifyjs": "bin/uglifyjs" + }, + "engines": { + "node": ">=0.8.0" + } + }, + "node_modules/unbuild": { + "version": "0.9.4", + "resolved": "https://registry.npmjs.org/unbuild/-/unbuild-0.9.4.tgz", + "integrity": "sha512-IkKPqzazcCNfwTSs5bDRS2bOvg1Zh9gPYQq/ruVarCoM4f7KXclSrcb0jyJiSU/5qhakZ8K5B2CzwX4ZaaVKdQ==", + "dev": true, + "dependencies": { + "@rollup/plugin-alias": "^4.0.0", + "@rollup/plugin-commonjs": "^23.0.0", + "@rollup/plugin-json": "^5.0.0", + "@rollup/plugin-node-resolve": "^15.0.0", + "@rollup/plugin-replace": "^5.0.0", + "@rollup/pluginutils": "^5.0.1", + "chalk": "^5.1.2", + "consola": "^2.15.3", + "defu": "^6.1.0", + "esbuild": "^0.15.11", + "globby": "^13.1.2", + "hookable": "^5.4.1", + "jiti": "^1.16.0", + "magic-string": "^0.26.7", + "mkdirp": "^1.0.4", + "mkdist": "^0.3.13", + "mlly": "^0.5.16", + "mri": "^1.2.0", + "pathe": "^0.3.9", + "pkg-types": "^0.3.5", + "pretty-bytes": "^6.0.0", + "rimraf": "^3.0.2", + "rollup": "^3.2.0", + "rollup-plugin-dts": "^5.0.0", + "scule": "^0.3.2", + "typescript": "^4.8.4", + "untyped": "^0.5.0" + }, + "bin": { + "unbuild": "dist/cli.mjs" + } + }, + "node_modules/universalify": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/universalify/-/universalify-2.0.0.tgz", + "integrity": "sha512-hAZsKq7Yy11Zu1DE0OzWjw7nnLZmJZYTDZZyEFHZdUhV8FkH5MCfoU1XMaxXovpyW5nq5scPqq0ZDP9Zyl04oQ==", + "dev": true, + "engines": { + "node": ">= 10.0.0" + } + }, + "node_modules/untyped": { + "version": "0.5.0", + "resolved": "https://registry.npmjs.org/untyped/-/untyped-0.5.0.tgz", + "integrity": "sha512-2Sre5A1a7G61bjaAKZnSFaVgbJMwwbbYQpJFH69hAYcDfN7kIaktlSphS02XJilz4+/jR1tsJ5MHo1oMoCezxg==", + "dev": true, + "dependencies": { + "@babel/core": "^7.19.0", + "@babel/standalone": "^7.19.0", + "@babel/types": "^7.19.0", + "scule": "^0.3.2" + } + }, + "node_modules/update-browserslist-db": { + "version": "1.0.10", + "resolved": "https://registry.npmjs.org/update-browserslist-db/-/update-browserslist-db-1.0.10.tgz", + "integrity": "sha512-OztqDenkfFkbSG+tRxBeAnCVPckDBcvibKd35yDONx6OU8N7sqgwc7rCbkJ/WcYtVRZ4ba68d6byhC21GFh7sQ==", + "dev": true, + "funding": [ + { + "type": "opencollective", + "url": "https://opencollective.com/browserslist" + }, + { + "type": "tidelift", + "url": "https://tidelift.com/funding/github/npm/browserslist" + } + ], + "dependencies": { + "escalade": "^3.1.1", + "picocolors": "^1.0.0" + }, + "bin": { + "browserslist-lint": "cli.js" + }, + "peerDependencies": { + "browserslist": ">= 4.21.0" + } + }, + "node_modules/webidl-conversions": { + "version": "3.0.1", + "resolved": "https://registry.npmjs.org/webidl-conversions/-/webidl-conversions-3.0.1.tgz", + "integrity": "sha512-2JAn3z8AR6rjK8Sm8orRC0h/bcl/DqL7tRPdGZ4I1CjdF+EaMLmYxBHyXuKL849eucPFhvBoxMsflfOb8kxaeQ==", + "dev": true + }, + "node_modules/whatwg-url": { + "version": "5.0.0", + "resolved": "https://registry.npmjs.org/whatwg-url/-/whatwg-url-5.0.0.tgz", + "integrity": "sha512-saE57nupxk6v3HY35+jzBwYa0rKSy0XR8JSxZPwgLr7ys0IBzhGviA1/TUGJLmSVqs8pb9AnvICXEuOHLprYTw==", + "dev": true, + "dependencies": { + "tr46": "~0.0.3", + "webidl-conversions": "^3.0.0" + } + }, + "node_modules/which": { + "version": "2.0.2", + "resolved": "https://registry.npmjs.org/which/-/which-2.0.2.tgz", + "integrity": "sha512-BLI3Tl1TW3Pvl70l3yq3Y64i+awpwXqsGBYWkkqMtnbXgrMD+yj7rhW0kuEDxzJaYXGjEW5ogapKNMEKNMjibA==", + "dev": true, + "dependencies": { + "isexe": "^2.0.0" + }, + "bin": { + "node-which": "bin/node-which" + }, + "engines": { + "node": ">= 8" + } + }, + "node_modules/wordwrap": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/wordwrap/-/wordwrap-1.0.0.tgz", + "integrity": "sha512-gvVzJFlPycKc5dZN4yPkP8w7Dc37BtP1yczEneOb4uq34pXZcvrtRTmWV8W+Ume+XCxKgbjM+nevkyFPMybd4Q==", + "dev": true + }, + "node_modules/wrappy": { + "version": "1.0.2", + "resolved": "https://registry.npmjs.org/wrappy/-/wrappy-1.0.2.tgz", + "integrity": "sha512-l4Sp/DRseor9wL6EvV2+TuQn63dMkPjZ/sp9XkghTEbV9KlPS1xUsZ3u7/IQO4wxtcFB4bgpQPRcR3QCvezPcQ==", + "dev": true + }, + "node_modules/yallist": { + "version": "4.0.0", + "resolved": "https://registry.npmjs.org/yallist/-/yallist-4.0.0.tgz", + "integrity": "sha512-3wdGidZyq5PB084XLES5TpOSRA3wjXAlIWMhum2kRcv/41Sn2emQ0dycQW4uZXLejwKvg6EsvbdlVL+FYEct7A==", + "dev": true + } + }, + "dependencies": { + "@ampproject/remapping": { + "version": "2.2.0", + "resolved": "https://registry.npmjs.org/@ampproject/remapping/-/remapping-2.2.0.tgz", + "integrity": "sha512-qRmjj8nj9qmLTQXXmaR1cck3UXSRMPrbsLJAasZpF+t3riI71BXed5ebIOYwQntykeZuhjsdweEc9BxH5Jc26w==", + "dev": true, + "requires": { + "@jridgewell/gen-mapping": "^0.1.0", + "@jridgewell/trace-mapping": "^0.3.9" + } + }, + "@babel/code-frame": { + "version": "7.18.6", + "resolved": "https://registry.npmjs.org/@babel/code-frame/-/code-frame-7.18.6.tgz", + "integrity": "sha512-TDCmlK5eOvH+eH7cdAFlNXeVJqWIQ7gW9tY1GJIpUtFb6CmjVyq2VM3u71bOyR8CRihcCgMUYoDNyLXao3+70Q==", + "dev": true, + "requires": { + "@babel/highlight": "^7.18.6" + } + }, + "@babel/compat-data": { + "version": "7.20.1", + "resolved": "https://registry.npmjs.org/@babel/compat-data/-/compat-data-7.20.1.tgz", + "integrity": "sha512-EWZ4mE2diW3QALKvDMiXnbZpRvlj+nayZ112nK93SnhqOtpdsbVD4W+2tEoT3YNBAG9RBR0ISY758ZkOgsn6pQ==", + "dev": true + }, + "@babel/core": { + "version": "7.20.2", + "resolved": "https://registry.npmjs.org/@babel/core/-/core-7.20.2.tgz", + "integrity": "sha512-w7DbG8DtMrJcFOi4VrLm+8QM4az8Mo+PuLBKLp2zrYRCow8W/f9xiXm5sN53C8HksCyDQwCKha9JiDoIyPjT2g==", + "dev": true, + "requires": { + "@ampproject/remapping": "^2.1.0", + "@babel/code-frame": "^7.18.6", + "@babel/generator": "^7.20.2", + "@babel/helper-compilation-targets": "^7.20.0", + "@babel/helper-module-transforms": "^7.20.2", + "@babel/helpers": "^7.20.1", + "@babel/parser": "^7.20.2", + "@babel/template": "^7.18.10", + "@babel/traverse": "^7.20.1", + "@babel/types": "^7.20.2", + "convert-source-map": "^1.7.0", + "debug": "^4.1.0", + "gensync": "^1.0.0-beta.2", + "json5": "^2.2.1", + "semver": "^6.3.0" + }, + "dependencies": { + "semver": { + "version": "6.3.0", + "resolved": "https://registry.npmjs.org/semver/-/semver-6.3.0.tgz", + "integrity": "sha512-b39TBaTSfV6yBrapU89p5fKekE2m/NwnDocOVruQFS1/veMgdzuPcnOM34M6CwxW8jH/lxEa5rBoDeUwu5HHTw==", + "dev": true + } + } + }, + "@babel/generator": { + "version": "7.20.3", + "resolved": "https://registry.npmjs.org/@babel/generator/-/generator-7.20.3.tgz", + "integrity": "sha512-Wl5ilw2UD1+ZYprHVprxHZJCFeBWlzZYOovE4SDYLZnqCOD11j+0QzNeEWKLLTWM7nixrZEh7vNIyb76MyJg3A==", + "dev": true, + "requires": { + "@babel/types": "^7.20.2", + "@jridgewell/gen-mapping": "^0.3.2", + "jsesc": "^2.5.1" + }, + "dependencies": { + "@jridgewell/gen-mapping": { + "version": "0.3.2", + "resolved": "https://registry.npmjs.org/@jridgewell/gen-mapping/-/gen-mapping-0.3.2.tgz", + "integrity": "sha512-mh65xKQAzI6iBcFzwv28KVWSmCkdRBWoOh+bYQGW3+6OZvbbN3TqMGo5hqYxQniRcH9F2VZIoJCm4pa3BPDK/A==", + "dev": true, + "requires": { + "@jridgewell/set-array": "^1.0.1", + "@jridgewell/sourcemap-codec": "^1.4.10", + "@jridgewell/trace-mapping": "^0.3.9" + } + } + } + }, + "@babel/helper-compilation-targets": { + "version": "7.20.0", + "resolved": "https://registry.npmjs.org/@babel/helper-compilation-targets/-/helper-compilation-targets-7.20.0.tgz", + "integrity": "sha512-0jp//vDGp9e8hZzBc6N/KwA5ZK3Wsm/pfm4CrY7vzegkVxc65SgSn6wYOnwHe9Js9HRQ1YTCKLGPzDtaS3RoLQ==", + "dev": true, + "requires": { + "@babel/compat-data": "^7.20.0", + "@babel/helper-validator-option": "^7.18.6", + "browserslist": "^4.21.3", + "semver": "^6.3.0" + }, + "dependencies": { + "semver": { + "version": "6.3.0", + "resolved": "https://registry.npmjs.org/semver/-/semver-6.3.0.tgz", + "integrity": "sha512-b39TBaTSfV6yBrapU89p5fKekE2m/NwnDocOVruQFS1/veMgdzuPcnOM34M6CwxW8jH/lxEa5rBoDeUwu5HHTw==", + "dev": true + } + } + }, + "@babel/helper-environment-visitor": { + "version": "7.18.9", + "resolved": "https://registry.npmjs.org/@babel/helper-environment-visitor/-/helper-environment-visitor-7.18.9.tgz", + "integrity": "sha512-3r/aACDJ3fhQ/EVgFy0hpj8oHyHpQc+LPtJoY9SzTThAsStm4Ptegq92vqKoE3vD706ZVFWITnMnxucw+S9Ipg==", + "dev": true + }, + "@babel/helper-function-name": { + "version": "7.19.0", + "resolved": "https://registry.npmjs.org/@babel/helper-function-name/-/helper-function-name-7.19.0.tgz", + "integrity": "sha512-WAwHBINyrpqywkUH0nTnNgI5ina5TFn85HKS0pbPDfxFfhyR/aNQEn4hGi1P1JyT//I0t4OgXUlofzWILRvS5w==", + "dev": true, + "requires": { + "@babel/template": "^7.18.10", + "@babel/types": "^7.19.0" + } + }, + "@babel/helper-hoist-variables": { + "version": "7.18.6", + "resolved": "https://registry.npmjs.org/@babel/helper-hoist-variables/-/helper-hoist-variables-7.18.6.tgz", + "integrity": "sha512-UlJQPkFqFULIcyW5sbzgbkxn2FKRgwWiRexcuaR8RNJRy8+LLveqPjwZV/bwrLZCN0eUHD/x8D0heK1ozuoo6Q==", + "dev": true, + "requires": { + "@babel/types": "^7.18.6" + } + }, + "@babel/helper-module-imports": { + "version": "7.18.6", + "resolved": "https://registry.npmjs.org/@babel/helper-module-imports/-/helper-module-imports-7.18.6.tgz", + "integrity": "sha512-0NFvs3VkuSYbFi1x2Vd6tKrywq+z/cLeYC/RJNFrIX/30Bf5aiGYbtvGXolEktzJH8o5E5KJ3tT+nkxuuZFVlA==", + "dev": true, + "requires": { + "@babel/types": "^7.18.6" + } + }, + "@babel/helper-module-transforms": { + "version": "7.20.2", + "resolved": "https://registry.npmjs.org/@babel/helper-module-transforms/-/helper-module-transforms-7.20.2.tgz", + "integrity": "sha512-zvBKyJXRbmK07XhMuujYoJ48B5yvvmM6+wcpv6Ivj4Yg6qO7NOZOSnvZN9CRl1zz1Z4cKf8YejmCMh8clOoOeA==", + "dev": true, + "requires": { + "@babel/helper-environment-visitor": "^7.18.9", + "@babel/helper-module-imports": "^7.18.6", + "@babel/helper-simple-access": "^7.20.2", + "@babel/helper-split-export-declaration": "^7.18.6", + "@babel/helper-validator-identifier": "^7.19.1", + "@babel/template": "^7.18.10", + "@babel/traverse": "^7.20.1", + "@babel/types": "^7.20.2" + } + }, + "@babel/helper-simple-access": { + "version": "7.20.2", + "resolved": "https://registry.npmjs.org/@babel/helper-simple-access/-/helper-simple-access-7.20.2.tgz", + "integrity": "sha512-+0woI/WPq59IrqDYbVGfshjT5Dmk/nnbdpcF8SnMhhXObpTq2KNBdLFRFrkVdbDOyUmHBCxzm5FHV1rACIkIbA==", + "dev": true, + "requires": { + "@babel/types": "^7.20.2" + } + }, + "@babel/helper-split-export-declaration": { + "version": "7.18.6", + "resolved": "https://registry.npmjs.org/@babel/helper-split-export-declaration/-/helper-split-export-declaration-7.18.6.tgz", + "integrity": "sha512-bde1etTx6ZyTmobl9LLMMQsaizFVZrquTEHOqKeQESMKo4PlObf+8+JA25ZsIpZhT/WEd39+vOdLXAFG/nELpA==", + "dev": true, + "requires": { + "@babel/types": "^7.18.6" + } + }, + "@babel/helper-string-parser": { + "version": "7.19.4", + "resolved": "https://registry.npmjs.org/@babel/helper-string-parser/-/helper-string-parser-7.19.4.tgz", + "integrity": "sha512-nHtDoQcuqFmwYNYPz3Rah5ph2p8PFeFCsZk9A/48dPc/rGocJ5J3hAAZ7pb76VWX3fZKu+uEr/FhH5jLx7umrw==", + "dev": true + }, + "@babel/helper-validator-identifier": { + "version": "7.19.1", + "resolved": "https://registry.npmjs.org/@babel/helper-validator-identifier/-/helper-validator-identifier-7.19.1.tgz", + "integrity": "sha512-awrNfaMtnHUr653GgGEs++LlAvW6w+DcPrOliSMXWCKo597CwL5Acf/wWdNkf/tfEQE3mjkeD1YOVZOUV/od1w==", + "dev": true + }, + "@babel/helper-validator-option": { + "version": "7.18.6", + "resolved": "https://registry.npmjs.org/@babel/helper-validator-option/-/helper-validator-option-7.18.6.tgz", + "integrity": "sha512-XO7gESt5ouv/LRJdrVjkShckw6STTaB7l9BrpBaAHDeF5YZT+01PCwmR0SJHnkW6i8OwW/EVWRShfi4j2x+KQw==", + "dev": true + }, + "@babel/helpers": { + "version": "7.20.1", + "resolved": "https://registry.npmjs.org/@babel/helpers/-/helpers-7.20.1.tgz", + "integrity": "sha512-J77mUVaDTUJFZ5BpP6mMn6OIl3rEWymk2ZxDBQJUG3P+PbmyMcF3bYWvz0ma69Af1oobDqT/iAsvzhB58xhQUg==", + "dev": true, + "requires": { + "@babel/template": "^7.18.10", + "@babel/traverse": "^7.20.1", + "@babel/types": "^7.20.0" + } + }, + "@babel/highlight": { + "version": "7.18.6", + "resolved": "https://registry.npmjs.org/@babel/highlight/-/highlight-7.18.6.tgz", + "integrity": "sha512-u7stbOuYjaPezCuLj29hNW1v64M2Md2qupEKP1fHc7WdOA3DgLh37suiSrZYY7haUB7iBeQZ9P1uiRF359do3g==", + "dev": true, + "requires": { + "@babel/helper-validator-identifier": "^7.18.6", + "chalk": "^2.0.0", + "js-tokens": "^4.0.0" + }, + "dependencies": { + "chalk": { + "version": "2.4.2", + "resolved": "https://registry.npmjs.org/chalk/-/chalk-2.4.2.tgz", + "integrity": "sha512-Mti+f9lpJNcwF4tWV8/OrTTtF1gZi+f8FqlyAdouralcFWFQWF2+NgCHShjkCb+IFBLq9buZwE1xckQU4peSuQ==", + "dev": true, + "requires": { + "ansi-styles": "^3.2.1", + "escape-string-regexp": "^1.0.5", + "supports-color": "^5.3.0" + } + } + } + }, + "@babel/parser": { + "version": "7.20.3", + "resolved": "https://registry.npmjs.org/@babel/parser/-/parser-7.20.3.tgz", + "integrity": "sha512-OP/s5a94frIPXwjzEcv5S/tpQfc6XhxYUnmWpgdqMWGgYCuErA3SzozaRAMQgSZWKeTJxht9aWAkUY+0UzvOFg==", + "dev": true + }, + "@babel/standalone": { + "version": "7.20.3", + "resolved": "https://registry.npmjs.org/@babel/standalone/-/standalone-7.20.3.tgz", + "integrity": "sha512-u6VIhdacVpqVhBhSo21TRb1zcCdnPPyBsIC2LLnLnbmuJxlLsmGMAlLh+Xcsaqko4aGZrAtXIvTaMIQtUBkE8A==", + "dev": true + }, + "@babel/template": { + "version": "7.18.10", + "resolved": "https://registry.npmjs.org/@babel/template/-/template-7.18.10.tgz", + "integrity": "sha512-TI+rCtooWHr3QJ27kJxfjutghu44DLnasDMwpDqCXVTal9RLp3RSYNh4NdBrRP2cQAoG9A8juOQl6P6oZG4JxA==", + "dev": true, + "requires": { + "@babel/code-frame": "^7.18.6", + "@babel/parser": "^7.18.10", + "@babel/types": "^7.18.10" + } + }, + "@babel/traverse": { + "version": "7.20.1", + "resolved": "https://registry.npmjs.org/@babel/traverse/-/traverse-7.20.1.tgz", + "integrity": "sha512-d3tN8fkVJwFLkHkBN479SOsw4DMZnz8cdbL/gvuDuzy3TS6Nfw80HuQqhw1pITbIruHyh7d1fMA47kWzmcUEGA==", + "dev": true, + "requires": { + "@babel/code-frame": "^7.18.6", + "@babel/generator": "^7.20.1", + "@babel/helper-environment-visitor": "^7.18.9", + "@babel/helper-function-name": "^7.19.0", + "@babel/helper-hoist-variables": "^7.18.6", + "@babel/helper-split-export-declaration": "^7.18.6", + "@babel/parser": "^7.20.1", + "@babel/types": "^7.20.0", + "debug": "^4.1.0", + "globals": "^11.1.0" + } + }, + "@babel/types": { + "version": "7.20.2", + "resolved": "https://registry.npmjs.org/@babel/types/-/types-7.20.2.tgz", + "integrity": "sha512-FnnvsNWgZCr232sqtXggapvlkk/tuwR/qhGzcmxI0GXLCjmPYQPzio2FbdlWuY6y1sHFfQKk+rRbUZ9VStQMog==", + "dev": true, + "requires": { + "@babel/helper-string-parser": "^7.19.4", + "@babel/helper-validator-identifier": "^7.19.1", + "to-fast-properties": "^2.0.0" + } + }, + "@esbuild/android-arm": { + "version": "0.15.13", + "resolved": "https://registry.npmjs.org/@esbuild/android-arm/-/android-arm-0.15.13.tgz", + "integrity": "sha512-RY2fVI8O0iFUNvZirXaQ1vMvK0xhCcl0gqRj74Z6yEiO1zAUa7hbsdwZM1kzqbxHK7LFyMizipfXT3JME+12Hw==", + "dev": true, + "optional": true + }, + "@esbuild/linux-loong64": { + "version": "0.15.13", + "resolved": "https://registry.npmjs.org/@esbuild/linux-loong64/-/linux-loong64-0.15.13.tgz", + "integrity": "sha512-+BoyIm4I8uJmH/QDIH0fu7MG0AEx9OXEDXnqptXCwKOlOqZiS4iraH1Nr7/ObLMokW3sOCeBNyD68ATcV9b9Ag==", + "dev": true, + "optional": true + }, + "@jridgewell/gen-mapping": { + "version": "0.1.1", + "resolved": "https://registry.npmjs.org/@jridgewell/gen-mapping/-/gen-mapping-0.1.1.tgz", + "integrity": "sha512-sQXCasFk+U8lWYEe66WxRDOE9PjVz4vSM51fTu3Hw+ClTpUSQb718772vH3pyS5pShp6lvQM7SxgIDXXXmOX7w==", + "dev": true, + "requires": { + "@jridgewell/set-array": "^1.0.0", + "@jridgewell/sourcemap-codec": "^1.4.10" + } + }, + "@jridgewell/resolve-uri": { + "version": "3.1.0", + "resolved": "https://registry.npmjs.org/@jridgewell/resolve-uri/-/resolve-uri-3.1.0.tgz", + "integrity": "sha512-F2msla3tad+Mfht5cJq7LSXcdudKTWCVYUgw6pLFOOHSTtZlj6SWNYAp+AhuqLmWdBO2X5hPrLcu8cVP8fy28w==", + "dev": true + }, + "@jridgewell/set-array": { + "version": "1.1.2", + "resolved": "https://registry.npmjs.org/@jridgewell/set-array/-/set-array-1.1.2.tgz", + "integrity": "sha512-xnkseuNADM0gt2bs+BvhO0p78Mk762YnZdsuzFV018NoG1Sj1SCQvpSqa7XUaTam5vAGasABV9qXASMKnFMwMw==", + "dev": true + }, + "@jridgewell/sourcemap-codec": { + "version": "1.4.14", + "resolved": "https://registry.npmjs.org/@jridgewell/sourcemap-codec/-/sourcemap-codec-1.4.14.tgz", + "integrity": "sha512-XPSJHWmi394fuUuzDnGz1wiKqWfo1yXecHQMRf2l6hztTO+nPru658AyDngaBe7isIxEkRsPR3FZh+s7iVa4Uw==", + "dev": true + }, + "@jridgewell/trace-mapping": { + "version": "0.3.17", + "resolved": "https://registry.npmjs.org/@jridgewell/trace-mapping/-/trace-mapping-0.3.17.tgz", + "integrity": "sha512-MCNzAp77qzKca9+W/+I0+sEpaUnZoeasnghNeVc41VZCEKaCH73Vq3BZZ/SzWIgrqE4H4ceI+p+b6C0mHf9T4g==", + "dev": true, + "requires": { + "@jridgewell/resolve-uri": "3.1.0", + "@jridgewell/sourcemap-codec": "1.4.14" + } + }, + "@nodelib/fs.scandir": { + "version": "2.1.5", + "resolved": "https://registry.npmjs.org/@nodelib/fs.scandir/-/fs.scandir-2.1.5.tgz", + "integrity": "sha512-vq24Bq3ym5HEQm2NKCr3yXDwjc7vTsEThRDnkp2DK9p1uqLR+DHurm/NOTo0KG7HYHU7eppKZj3MyqYuMBf62g==", + "dev": true, + "requires": { + "@nodelib/fs.stat": "2.0.5", + "run-parallel": "^1.1.9" + } + }, + "@nodelib/fs.stat": { + "version": "2.0.5", + "resolved": "https://registry.npmjs.org/@nodelib/fs.stat/-/fs.stat-2.0.5.tgz", + "integrity": "sha512-RkhPPp2zrqDAQA/2jNhnztcPAlv64XdhIp7a7454A5ovI7Bukxgt7MX7udwAu3zg1DcpPU0rz3VV1SeaqvY4+A==", + "dev": true + }, + "@nodelib/fs.walk": { + "version": "1.2.8", + "resolved": "https://registry.npmjs.org/@nodelib/fs.walk/-/fs.walk-1.2.8.tgz", + "integrity": "sha512-oGB+UxlgWcgQkgwo8GcEGwemoTFt3FIO9ababBmaGwXIoBKZ+GTy0pP185beGg7Llih/NSHSV2XAs1lnznocSg==", + "dev": true, + "requires": { + "@nodelib/fs.scandir": "2.1.5", + "fastq": "^1.6.0" + } + }, + "@rollup/plugin-alias": { + "version": "4.0.2", + "resolved": "https://registry.npmjs.org/@rollup/plugin-alias/-/plugin-alias-4.0.2.tgz", + "integrity": "sha512-1hv7dBOZZwo3SEupxn4UA2N0EDThqSSS+wI1St1TNTBtOZvUchyIClyHcnDcjjrReTPZ47Faedrhblv4n+T5UQ==", + "dev": true, + "requires": { + "slash": "^4.0.0" + } + }, + "@rollup/plugin-commonjs": { + "version": "23.0.2", + "resolved": "https://registry.npmjs.org/@rollup/plugin-commonjs/-/plugin-commonjs-23.0.2.tgz", + "integrity": "sha512-e9ThuiRf93YlVxc4qNIurvv+Hp9dnD+4PjOqQs5vAYfcZ3+AXSrcdzXnVjWxcGQOa6KGJFcRZyUI3ktWLavFjg==", + "dev": true, + "requires": { + "@rollup/pluginutils": "^5.0.1", + "commondir": "^1.0.1", + "estree-walker": "^2.0.2", + "glob": "^8.0.3", + "is-reference": "1.2.1", + "magic-string": "^0.26.4" + }, + "dependencies": { + "brace-expansion": { + "version": "2.0.1", + "resolved": "https://registry.npmjs.org/brace-expansion/-/brace-expansion-2.0.1.tgz", + "integrity": "sha512-XnAIvQ8eM+kC6aULx6wuQiwVsnzsi9d3WxzV3FpWTGA19F621kwdbsAcFKXgKUHZWsy+mY6iL1sHTxWEFCytDA==", + "dev": true, + "requires": { + "balanced-match": "^1.0.0" + } + }, + "glob": { + "version": "8.0.3", + "resolved": "https://registry.npmjs.org/glob/-/glob-8.0.3.tgz", + "integrity": "sha512-ull455NHSHI/Y1FqGaaYFaLGkNMMJbavMrEGFXG/PGrg6y7sutWHUHrz6gy6WEBH6akM1M414dWKCNs+IhKdiQ==", + "dev": true, + "requires": { + "fs.realpath": "^1.0.0", + "inflight": "^1.0.4", + "inherits": "2", + "minimatch": "^5.0.1", + "once": "^1.3.0" + } + }, + "minimatch": { + "version": "5.1.0", + "resolved": "https://registry.npmjs.org/minimatch/-/minimatch-5.1.0.tgz", + "integrity": "sha512-9TPBGGak4nHfGZsPBohm9AWg6NoT7QTCehS3BIJABslyZbzxfV78QM2Y6+i741OPZIafFAaiiEMh5OyIrJPgtg==", + "dev": true, + "requires": { + "brace-expansion": "^2.0.1" + } + } + } + }, + "@rollup/plugin-json": { + "version": "5.0.1", + "resolved": "https://registry.npmjs.org/@rollup/plugin-json/-/plugin-json-5.0.1.tgz", + "integrity": "sha512-QCwhZZLvM8nRcTHyR1vOgyTMiAnjiNj1ebD/BMRvbO1oc/z14lZH6PfxXeegee2B6mky/u9fia4fxRM4TqrUaw==", + "dev": true, + "requires": { + "@rollup/pluginutils": "^5.0.1" + } + }, + "@rollup/plugin-node-resolve": { + "version": "15.0.1", + "resolved": "https://registry.npmjs.org/@rollup/plugin-node-resolve/-/plugin-node-resolve-15.0.1.tgz", + "integrity": "sha512-ReY88T7JhJjeRVbfCyNj+NXAG3IIsVMsX9b5/9jC98dRP8/yxlZdz7mHZbHk5zHr24wZZICS5AcXsFZAXYUQEg==", + "dev": true, + "requires": { + "@rollup/pluginutils": "^5.0.1", + "@types/resolve": "1.20.2", + "deepmerge": "^4.2.2", + "is-builtin-module": "^3.2.0", + "is-module": "^1.0.0", + "resolve": "^1.22.1" + } + }, + "@rollup/plugin-replace": { + "version": "5.0.1", + "resolved": "https://registry.npmjs.org/@rollup/plugin-replace/-/plugin-replace-5.0.1.tgz", + "integrity": "sha512-Z3MfsJ4CK17BfGrZgvrcp/l6WXoKb0kokULO+zt/7bmcyayokDaQ2K3eDJcRLCTAlp5FPI4/gz9MHAsosz4Rag==", + "dev": true, + "requires": { + "@rollup/pluginutils": "^5.0.1", + "magic-string": "^0.26.4" + } + }, + "@rollup/pluginutils": { + "version": "5.0.2", + "resolved": "https://registry.npmjs.org/@rollup/pluginutils/-/pluginutils-5.0.2.tgz", + "integrity": "sha512-pTd9rIsP92h+B6wWwFbW8RkZv4hiR/xKsqre4SIuAOaOEQRxi0lqLke9k2/7WegC85GgUs9pjmOjCUi3In4vwA==", + "dev": true, + "requires": { + "@types/estree": "^1.0.0", + "estree-walker": "^2.0.2", + "picomatch": "^2.3.1" + } + }, + "@types/estree": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/@types/estree/-/estree-1.0.0.tgz", + "integrity": "sha512-WulqXMDUTYAXCjZnk6JtIHPigp55cVtDgDrO2gHRwhyJto21+1zbVCtOYB2L1F9w4qCQ0rOGWBnBe0FNTiEJIQ==", + "dev": true + }, + "@types/resolve": { + "version": "1.20.2", + "resolved": "https://registry.npmjs.org/@types/resolve/-/resolve-1.20.2.tgz", + "integrity": "sha512-60BCwRFOZCQhDncwQdxxeOEEkbc5dIMccYLwbxsS4TUNeVECQ/pBJ0j09mrHOl/JJvpRPGwO9SvE4nR2Nb/a4Q==", + "dev": true + }, + "acorn": { + "version": "8.8.1", + "resolved": "https://registry.npmjs.org/acorn/-/acorn-8.8.1.tgz", + "integrity": "sha512-7zFpHzhnqYKrkYdUjF1HI1bzd0VygEGX8lFk4k5zVMqHEoES+P+7TKI+EvLO9WVMJ8eekdO0aDEK044xTXwPPA==", + "dev": true + }, + "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==", + "dev": true, + "requires": { + "color-convert": "^1.9.0" + } + }, + "array-union": { + "version": "2.1.0", + "resolved": "https://registry.npmjs.org/array-union/-/array-union-2.1.0.tgz", + "integrity": "sha512-HGyxoOTYUyCM6stUe6EJgnd4EoewAI7zMdfqO+kGjnlZmBDz/cR5pf8r/cR4Wq60sL/p0IkcjUEEPwS3GFrIyw==", + "dev": true + }, + "auto-changelog": { + "version": "2.4.0", + "resolved": "https://registry.npmjs.org/auto-changelog/-/auto-changelog-2.4.0.tgz", + "integrity": "sha512-vh17hko1c0ItsEcw6m7qPRf3m45u+XK5QyCrrBFViElZ8jnKrPC1roSznrd1fIB/0vR/zawdECCRJtTuqIXaJw==", + "dev": true, + "requires": { + "commander": "^7.2.0", + "handlebars": "^4.7.7", + "node-fetch": "^2.6.1", + "parse-github-url": "^1.0.2", + "semver": "^7.3.5" + } + }, + "balanced-match": { + "version": "1.0.2", + "resolved": "https://registry.npmjs.org/balanced-match/-/balanced-match-1.0.2.tgz", + "integrity": "sha512-3oSeUO0TMV67hN1AmbXsK4yaqU7tjiHlbxRDZOpH0KW9+CeX4bRAaX0Anxt0tx2MrpRpWwQaPwIlISEJhYU5Pw==", + "dev": true + }, + "brace-expansion": { + "version": "1.1.11", + "resolved": "https://registry.npmjs.org/brace-expansion/-/brace-expansion-1.1.11.tgz", + "integrity": "sha512-iCuPHDFgrHX7H2vEI/5xpz07zSHB00TpugqhmYtVmMO6518mCuRMoOYFldEBl0g187ufozdaHgWKcYFb61qGiA==", + "dev": true, + "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==", + "dev": true, + "requires": { + "fill-range": "^7.0.1" + } + }, + "browserslist": { + "version": "4.21.4", + "resolved": "https://registry.npmjs.org/browserslist/-/browserslist-4.21.4.tgz", + "integrity": "sha512-CBHJJdDmgjl3daYjN5Cp5kbTf1mUhZoS+beLklHIvkOWscs83YAhLlF3Wsh/lciQYAcbBJgTOD44VtG31ZM4Hw==", + "dev": true, + "requires": { + "caniuse-lite": "^1.0.30001400", + "electron-to-chromium": "^1.4.251", + "node-releases": "^2.0.6", + "update-browserslist-db": "^1.0.9" + } + }, + "builtin-modules": { + "version": "3.3.0", + "resolved": "https://registry.npmjs.org/builtin-modules/-/builtin-modules-3.3.0.tgz", + "integrity": "sha512-zhaCDicdLuWN5UbN5IMnFqNMhNfo919sH85y2/ea+5Yg9TsTkeZxpL+JLbp6cgYFS4sRLp3YV4S6yDuqVWHYOw==", + "dev": true + }, + "caniuse-lite": { + "version": "1.0.30001431", + "resolved": "https://registry.npmjs.org/caniuse-lite/-/caniuse-lite-1.0.30001431.tgz", + "integrity": "sha512-zBUoFU0ZcxpvSt9IU66dXVT/3ctO1cy4y9cscs1szkPlcWb6pasYM144GqrUygUbT+k7cmUCW61cvskjcv0enQ==", + "dev": true + }, + "chalk": { + "version": "5.1.2", + "resolved": "https://registry.npmjs.org/chalk/-/chalk-5.1.2.tgz", + "integrity": "sha512-E5CkT4jWURs1Vy5qGJye+XwCkNj7Od3Af7CP6SujMetSMkLs8Do2RWJK5yx1wamHV/op8Rz+9rltjaTQWDnEFQ==", + "dev": true + }, + "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==", + "dev": true, + "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": "sha512-72fSenhMw2HZMTVHeCA9KCmpEIbzWiQsjN+BHcBbS9vr1mtt+vJjPdksIBNUmKAW8TFUDPJK5SUU3QhE9NEXDw==", + "dev": true + }, + "commander": { + "version": "7.2.0", + "resolved": "https://registry.npmjs.org/commander/-/commander-7.2.0.tgz", + "integrity": "sha512-QrWXB+ZQSVPmIWIhtEO9H+gwHaMGYiF5ChvoJ+K9ZGHG/sVsa6yiesAD1GC/x46sET00Xlwo1u49RVVVzvcSkw==", + "dev": true + }, + "commondir": { + "version": "1.0.1", + "resolved": "https://registry.npmjs.org/commondir/-/commondir-1.0.1.tgz", + "integrity": "sha512-W9pAhw0ja1Edb5GVdIF1mjZw/ASI0AlShXM83UUGe2DVr5TdAPEA1OA8m/g8zWp9x6On7gqufY+FatDbC3MDQg==", + "dev": true + }, + "concat-map": { + "version": "0.0.1", + "resolved": "https://registry.npmjs.org/concat-map/-/concat-map-0.0.1.tgz", + "integrity": "sha512-/Srv4dswyQNBfohGpz9o6Yb3Gz3SrUDqBH5rTuhGR7ahtlbYKnVxw2bCFMRljaA7EXHaXZ8wsHdodFvbkhKmqg==", + "dev": true + }, + "consola": { + "version": "2.15.3", + "resolved": "https://registry.npmjs.org/consola/-/consola-2.15.3.tgz", + "integrity": "sha512-9vAdYbHj6x2fLKC4+oPH0kFzY/orMZyG2Aj+kNylHxKGJ/Ed4dpNyAQYwJOdqO4zdM7XpVHmyejQDcQHrnuXbw==", + "dev": true + }, + "convert-source-map": { + "version": "1.9.0", + "resolved": "https://registry.npmjs.org/convert-source-map/-/convert-source-map-1.9.0.tgz", + "integrity": "sha512-ASFBup0Mz1uyiIjANan1jzLQami9z1PoYSZCiiYW2FczPbenXc45FZdBZLzOT+r6+iciuEModtmCti+hjaAk0A==", + "dev": true + }, + "cross-spawn": { + "version": "7.0.3", + "resolved": "https://registry.npmjs.org/cross-spawn/-/cross-spawn-7.0.3.tgz", + "integrity": "sha512-iRDPJKUPVEND7dHPO8rkbOnPpyDygcDFtWjpeWNCgy8WP2rXcxXL8TskReQl6OrB2G7+UJrags1q15Fudc7G6w==", + "dev": true, + "requires": { + "path-key": "^3.1.0", + "shebang-command": "^2.0.0", + "which": "^2.0.1" + } + }, + "debug": { + "version": "4.3.4", + "resolved": "https://registry.npmjs.org/debug/-/debug-4.3.4.tgz", + "integrity": "sha512-PRWFHuSU3eDtQJPvnNY7Jcket1j0t5OuOsFzPPzsekD52Zl8qUfFIPEiswXqIvHWGVHOgX+7G/vCNNhehwxfkQ==", + "dev": true, + "requires": { + "ms": "2.1.2" + } + }, + "deepmerge": { + "version": "4.2.2", + "resolved": "https://registry.npmjs.org/deepmerge/-/deepmerge-4.2.2.tgz", + "integrity": "sha512-FJ3UgI4gIl+PHZm53knsuSFpE+nESMr7M4v9QcgB7S63Kj/6WqMiFQJpBBYz1Pt+66bZpP3Q7Lye0Oo9MPKEdg==", + "dev": true + }, + "defu": { + "version": "6.1.0", + "resolved": "https://registry.npmjs.org/defu/-/defu-6.1.0.tgz", + "integrity": "sha512-pOFYRTIhoKujrmbTRhcW5lYQLBXw/dlTwfI8IguF1QCDJOcJzNH1w+YFjxqy6BAuJrClTy6MUE8q+oKJ2FLsIw==", + "dev": true + }, + "dir-glob": { + "version": "3.0.1", + "resolved": "https://registry.npmjs.org/dir-glob/-/dir-glob-3.0.1.tgz", + "integrity": "sha512-WkrWp9GR4KXfKGYzOLmTuGVi1UWFfws377n9cc55/tb6DuqyF6pcQ5AbiHEshaDpY9v6oaSr2XCDidGmMwdzIA==", + "dev": true, + "requires": { + "path-type": "^4.0.0" + } + }, + "electron-to-chromium": { + "version": "1.4.284", + "resolved": "https://registry.npmjs.org/electron-to-chromium/-/electron-to-chromium-1.4.284.tgz", + "integrity": "sha512-M8WEXFuKXMYMVr45fo8mq0wUrrJHheiKZf6BArTKk9ZBYCKJEOU5H8cdWgDT+qCVZf7Na4lVUaZsA+h6uA9+PA==", + "dev": true + }, + "esbuild": { + "version": "0.15.13", + "resolved": "https://registry.npmjs.org/esbuild/-/esbuild-0.15.13.tgz", + "integrity": "sha512-Cu3SC84oyzzhrK/YyN4iEVy2jZu5t2fz66HEOShHURcjSkOSAVL8C/gfUT+lDJxkVHpg8GZ10DD0rMHRPqMFaQ==", + "dev": true, + "requires": { + "@esbuild/android-arm": "0.15.13", + "@esbuild/linux-loong64": "0.15.13", + "esbuild-android-64": "0.15.13", + "esbuild-android-arm64": "0.15.13", + "esbuild-darwin-64": "0.15.13", + "esbuild-darwin-arm64": "0.15.13", + "esbuild-freebsd-64": "0.15.13", + "esbuild-freebsd-arm64": "0.15.13", + "esbuild-linux-32": "0.15.13", + "esbuild-linux-64": "0.15.13", + "esbuild-linux-arm": "0.15.13", + "esbuild-linux-arm64": "0.15.13", + "esbuild-linux-mips64le": "0.15.13", + "esbuild-linux-ppc64le": "0.15.13", + "esbuild-linux-riscv64": "0.15.13", + "esbuild-linux-s390x": "0.15.13", + "esbuild-netbsd-64": "0.15.13", + "esbuild-openbsd-64": "0.15.13", + "esbuild-sunos-64": "0.15.13", + "esbuild-windows-32": "0.15.13", + "esbuild-windows-64": "0.15.13", + "esbuild-windows-arm64": "0.15.13" + } + }, + "esbuild-android-64": { + "version": "0.15.13", + "resolved": "https://registry.npmjs.org/esbuild-android-64/-/esbuild-android-64-0.15.13.tgz", + "integrity": "sha512-yRorukXBlokwTip+Sy4MYskLhJsO0Kn0/Fj43s1krVblfwP+hMD37a4Wmg139GEsMLl+vh8WXp2mq/cTA9J97g==", + "dev": true, + "optional": true + }, + "esbuild-android-arm64": { + "version": "0.15.13", + "resolved": "https://registry.npmjs.org/esbuild-android-arm64/-/esbuild-android-arm64-0.15.13.tgz", + "integrity": "sha512-TKzyymLD6PiVeyYa4c5wdPw87BeAiTXNtK6amWUcXZxkV51gOk5u5qzmDaYSwiWeecSNHamFsaFjLoi32QR5/w==", + "dev": true, + "optional": true + }, + "esbuild-darwin-64": { + "version": "0.15.13", + "resolved": "https://registry.npmjs.org/esbuild-darwin-64/-/esbuild-darwin-64-0.15.13.tgz", + "integrity": "sha512-WAx7c2DaOS6CrRcoYCgXgkXDliLnFv3pQLV6GeW1YcGEZq2Gnl8s9Pg7ahValZkpOa0iE/ojRVQ87sbUhF1Cbg==", + "dev": true, + "optional": true + }, + "esbuild-darwin-arm64": { + "version": "0.15.13", + "resolved": "https://registry.npmjs.org/esbuild-darwin-arm64/-/esbuild-darwin-arm64-0.15.13.tgz", + "integrity": "sha512-U6jFsPfSSxC3V1CLiQqwvDuj3GGrtQNB3P3nNC3+q99EKf94UGpsG9l4CQ83zBs1NHrk1rtCSYT0+KfK5LsD8A==", + "dev": true, + "optional": true + }, + "esbuild-freebsd-64": { + "version": "0.15.13", + "resolved": "https://registry.npmjs.org/esbuild-freebsd-64/-/esbuild-freebsd-64-0.15.13.tgz", + "integrity": "sha512-whItJgDiOXaDG/idy75qqevIpZjnReZkMGCgQaBWZuKHoElDJC1rh7MpoUgupMcdfOd+PgdEwNQW9DAE6i8wyA==", + "dev": true, + "optional": true + }, + "esbuild-freebsd-arm64": { + "version": "0.15.13", + "resolved": "https://registry.npmjs.org/esbuild-freebsd-arm64/-/esbuild-freebsd-arm64-0.15.13.tgz", + "integrity": "sha512-6pCSWt8mLUbPtygv7cufV0sZLeylaMwS5Fznj6Rsx9G2AJJsAjQ9ifA+0rQEIg7DwJmi9it+WjzNTEAzzdoM3Q==", + "dev": true, + "optional": true + }, + "esbuild-linux-32": { + "version": "0.15.13", + "resolved": "https://registry.npmjs.org/esbuild-linux-32/-/esbuild-linux-32-0.15.13.tgz", + "integrity": "sha512-VbZdWOEdrJiYApm2kkxoTOgsoCO1krBZ3quHdYk3g3ivWaMwNIVPIfEE0f0XQQ0u5pJtBsnk2/7OPiCFIPOe/w==", + "dev": true, + "optional": true + }, + "esbuild-linux-64": { + "version": "0.15.13", + "resolved": "https://registry.npmjs.org/esbuild-linux-64/-/esbuild-linux-64-0.15.13.tgz", + "integrity": "sha512-rXmnArVNio6yANSqDQlIO4WiP+Cv7+9EuAHNnag7rByAqFVuRusLbGi2697A5dFPNXoO//IiogVwi3AdcfPC6A==", + "dev": true, + "optional": true + }, + "esbuild-linux-arm": { + "version": "0.15.13", + "resolved": "https://registry.npmjs.org/esbuild-linux-arm/-/esbuild-linux-arm-0.15.13.tgz", + "integrity": "sha512-Ac6LpfmJO8WhCMQmO253xX2IU2B3wPDbl4IvR0hnqcPrdfCaUa2j/lLMGTjmQ4W5JsJIdHEdW12dG8lFS0MbxQ==", + "dev": true, + "optional": true + }, + "esbuild-linux-arm64": { + "version": "0.15.13", + "resolved": "https://registry.npmjs.org/esbuild-linux-arm64/-/esbuild-linux-arm64-0.15.13.tgz", + "integrity": "sha512-alEMGU4Z+d17U7KQQw2IV8tQycO6T+rOrgW8OS22Ua25x6kHxoG6Ngry6Aq6uranC+pNWNMB6aHFPh7aTQdORQ==", + "dev": true, + "optional": true + }, + "esbuild-linux-mips64le": { + "version": "0.15.13", + "resolved": "https://registry.npmjs.org/esbuild-linux-mips64le/-/esbuild-linux-mips64le-0.15.13.tgz", + "integrity": "sha512-47PgmyYEu+yN5rD/MbwS6DxP2FSGPo4Uxg5LwIdxTiyGC2XKwHhHyW7YYEDlSuXLQXEdTO7mYe8zQ74czP7W8A==", + "dev": true, + "optional": true + }, + "esbuild-linux-ppc64le": { + "version": "0.15.13", + "resolved": "https://registry.npmjs.org/esbuild-linux-ppc64le/-/esbuild-linux-ppc64le-0.15.13.tgz", + "integrity": "sha512-z6n28h2+PC1Ayle9DjKoBRcx/4cxHoOa2e689e2aDJSaKug3jXcQw7mM+GLg+9ydYoNzj8QxNL8ihOv/OnezhA==", + "dev": true, + "optional": true + }, + "esbuild-linux-riscv64": { + "version": "0.15.13", + "resolved": "https://registry.npmjs.org/esbuild-linux-riscv64/-/esbuild-linux-riscv64-0.15.13.tgz", + "integrity": "sha512-+Lu4zuuXuQhgLUGyZloWCqTslcCAjMZH1k3Xc9MSEJEpEFdpsSU0sRDXAnk18FKOfEjhu4YMGaykx9xjtpA6ow==", + "dev": true, + "optional": true + }, + "esbuild-linux-s390x": { + "version": "0.15.13", + "resolved": "https://registry.npmjs.org/esbuild-linux-s390x/-/esbuild-linux-s390x-0.15.13.tgz", + "integrity": "sha512-BMeXRljruf7J0TMxD5CIXS65y7puiZkAh+s4XFV9qy16SxOuMhxhVIXYLnbdfLrsYGFzx7U9mcdpFWkkvy/Uag==", + "dev": true, + "optional": true + }, + "esbuild-netbsd-64": { + "version": "0.15.13", + "resolved": "https://registry.npmjs.org/esbuild-netbsd-64/-/esbuild-netbsd-64-0.15.13.tgz", + "integrity": "sha512-EHj9QZOTel581JPj7UO3xYbltFTYnHy+SIqJVq6yd3KkCrsHRbapiPb0Lx3EOOtybBEE9EyqbmfW1NlSDsSzvQ==", + "dev": true, + "optional": true + }, + "esbuild-openbsd-64": { + "version": "0.15.13", + "resolved": "https://registry.npmjs.org/esbuild-openbsd-64/-/esbuild-openbsd-64-0.15.13.tgz", + "integrity": "sha512-nkuDlIjF/sfUhfx8SKq0+U+Fgx5K9JcPq1mUodnxI0x4kBdCv46rOGWbuJ6eof2n3wdoCLccOoJAbg9ba/bT2w==", + "dev": true, + "optional": true + }, + "esbuild-sunos-64": { + "version": "0.15.13", + "resolved": "https://registry.npmjs.org/esbuild-sunos-64/-/esbuild-sunos-64-0.15.13.tgz", + "integrity": "sha512-jVeu2GfxZQ++6lRdY43CS0Tm/r4WuQQ0Pdsrxbw+aOrHQPHV0+LNOLnvbN28M7BSUGnJnHkHm2HozGgNGyeIRw==", + "dev": true, + "optional": true + }, + "esbuild-windows-32": { + "version": "0.15.13", + "resolved": "https://registry.npmjs.org/esbuild-windows-32/-/esbuild-windows-32-0.15.13.tgz", + "integrity": "sha512-XoF2iBf0wnqo16SDq+aDGi/+QbaLFpkiRarPVssMh9KYbFNCqPLlGAWwDvxEVz+ywX6Si37J2AKm+AXq1kC0JA==", + "dev": true, + "optional": true + }, + "esbuild-windows-64": { + "version": "0.15.13", + "resolved": "https://registry.npmjs.org/esbuild-windows-64/-/esbuild-windows-64-0.15.13.tgz", + "integrity": "sha512-Et6htEfGycjDrtqb2ng6nT+baesZPYQIW+HUEHK4D1ncggNrDNk3yoboYQ5KtiVrw/JaDMNttz8rrPubV/fvPQ==", + "dev": true, + "optional": true + }, + "esbuild-windows-arm64": { + "version": "0.15.13", + "resolved": "https://registry.npmjs.org/esbuild-windows-arm64/-/esbuild-windows-arm64-0.15.13.tgz", + "integrity": "sha512-3bv7tqntThQC9SWLRouMDmZnlOukBhOCTlkzNqzGCmrkCJI7io5LLjwJBOVY6kOUlIvdxbooNZwjtBvj+7uuVg==", + "dev": true, + "optional": true + }, + "escalade": { + "version": "3.1.1", + "resolved": "https://registry.npmjs.org/escalade/-/escalade-3.1.1.tgz", + "integrity": "sha512-k0er2gUkLf8O0zKJiAhmkTnJlTvINGv7ygDNPbeIsX/TJjGJZHuh9B2UxbsaEkmlEo9MfhrSzmhIlhRlI2GXnw==", + "dev": true + }, + "escape-string-regexp": { + "version": "1.0.5", + "resolved": "https://registry.npmjs.org/escape-string-regexp/-/escape-string-regexp-1.0.5.tgz", + "integrity": "sha512-vbRorB5FUQWvla16U8R/qgaFIya2qGzwDrNmCZuYKrbdSUMG6I1ZCGQRefkRVhuOkIGVne7BQ35DSfo1qvJqFg==", + "dev": true + }, + "estree-walker": { + "version": "2.0.2", + "resolved": "https://registry.npmjs.org/estree-walker/-/estree-walker-2.0.2.tgz", + "integrity": "sha512-Rfkk/Mp/DL7JVje3u18FxFujQlTNR2q6QfMSMB7AvCBx91NGj/ba3kCfza0f6dVDbw7YlRf/nDrn7pQrCCyQ/w==", + "dev": true + }, + "fast-glob": { + "version": "3.2.12", + "resolved": "https://registry.npmjs.org/fast-glob/-/fast-glob-3.2.12.tgz", + "integrity": "sha512-DVj4CQIYYow0BlaelwK1pHl5n5cRSJfM60UA0zK891sVInoPri2Ekj7+e1CT3/3qxXenpI+nBBmQAcJPJgaj4w==", + "dev": true, + "requires": { + "@nodelib/fs.stat": "^2.0.2", + "@nodelib/fs.walk": "^1.2.3", + "glob-parent": "^5.1.2", + "merge2": "^1.3.0", + "micromatch": "^4.0.4" + } + }, + "fastq": { + "version": "1.13.0", + "resolved": "https://registry.npmjs.org/fastq/-/fastq-1.13.0.tgz", + "integrity": "sha512-YpkpUnK8od0o1hmeSc7UUs/eB/vIPWJYjKck2QKIzAf71Vm1AAQ3EbuZB3g2JIy+pg+ERD0vqI79KyZiB2e2Nw==", + "dev": true, + "requires": { + "reusify": "^1.0.4" + } + }, + "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==", + "dev": true, + "requires": { + "to-regex-range": "^5.0.1" + } + }, + "fs-extra": { + "version": "10.1.0", + "resolved": "https://registry.npmjs.org/fs-extra/-/fs-extra-10.1.0.tgz", + "integrity": "sha512-oRXApq54ETRj4eMiFzGnHWGy+zo5raudjuxN0b8H7s/RU2oW0Wvsx9O0ACRN/kRq9E8Vu/ReskGB5o3ji+FzHQ==", + "dev": true, + "requires": { + "graceful-fs": "^4.2.0", + "jsonfile": "^6.0.1", + "universalify": "^2.0.0" + } + }, + "fs.realpath": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/fs.realpath/-/fs.realpath-1.0.0.tgz", + "integrity": "sha512-OO0pH2lK6a0hZnAdau5ItzHPI6pUlvI7jMVnxUQRtw4owF2wk8lOSabtGDCTP4Ggrg2MbGnWO9X8K1t4+fGMDw==", + "dev": true + }, + "fsevents": { + "version": "2.3.2", + "resolved": "https://registry.npmjs.org/fsevents/-/fsevents-2.3.2.tgz", + "integrity": "sha512-xiqMQR4xAeHTuB9uWm+fFRcIOgKBMiOBP+eXiyT7jsgVCq1bkVygt00oASowB7EdtpOHaaPgKt812P9ab+DDKA==", + "dev": true, + "optional": true + }, + "function-bind": { + "version": "1.1.1", + "resolved": "https://registry.npmjs.org/function-bind/-/function-bind-1.1.1.tgz", + "integrity": "sha512-yIovAzMX49sF8Yl58fSCWJ5svSLuaibPxXQJFLmBObTuCr0Mf1KiPopGM9NiFjiYBCbfaa2Fh6breQ6ANVTI0A==", + "dev": true + }, + "gensync": { + "version": "1.0.0-beta.2", + "resolved": "https://registry.npmjs.org/gensync/-/gensync-1.0.0-beta.2.tgz", + "integrity": "sha512-3hN7NaskYvMDLQY55gnW3NQ+mesEAepTqlg+VEbj7zzqEMBVNhzcGYYeqFo/TlYz6eQiFcp1HcsCZO+nGgS8zg==", + "dev": true + }, + "glob": { + "version": "7.2.3", + "resolved": "https://registry.npmjs.org/glob/-/glob-7.2.3.tgz", + "integrity": "sha512-nFR0zLpU2YCaRxwoCJvL6UvCH2JFyFVIvwTLsIf21AuHlMskA1hhTdk+LlYJtOlYt9v6dvszD2BGRqBL+iQK9Q==", + "dev": true, + "requires": { + "fs.realpath": "^1.0.0", + "inflight": "^1.0.4", + "inherits": "2", + "minimatch": "^3.1.1", + "once": "^1.3.0", + "path-is-absolute": "^1.0.0" + } + }, + "glob-parent": { + "version": "5.1.2", + "resolved": "https://registry.npmjs.org/glob-parent/-/glob-parent-5.1.2.tgz", + "integrity": "sha512-AOIgSQCepiJYwP3ARnGx+5VnTu2HBYdzbGP45eLw1vr3zB3vZLeyed1sC9hnbcOc9/SrMyM5RPQrkGz4aS9Zow==", + "dev": true, + "requires": { + "is-glob": "^4.0.1" + } + }, + "globals": { + "version": "11.12.0", + "resolved": "https://registry.npmjs.org/globals/-/globals-11.12.0.tgz", + "integrity": "sha512-WOBp/EEGUiIsJSp7wcv/y6MO+lV9UoncWqxuFfm8eBwzWNgyfBd6Gz+IeKQ9jCmyhoH99g15M3T+QaVHFjizVA==", + "dev": true + }, + "globby": { + "version": "13.1.2", + "resolved": "https://registry.npmjs.org/globby/-/globby-13.1.2.tgz", + "integrity": "sha512-LKSDZXToac40u8Q1PQtZihbNdTYSNMuWe+K5l+oa6KgDzSvVrHXlJy40hUP522RjAIoNLJYBJi7ow+rbFpIhHQ==", + "dev": true, + "requires": { + "dir-glob": "^3.0.1", + "fast-glob": "^3.2.11", + "ignore": "^5.2.0", + "merge2": "^1.4.1", + "slash": "^4.0.0" + } + }, + "graceful-fs": { + "version": "4.2.10", + "resolved": "https://registry.npmjs.org/graceful-fs/-/graceful-fs-4.2.10.tgz", + "integrity": "sha512-9ByhssR2fPVsNZj478qUUbKfmL0+t5BDVyjShtyZZLiK7ZDAArFFfopyOTj0M05wE2tJPisA4iTnnXl2YoPvOA==", + "dev": true + }, + "handlebars": { + "version": "4.7.7", + "resolved": "https://registry.npmjs.org/handlebars/-/handlebars-4.7.7.tgz", + "integrity": "sha512-aAcXm5OAfE/8IXkcZvCepKU3VzW1/39Fb5ZuqMtgI/hT8X2YgoMvBY5dLhq/cpOvw7Lk1nK/UF71aLG/ZnVYRA==", + "dev": true, + "requires": { + "minimist": "^1.2.5", + "neo-async": "^2.6.0", + "source-map": "^0.6.1", + "uglify-js": "^3.1.4", + "wordwrap": "^1.0.0" + } + }, + "has": { + "version": "1.0.3", + "resolved": "https://registry.npmjs.org/has/-/has-1.0.3.tgz", + "integrity": "sha512-f2dvO0VU6Oej7RkWJGrehjbzMAjFp5/VKPp5tTpWIV4JHHZK1/BxbFRtf/siA2SWTe09caDmVtYYzWEIbBS4zw==", + "dev": true, + "requires": { + "function-bind": "^1.1.1" + } + }, + "has-flag": { + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/has-flag/-/has-flag-3.0.0.tgz", + "integrity": "sha512-sKJf1+ceQBr4SMkvQnBDNDtf4TXpVhVGateu0t918bl30FnbE2m4vNLX+VWe/dpjlb+HugGYzW7uQXH98HPEYw==", + "dev": true + }, + "hookable": { + "version": "5.4.1", + "resolved": "https://registry.npmjs.org/hookable/-/hookable-5.4.1.tgz", + "integrity": "sha512-i808BglQ1OuSIcgPSZoWsDapCMLXKe5wLS6XZvIXpaBWdWLUZARM8vOLayu6cXewj5TSbaZaMzKnq+pRnfscEQ==", + "dev": true + }, + "ignore": { + "version": "5.2.0", + "resolved": "https://registry.npmjs.org/ignore/-/ignore-5.2.0.tgz", + "integrity": "sha512-CmxgYGiEPCLhfLnpPp1MoRmifwEIOgjcHXxOBjv7mY96c+eWScsOP9c112ZyLdWHi0FxHjI+4uVhKYp/gcdRmQ==", + "dev": true + }, + "inflight": { + "version": "1.0.6", + "resolved": "https://registry.npmjs.org/inflight/-/inflight-1.0.6.tgz", + "integrity": "sha512-k92I/b08q4wvFscXCLvqfsHCrjrF7yiXsQuIVvVE7N82W3+aqpzuUdBbfhWcy/FZR3/4IgflMgKLOsvPDrGCJA==", + "dev": true, + "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==", + "dev": true + }, + "interpret": { + "version": "1.4.0", + "resolved": "https://registry.npmjs.org/interpret/-/interpret-1.4.0.tgz", + "integrity": "sha512-agE4QfB2Lkp9uICn7BAqoscw4SZP9kTE2hxiFI3jBPmXJfdqiahTbUuKGsMoN2GtqL9AxhYioAcVvgsb1HvRbA==", + "dev": true + }, + "is-builtin-module": { + "version": "3.2.0", + "resolved": "https://registry.npmjs.org/is-builtin-module/-/is-builtin-module-3.2.0.tgz", + "integrity": "sha512-phDA4oSGt7vl1n5tJvTWooWWAsXLY+2xCnxNqvKhGEzujg+A43wPlPOyDg3C8XQHN+6k/JTQWJ/j0dQh/qr+Hw==", + "dev": true, + "requires": { + "builtin-modules": "^3.3.0" + } + }, + "is-core-module": { + "version": "2.11.0", + "resolved": "https://registry.npmjs.org/is-core-module/-/is-core-module-2.11.0.tgz", + "integrity": "sha512-RRjxlvLDkD1YJwDbroBHMb+cukurkDWNyHx7D3oNB5x9rb5ogcksMC5wHCadcXoo67gVr/+3GFySh3134zi6rw==", + "dev": true, + "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": "sha512-SbKbANkN603Vi4jEZv49LeVJMn4yGwsbzZworEoyEiutsN3nJYdbO36zfhGJ6QEDpOZIFkDtnq5JRxmvl3jsoQ==", + "dev": true + }, + "is-glob": { + "version": "4.0.3", + "resolved": "https://registry.npmjs.org/is-glob/-/is-glob-4.0.3.tgz", + "integrity": "sha512-xelSayHH36ZgE7ZWhli7pW34hNbNl8Ojv5KVmkJD4hBdD3th8Tfk9vYasLM+mXWOZhFkgZfxhLSnrwRr4elSSg==", + "dev": true, + "requires": { + "is-extglob": "^2.1.1" + } + }, + "is-module": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/is-module/-/is-module-1.0.0.tgz", + "integrity": "sha512-51ypPSPCoTEIN9dy5Oy+h4pShgJmPCygKfyRCISBI+JoWT/2oJvK8QPxmwv7b/p239jXrm9M1mlQbyKJ5A152g==", + "dev": true + }, + "is-number": { + "version": "7.0.0", + "resolved": "https://registry.npmjs.org/is-number/-/is-number-7.0.0.tgz", + "integrity": "sha512-41Cifkg6e8TylSpdtTpeLVMqvSBEVzTttHvERD741+pnZ8ANv0004MRL43QKPDlK9cGvNp6NZWZUBlbGXYxxng==", + "dev": true + }, + "is-reference": { + "version": "1.2.1", + "resolved": "https://registry.npmjs.org/is-reference/-/is-reference-1.2.1.tgz", + "integrity": "sha512-U82MsXXiFIrjCK4otLT+o2NA2Cd2g5MLoOVXUZjIOhLurrRxpEXzI8O0KZHr3IjLvlAH1kTPYSuqer5T9ZVBKQ==", + "dev": true, + "requires": { + "@types/estree": "*" + } + }, + "isexe": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/isexe/-/isexe-2.0.0.tgz", + "integrity": "sha512-RHxMLp9lnKHGHRng9QFhRCMbYAcVpn69smSGcq3f36xjgVVWThj4qqLbTLlq7Ssj8B+fIQ1EuCEGI2lKsyQeIw==", + "dev": true + }, + "jiti": { + "version": "1.16.0", + "resolved": "https://registry.npmjs.org/jiti/-/jiti-1.16.0.tgz", + "integrity": "sha512-L3BJStEf5NAqNuzrpfbN71dp43mYIcBUlCRea/vdyv5dW/AYa1d4bpelko4SHdY3I6eN9Wzyasxirj1/vv5kmg==", + "dev": true + }, + "js-tokens": { + "version": "4.0.0", + "resolved": "https://registry.npmjs.org/js-tokens/-/js-tokens-4.0.0.tgz", + "integrity": "sha512-RdJUflcE3cUzKiMqQgsCu06FPu9UdIJO0beYbPhHN4k6apgJtifcoCtT9bcxOpYBtpD2kCM6Sbzg4CausW/PKQ==", + "dev": true + }, + "jsesc": { + "version": "2.5.2", + "resolved": "https://registry.npmjs.org/jsesc/-/jsesc-2.5.2.tgz", + "integrity": "sha512-OYu7XEzjkCQ3C5Ps3QIZsQfNpqoJyZZA99wd9aWd05NCtC5pWOkShK2mkL6HXQR6/Cy2lbNdPlZBpuQHXE63gA==", + "dev": true + }, + "json5": { + "version": "2.2.1", + "resolved": "https://registry.npmjs.org/json5/-/json5-2.2.1.tgz", + "integrity": "sha512-1hqLFMSrGHRHxav9q9gNjJ5EXznIxGVO09xQRrwplcS8qs28pZ8s8hupZAmqDwZUmVZ2Qb2jnyPOWcDH8m8dlA==", + "dev": true + }, + "jsonc-parser": { + "version": "3.2.0", + "resolved": "https://registry.npmjs.org/jsonc-parser/-/jsonc-parser-3.2.0.tgz", + "integrity": "sha512-gfFQZrcTc8CnKXp6Y4/CBT3fTc0OVuDofpre4aEeEpSBPV5X5v4+Vmx+8snU7RLPrNHPKSgLxGo9YuQzz20o+w==", + "dev": true + }, + "jsonfile": { + "version": "6.1.0", + "resolved": "https://registry.npmjs.org/jsonfile/-/jsonfile-6.1.0.tgz", + "integrity": "sha512-5dgndWOriYSm5cnYaJNhalLNDKOqFwyDB/rr1E9ZsGciGvKPs8R2xYGCacuf3z6K1YKDz182fd+fY3cn3pMqXQ==", + "dev": true, + "requires": { + "graceful-fs": "^4.1.6", + "universalify": "^2.0.0" + } + }, + "kleur": { + "version": "3.0.3", + "resolved": "https://registry.npmjs.org/kleur/-/kleur-3.0.3.tgz", + "integrity": "sha512-eTIzlVOSUR+JxdDFepEYcBMtZ9Qqdef+rnzWdRZuMbOywu5tO2w2N7rqjoANZ5k9vywhL6Br1VRjUIgTQx4E8w==", + "dev": true + }, + "kolorist": { + "version": "1.6.0", + "resolved": "https://registry.npmjs.org/kolorist/-/kolorist-1.6.0.tgz", + "integrity": "sha512-dLkz37Ab97HWMx9KTes3Tbi3D1ln9fCAy2zr2YVExJasDRPGRaKcoE4fycWNtnCAJfjFqe0cnY+f8KT2JePEXQ==", + "dev": true + }, + "lru-cache": { + "version": "6.0.0", + "resolved": "https://registry.npmjs.org/lru-cache/-/lru-cache-6.0.0.tgz", + "integrity": "sha512-Jo6dJ04CmSjuznwJSS3pUeWmd/H0ffTlkXXgwZi+eq1UCmqQwCh+eLsYOYCwY991i2Fah4h1BEMCx4qThGbsiA==", + "dev": true, + "requires": { + "yallist": "^4.0.0" + } + }, + "magic-string": { + "version": "0.26.7", + "resolved": "https://registry.npmjs.org/magic-string/-/magic-string-0.26.7.tgz", + "integrity": "sha512-hX9XH3ziStPoPhJxLq1syWuZMxbDvGNbVchfrdCtanC7D13888bMFow61x8axrx+GfHLtVeAx2kxL7tTGRl+Ow==", + "dev": true, + "requires": { + "sourcemap-codec": "^1.4.8" + } + }, + "merge2": { + "version": "1.4.1", + "resolved": "https://registry.npmjs.org/merge2/-/merge2-1.4.1.tgz", + "integrity": "sha512-8q7VEgMJW4J8tcfVPy8g09NcQwZdbwFEqhe/WZkoIzjn/3TGDwtOCYtXGxA3O8tPzpczCCDgv+P2P5y00ZJOOg==", + "dev": true + }, + "micromatch": { + "version": "4.0.5", + "resolved": "https://registry.npmjs.org/micromatch/-/micromatch-4.0.5.tgz", + "integrity": "sha512-DMy+ERcEW2q8Z2Po+WNXuw3c5YaUSFjAO5GsJqfEl7UjvtIuFKO6ZrKvcItdy98dwFI2N1tg3zNIdKaQT+aNdA==", + "dev": true, + "requires": { + "braces": "^3.0.2", + "picomatch": "^2.3.1" + } + }, + "minimatch": { + "version": "3.1.2", + "resolved": "https://registry.npmjs.org/minimatch/-/minimatch-3.1.2.tgz", + "integrity": "sha512-J7p63hRiAjw1NDEww1W7i37+ByIrOWO5XQQAzZ3VOcL0PNybwpfmV/N05zFAzwQ9USyEcX6t3UO+K5aqBQOIHw==", + "dev": true, + "requires": { + "brace-expansion": "^1.1.7" + } + }, + "minimist": { + "version": "1.2.7", + "resolved": "https://registry.npmjs.org/minimist/-/minimist-1.2.7.tgz", + "integrity": "sha512-bzfL1YUZsP41gmu/qjrEk0Q6i2ix/cVeAhbCbqH9u3zYutS1cLg00qhrD0M2MVdCcx4Sc0UpP2eBWo9rotpq6g==", + "dev": true + }, + "mkdirp": { + "version": "1.0.4", + "resolved": "https://registry.npmjs.org/mkdirp/-/mkdirp-1.0.4.tgz", + "integrity": "sha512-vVqVZQyf3WLx2Shd0qJ9xuvqgAyKPLAiqITEtqW0oIUjzo3PePDd6fW9iFz30ef7Ysp/oiWqbhszeGWW2T6Gzw==", + "dev": true + }, + "mkdist": { + "version": "0.3.13", + "resolved": "https://registry.npmjs.org/mkdist/-/mkdist-0.3.13.tgz", + "integrity": "sha512-+eCPpkr8l2X630y5PIlkts2tzYEsb+aGIgXdrQv9ZGtWE2bLlD6kVIFfI6FJwFpjjw4dPPyorxQc6Uhm/oXlvg==", + "dev": true, + "requires": { + "defu": "^6.0.0", + "esbuild": "^0.14.47", + "fs-extra": "^10.0.0", + "globby": "^11.0.3", + "jiti": "^1.12.9", + "mri": "^1.2.0", + "pathe": "^0.2.0" + }, + "dependencies": { + "@esbuild/linux-loong64": { + "version": "0.14.54", + "resolved": "https://registry.npmjs.org/@esbuild/linux-loong64/-/linux-loong64-0.14.54.tgz", + "integrity": "sha512-bZBrLAIX1kpWelV0XemxBZllyRmM6vgFQQG2GdNb+r3Fkp0FOh1NJSvekXDs7jq70k4euu1cryLMfU+mTXlEpw==", + "dev": true, + "optional": true + }, + "esbuild": { + "version": "0.14.54", + "resolved": "https://registry.npmjs.org/esbuild/-/esbuild-0.14.54.tgz", + "integrity": "sha512-Cy9llcy8DvET5uznocPyqL3BFRrFXSVqbgpMJ9Wz8oVjZlh/zUSNbPRbov0VX7VxN2JH1Oa0uNxZ7eLRb62pJA==", + "dev": true, + "requires": { + "@esbuild/linux-loong64": "0.14.54", + "esbuild-android-64": "0.14.54", + "esbuild-android-arm64": "0.14.54", + "esbuild-darwin-64": "0.14.54", + "esbuild-darwin-arm64": "0.14.54", + "esbuild-freebsd-64": "0.14.54", + "esbuild-freebsd-arm64": "0.14.54", + "esbuild-linux-32": "0.14.54", + "esbuild-linux-64": "0.14.54", + "esbuild-linux-arm": "0.14.54", + "esbuild-linux-arm64": "0.14.54", + "esbuild-linux-mips64le": "0.14.54", + "esbuild-linux-ppc64le": "0.14.54", + "esbuild-linux-riscv64": "0.14.54", + "esbuild-linux-s390x": "0.14.54", + "esbuild-netbsd-64": "0.14.54", + "esbuild-openbsd-64": "0.14.54", + "esbuild-sunos-64": "0.14.54", + "esbuild-windows-32": "0.14.54", + "esbuild-windows-64": "0.14.54", + "esbuild-windows-arm64": "0.14.54" + } + }, + "esbuild-android-64": { + "version": "0.14.54", + "resolved": "https://registry.npmjs.org/esbuild-android-64/-/esbuild-android-64-0.14.54.tgz", + "integrity": "sha512-Tz2++Aqqz0rJ7kYBfz+iqyE3QMycD4vk7LBRyWaAVFgFtQ/O8EJOnVmTOiDWYZ/uYzB4kvP+bqejYdVKzE5lAQ==", + "dev": true, + "optional": true + }, + "esbuild-android-arm64": { + "version": "0.14.54", + "resolved": "https://registry.npmjs.org/esbuild-android-arm64/-/esbuild-android-arm64-0.14.54.tgz", + "integrity": "sha512-F9E+/QDi9sSkLaClO8SOV6etqPd+5DgJje1F9lOWoNncDdOBL2YF59IhsWATSt0TLZbYCf3pNlTHvVV5VfHdvg==", + "dev": true, + "optional": true + }, + "esbuild-darwin-64": { + "version": "0.14.54", + "resolved": "https://registry.npmjs.org/esbuild-darwin-64/-/esbuild-darwin-64-0.14.54.tgz", + "integrity": "sha512-jtdKWV3nBviOd5v4hOpkVmpxsBy90CGzebpbO9beiqUYVMBtSc0AL9zGftFuBon7PNDcdvNCEuQqw2x0wP9yug==", + "dev": true, + "optional": true + }, + "esbuild-darwin-arm64": { + "version": "0.14.54", + "resolved": "https://registry.npmjs.org/esbuild-darwin-arm64/-/esbuild-darwin-arm64-0.14.54.tgz", + "integrity": "sha512-OPafJHD2oUPyvJMrsCvDGkRrVCar5aVyHfWGQzY1dWnzErjrDuSETxwA2HSsyg2jORLY8yBfzc1MIpUkXlctmw==", + "dev": true, + "optional": true + }, + "esbuild-freebsd-64": { + "version": "0.14.54", + "resolved": "https://registry.npmjs.org/esbuild-freebsd-64/-/esbuild-freebsd-64-0.14.54.tgz", + "integrity": "sha512-OKwd4gmwHqOTp4mOGZKe/XUlbDJ4Q9TjX0hMPIDBUWWu/kwhBAudJdBoxnjNf9ocIB6GN6CPowYpR/hRCbSYAg==", + "dev": true, + "optional": true + }, + "esbuild-freebsd-arm64": { + "version": "0.14.54", + "resolved": "https://registry.npmjs.org/esbuild-freebsd-arm64/-/esbuild-freebsd-arm64-0.14.54.tgz", + "integrity": "sha512-sFwueGr7OvIFiQT6WeG0jRLjkjdqWWSrfbVwZp8iMP+8UHEHRBvlaxL6IuKNDwAozNUmbb8nIMXa7oAOARGs1Q==", + "dev": true, + "optional": true + }, + "esbuild-linux-32": { + "version": "0.14.54", + "resolved": "https://registry.npmjs.org/esbuild-linux-32/-/esbuild-linux-32-0.14.54.tgz", + "integrity": "sha512-1ZuY+JDI//WmklKlBgJnglpUL1owm2OX+8E1syCD6UAxcMM/XoWd76OHSjl/0MR0LisSAXDqgjT3uJqT67O3qw==", + "dev": true, + "optional": true + }, + "esbuild-linux-64": { + "version": "0.14.54", + "resolved": "https://registry.npmjs.org/esbuild-linux-64/-/esbuild-linux-64-0.14.54.tgz", + "integrity": "sha512-EgjAgH5HwTbtNsTqQOXWApBaPVdDn7XcK+/PtJwZLT1UmpLoznPd8c5CxqsH2dQK3j05YsB3L17T8vE7cp4cCg==", + "dev": true, + "optional": true + }, + "esbuild-linux-arm": { + "version": "0.14.54", + "resolved": "https://registry.npmjs.org/esbuild-linux-arm/-/esbuild-linux-arm-0.14.54.tgz", + "integrity": "sha512-qqz/SjemQhVMTnvcLGoLOdFpCYbz4v4fUo+TfsWG+1aOu70/80RV6bgNpR2JCrppV2moUQkww+6bWxXRL9YMGw==", + "dev": true, + "optional": true + }, + "esbuild-linux-arm64": { + "version": "0.14.54", + "resolved": "https://registry.npmjs.org/esbuild-linux-arm64/-/esbuild-linux-arm64-0.14.54.tgz", + "integrity": "sha512-WL71L+0Rwv+Gv/HTmxTEmpv0UgmxYa5ftZILVi2QmZBgX3q7+tDeOQNqGtdXSdsL8TQi1vIaVFHUPDe0O0kdig==", + "dev": true, + "optional": true + }, + "esbuild-linux-mips64le": { + "version": "0.14.54", + "resolved": "https://registry.npmjs.org/esbuild-linux-mips64le/-/esbuild-linux-mips64le-0.14.54.tgz", + "integrity": "sha512-qTHGQB8D1etd0u1+sB6p0ikLKRVuCWhYQhAHRPkO+OF3I/iSlTKNNS0Lh2Oc0g0UFGguaFZZiPJdJey3AGpAlw==", + "dev": true, + "optional": true + }, + "esbuild-linux-ppc64le": { + "version": "0.14.54", + "resolved": "https://registry.npmjs.org/esbuild-linux-ppc64le/-/esbuild-linux-ppc64le-0.14.54.tgz", + "integrity": "sha512-j3OMlzHiqwZBDPRCDFKcx595XVfOfOnv68Ax3U4UKZ3MTYQB5Yz3X1mn5GnodEVYzhtZgxEBidLWeIs8FDSfrQ==", + "dev": true, + "optional": true + }, + "esbuild-linux-riscv64": { + "version": "0.14.54", + "resolved": "https://registry.npmjs.org/esbuild-linux-riscv64/-/esbuild-linux-riscv64-0.14.54.tgz", + "integrity": "sha512-y7Vt7Wl9dkOGZjxQZnDAqqn+XOqFD7IMWiewY5SPlNlzMX39ocPQlOaoxvT4FllA5viyV26/QzHtvTjVNOxHZg==", + "dev": true, + "optional": true + }, + "esbuild-linux-s390x": { + "version": "0.14.54", + "resolved": "https://registry.npmjs.org/esbuild-linux-s390x/-/esbuild-linux-s390x-0.14.54.tgz", + "integrity": "sha512-zaHpW9dziAsi7lRcyV4r8dhfG1qBidQWUXweUjnw+lliChJqQr+6XD71K41oEIC3Mx1KStovEmlzm+MkGZHnHA==", + "dev": true, + "optional": true + }, + "esbuild-netbsd-64": { + "version": "0.14.54", + "resolved": "https://registry.npmjs.org/esbuild-netbsd-64/-/esbuild-netbsd-64-0.14.54.tgz", + "integrity": "sha512-PR01lmIMnfJTgeU9VJTDY9ZerDWVFIUzAtJuDHwwceppW7cQWjBBqP48NdeRtoP04/AtO9a7w3viI+PIDr6d+w==", + "dev": true, + "optional": true + }, + "esbuild-openbsd-64": { + "version": "0.14.54", + "resolved": "https://registry.npmjs.org/esbuild-openbsd-64/-/esbuild-openbsd-64-0.14.54.tgz", + "integrity": "sha512-Qyk7ikT2o7Wu76UsvvDS5q0amJvmRzDyVlL0qf5VLsLchjCa1+IAvd8kTBgUxD7VBUUVgItLkk609ZHUc1oCaw==", + "dev": true, + "optional": true + }, + "esbuild-sunos-64": { + "version": "0.14.54", + "resolved": "https://registry.npmjs.org/esbuild-sunos-64/-/esbuild-sunos-64-0.14.54.tgz", + "integrity": "sha512-28GZ24KmMSeKi5ueWzMcco6EBHStL3B6ubM7M51RmPwXQGLe0teBGJocmWhgwccA1GeFXqxzILIxXpHbl9Q/Kw==", + "dev": true, + "optional": true + }, + "esbuild-windows-32": { + "version": "0.14.54", + "resolved": "https://registry.npmjs.org/esbuild-windows-32/-/esbuild-windows-32-0.14.54.tgz", + "integrity": "sha512-T+rdZW19ql9MjS7pixmZYVObd9G7kcaZo+sETqNH4RCkuuYSuv9AGHUVnPoP9hhuE1WM1ZimHz1CIBHBboLU7w==", + "dev": true, + "optional": true + }, + "esbuild-windows-64": { + "version": "0.14.54", + "resolved": "https://registry.npmjs.org/esbuild-windows-64/-/esbuild-windows-64-0.14.54.tgz", + "integrity": "sha512-AoHTRBUuYwXtZhjXZbA1pGfTo8cJo3vZIcWGLiUcTNgHpJJMC1rVA44ZereBHMJtotyN71S8Qw0npiCIkW96cQ==", + "dev": true, + "optional": true + }, + "esbuild-windows-arm64": { + "version": "0.14.54", + "resolved": "https://registry.npmjs.org/esbuild-windows-arm64/-/esbuild-windows-arm64-0.14.54.tgz", + "integrity": "sha512-M0kuUvXhot1zOISQGXwWn6YtS+Y/1RT9WrVIOywZnJHo3jCDyewAc79aKNQWFCQm+xNHVTq9h8dZKvygoXQQRg==", + "dev": true, + "optional": true + }, + "globby": { + "version": "11.1.0", + "resolved": "https://registry.npmjs.org/globby/-/globby-11.1.0.tgz", + "integrity": "sha512-jhIXaOzy1sb8IyocaruWSn1TjmnBVs8Ayhcy83rmxNJ8q2uWKCAj3CnJY+KpGSXCueAPc0i05kVvVKtP1t9S3g==", + "dev": true, + "requires": { + "array-union": "^2.1.0", + "dir-glob": "^3.0.1", + "fast-glob": "^3.2.9", + "ignore": "^5.2.0", + "merge2": "^1.4.1", + "slash": "^3.0.0" + } + }, + "pathe": { + "version": "0.2.0", + "resolved": "https://registry.npmjs.org/pathe/-/pathe-0.2.0.tgz", + "integrity": "sha512-sTitTPYnn23esFR3RlqYBWn4c45WGeLcsKzQiUpXJAyfcWkolvlYpV8FLo7JishK946oQwMFUCHXQ9AjGPKExw==", + "dev": true + }, + "slash": { + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/slash/-/slash-3.0.0.tgz", + "integrity": "sha512-g9Q1haeby36OSStwb4ntCGGGaKsaVSjQ68fBxoQcutl5fS1vuY18H3wSt3jFyFtrkx+Kz0V1G85A4MyAdDMi2Q==", + "dev": true + } + } + }, + "mlly": { + "version": "0.5.16", + "resolved": "https://registry.npmjs.org/mlly/-/mlly-0.5.16.tgz", + "integrity": "sha512-LaJ8yuh4v0zEmge/g3c7jjFlhoCPfQn6RCjXgm9A0Qiuochq4BcuOxVfWmdnCoLTlg2MV+hqhOek+W2OhG0Lwg==", + "dev": true, + "requires": { + "acorn": "^8.8.0", + "pathe": "^0.3.8", + "pkg-types": "^0.3.5", + "ufo": "^0.8.5" + } + }, + "mri": { + "version": "1.2.0", + "resolved": "https://registry.npmjs.org/mri/-/mri-1.2.0.tgz", + "integrity": "sha512-tzzskb3bG8LvYGFF/mDTpq3jpI6Q9wc3LEmBaghu+DdCssd1FakN7Bc0hVNmEyGq1bq3RgfkCb3cmQLpNPOroA==", + "dev": true + }, + "ms": { + "version": "2.1.2", + "resolved": "https://registry.npmjs.org/ms/-/ms-2.1.2.tgz", + "integrity": "sha512-sGkPx+VjMtmA6MX27oA4FBFELFCZZ4S4XqeGOXCv68tT+jb3vk/RyaKWP0PTKyWtmLSM0b+adUTEvbs1PEaH2w==", + "dev": true + }, + "neo-async": { + "version": "2.6.2", + "resolved": "https://registry.npmjs.org/neo-async/-/neo-async-2.6.2.tgz", + "integrity": "sha512-Yd3UES5mWCSqR+qNT93S3UoYUkqAZ9lLg8a7g9rimsWmYGK8cVToA4/sF3RrshdyV3sAGMXVUmpMYOw+dLpOuw==", + "dev": true + }, + "node-fetch": { + "version": "2.6.7", + "resolved": "https://registry.npmjs.org/node-fetch/-/node-fetch-2.6.7.tgz", + "integrity": "sha512-ZjMPFEfVx5j+y2yF35Kzx5sF7kDzxuDj6ziH4FFbOp87zKDZNx8yExJIb05OGF4Nlt9IHFIMBkRl41VdvcNdbQ==", + "dev": true, + "requires": { + "whatwg-url": "^5.0.0" + } + }, + "node-releases": { + "version": "2.0.6", + "resolved": "https://registry.npmjs.org/node-releases/-/node-releases-2.0.6.tgz", + "integrity": "sha512-PiVXnNuFm5+iYkLBNeq5211hvO38y63T0i2KKh2KnUs3RpzJ+JtODFjkD8yjLwnDkTYF1eKXheUwdssR+NRZdg==", + "dev": true + }, + "once": { + "version": "1.4.0", + "resolved": "https://registry.npmjs.org/once/-/once-1.4.0.tgz", + "integrity": "sha512-lNaJgI+2Q5URQBkccEKHTQOPaXdUxnZZElQTZY0MFUAuaEqe1E+Nyvgdz/aIyNi6Z9MzO5dv1H8n58/GELp3+w==", + "dev": true, + "requires": { + "wrappy": "1" + } + }, + "parse-github-url": { + "version": "1.0.2", + "resolved": "https://registry.npmjs.org/parse-github-url/-/parse-github-url-1.0.2.tgz", + "integrity": "sha512-kgBf6avCbO3Cn6+RnzRGLkUsv4ZVqv/VfAYkRsyBcgkshNvVBkRn1FEZcW0Jb+npXQWm2vHPnnOqFteZxRRGNw==", + "dev": true + }, + "path-is-absolute": { + "version": "1.0.1", + "resolved": "https://registry.npmjs.org/path-is-absolute/-/path-is-absolute-1.0.1.tgz", + "integrity": "sha512-AVbw3UJ2e9bq64vSaS9Am0fje1Pa8pbGqTTsmXfaIiMpnr5DlDhfJOuLj9Sf95ZPVDAUerDfEk88MPmPe7UCQg==", + "dev": true + }, + "path-key": { + "version": "3.1.1", + "resolved": "https://registry.npmjs.org/path-key/-/path-key-3.1.1.tgz", + "integrity": "sha512-ojmeN0qd+y0jszEtoY48r0Peq5dwMEkIlCOu6Q5f41lfkswXuKtYrhgoTpLnyIcHm24Uhqx+5Tqm2InSwLhE6Q==", + "dev": true + }, + "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==", + "dev": true + }, + "path-type": { + "version": "4.0.0", + "resolved": "https://registry.npmjs.org/path-type/-/path-type-4.0.0.tgz", + "integrity": "sha512-gDKb8aZMDeD/tZWs9P6+q0J9Mwkdl6xMV8TjnGP3qJVJ06bdMgkbBlLU8IdfOsIsFz2BW1rNVT3XuNEl8zPAvw==", + "dev": true + }, + "pathe": { + "version": "0.3.9", + "resolved": "https://registry.npmjs.org/pathe/-/pathe-0.3.9.tgz", + "integrity": "sha512-6Y6s0vT112P3jD8dGfuS6r+lpa0qqNrLyHPOwvXMnyNTQaYiwgau2DP3aNDsR13xqtGj7rrPo+jFUATpU6/s+g==", + "dev": true + }, + "picocolors": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/picocolors/-/picocolors-1.0.0.tgz", + "integrity": "sha512-1fygroTLlHu66zi26VoTDv8yRgm0Fccecssto+MhsZ0D/DGW2sm8E8AjW7NU5VVTRt5GxbeZ5qBuJr+HyLYkjQ==", + "dev": true + }, + "picomatch": { + "version": "2.3.1", + "resolved": "https://registry.npmjs.org/picomatch/-/picomatch-2.3.1.tgz", + "integrity": "sha512-JU3teHTNjmE2VCGFzuY8EXzCDVwEqB2a8fsIvwaStHhAWJEeVd1o1QD80CU6+ZdEXXSLbSsuLwJjkCBWqRQUVA==", + "dev": true + }, + "pkg-types": { + "version": "0.3.6", + "resolved": "https://registry.npmjs.org/pkg-types/-/pkg-types-0.3.6.tgz", + "integrity": "sha512-uQZutkkh6axl1GxDm5/+8ivVdwuJ5pyDGqJeSiIWIUWIqYiK3p9QKozN/Rv6eVvFoeSWkN1uoYeSDBwwBJBtbg==", + "dev": true, + "requires": { + "jsonc-parser": "^3.2.0", + "mlly": "^0.5.16", + "pathe": "^0.3.9" + } + }, + "pretty-bytes": { + "version": "6.0.0", + "resolved": "https://registry.npmjs.org/pretty-bytes/-/pretty-bytes-6.0.0.tgz", + "integrity": "sha512-6UqkYefdogmzqAZWzJ7laYeJnaXDy2/J+ZqiiMtS7t7OfpXWTlaeGMwX8U6EFvPV/YWWEKRkS8hKS4k60WHTOg==", + "dev": true + }, + "prompts": { + "version": "2.4.2", + "resolved": "https://registry.npmjs.org/prompts/-/prompts-2.4.2.tgz", + "integrity": "sha512-NxNv/kLguCA7p3jE8oL2aEBsrJWgAakBpgmgK6lpPWV+WuOmY6r2/zbAVnP+T8bQlA0nzHXSJSJW0Hq7ylaD2Q==", + "dev": true, + "requires": { + "kleur": "^3.0.3", + "sisteransi": "^1.0.5" + } + }, + "queue-microtask": { + "version": "1.2.3", + "resolved": "https://registry.npmjs.org/queue-microtask/-/queue-microtask-1.2.3.tgz", + "integrity": "sha512-NuaNSa6flKT5JaSYQzJok04JzTL1CA6aGhv5rfLW3PgqA+M2ChpZQnAC8h8i4ZFkBS8X5RqkDBHA7r4hej3K9A==", + "dev": true + }, + "rechoir": { + "version": "0.6.2", + "resolved": "https://registry.npmjs.org/rechoir/-/rechoir-0.6.2.tgz", + "integrity": "sha512-HFM8rkZ+i3zrV+4LQjwQ0W+ez98pApMGM3HUrN04j3CqzPOzl9nmP15Y8YXNm8QHGv/eacOVEjqhmWpkRV0NAw==", + "dev": true, + "requires": { + "resolve": "^1.1.6" + } + }, + "resolve": { + "version": "1.22.1", + "resolved": "https://registry.npmjs.org/resolve/-/resolve-1.22.1.tgz", + "integrity": "sha512-nBpuuYuY5jFsli/JIs1oldw6fOQCBioohqWZg/2hiaOybXOft4lonv85uDOKXdf8rhyK159cxU5cDcK/NKk8zw==", + "dev": true, + "requires": { + "is-core-module": "^2.9.0", + "path-parse": "^1.0.7", + "supports-preserve-symlinks-flag": "^1.0.0" + } + }, + "reusify": { + "version": "1.0.4", + "resolved": "https://registry.npmjs.org/reusify/-/reusify-1.0.4.tgz", + "integrity": "sha512-U9nH88a3fc/ekCF1l0/UP1IosiuIjyTh7hBvXVMHYgVcfGvt897Xguj2UOLDeI5BG2m7/uwyaLVT6fbtCwTyzw==", + "dev": true + }, + "rimraf": { + "version": "3.0.2", + "resolved": "https://registry.npmjs.org/rimraf/-/rimraf-3.0.2.tgz", + "integrity": "sha512-JZkJMZkAGFFPP2YqXZXPbMlMBgsxzE8ILs4lMIX/2o0L9UBw9O/Y3o6wFw/i9YLapcUJWwqbi3kdxIPdC62TIA==", + "dev": true, + "requires": { + "glob": "^7.1.3" + } + }, + "rollup": { + "version": "3.2.5", + "resolved": "https://registry.npmjs.org/rollup/-/rollup-3.2.5.tgz", + "integrity": "sha512-/Ha7HhVVofduy+RKWOQJrxe4Qb3xyZo+chcpYiD8SoQa4AG7llhupUtyfKSSrdBM2mWJjhM8wZwmbY23NmlIYw==", + "dev": true, + "requires": { + "fsevents": "~2.3.2" + } + }, + "rollup-plugin-dts": { + "version": "5.0.0", + "resolved": "https://registry.npmjs.org/rollup-plugin-dts/-/rollup-plugin-dts-5.0.0.tgz", + "integrity": "sha512-OO8ayCvuJCKaQSShyVTARxGurVVk4ulzbuvz+0zFd1f93vlnWFU5pBMT7HFeS6uj7MvvZLx4kUAarGATSU1+Ng==", + "dev": true, + "requires": { + "@babel/code-frame": "^7.18.6", + "magic-string": "^0.26.7" + } + }, + "run-parallel": { + "version": "1.2.0", + "resolved": "https://registry.npmjs.org/run-parallel/-/run-parallel-1.2.0.tgz", + "integrity": "sha512-5l4VyZR86LZ/lDxZTR6jqL8AFE2S0IFLMP26AbjsLVADxHdhB/c0GUsH+y39UfCi3dzz8OlQuPmnaJOMoDHQBA==", + "dev": true, + "requires": { + "queue-microtask": "^1.2.2" + } + }, + "scule": { + "version": "0.3.2", + "resolved": "https://registry.npmjs.org/scule/-/scule-0.3.2.tgz", + "integrity": "sha512-zIvPdjOH8fv8CgrPT5eqtxHQXmPNnV/vHJYffZhE43KZkvULvpCTvOt1HPlFaCZx287INL9qaqrZg34e8NgI4g==", + "dev": true + }, + "semver": { + "version": "7.3.8", + "resolved": "https://registry.npmjs.org/semver/-/semver-7.3.8.tgz", + "integrity": "sha512-NB1ctGL5rlHrPJtFDVIVzTyQylMLu9N9VICA6HSFJo8MCGVTMW6gfpicwKmmK/dAjTOrqu5l63JJOpDSrAis3A==", + "dev": true, + "requires": { + "lru-cache": "^6.0.0" + } + }, + "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==", + "dev": true, + "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==", + "dev": true + }, + "shelljs": { + "version": "0.8.5", + "resolved": "https://registry.npmjs.org/shelljs/-/shelljs-0.8.5.tgz", + "integrity": "sha512-TiwcRcrkhHvbrZbnRcFYMLl30Dfov3HKqzp5tO5b4pt6G/SezKcYhmDg15zXVBswHmctSAQKznqNW2LO5tTDow==", + "dev": true, + "requires": { + "glob": "^7.0.0", + "interpret": "^1.0.0", + "rechoir": "^0.6.2" + } + }, + "shx": { + "version": "0.3.4", + "resolved": "https://registry.npmjs.org/shx/-/shx-0.3.4.tgz", + "integrity": "sha512-N6A9MLVqjxZYcVn8hLmtneQWIJtp8IKzMP4eMnx+nqkvXoqinUPCbUFLp2UcWTEIUONhlk0ewxr/jaVGlc+J+g==", + "dev": true, + "requires": { + "minimist": "^1.2.3", + "shelljs": "^0.8.5" + } + }, + "sisteransi": { + "version": "1.0.5", + "resolved": "https://registry.npmjs.org/sisteransi/-/sisteransi-1.0.5.tgz", + "integrity": "sha512-bLGGlR1QxBcynn2d5YmDX4MGjlZvy2MRBDRNHLJ8VI6l6+9FUiyTFNJ0IveOSP0bcXgVDPRcfGqA0pjaqUpfVg==", + "dev": true + }, + "slash": { + "version": "4.0.0", + "resolved": "https://registry.npmjs.org/slash/-/slash-4.0.0.tgz", + "integrity": "sha512-3dOsAHXXUkQTpOYcoAxLIorMTp4gIQr5IW3iVb7A7lFIp0VHhnynm9izx6TssdrIcVIESAlVjtnO2K8bg+Coew==", + "dev": true + }, + "source-map": { + "version": "0.6.1", + "resolved": "https://registry.npmjs.org/source-map/-/source-map-0.6.1.tgz", + "integrity": "sha512-UjgapumWlbMhkBgzT7Ykc5YXUT46F0iKu8SGXq0bcwP5dz/h0Plj6enJqjz1Zbq2l5WaqYnrVbwWOWMyF3F47g==", + "dev": true + }, + "sourcemap-codec": { + "version": "1.4.8", + "resolved": "https://registry.npmjs.org/sourcemap-codec/-/sourcemap-codec-1.4.8.tgz", + "integrity": "sha512-9NykojV5Uih4lgo5So5dtw+f0JgJX30KCNI8gwhz2J9A15wD0Ml6tjHKwf6fTSa6fAdVBdZeNOs9eJ71qCk8vA==", + "dev": true + }, + "supports-color": { + "version": "5.5.0", + "resolved": "https://registry.npmjs.org/supports-color/-/supports-color-5.5.0.tgz", + "integrity": "sha512-QjVjwdXIt408MIiAqCX4oUKsgU2EqAGzs2Ppkm4aQYbjm+ZEWEcW4SfFNTr4uMNZma0ey4f5lgLrkB0aX0QMow==", + "dev": true, + "requires": { + "has-flag": "^3.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==", + "dev": true + }, + "to-fast-properties": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/to-fast-properties/-/to-fast-properties-2.0.0.tgz", + "integrity": "sha512-/OaKK0xYrs3DmxRYqL/yDc+FxFUVYhDlXMhRmv3z915w2HF1tnN1omB354j8VUGO/hbRzyD6Y3sA7v7GS/ceog==", + "dev": true + }, + "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==", + "dev": true, + "requires": { + "is-number": "^7.0.0" + } + }, + "tr46": { + "version": "0.0.3", + "resolved": "https://registry.npmjs.org/tr46/-/tr46-0.0.3.tgz", + "integrity": "sha512-N3WMsuqV66lT30CrXNbEjx4GEwlow3v6rr4mCcv6prnfwhS01rkgyFdjPNBYd9br7LpXV1+Emh01fHnq2Gdgrw==", + "dev": true + }, + "typescript": { + "version": "4.8.4", + "resolved": "https://registry.npmjs.org/typescript/-/typescript-4.8.4.tgz", + "integrity": "sha512-QCh+85mCy+h0IGff8r5XWzOVSbBO+KfeYrMQh7NJ58QujwcE22u+NUSmUxqF+un70P9GXKxa2HCNiTTMJknyjQ==", + "dev": true + }, + "ufo": { + "version": "0.8.6", + "resolved": "https://registry.npmjs.org/ufo/-/ufo-0.8.6.tgz", + "integrity": "sha512-fk6CmUgwKCfX79EzcDQQpSCMxrHstvbLswFChHS0Vump+kFkw7nJBfTZoC1j0bOGoY9I7R3n2DGek5ajbcYnOw==", + "dev": true + }, + "uglify-js": { + "version": "3.17.4", + "resolved": "https://registry.npmjs.org/uglify-js/-/uglify-js-3.17.4.tgz", + "integrity": "sha512-T9q82TJI9e/C1TAxYvfb16xO120tMVFZrGA3f9/P4424DNu6ypK103y0GPFVa17yotwSyZW5iYXgjYHkGrJW/g==", + "dev": true, + "optional": true + }, + "unbuild": { + "version": "0.9.4", + "resolved": "https://registry.npmjs.org/unbuild/-/unbuild-0.9.4.tgz", + "integrity": "sha512-IkKPqzazcCNfwTSs5bDRS2bOvg1Zh9gPYQq/ruVarCoM4f7KXclSrcb0jyJiSU/5qhakZ8K5B2CzwX4ZaaVKdQ==", + "dev": true, + "requires": { + "@rollup/plugin-alias": "^4.0.0", + "@rollup/plugin-commonjs": "^23.0.0", + "@rollup/plugin-json": "^5.0.0", + "@rollup/plugin-node-resolve": "^15.0.0", + "@rollup/plugin-replace": "^5.0.0", + "@rollup/pluginutils": "^5.0.1", + "chalk": "^5.1.2", + "consola": "^2.15.3", + "defu": "^6.1.0", + "esbuild": "^0.15.11", + "globby": "^13.1.2", + "hookable": "^5.4.1", + "jiti": "^1.16.0", + "magic-string": "^0.26.7", + "mkdirp": "^1.0.4", + "mkdist": "^0.3.13", + "mlly": "^0.5.16", + "mri": "^1.2.0", + "pathe": "^0.3.9", + "pkg-types": "^0.3.5", + "pretty-bytes": "^6.0.0", + "rimraf": "^3.0.2", + "rollup": "^3.2.0", + "rollup-plugin-dts": "^5.0.0", + "scule": "^0.3.2", + "typescript": "^4.8.4", + "untyped": "^0.5.0" + } + }, + "universalify": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/universalify/-/universalify-2.0.0.tgz", + "integrity": "sha512-hAZsKq7Yy11Zu1DE0OzWjw7nnLZmJZYTDZZyEFHZdUhV8FkH5MCfoU1XMaxXovpyW5nq5scPqq0ZDP9Zyl04oQ==", + "dev": true + }, + "untyped": { + "version": "0.5.0", + "resolved": "https://registry.npmjs.org/untyped/-/untyped-0.5.0.tgz", + "integrity": "sha512-2Sre5A1a7G61bjaAKZnSFaVgbJMwwbbYQpJFH69hAYcDfN7kIaktlSphS02XJilz4+/jR1tsJ5MHo1oMoCezxg==", + "dev": true, + "requires": { + "@babel/core": "^7.19.0", + "@babel/standalone": "^7.19.0", + "@babel/types": "^7.19.0", + "scule": "^0.3.2" + } + }, + "update-browserslist-db": { + "version": "1.0.10", + "resolved": "https://registry.npmjs.org/update-browserslist-db/-/update-browserslist-db-1.0.10.tgz", + "integrity": "sha512-OztqDenkfFkbSG+tRxBeAnCVPckDBcvibKd35yDONx6OU8N7sqgwc7rCbkJ/WcYtVRZ4ba68d6byhC21GFh7sQ==", + "dev": true, + "requires": { + "escalade": "^3.1.1", + "picocolors": "^1.0.0" + } + }, + "webidl-conversions": { + "version": "3.0.1", + "resolved": "https://registry.npmjs.org/webidl-conversions/-/webidl-conversions-3.0.1.tgz", + "integrity": "sha512-2JAn3z8AR6rjK8Sm8orRC0h/bcl/DqL7tRPdGZ4I1CjdF+EaMLmYxBHyXuKL849eucPFhvBoxMsflfOb8kxaeQ==", + "dev": true + }, + "whatwg-url": { + "version": "5.0.0", + "resolved": "https://registry.npmjs.org/whatwg-url/-/whatwg-url-5.0.0.tgz", + "integrity": "sha512-saE57nupxk6v3HY35+jzBwYa0rKSy0XR8JSxZPwgLr7ys0IBzhGviA1/TUGJLmSVqs8pb9AnvICXEuOHLprYTw==", + "dev": true, + "requires": { + "tr46": "~0.0.3", + "webidl-conversions": "^3.0.0" + } + }, + "which": { + "version": "2.0.2", + "resolved": "https://registry.npmjs.org/which/-/which-2.0.2.tgz", + "integrity": "sha512-BLI3Tl1TW3Pvl70l3yq3Y64i+awpwXqsGBYWkkqMtnbXgrMD+yj7rhW0kuEDxzJaYXGjEW5ogapKNMEKNMjibA==", + "dev": true, + "requires": { + "isexe": "^2.0.0" + } + }, + "wordwrap": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/wordwrap/-/wordwrap-1.0.0.tgz", + "integrity": "sha512-gvVzJFlPycKc5dZN4yPkP8w7Dc37BtP1yczEneOb4uq34pXZcvrtRTmWV8W+Ume+XCxKgbjM+nevkyFPMybd4Q==", + "dev": true + }, + "wrappy": { + "version": "1.0.2", + "resolved": "https://registry.npmjs.org/wrappy/-/wrappy-1.0.2.tgz", + "integrity": "sha512-l4Sp/DRseor9wL6EvV2+TuQn63dMkPjZ/sp9XkghTEbV9KlPS1xUsZ3u7/IQO4wxtcFB4bgpQPRcR3QCvezPcQ==", + "dev": true + }, + "yallist": { + "version": "4.0.0", + "resolved": "https://registry.npmjs.org/yallist/-/yallist-4.0.0.tgz", + "integrity": "sha512-3wdGidZyq5PB084XLES5TpOSRA3wjXAlIWMhum2kRcv/41Sn2emQ0dycQW4uZXLejwKvg6EsvbdlVL+FYEct7A==", + "dev": true + } + } +} diff --git a/package.json b/package.json new file mode 100644 index 0000000..72e3c36 --- /dev/null +++ b/package.json @@ -0,0 +1,47 @@ +{ + "name": "create-hyas", + "version": "0.1.0", + "type": "module", + "license": "MIT", + "author": "Henk Verlinde", + "bin": { + "create-hyas": "index.js", + "cha": "index.js" + }, + "files": [ + "index.js", + "template-*", + "dist" + ], + "main": "index.js", + "scripts": { + "dev": "unbuild --stub", + "build": "unbuild", + "prepublishOnly": "npm run build", + "clean": "npm run clean:build && npm run clean:install", + "clean:build": "shx rm -rf dist", + "clean:install": "shx rm -rf package-lock.json node_modules", + "test": "echo \"Error: no test specified\" && exit 1", + "version": "auto-changelog -p && git add CHANGELOG.md" + }, + "engines": { + "node": "^14.18.0 || >=16.0.0" + }, + "repository": { + "type": "git", + "url": "git+https://github.com/gethyas/create-hyas.git" + }, + "bugs": { + "url": "https://github.com/gethyas/create-hyas/issues" + }, + "homepage": "https://github.com/gethyas/create-hyas", + "devDependencies": { + "auto-changelog": "^2.4.0", + "cross-spawn": "^7.0.3", + "kolorist": "^1.6.0", + "minimist": "^1.2.7", + "prompts": "^2.4.2", + "shx": "^0.3.4", + "unbuild": "^0.9.4" + } +} diff --git a/src/index.ts b/src/index.ts new file mode 100644 index 0000000..b88fbae --- /dev/null +++ b/src/index.ts @@ -0,0 +1,358 @@ +import fs from 'node:fs' +import path from 'node:path' +import { fileURLToPath } from 'node:url' +import spawn from 'cross-spawn' +import minimist from 'minimist' +import prompts from 'prompts' +import { + lightGray, + lightBlue, + lightCyan, + lightYellow, + red, + reset +} from 'kolorist' + +// Avoids autoconversion to number of the project name by defining that the args +// non associated with an option ( _ ) needs to be parsed as a string. See #4606 +const argv = minimist<{ + t?: string + template?: string +}>(process.argv.slice(2), { string: ['_'] }) +const cwd = process.cwd() + +type ColorFunc = (str: string | number) => string +type Framework = { + name: string + display: string + color: ColorFunc + variants: FrameworkVariant[] +} +type FrameworkVariant = { + name: string + display: string + color: ColorFunc + customCommand?: string +} + +const FRAMEWORKS: Framework[] = [ + { + name: 'doks', + display: 'Doks', + color: lightCyan, + variants: [ + { + name: 'doks-recommended', + display: 'Recommended', + color: lightYellow + }, + { + name: 'doks', + display: 'None', + color: lightBlue + } + ] + }, + { + name: 'bootstrap-starter', + display: 'Bootstrap starter', + color: lightGray, + variants: [ + { + name: 'bs-starter-recommended', + display: 'Recommended', + color: lightYellow + }, + { + name: 'bs-starter', + display: 'None', + color: lightBlue + } + ] + }, + { + name: 'no-theme', + display: 'None', + color: lightGray, + variants: [ + { + name: 'no-theme-recommended', + display: 'Recommended', + color: lightYellow + }, + { + name: 'no-theme', + display: 'None', + color: lightBlue + } + ] + } +] + +const TEMPLATES = FRAMEWORKS.map( + (f) => (f.variants && f.variants.map((v) => v.name)) || [f.name] +).reduce((a, b) => a.concat(b), []) + +const renameFiles: Record = { + _gitignore: '.gitignore' +} + +const defaultTargetDir = 'hyas-project' + +async function init() { + const argTargetDir = formatTargetDir(argv._[0]) + const argTemplate = argv.template || argv.t + + let targetDir = argTargetDir || defaultTargetDir + const getProjectName = () => + targetDir === '.' ? path.basename(path.resolve()) : targetDir + + let result: prompts.Answers< + 'projectName' | 'overwrite' | 'packageName' | 'framework' | 'variant' + > + + try { + result = await prompts( + [ + { + type: argTargetDir ? null : 'text', + name: 'projectName', + message: reset('Project name:'), + initial: defaultTargetDir, + onState: (state) => { + targetDir = formatTargetDir(state.value) || defaultTargetDir + } + }, + { + type: () => + !fs.existsSync(targetDir) || isEmpty(targetDir) ? null : 'confirm', + name: 'overwrite', + message: () => + (targetDir === '.' + ? 'Current directory' + : `Target directory "${targetDir}"`) + + ` is not empty. Remove existing files and continue?` + }, + { + type: (_, { overwrite }: { overwrite?: boolean }) => { + if (overwrite === false) { + throw new Error(red('✖') + ' Operation cancelled') + } + return null + }, + name: 'overwriteChecker' + }, + { + type: () => (isValidPackageName(getProjectName()) ? null : 'text'), + name: 'packageName', + message: reset('Package name:'), + initial: () => toValidPackageName(getProjectName()), + validate: (dir) => + isValidPackageName(dir) || 'Invalid package.json name' + }, + { + type: + argTemplate && TEMPLATES.includes(argTemplate) ? null : 'select', + name: 'framework', + message: + typeof argTemplate === 'string' && !TEMPLATES.includes(argTemplate) + ? reset( + `"${argTemplate}" isn't a valid template. Please choose from below: ` + ) + : reset('Select a theme:'), + initial: 0, + choices: FRAMEWORKS.map((framework) => { + const frameworkColor = framework.color + return { + title: frameworkColor(framework.display || framework.name), + value: framework + } + }) + }, + { + type: (framework: Framework) => + framework && framework.variants ? 'select' : null, + name: 'variant', + message: reset('Select plugins:'), + choices: (framework: Framework) => + framework.variants.map((variant) => { + const variantColor = variant.color + return { + title: variantColor(variant.display || variant.name), + value: variant.name + } + }) + } + ], + { + onCancel: () => { + throw new Error(red('✖') + ' Operation cancelled') + } + } + ) + } catch (cancelled: any) { + console.log(cancelled.message) + return + } + + // user choice associated with prompts + const { framework, overwrite, packageName, variant } = result + + const root = path.join(cwd, targetDir) + + if (overwrite) { + emptyDir(root) + } else if (!fs.existsSync(root)) { + fs.mkdirSync(root, { recursive: true }) + } + + // determine template + const template: string = variant || framework?.name || argTemplate + + const pkgInfo = pkgFromUserAgent(process.env.npm_config_user_agent) + const pkgManager = pkgInfo ? pkgInfo.name : 'npm' + const isYarn1 = pkgManager === 'yarn' && pkgInfo?.version.startsWith('1.') + + const { customCommand } = + FRAMEWORKS.flatMap((f) => f.variants).find((v) => v.name === template) ?? {} + + if (customCommand) { + const fullCustomCommand = customCommand + .replace('TARGET_DIR', targetDir) + .replace(/^npm create/, `${pkgManager} create`) + // Only Yarn 1.x doesn't support `@version` in the `create` command + .replace('@latest', () => (isYarn1 ? '' : '@latest')) + .replace(/^npm exec/, () => { + // Prefer `pnpm dlx` or `yarn dlx` + if (pkgManager === 'pnpm') { + return 'pnpm dlx' + } + if (pkgManager === 'yarn' && !isYarn1) { + return 'yarn dlx' + } + // Use `npm exec` in all other cases, + // including Yarn 1.x and other custom npm clients. + return 'npm exec' + }) + + const [command, ...args] = fullCustomCommand.split(' ') + const { status } = spawn.sync(command, args, { + stdio: 'inherit' + }) + process.exit(status ?? 0) + } + + console.log(`\nScaffolding project in ${root}...`) + + const templateDir = path.resolve( + fileURLToPath(import.meta.url), + '../..', + `template-${template}` + ) + + const write = (file: string, content?: string) => { + const targetPath = path.join(root, renameFiles[file] ?? file) + if (content) { + fs.writeFileSync(targetPath, content) + } else { + copy(path.join(templateDir, file), targetPath) + } + } + + const files = fs.readdirSync(templateDir) + for (const file of files.filter((f) => f !== 'package.json')) { + write(file) + } + + const pkg = JSON.parse( + fs.readFileSync(path.join(templateDir, `package.json`), 'utf-8') + ) + + pkg.name = packageName || getProjectName() + + write('package.json', JSON.stringify(pkg, null, 2)) + + console.log(`\nDone. Now run:\n`) + if (root !== cwd) { + console.log(` cd ${path.relative(cwd, root)}`) + } + switch (pkgManager) { + case 'yarn': + console.log(' yarn') + console.log(' yarn dev') + break + default: + console.log(` ${pkgManager} install`) + console.log(` ${pkgManager} run dev`) + break + } + console.log() +} + +function formatTargetDir(targetDir: string | undefined) { + return targetDir?.trim().replace(/\/+$/g, '') +} + +function copy(src: string, dest: string) { + const stat = fs.statSync(src) + if (stat.isDirectory()) { + copyDir(src, dest) + } else { + fs.copyFileSync(src, dest) + } +} + +function isValidPackageName(projectName: string) { + return /^(?:@[a-z0-9-*~][a-z0-9-*._~]*\/)?[a-z0-9-~][a-z0-9-._~]*$/.test( + projectName + ) +} + +function toValidPackageName(projectName: string) { + return projectName + .trim() + .toLowerCase() + .replace(/\s+/g, '-') + .replace(/^[._]/, '') + .replace(/[^a-z0-9-~]+/g, '-') +} + +function copyDir(srcDir: string, destDir: string) { + fs.mkdirSync(destDir, { recursive: true }) + for (const file of fs.readdirSync(srcDir)) { + const srcFile = path.resolve(srcDir, file) + const destFile = path.resolve(destDir, file) + copy(srcFile, destFile) + } +} + +function isEmpty(path: string) { + const files = fs.readdirSync(path) + return files.length === 0 || (files.length === 1 && files[0] === '.git') +} + +function emptyDir(dir: string) { + if (!fs.existsSync(dir)) { + return + } + for (const file of fs.readdirSync(dir)) { + if (file === '.git') { + continue + } + fs.rmSync(path.resolve(dir, file), { recursive: true, force: true }) + } +} + +function pkgFromUserAgent(userAgent: string | undefined) { + if (!userAgent) return undefined + const pkgSpec = userAgent.split(' ')[0] + const pkgSpecArr = pkgSpec.split('/') + return { + name: pkgSpecArr[0], + version: pkgSpecArr[1] + } +} + +init().catch((e) => { + console.error(e) +}) diff --git a/template-bs-starter-recommended/.editorconfig b/template-bs-starter-recommended/.editorconfig new file mode 100644 index 0000000..dad6b58 --- /dev/null +++ b/template-bs-starter-recommended/.editorconfig @@ -0,0 +1,11 @@ +# editorconfig.org + +root = true + +[*] +indent_style = space +indent_size = 2 +end_of_line = lf +charset = utf-8 +trim_trailing_whitespace = true +insert_final_newline = true \ No newline at end of file diff --git a/template-bs-starter-recommended/.eslintignore b/template-bs-starter-recommended/.eslintignore new file mode 100644 index 0000000..e258d0c --- /dev/null +++ b/template-bs-starter-recommended/.eslintignore @@ -0,0 +1,2 @@ +assets/js/vendor +node_modules \ No newline at end of file diff --git a/template-bs-starter-recommended/.eslintrc.json b/template-bs-starter-recommended/.eslintrc.json new file mode 100644 index 0000000..c926994 --- /dev/null +++ b/template-bs-starter-recommended/.eslintrc.json @@ -0,0 +1,31 @@ +{ + "env": { + "browser": true, + "commonjs": true, + "es6": true, + "node": true + }, + "extends": "eslint:recommended", + "globals": { + "Atomics": "readonly", + "SharedArrayBuffer": "readonly" + }, + "parserOptions": { + "ecmaVersion": 2018, + "sourceType": "module" + }, + "rules": { + "no-console": 0, + "quotes": ["error", "single"], + "comma-dangle": [ + "error", + { + "arrays": "always-multiline", + "objects": "always-multiline", + "imports": "always-multiline", + "exports": "always-multiline", + "functions": "ignore" + } + ] + } +} \ No newline at end of file diff --git a/template-bs-starter-recommended/.gitignore b/template-bs-starter-recommended/.gitignore new file mode 100644 index 0000000..85ea915 --- /dev/null +++ b/template-bs-starter-recommended/.gitignore @@ -0,0 +1,5 @@ +node_modules +public +resources +.netlify +.hugo_build.lock \ No newline at end of file diff --git a/template-bs-starter-recommended/.markdownlint-cli2.jsonc b/template-bs-starter-recommended/.markdownlint-cli2.jsonc new file mode 100644 index 0000000..3c79374 --- /dev/null +++ b/template-bs-starter-recommended/.markdownlint-cli2.jsonc @@ -0,0 +1,11 @@ +{ + "config": { + "default": true, + "MD013": false, + "MD024": false, + "MD026": false, + "MD033": false, + "MD034": false + }, + "ignores": ["node_modules", "CHANGELOG.md", "README.md"] +} \ No newline at end of file diff --git a/template-bs-starter-recommended/.stylelintignore b/template-bs-starter-recommended/.stylelintignore new file mode 100644 index 0000000..9d9a3ce --- /dev/null +++ b/template-bs-starter-recommended/.stylelintignore @@ -0,0 +1,2 @@ +assets/scss/vendor +node_modules \ No newline at end of file diff --git a/template-bs-starter-recommended/.stylelintrc.json b/template-bs-starter-recommended/.stylelintrc.json new file mode 100644 index 0000000..3ac1803 --- /dev/null +++ b/template-bs-starter-recommended/.stylelintrc.json @@ -0,0 +1,37 @@ +{ + "extends": "stylelint-config-standard-scss", + "rules": { + "no-empty-source": null, + "string-quotes": "double", + "scss/comment-no-empty": null, + "max-line-length": null, + "scss/at-extend-no-missing-placeholder": null, + "at-rule-no-unknown": [ + true, + { + "ignoreAtRules": [ + "extend", + "at-root", + "debug", + "warn", + "error", + "if", + "else", + "for", + "each", + "while", + "mixin", + "include", + "content", + "return", + "function", + "tailwind", + "apply", + "responsive", + "variants", + "screen" + ] + } + ] + } +} \ No newline at end of file diff --git a/template-bs-starter-recommended/LICENSE b/template-bs-starter-recommended/LICENSE new file mode 100644 index 0000000..56d00df --- /dev/null +++ b/template-bs-starter-recommended/LICENSE @@ -0,0 +1,21 @@ +MIT License + +Copyright (c) 2021-2022 Henk Verlinde + +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/template-bs-starter-recommended/config/_default/config.toml b/template-bs-starter-recommended/config/_default/config.toml new file mode 100644 index 0000000..4a436cb --- /dev/null +++ b/template-bs-starter-recommended/config/_default/config.toml @@ -0,0 +1,44 @@ +baseurl = "/" +canonifyURLs = false +disableAliases = true +disableHugoGeneratorInject = true +disableKinds = ["taxonomy", "term"] +enableEmoji = true +enableGitInfo = false +enableRobotsTXT = true +languageCode = "en-US" +paginate = 7 +rssLimit = 10 + +[outputs] + home = ["HTML", "RSS"] + +[caches] + [caches.getjson] + dir = ":cacheDir/:project" + maxAge = "10s" + +[sitemap] + changefreq = "monthly" + filename = "sitemap.xml" + priority = 0.5 + +[taxonomies] + category = "categories" + +[permalinks] + blog = "/:title/" + +[minify.tdewolff.html] + keepWhitespace = false + +[related] + threshold = 80 + includeNewer = true + toLower = false + [[related.indices]] + name = "categories" + weight = 100 + [[related.indices]] + name = "date" + weight = 10 diff --git a/template-bs-starter-recommended/config/_default/markup.toml b/template-bs-starter-recommended/config/_default/markup.toml new file mode 100644 index 0000000..2880e30 --- /dev/null +++ b/template-bs-starter-recommended/config/_default/markup.toml @@ -0,0 +1,29 @@ +defaultMarkdownHandler = "goldmark" + +[goldmark] + [goldmark.extensions] + linkify = false + [goldmark.parser] + autoHeadingID = true + autoHeadingIDType = "github" + [goldmark.parser.attribute] + block = true + title = true + [goldmark.renderer] + unsafe = true + +[highlight] + codeFences = false + guessSyntax = false + hl_Lines = "" + lineNoStart = 1 + lineNos = false + lineNumbersInTable = true + noClasses = false + style = "dracula" + tabWidth = 4 + +[tableOfContents] + endLevel = 3 + ordered = false + startLevel = 2 diff --git a/template-bs-starter-recommended/config/_default/menus.toml b/template-bs-starter-recommended/config/_default/menus.toml new file mode 100644 index 0000000..5c9e400 --- /dev/null +++ b/template-bs-starter-recommended/config/_default/menus.toml @@ -0,0 +1,14 @@ +[[main]] + name = "GitHub" + url = "https://github.com/h-enk/hyas" + weight = 10 + +[[social]] + name = "LinkedIn" + url = "https://www.linkedin.com/in/henkverlinde/" + weight = 20 + +[[social]] + name = "Twitter" + url = "https://twitter.com/henkverlinde" + weight = 30 diff --git a/template-bs-starter-recommended/config/_default/module.toml b/template-bs-starter-recommended/config/_default/module.toml new file mode 100644 index 0000000..e961471 --- /dev/null +++ b/template-bs-starter-recommended/config/_default/module.toml @@ -0,0 +1,39 @@ +[[mounts]] + source = "node_modules/@hyas/core/assets" + target = "assets" + +[[mounts]] + source = "node_modules/@hyas/core/layouts" + target = "layouts" + +[[mounts]] + source = "node_modules/@hyas/seo/layouts" + target = "layouts" + +[[mounts]] + source = "node_modules/@hyas/images/layouts" + target = "layouts" + +[[mounts]] + source = "node_modules/@hyas/themes-starter-bootstrap/archetypes" + target = "archetypes" + +[[mounts]] + source = "node_modules/@hyas/themes-starter-bootstrap/assets" + target = "assets" + +[[mounts]] + source = "node_modules/@hyas/themes-starter-bootstrap/layouts" + target = "layouts" + +[[mounts]] + source = "archetypes" + target = "archetypes" + +[[mounts]] + source = "assets" + target = "assets" + +[[mounts]] + source = "layouts" + target = "layouts" diff --git a/template-bs-starter-recommended/config/_default/params.toml b/template-bs-starter-recommended/config/_default/params.toml new file mode 100644 index 0000000..ca476b1 --- /dev/null +++ b/template-bs-starter-recommended/config/_default/params.toml @@ -0,0 +1,64 @@ +# Meta Data for SEO + +## Homepage +title = "Hyas" +titleSeparator = "-" +titleAddition = "Build websites faster" +description = "Hyas is a Hugo starter helping you build modern websites that are secure, fast, and SEO-ready — by default." + +## Open Graph +images = ["hyas.png"] +ogLocale = "en_US" +titleHome = "Hyas Hugo Starter" + +## Twitter Cards +twitterSite = "@gethyas" +twitterCreator = "@henkverlinde" + +## JSON-LD +# schemaType = "Person" +schemaType = "Organization" +schemaName = "Hyas" +schemaAuthor = "Henk Verlinde" +schemaAuthorTwitter = "https://twitter.com/henkverlinde" +schemaAuthorLinkedIn = "https://www.linkedin.com/in/henkverlinde/" +schemaAuthorGitHub = "https://github.com/h-enk" +schemaLocale = "en-US" +schemaLogo = "logo-hyas.png" +schemaLogoWidth = 512 +schemaLogoHeight = 512 +schemaImage = "hyas.png" +schemaImageWidth = 1280 +schemaImageHeight = 640 +schemaTwitter = "https://twitter.com/gethyas" +schemaLinkedIn = "" +schemaGitHub = "https://github.com/h-enk/hyas" + +# lazyimg +[lazyimg] + resizer = "auto" + renderer = "lqip-webp" + + # Resizer options: + lqipSize = "120x Gaussian" + maxSize = "1920x" + responsiveSizes = [ "320x", "640x", "768x", "1024x", "1366x", "1600x", "1920x" ] + resizeOptions = "Lanczos q95" + + # Renderer options: + class = "img-fluid" + # alt = "" + noscript = true + + errorHandler = "warning" + +# Feed +copyRight = "Copyright (c) 2020-2021 Henk Verlinde" + +# Footer +footer = "Powered by Netlify, Hugo, and Hyas" + +# Alert +alert = false +alertDismissable = true +alertText = "Deliver web projects 10x faster. Get the free enterprise paper →" diff --git a/template-bs-starter-recommended/config/babel.config.js b/template-bs-starter-recommended/config/babel.config.js new file mode 100644 index 0000000..e34c0a7 --- /dev/null +++ b/template-bs-starter-recommended/config/babel.config.js @@ -0,0 +1,17 @@ +module.exports = { + presets: [ + [ + '@babel/preset-env', + { + targets: { + browsers: [ + // Best practice: https://github.com/babel/babel/issues/7789 + '>=1%', + 'not ie 11', + 'not op_mini all', + ], + }, + }, + ], + ], +}; diff --git a/template-bs-starter-recommended/config/next/config.toml b/template-bs-starter-recommended/config/next/config.toml new file mode 100644 index 0000000..9fad6c9 --- /dev/null +++ b/template-bs-starter-recommended/config/next/config.toml @@ -0,0 +1 @@ +# Overrides for next environment diff --git a/template-bs-starter-recommended/config/postcss.config.js b/template-bs-starter-recommended/config/postcss.config.js new file mode 100644 index 0000000..cc7e589 --- /dev/null +++ b/template-bs-starter-recommended/config/postcss.config.js @@ -0,0 +1,35 @@ +const autoprefixer = require('autoprefixer'); +const purgecss = require('@fullhuman/postcss-purgecss'); +const whitelister = require('purgecss-whitelister'); + +module.exports = { + plugins: [ + autoprefixer(), + purgecss({ + content: [ + // './node_modules/@hyas/core/layouts/**/*.html', + './node_modules/@hyas/themes-starter-bootstrap/layouts/**/*.html', + // './layouts/**/*.html', + './content/**/*.md', + ], + safelist: [ + 'lazyloaded', + 'table', + 'thead', + 'tbody', + 'tr', + 'th', + 'td', + 'h1', + 'h2', + 'h3', + 'alert-link', + ...whitelister([ + // './node_modules/@hyas/core/assets/scss/app.scss', + './node_modules/@hyas/themes-starter-bootstrap/assets/scss/components/_alerts.scss', + './node_modules/@hyas/themes-starter-bootstrap/assets/scss/components/_code.scss', + ]), + ], + }), + ], +} diff --git a/template-bs-starter-recommended/config/production/config.toml b/template-bs-starter-recommended/config/production/config.toml new file mode 100644 index 0000000..ff90f22 --- /dev/null +++ b/template-bs-starter-recommended/config/production/config.toml @@ -0,0 +1 @@ +# Overrides for production environment diff --git a/template-bs-starter-recommended/content/_index.md b/template-bs-starter-recommended/content/_index.md new file mode 100644 index 0000000..49d6949 --- /dev/null +++ b/template-bs-starter-recommended/content/_index.md @@ -0,0 +1,11 @@ +--- +title : "Build websites faster" +description: "Hyas is a Hugo-powered Jamstack framework for building production-ready websites faster." +lead: "Hyas is a Hugo-powered Jamstack framework for building production-ready websites faster." +date: 2020-04-17T12:18:10+00:00 +lastmod: 2020-04-17T12:18:10+00:00 +draft: false +images: [] +--- + +This line is from `./content/_index.md` :rocket: diff --git a/template-bs-starter-recommended/content/blog/_index.md b/template-bs-starter-recommended/content/blog/_index.md new file mode 100644 index 0000000..bd969d8 --- /dev/null +++ b/template-bs-starter-recommended/content/blog/_index.md @@ -0,0 +1,15 @@ +--- +title: "Blog" +description: "Hyas Blog" +date: 2020-04-17T12:17:27+00:00 +lastmod: 2020-04-17T12:17:27+00:00 +draft: true +images: [] +_build: + render: true + list: always + publishResources: true +robots: "noindex, noarchive" +sitemap_exclude: true +feed_exclude: true +--- diff --git a/template-bs-starter-recommended/content/quick-start/index.md b/template-bs-starter-recommended/content/quick-start/index.md new file mode 100644 index 0000000..5963616 --- /dev/null +++ b/template-bs-starter-recommended/content/quick-start/index.md @@ -0,0 +1,32 @@ +--- +title: "Quick Start" +description: "A quick start to using Hyas." +date: 2020-04-17T12:17:54+00:00 +lastmod: 2020-04-17T12:17:54+00:00 +draft: false +images: [] +--- + +How to start a new Hyas project — one pager. + +## Requirements + +- [Node.js](https://nodejs.org/) — v16.17.0 or higher + +## Get started + +Create a new project: + +```bash +npm create hyas@latest +``` + +## Documentation + +- [Hyas](https://gethyas.com/) +- [Hugo](https://gohugo.io/documentation/) + +## Communities + +- [Hyas Discussions](https://github.com/h-enk/hyas/discussions) +- [Hugo Forums](https://discourse.gohugo.io/) diff --git a/template-bs-starter-recommended/netlify.toml b/template-bs-starter-recommended/netlify.toml new file mode 100644 index 0000000..1132be5 --- /dev/null +++ b/template-bs-starter-recommended/netlify.toml @@ -0,0 +1,60 @@ +[build] + publish = "public" + functions = "functions" + +[build.environment] + NODE_VERSION = "16.17.0" + NPM_VERSION = "8.15.0" + +[context.production] + command = "npm run build" + +[context.deploy-preview] + command = "npm run build -- -b $DEPLOY_PRIME_URL" + +[context.branch-deploy] + command = "npm run build -- -b $DEPLOY_PRIME_URL" + +[context.next] + command = "npm run build" + +[context.next.environment] + HUGO_ENV = "next" + +[[plugins]] + package = "netlify-plugin-submit-sitemap" + + [plugins.inputs] + baseUrl = "https://hyas.netlify.app/" + sitemapPath = "/sitemap.xml" + ignorePeriod = 0 + providers = [ + "google", + "yandex" + ] + +[dev] + framework = "#custom" + command = "npm run start" + targetPort = 1313 + port = 8888 + publish = "public" + autoLaunch = false + +# Redirects and rewrites — https://docs.netlify.com/routing/redirects/#syntax-for-the-netlify-configuration-file + +# Custom headers — https://docs.netlify.com/routing/headers/#syntax-for-the-netlify-configuration-file +[[headers]] + for = "/*" + [headers.values] + Strict-Transport-Security = "max-age=31536000; includeSubDomains; preload" + X-Content-Type-Options = "nosniff" + X-XSS-Protection = "1; mode=block" + Content-Security-Policy = "default-src 'self'; manifest-src 'self'; connect-src 'self'; font-src 'self'; img-src 'self' data:; script-src 'self' 'nonce-dXNlcj0iaGVsbG8iLGRvbWFpbj0iaGVua3ZlcmxpbmRlLmNvbSIsZG9jdW1lbnQud3JpdGUodXNlcisiQCIrZG9tYWluKTs=' 'sha256-aWZ3y/RxbBYKHXH0z8+8ljrHG1mSBvyzSfxSMjBSaXk='; style-src 'self'" + X-Frame-Options = "SAMEORIGIN" + Referrer-Policy = "strict-origin" + Feature-Policy = "geolocation 'self'" + Cache-Control= ''' + public, + max-age=31536000''' + Access-Control-Allow-Origin = "*" diff --git a/template-bs-starter-recommended/package.json b/template-bs-starter-recommended/package.json new file mode 100644 index 0000000..d06351d --- /dev/null +++ b/template-bs-starter-recommended/package.json @@ -0,0 +1,39 @@ +{ + "name": "hyas-bs-starter-recommended", + "version": "0.0.0", + "license": "MIT", + "engines": { + "node": ">=16.17.0", + "npm": ">=8.15.0" + }, + "browserslist": [ + "defaults" + ], + "scripts": { + "predev": "npm run clean:build", + "dev": "exec-bin node_modules/.bin/hugo/hugo server --gc --bind=0.0.0.0 --disableFastRender --baseURL=http://localhost", + "create": "exec-bin node_modules/.bin/hugo/hugo new", + "check": "npm run check:scripts && npm run check:styles && npm run check:markdown", + "check:scripts": "eslint config", + "check:styles": "stylelint \"assets/scss/**/*.{css,sass,scss}\"", + "check:markdown": "markdownlint-cli2 \"*.md\" \"content/**/*.md\"", + "fix:markdown": "markdownlint-cli2-fix \"*.md\" \"content/**/*.md\"", + "test": "npm run check", + "prebuild": "npm run clean:build", + "build": "exec-bin node_modules/.bin/hugo/hugo --gc --minify", + "preview": "http-server --gzip --brotli --ext=html --cors", + "clean": "npm run clean:build && npm run clean:install", + "clean:build": "shx rm -rf public resources .hugo_build.lock", + "clean:install": "shx rm -rf package-lock.json yarn.lock pnpm-lock.yaml node_modules", + "preinfo": "npm version", + "info": "npm list", + "postinfo": "exec-bin node_modules/.bin/hugo/hugo version", + "postinstall": "shx mkdir node_modules/.bin/hugo && shx cp node_modules/hyas-module/node_modules/.bin/hugo/* node_modules/.bin/hugo" + }, + "devDependencies": { + "@hyas/images": "^0.3.2", + "@hyas/seo": "^0.1.2", + "@hyas/themes-starter-bootstrap": "^0.1.4", + "hyas": "^2.0.0" + } +} diff --git a/template-bs-starter-recommended/static/android-chrome-192x192.png b/template-bs-starter-recommended/static/android-chrome-192x192.png new file mode 100644 index 0000000000000000000000000000000000000000..f7c60b2c1e90e4cb7812f222e3ac45c955e55f55 GIT binary patch literal 6450 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 literal 0 HcmV?d00001 diff --git a/template-bs-starter-recommended/static/android-chrome-512x512.png b/template-bs-starter-recommended/static/android-chrome-512x512.png new file mode 100644 index 0000000000000000000000000000000000000000..31affbb3bffb0f6a7432ab7e76194ec516a79a2e GIT binary patch literal 22135 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 literal 0 HcmV?d00001 diff --git a/template-bs-starter-recommended/static/apple-touch-icon.png b/template-bs-starter-recommended/static/apple-touch-icon.png new file mode 100644 index 0000000000000000000000000000000000000000..8286cbc51818dd58eedffed7c5babba6b3414d5d GIT binary patch literal 5960 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 literal 0 HcmV?d00001 diff --git a/template-bs-starter-recommended/static/favicon-32x32.png b/template-bs-starter-recommended/static/favicon-32x32.png new file mode 100644 index 0000000000000000000000000000000000000000..4407268b61005b088f76e517211ca00476e62cea GIT binary patch literal 1003 zcmVzL}$B=%q&D(H{F9i@S+I@AB>q`1S26rR7fV9gkYc&36Tw^ zE-|ne4bvE1hz}A?ATd73!<4~j$Pn%9tW0K!rGLiS(fj9^-g5644p|9leCY4#e&_to z`M!Mp-QVdY+{PLj8WMdi{%1k7jX{@1#=C)*hVO2p6{wh^a5!9G{vG?)v-3$1F09rt+Luv#pI zG$F+*4~SyLdx7TrFWy))Pr#Y6Xp2PBHUg~%V9sy8GLzAWQ`1*&<>tJ+-DX3L#|_64 zn;yT)jL#raPg}F^7d@y6U}o{uxyWH6tYJXN$CBx3jd&)LEsFTY&DN?a-0gA0<*o#G;Fb2abLaH$W8q@iRpAo!zQyCzQ(yb zOAzS5hUcE%I`0tb;Op;)yHr)}(ed8kTS#APwEQ7IUU+G}L2|Ia57CK;hU>jPY}(vu zXkrM==`kCQ+BsNrgt3;iD+n)8{}t*tFh2g(A<4wM}zJ5YAu z|LZ_bR*YG&bH{e1l7;`15BvRidBZElo!-~G55G@LX!rrI7oA;i8o5tC8o-&+!Z31H zS7Y~{z1nkr^qNiL!n0s-@R%)Uk$+H`{d1G!&OZr6qZL`x6YJJJHKU6{C={|?Oy|0% zXEM9)JmtSTI_*n>Zf|W*Yh7K2g2AA$>iM<9%xEhGxpDXiCy##lX*>OP;nK>SB7IXz za-GXkX23f3 literal 0 HcmV?d00001 diff --git a/template-bs-starter-recommended/static/favicon.ico b/template-bs-starter-recommended/static/favicon.ico new file mode 100644 index 0000000000000000000000000000000000000000..b7edcecf45213146291d5afb882fe48940d29e4d GIT binary patch literal 15406 zcmeHO3vgUj8NQ{qJ^-hRjH5VOXXK%1%TS6IDF$q@FyK@r&~c<9f~EMVKs&>rNNQ1m zOsUhfGi{m_6WX*%^CIu0NjA-Mv-j?99=mrpx%)`6&?F^^I7O)r>GA(=dhVXRY#yX( z9>cve|D4zVpZ`1Oo^$Rw|M{;ZEs_>X%a%zLE|;G8m?YgQNz(G=W9b_{BT0uT@1~nB zlwT)F%~wm(4a7qtBr%pxLEL9#FtTH~zi0P!Xk@Tw$J?ia&cQbWY&vv?WV<}_tsM?q z*xhoHeHemFu*i9;6||J4EYf zT@zFl_V?sJvsEj<&R$R7&yZe!=XZ5N9C;`M57LmaDYN*nVETc>4`L#d3~7aG;}~$y!ohkl&Age&5YBJ?pw$1ynVG! zPyhCDBOm3DKAdQjAp$uc%b+9v=$E9j+|(5Dd;98NpJgxa+^*AsJv(Fe?J3F68)b-#a^U51 zs6#9(%}v`KPk+(zgEtf3d6D-L#Yc;eA6O}32zA;&uX$Rv=yy802e=e@nn%{4lVj-h zIai6}4(F(8>1`w2<50lkh}j1O{jOWMemVy%rZdrzpz0juINI#htfu5>%)6V;`=~BD zLg&W|XTz~Q?kJtXvKdpBaQ!^&^|swe=dw(~@IQ`YymRAZSZt-oScjulZ1cIGM@|d* z;yAiG?2OhDow_<&qIy-OJLGfzDjc?b;-Zws5!N*AsYka%YDIdjCfB z?!s$BpN>5e@qV_ayFIH{YiA3I`m~Otz)ow=BKp>BrSFfiCy0J~X4!T(MO)zotXqK{ z>!;7xdKKC9lQggF^0^z&VNWw3$=}xW9$|EnUGxQD26p~u`BV4)#o*!m$m8Wage>adJP4r!x;PI)?16zP zKVx6am@#ALY1)_9;#{N&l)5jOtzENx3-o;5-PS1G>z-7JjS$&11qEKk;X>HGi%3$2?c8_0w8E&11q^KdtrC+P_)* zPxCCW_78Kre;{AmIwHDfic-q%U3AV{5pz~rpKu#1FU*SJgUq%kAC2L|xe9q=eTYLA zb%^IL=zuOWFQx0u<7B*aS#DaR*}i~t_Wc{a$L?8oyFrN?f52W(O*ZbExXd%Z`Gvv5 z`H{!Vc?en5!Fdou2Xt{B9s<*Nc*Xpp+|(QCE-uLBc$j~5Kg&vgm1U*vHt5*lJ*?>X zfe+|9k-694;rz(sb@33gsDtz9A?biF&cj2(h7Ii8cV|BBM=)C?{&&%*O$ z|4GlxOpfa#2cJQ;t?{9j+QLvHY%cSVnh6^)a=WM4|Di7DTC$4{)7m*I+Fs^U9N2&{ zq&n^pu_GSxI)7%~A0kaMF}9@HY!7tD!xZY2A2#Es`~7bc?>lCGt+VxlpLxNAV@kC5 zO&G5to8%+}dm;IvvTo9C#uM}@{|R@yaWxt9(3pb1?tR4XAv!P0b$8fVduuJLCEtTf zJ*TUS;a72zneN`v4q$56{7NEW9rrH$jK^~Y`4v1t?d+g??6Y)dAJZ0mSKympo_Bc0 z+ESjE&T31tSR3IsjTz|v7mW=U{QOVH`3E58B?t-J50JmcW|Ge*I!k1{OUwcIfHYMX zFx(SN_nlPazow5R_{4l*tiU(Jr(}gy=RZpQx_Y=-`WKwAPn_iZ$u-k|yi zNvGjc1pOGV@JFjG%!unt1I&0=O*A**>k@-mmEVUC3ayP9SVx3mFym3&-DsV10{KMk zAq)W`VSdQ^`)EB?s{2R*GYJ3Rw4N%_@6^Qc9r7vfQ-8D(_FeG1n##W_Gu0sY%mh{Y zwE>UvJoVd<*q^|N_rd=!LtMl?#_J4+eajf(9Q`BoBK4z2 z@8z7>7E}CPO1tqt(WUT1iid5gdHO#{Ugy^|Rema \ No newline at end of file diff --git a/template-bs-starter-recommended/static/fonts/vendor/inter/inter-v2-latin-500.woff b/template-bs-starter-recommended/static/fonts/vendor/inter/inter-v2-latin-500.woff new file mode 100644 index 0000000000000000000000000000000000000000..ab8c2c103c2bff0bdc390f48ea92a96fea19960a GIT binary patch literal 22404 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 literal 0 HcmV?d00001 diff --git a/template-bs-starter-recommended/static/images/hyas-schema-image.png b/template-bs-starter-recommended/static/images/hyas-schema-image.png new file mode 100644 index 0000000000000000000000000000000000000000..021fa462fa07fcca66fbe419ec9181ecdb43fdd3 GIT binary patch literal 8215 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 literal 0 HcmV?d00001 diff --git a/template-bs-starter-recommended/static/images/hyas-schema-logo.svg b/template-bs-starter-recommended/static/images/hyas-schema-logo.svg new file mode 100644 index 0000000..bdd0d45 --- /dev/null +++ b/template-bs-starter-recommended/static/images/hyas-schema-logo.svg @@ -0,0 +1 @@ + \ No newline at end of file diff --git a/template-bs-starter-recommended/static/images/hyas-screenshot.png b/template-bs-starter-recommended/static/images/hyas-screenshot.png new file mode 100644 index 0000000000000000000000000000000000000000..89c99a37aa8dda65a5e50ad38ddef2575fdd5a3a GIT binary patch literal 58631 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, Hugo, and Hyas" + +# Alert +alert = false +alertDismissable = true +alertText = "Deliver web projects 10x faster. Get the free enterprise paper →" diff --git a/template-bs-starter/config/babel.config.js b/template-bs-starter/config/babel.config.js new file mode 100644 index 0000000..e34c0a7 --- /dev/null +++ b/template-bs-starter/config/babel.config.js @@ -0,0 +1,17 @@ +module.exports = { + presets: [ + [ + '@babel/preset-env', + { + targets: { + browsers: [ + // Best practice: https://github.com/babel/babel/issues/7789 + '>=1%', + 'not ie 11', + 'not op_mini all', + ], + }, + }, + ], + ], +}; diff --git a/template-bs-starter/config/next/config.toml b/template-bs-starter/config/next/config.toml new file mode 100644 index 0000000..9fad6c9 --- /dev/null +++ b/template-bs-starter/config/next/config.toml @@ -0,0 +1 @@ +# Overrides for next environment diff --git a/template-bs-starter/config/postcss.config.js b/template-bs-starter/config/postcss.config.js new file mode 100644 index 0000000..cc7e589 --- /dev/null +++ b/template-bs-starter/config/postcss.config.js @@ -0,0 +1,35 @@ +const autoprefixer = require('autoprefixer'); +const purgecss = require('@fullhuman/postcss-purgecss'); +const whitelister = require('purgecss-whitelister'); + +module.exports = { + plugins: [ + autoprefixer(), + purgecss({ + content: [ + // './node_modules/@hyas/core/layouts/**/*.html', + './node_modules/@hyas/themes-starter-bootstrap/layouts/**/*.html', + // './layouts/**/*.html', + './content/**/*.md', + ], + safelist: [ + 'lazyloaded', + 'table', + 'thead', + 'tbody', + 'tr', + 'th', + 'td', + 'h1', + 'h2', + 'h3', + 'alert-link', + ...whitelister([ + // './node_modules/@hyas/core/assets/scss/app.scss', + './node_modules/@hyas/themes-starter-bootstrap/assets/scss/components/_alerts.scss', + './node_modules/@hyas/themes-starter-bootstrap/assets/scss/components/_code.scss', + ]), + ], + }), + ], +} diff --git a/template-bs-starter/config/production/config.toml b/template-bs-starter/config/production/config.toml new file mode 100644 index 0000000..ff90f22 --- /dev/null +++ b/template-bs-starter/config/production/config.toml @@ -0,0 +1 @@ +# Overrides for production environment diff --git a/template-bs-starter/content/_index.md b/template-bs-starter/content/_index.md new file mode 100644 index 0000000..49d6949 --- /dev/null +++ b/template-bs-starter/content/_index.md @@ -0,0 +1,11 @@ +--- +title : "Build websites faster" +description: "Hyas is a Hugo-powered Jamstack framework for building production-ready websites faster." +lead: "Hyas is a Hugo-powered Jamstack framework for building production-ready websites faster." +date: 2020-04-17T12:18:10+00:00 +lastmod: 2020-04-17T12:18:10+00:00 +draft: false +images: [] +--- + +This line is from `./content/_index.md` :rocket: diff --git a/template-bs-starter/content/blog/_index.md b/template-bs-starter/content/blog/_index.md new file mode 100644 index 0000000..bd969d8 --- /dev/null +++ b/template-bs-starter/content/blog/_index.md @@ -0,0 +1,15 @@ +--- +title: "Blog" +description: "Hyas Blog" +date: 2020-04-17T12:17:27+00:00 +lastmod: 2020-04-17T12:17:27+00:00 +draft: true +images: [] +_build: + render: true + list: always + publishResources: true +robots: "noindex, noarchive" +sitemap_exclude: true +feed_exclude: true +--- diff --git a/template-bs-starter/content/quick-start/index.md b/template-bs-starter/content/quick-start/index.md new file mode 100644 index 0000000..5963616 --- /dev/null +++ b/template-bs-starter/content/quick-start/index.md @@ -0,0 +1,32 @@ +--- +title: "Quick Start" +description: "A quick start to using Hyas." +date: 2020-04-17T12:17:54+00:00 +lastmod: 2020-04-17T12:17:54+00:00 +draft: false +images: [] +--- + +How to start a new Hyas project — one pager. + +## Requirements + +- [Node.js](https://nodejs.org/) — v16.17.0 or higher + +## Get started + +Create a new project: + +```bash +npm create hyas@latest +``` + +## Documentation + +- [Hyas](https://gethyas.com/) +- [Hugo](https://gohugo.io/documentation/) + +## Communities + +- [Hyas Discussions](https://github.com/h-enk/hyas/discussions) +- [Hugo Forums](https://discourse.gohugo.io/) diff --git a/template-bs-starter/netlify.toml b/template-bs-starter/netlify.toml new file mode 100644 index 0000000..1132be5 --- /dev/null +++ b/template-bs-starter/netlify.toml @@ -0,0 +1,60 @@ +[build] + publish = "public" + functions = "functions" + +[build.environment] + NODE_VERSION = "16.17.0" + NPM_VERSION = "8.15.0" + +[context.production] + command = "npm run build" + +[context.deploy-preview] + command = "npm run build -- -b $DEPLOY_PRIME_URL" + +[context.branch-deploy] + command = "npm run build -- -b $DEPLOY_PRIME_URL" + +[context.next] + command = "npm run build" + +[context.next.environment] + HUGO_ENV = "next" + +[[plugins]] + package = "netlify-plugin-submit-sitemap" + + [plugins.inputs] + baseUrl = "https://hyas.netlify.app/" + sitemapPath = "/sitemap.xml" + ignorePeriod = 0 + providers = [ + "google", + "yandex" + ] + +[dev] + framework = "#custom" + command = "npm run start" + targetPort = 1313 + port = 8888 + publish = "public" + autoLaunch = false + +# Redirects and rewrites — https://docs.netlify.com/routing/redirects/#syntax-for-the-netlify-configuration-file + +# Custom headers — https://docs.netlify.com/routing/headers/#syntax-for-the-netlify-configuration-file +[[headers]] + for = "/*" + [headers.values] + Strict-Transport-Security = "max-age=31536000; includeSubDomains; preload" + X-Content-Type-Options = "nosniff" + X-XSS-Protection = "1; mode=block" + Content-Security-Policy = "default-src 'self'; manifest-src 'self'; connect-src 'self'; font-src 'self'; img-src 'self' data:; script-src 'self' 'nonce-dXNlcj0iaGVsbG8iLGRvbWFpbj0iaGVua3ZlcmxpbmRlLmNvbSIsZG9jdW1lbnQud3JpdGUodXNlcisiQCIrZG9tYWluKTs=' 'sha256-aWZ3y/RxbBYKHXH0z8+8ljrHG1mSBvyzSfxSMjBSaXk='; style-src 'self'" + X-Frame-Options = "SAMEORIGIN" + Referrer-Policy = "strict-origin" + Feature-Policy = "geolocation 'self'" + Cache-Control= ''' + public, + max-age=31536000''' + Access-Control-Allow-Origin = "*" diff --git a/template-bs-starter/package.json b/template-bs-starter/package.json new file mode 100644 index 0000000..4d3090c --- /dev/null +++ b/template-bs-starter/package.json @@ -0,0 +1,37 @@ +{ + "name": "hyas-bs-starter", + "version": "0.0.0", + "license": "MIT", + "engines": { + "node": ">=16.17.0", + "npm": ">=8.15.0" + }, + "browserslist": [ + "defaults" + ], + "scripts": { + "predev": "npm run clean:build", + "dev": "exec-bin node_modules/.bin/hugo/hugo server --gc --bind=0.0.0.0 --disableFastRender --baseURL=http://localhost", + "create": "exec-bin node_modules/.bin/hugo/hugo new", + "check": "npm run check:scripts && npm run check:styles && npm run check:markdown", + "check:scripts": "eslint config", + "check:styles": "stylelint \"assets/scss/**/*.{css,sass,scss}\"", + "check:markdown": "markdownlint-cli2 \"*.md\" \"content/**/*.md\"", + "fix:markdown": "markdownlint-cli2-fix \"*.md\" \"content/**/*.md\"", + "test": "npm run check", + "prebuild": "npm run clean:build", + "build": "exec-bin node_modules/.bin/hugo/hugo --gc --minify", + "preview": "http-server --gzip --brotli --ext=html --cors", + "clean": "npm run clean:build && npm run clean:install", + "clean:build": "shx rm -rf public resources .hugo_build.lock", + "clean:install": "shx rm -rf package-lock.json yarn.lock pnpm-lock.yaml node_modules", + "preinfo": "npm version", + "info": "npm list", + "postinfo": "exec-bin node_modules/.bin/hugo/hugo version", + "postinstall": "shx mkdir node_modules/.bin/hugo && shx cp node_modules/hyas-module/node_modules/.bin/hugo/* node_modules/.bin/hugo" + }, + "devDependencies": { + "@hyas/themes-starter-bootstrap": "^0.1.4", + "hyas": "^2.0.0" + } +} diff --git a/template-bs-starter/static/android-chrome-192x192.png b/template-bs-starter/static/android-chrome-192x192.png new file mode 100644 index 0000000000000000000000000000000000000000..f7c60b2c1e90e4cb7812f222e3ac45c955e55f55 GIT binary patch literal 6450 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 literal 0 HcmV?d00001 diff --git a/template-bs-starter/static/android-chrome-512x512.png b/template-bs-starter/static/android-chrome-512x512.png new file mode 100644 index 0000000000000000000000000000000000000000..31affbb3bffb0f6a7432ab7e76194ec516a79a2e GIT binary patch literal 22135 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 literal 0 HcmV?d00001 diff --git a/template-bs-starter/static/apple-touch-icon.png b/template-bs-starter/static/apple-touch-icon.png new file mode 100644 index 0000000000000000000000000000000000000000..8286cbc51818dd58eedffed7c5babba6b3414d5d GIT binary patch literal 5960 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 literal 0 HcmV?d00001 diff --git a/template-bs-starter/static/favicon-32x32.png b/template-bs-starter/static/favicon-32x32.png new file mode 100644 index 0000000000000000000000000000000000000000..4407268b61005b088f76e517211ca00476e62cea GIT binary patch literal 1003 zcmVzL}$B=%q&D(H{F9i@S+I@AB>q`1S26rR7fV9gkYc&36Tw^ zE-|ne4bvE1hz}A?ATd73!<4~j$Pn%9tW0K!rGLiS(fj9^-g5644p|9leCY4#e&_to z`M!Mp-QVdY+{PLj8WMdi{%1k7jX{@1#=C)*hVO2p6{wh^a5!9G{vG?)v-3$1F09rt+Luv#pI zG$F+*4~SyLdx7TrFWy))Pr#Y6Xp2PBHUg~%V9sy8GLzAWQ`1*&<>tJ+-DX3L#|_64 zn;yT)jL#raPg}F^7d@y6U}o{uxyWH6tYJXN$CBx3jd&)LEsFTY&DN?a-0gA0<*o#G;Fb2abLaH$W8q@iRpAo!zQyCzQ(yb zOAzS5hUcE%I`0tb;Op;)yHr)}(ed8kTS#APwEQ7IUU+G}L2|Ia57CK;hU>jPY}(vu zXkrM==`kCQ+BsNrgt3;iD+n)8{}t*tFh2g(A<4wM}zJ5YAu z|LZ_bR*YG&bH{e1l7;`15BvRidBZElo!-~G55G@LX!rrI7oA;i8o5tC8o-&+!Z31H zS7Y~{z1nkr^qNiL!n0s-@R%)Uk$+H`{d1G!&OZr6qZL`x6YJJJHKU6{C={|?Oy|0% zXEM9)JmtSTI_*n>Zf|W*Yh7K2g2AA$>iM<9%xEhGxpDXiCy##lX*>OP;nK>SB7IXz za-GXkX23f3 literal 0 HcmV?d00001 diff --git a/template-bs-starter/static/favicon.ico b/template-bs-starter/static/favicon.ico new file mode 100644 index 0000000000000000000000000000000000000000..b7edcecf45213146291d5afb882fe48940d29e4d GIT binary patch literal 15406 zcmeHO3vgUj8NQ{qJ^-hRjH5VOXXK%1%TS6IDF$q@FyK@r&~c<9f~EMVKs&>rNNQ1m zOsUhfGi{m_6WX*%^CIu0NjA-Mv-j?99=mrpx%)`6&?F^^I7O)r>GA(=dhVXRY#yX( z9>cve|D4zVpZ`1Oo^$Rw|M{;ZEs_>X%a%zLE|;G8m?YgQNz(G=W9b_{BT0uT@1~nB zlwT)F%~wm(4a7qtBr%pxLEL9#FtTH~zi0P!Xk@Tw$J?ia&cQbWY&vv?WV<}_tsM?q z*xhoHeHemFu*i9;6||J4EYf zT@zFl_V?sJvsEj<&R$R7&yZe!=XZ5N9C;`M57LmaDYN*nVETc>4`L#d3~7aG;}~$y!ohkl&Age&5YBJ?pw$1ynVG! zPyhCDBOm3DKAdQjAp$uc%b+9v=$E9j+|(5Dd;98NpJgxa+^*AsJv(Fe?J3F68)b-#a^U51 zs6#9(%}v`KPk+(zgEtf3d6D-L#Yc;eA6O}32zA;&uX$Rv=yy802e=e@nn%{4lVj-h zIai6}4(F(8>1`w2<50lkh}j1O{jOWMemVy%rZdrzpz0juINI#htfu5>%)6V;`=~BD zLg&W|XTz~Q?kJtXvKdpBaQ!^&^|swe=dw(~@IQ`YymRAZSZt-oScjulZ1cIGM@|d* z;yAiG?2OhDow_<&qIy-OJLGfzDjc?b;-Zws5!N*AsYka%YDIdjCfB z?!s$BpN>5e@qV_ayFIH{YiA3I`m~Otz)ow=BKp>BrSFfiCy0J~X4!T(MO)zotXqK{ z>!;7xdKKC9lQggF^0^z&VNWw3$=}xW9$|EnUGxQD26p~u`BV4)#o*!m$m8Wage>adJP4r!x;PI)?16zP zKVx6am@#ALY1)_9;#{N&l)5jOtzENx3-o;5-PS1G>z-7JjS$&11qEKk;X>HGi%3$2?c8_0w8E&11q^KdtrC+P_)* zPxCCW_78Kre;{AmIwHDfic-q%U3AV{5pz~rpKu#1FU*SJgUq%kAC2L|xe9q=eTYLA zb%^IL=zuOWFQx0u<7B*aS#DaR*}i~t_Wc{a$L?8oyFrN?f52W(O*ZbExXd%Z`Gvv5 z`H{!Vc?en5!Fdou2Xt{B9s<*Nc*Xpp+|(QCE-uLBc$j~5Kg&vgm1U*vHt5*lJ*?>X zfe+|9k-694;rz(sb@33gsDtz9A?biF&cj2(h7Ii8cV|BBM=)C?{&&%*O$ z|4GlxOpfa#2cJQ;t?{9j+QLvHY%cSVnh6^)a=WM4|Di7DTC$4{)7m*I+Fs^U9N2&{ zq&n^pu_GSxI)7%~A0kaMF}9@HY!7tD!xZY2A2#Es`~7bc?>lCGt+VxlpLxNAV@kC5 zO&G5to8%+}dm;IvvTo9C#uM}@{|R@yaWxt9(3pb1?tR4XAv!P0b$8fVduuJLCEtTf zJ*TUS;a72zneN`v4q$56{7NEW9rrH$jK^~Y`4v1t?d+g??6Y)dAJZ0mSKympo_Bc0 z+ESjE&T31tSR3IsjTz|v7mW=U{QOVH`3E58B?t-J50JmcW|Ge*I!k1{OUwcIfHYMX zFx(SN_nlPazow5R_{4l*tiU(Jr(}gy=RZpQx_Y=-`WKwAPn_iZ$u-k|yi zNvGjc1pOGV@JFjG%!unt1I&0=O*A**>k@-mmEVUC3ayP9SVx3mFym3&-DsV10{KMk zAq)W`VSdQ^`)EB?s{2R*GYJ3Rw4N%_@6^Qc9r7vfQ-8D(_FeG1n##W_Gu0sY%mh{Y zwE>UvJoVd<*q^|N_rd=!LtMl?#_J4+eajf(9Q`BoBK4z2 z@8z7>7E}CPO1tqt(WUT1iid5gdHO#{Ugy^|Rema \ No newline at end of file diff --git a/template-bs-starter/static/fonts/vendor/inter/inter-v2-latin-500.woff b/template-bs-starter/static/fonts/vendor/inter/inter-v2-latin-500.woff new file mode 100644 index 0000000000000000000000000000000000000000..ab8c2c103c2bff0bdc390f48ea92a96fea19960a GIT binary patch literal 22404 zcmYhh19WA<(l&fz+qP}nwv&l%JDE&u+qTV#jfri0Vkckb-uwRRuXU>Tu4g}8yH|Iw z-rZHlT|rzN00j6JjUWKxziXr7xBVaFpY{J22~ja|007A58*};A9vB1|WC=wDm2YeZ z0Dw6H0GMD4Ez(&fRMdn40Ju>A03H(nAR)w=jCxg2VPFOTaK3o}wQn^DNPE*)Q58}J z0B||KZPI^w@v;nTY-{N7jp+gapu_+G)P|rl7lpZ@^EXEL^P2YdhFGyL|Vb#Wx4#AMcX|(Cgr2`dwG!+ZO=hpIU%N1$(T)4c0>o0RhB!?=p)r z#k6|aq_vV(NYTf{O;DMrOrNUI3pE^G&qxG;0IDa5qRAN;(5}JYa`v-#J^g})qoX6T zKI4P6SWLTdcp!4rE~*bO~|Db4aXw?u<+S{ruO zb!(M}-|0t2cSS9?Uu}9%6R-FAFQ30_)rD!AlV`n7{9EuppVsNGZCWzdvM=)=Wz8EK zm+4NH+}=9o)g0ZMJDy|Twi-7|Gjh7CzSN#dtXRG_y<#6QC*RJlm#1HIU8})9aw`n- z_N*$;s;JL;*rIa2MvASP@t;CtioOIy(;^HEj12d83Lqss3XlTR2Fc-X!W4j!6T${b ziKxaT<)M`mB3O&aK(NL{%^Kp8ZA>U2xW>fnB2-eGRP%_F%Vg0il(VrHiqKul6+pEA zL@YHGqGX>+b9Brn`oWq|4q#40iZf-@M;Y@rrcLP{G35@?nuAqpPGK)KgiqNRLUgVS z@WVUAiQpblQg97nO*;le>h3XXw2iaXI0t5K?6JFh^pgCz%@Ft%hG`T**21|LL7_w% zGMMC%pgt$%HAdn|mYbBM>9Pv|Id|IH|db^meYx3X7vq;w}9Gqlb>sc&cE>$xwVP+_34Xe44K0`0K zIF7b@I(thx(V#9gZkbEeBxJ@2T&%#N&K9Z0`Noz+mEb+rASJ$jYK zTXc^ER{a-+5WOtNZ5dZWK+^qq_aKK++opp3vjbtWkL^p7uOe zAD^BC!A<(FE=%1UT%1v=1k*pNQ|9N}EY-9+t*TKbghM84a?A_j<5MEtPFbGHEnP|> z_)dqKPtEwM>pFP$A996zXnb=g@41D)N5{a?AmeT>1Vv%Tif!{;{*?u!Q=|_@E^3aN4 zbucbnIa?|BnbxXD;RBD(?_%}S-$37E_spt^|D?jDrggrwtTZ#TozT~C>|eu_Wxbh) zwnuAyTFI{X*r(2v<;bk7*De%fpJc8Oo_^}N8qU!8H51-5V)+|QWbT-$>Q>FHQ2KgO zJ*OHOYv1JmMkuZ_{;4+Dr+Psr(-#MP^u%TnJVIM9$1|QxA_rJZI_ZT=V%|ck(xroBE_NZeZFPV56rpWgJ$WNd)ts$UFQ5q`oJ0`9L6z+Zp@mnIVxvR zq<^?Lw(m}iPWRKg@_*_dmkjKC%MpFs{IhM!6ztj-y^w{^@&Rvj964F`9ms_l6CF+Ln}`*oY`6e z^8K0OXaXP{Lld?CwaBdmrL>UmLRHFY$~7laPf0ie;AGrc1Hq?)#ss)vA>x|$5+#Ws zf}O7+@*N_p1ue|F=oOZdREN!X>5q8fJKvevySceD{2sYXC?t8QR9l zc3-8b+QZ?tM^o5xdzg2BnAaFNoNYBuR)9GtPv|OC0Hm3mny4 z?AtgjV2RwUiDIb17S}ez^T}c6Z~H`(P8TQ>Mf#RR7TCB8dM}J4j(xoPKe|}&a=D85k9I{ z#Qxf9`D5ypf$e1#J^uydi=QZePfPOPi56Qu%9nZQQ(Fn1NhxdN+#C{rq@WKIAS)9@ znWgnk#C93@UU>R@_T4rK`bXP)X*x))bH^(wL3PoAZ5p;MfGcg?`{5W^8R>foR!}#P|x0(Rt zJ$)uJQewiQ0u3pqKXp3xKz9QLCh`mLrR zI!jY^Y7*gC;IB$mFgw^(olbFF{(EP&2UYdb2iOC(591>GM%&^EEfZSe+d2Ms@bQDs zS&lOoGIqD5RXbhR`&L9l)U6J z+p1DUZM|tSFPvAJG83$zpJkfsDB`DHek7d>x6L3VEUl6Z48=mQJ-t6=l~_4t@#t}R z^eV~(n?pAHQA$e4ol3U9u_g>4(!}Fh$`RmFPbQOV ziB<*oaU|#Pvs~OLCKw8O)m+yul_Tr5TPCKh(43?I$E7}ML>?OC>VnxgRE0YrFFuv-Se*%(W_5@c`7k(~UW$cM{ z&bKe$x0%0l^({XfS`Uja{c2M`*4`ZT?4C)U0e*ugBk`iFR7HsfCu67s@@C57Y+MT! zcV!yK^JVmTT6z{17n*%rLG+D%)7&;*gmtRu+(@t z$Ct%1uf0^qk`;OrFI1k@Yo8b@K}L*K*i)g^W!X;dxk}&qkGsI!fIb4q#!|)wL%Om7>5-|NJ1E}kJ<~kyd(H@ zUp<0?MWt8&otme@L$`N}pH*y>FdmpxWs2RNzJ3pfvpx}%CD>2@FGYo+kQxZ+MUYIX ze1XS=-X7r-qzVYHAmd<_ZtcLD&7x49VCr;P2y{G7cQcsCUT5zEl(&O$;3Od5Y|}^9 zN%5sgu}+B?=weG2J*3vL62J0KobL@{c?Zepbq#TN+?o%Q`5HX??-o7ulZD;8 zY~4;VKF`Qb0RWFRmn4uRQW;cHdlU611KX#`+kbogAOG9%x7Z#p<(YfU2t0`{R)#&@ zCLtkCWZn;Vy*!5MC-gkqAIc=8-}lsV{CH!|$#OVH$0vl%@kf>9ZSVm7e6IHJ-20-{ zssKg!)O&0d@aXa=7l^pC9D^nszh&D&lHdiS0u4iqgO~Y9X(YLS25UkLvpOn7e+vK> zJlIz|V@|HtZH`@U?aqJHC_R(c%P!%zeG2j7M00#yDQ}oJvF~(ejpK9h&+{@cgLm@D zEwqa1Y5y@vF!^Nzs&ZY@n+WzP4<*!#C?(Ryn3!v&n7Eo4APDpFnPR zxtVq`3e^id=ef-BYL|tOveK3kZ$ak-UCX%SnjAIQZV(>+#>r+Cnbkjks5ets?uf5h zu+Lm7s!vk-_ux)6l)hw;%OD)u7OoJ{30lFEJ{M0sCl^!%Byoq*Njk@%T1JPwPkS37 zh?=}t^#Jwi>bgN6#eq$;>(85e9+?xgySnSxyt@OMrcIe(8Ni>U)L}VwdIocRG_}Y0 zcJsjXyNbs~JH;kC?RYDS5}_jkzO-NMFP|7(K1gyeblqdgqFN-xD9JVB1r-KjLT=*9 zC^bC^USK1Vx$B$z(pVwEwXkagW=3#poT=X*PDqm)pnL zV3+iP{DU?9gPV5!bxVltGB?TS)URRtVwp=NmCTu+W<|FdV`ep4cI+9OM`c|0b`@dKE$I(sQ`V6uo^NHoTRoNnE!%6` zwvIYV_G@b`_54lMw&uQ;-s^oyi>iE4hVU~T9jzhCdi!jNA=*{VYc+w~)s@36rG81ulRmI$}b<}iY)B3a~v1*^YSm<%@J}Fi8N~Yn9TsskQagAC^ z+-xcB?Zuo{FKbRzxjODA@1!MenXGryp|5ae+Fd#GQ242Csix-JykIMTidYgr2n~Gl zF>ApJ4J7GOPYH@Gr3eWcK}Z7ytrYN*J#`tPs-clUO^O^oNW;E7_N+QJF)BOR3&yp+-}!w5M2QHd~>t-Lc+k#1^UEJcnJ3 z8?i{My(lf??u}ll)l`wZw8ED8nXSi8maLXOe)@iYHZri7bM1%obb~p=6r1W1`9yhx zWbSotG%Fqc<23olytS8H^#wh8by5eNHdXQReTMcMJ8Go5^u2WL{hESy6SI6N29@-c zGT)*K-(u;jYOYFbx!5&00D^N6N!}p_i{3FBXJZ#gA#EQGhPJ*R8^`8G0g)FFh6Dlx zc>l3f{(mu&|3*q$%;+K91CRSgc3Md=wuW57^|Vtr(Oio4)HJr6U9$D`IX2{68aI_& zw=P{mH?`b1`CMu@H6VckM-ed+M8rqo#PWF;f`_Uig%k=;#S}|W$G@z#&xiW8NcBoGe7Fm&7yI#wHv=| zr$9KW=gr2rwb~kgdm+_7>U_@1k!USGRV~)swX`t2rrvojh*z!R+EcSI)u9o4F4kTB{b~GU zt*b-dMAo*NuzIO3Qfuj0+Thk!z_B2)EtqNwZkc0WljpIZxGdOg3Vod8UsE9PxI^-l z&HYn)kL4?`|0nex%~x*wPwPFNuY$mz*n5-@7lCC4_=j9`?%p~|Xd}wDIxSmkZmlDa zcb(pVUvUBi-fGR%Rtp~$HmeP$6DfLbtEQ>nMV;Y52po>vieV_;cM;3?xMCdJoqO4u zS)q-_R=e_#N~iNbuIWE2yUqW&q5t9XJzjRXeO6ehEtHx6qqf-m*RN^nf2ei;^&5)! z&+m7IR_C5nS}Y1iyH0>)6WjM5&^MKlh($b$)00ZI;-CiE)CAlE{ea>hLsjpM&E0}DM)DGoHnB7#MH2t)Gj2qDEBN)0&~`o zLKQG{dW&o4u4<2jq^Ap6963+Eq@`P?|3?g~NVG!xjm^w@bV`&v-B>5eU_ZvEFZB7W z#6H4b@oY?$WNIXCztY*cDS^ZLqKxq?!vuGHckL}g{eQ-~n}tXFD`7FfZ2tTiUSng{ zMw5t0v^?P4?QbVSIyKIcGjUC*Xp)yvhxMYJED?I-&P&FhkF}P^amu%rjvc}rAvLKS z4~AXlg?t%en;|opmV$ie!6bCo6qNUZiaC1yjN|&Q5V@f*X@E13J`9|prLh={KVF|T z-mW{|yfNPG^W&VRlCyALE7f{f_x#o~eK(`8nb$tue+l<=j{8fNtHa*id(v+@uJFYg zQoE)(XhUY1IVrno?ON~BSsm#_lyp_Tj;@gm^NvqH@W$uT#ne`P>D9NnX;vOWFQa(X zN|{B>fUneM>8>u>bmMo#MKh>5+U z=bScYUfwON-)4AQ+scxzmg3s+Tk&oR5~VQn+2uSRRD5=&v@p=c{oP^_u0vWwY)jFX zcD^ggO93Bc&m8An;)}F(G3O*p*4c8PqIdy?FQ~vJ#3JcooUGnPGRe+jZv02n3Dn0G z7dCF@s>#l5#17QQh)_qy9WIEH?D^^UBK_HcQ@$Z3pF)4M4=P(~?YpsVwY8_Y zgr=gu0yP)hXRG3d4ee-=Rm^&x>wVjd^tsqm)&9M58~ku{r=K)=!j0!u7GY^0HYo z=+^S0Q;3N1C5FWHnH2Z**>eu}N0|p|Ww8#Wjnu_!Et_l5Fi$PST6hF&B2_qH+WHj- z)O1DYOb5;__HkerR2LgbkQ^DQHzMbT;zoGZpS6X#xw5m+AcGq{6~3<4c*2dT)P~FJ z>gtCA_d)-atR){BM) z0RYX11wF%LhtCDp$Wb60n_n#CmwZkyVu=ctW1OmJrJs%;L!I9FfwN9DpNF5mx^yp@ zxVBW9C(Nb${>iGEar_X3KJC3!)N?!PxFZtY=pE3?Jk}0RlXgV%A3gKYIF~BtUmRib zp*e@qB`|Lvc_1PmU)4I1FGzc*cn_9oYz?~@5`L z?$>Eg!STS+fx9jUw708VwFav*s^vS5Qf?DWYs z#IC(rKteQk1~PGjHU~y3hZ{0IfRrUeHo4xA%MPGDdKWE_XV0>Jbs&utRGD_5ghoJV zYK;P#;u?Xtr<(TJXuNRKwC-z z?|#H)ys}s)u%`lQelU(iAZSB$%O2=ho88OIPIwkh>zq?L!Z^kV!32K%LxA~0NHC)! zUGT38SB3nZ_*!$S^ZUAWJ z_h~^UzSj%+_TIXca-(*W>_qc-l0>?)S=_o={v2wdE;Qgh3QYsk>W;+?Vmu_^1&c?r zQFUgtLZL2Qs&?p=;nQV?=K48mv*O39J58=q&hTkgU;4~SH4tbn8so9lv4g3b#~R&G zCz>E5;5+~G8zn?i%p4_})vYdwi*+q39?#|I&nv#2^K1|}S`_6;?M}XbUEnI-$ z0RU$kI~O1X0FcL;Ph_A|wjp9j?uYUEEByJ2>;75`-ckz=yw!ROSIs8=_j#pa`3=|s zJPSaw1FMZEFL{0)WPW~Kl?+&=%nBzBpjDrvlwua`tmIqnvDi*3;Y~_~R*$DvKTXyu zF0)Clq+Za<{-IG_xd_3|%FYfPA=<#Ta)DR1`7(r4)UW1J$)RQXvA9l<#{`~ds4Ai) zQZr=|**K(K*{f}>XI|Y>W0_-KMV7Lhf|IhJVk|&!Ee5&T>)`kEBBlEsS$W7`Sk`8j z*IScV$>s=`XJyPg$01ro*PMW(eM$uXF3fg;*kdQ0qX!g87BXKHNe;GtFuxG*KT&)n z1?cjkczN<<+@c8gu4K%H6DbC#u|f{t6B&UJ=BV8$6IA20e$^7D?DWZkG-PQiW1z*0 z(vVamGa4DK=^rVMfXcz!@Y;=IxX>3$?w-HEJn-RW@aR`zNI2UbghPDTf}vP!8S{>@#E~UQ!%dhqM`1e>Ht^FnFXIRipq!9%>=k@>F z6c-yy82kJuq!0})uV}s9ly3Z-U6_YkD>1T+ixSPn{<+ikoVK5jTR}0Xk%bw}8J_r( zqhf?wDvlr@sh)-Zv1+GJZIlO;doQG2E()_S?x7wPsiQ zdtFn|+QS+0)05&GjG_zcq>4p`r{u zpLb-M`Ae&Dhdbkp$MBcA^)Ga-BSGyQIKqt?@3>CaL}S;;Th}0j&t#?#^7WnN`=t2| zNA3uN50dW-#yHfgzR$qd4HVlRi`8)MLWDv&-j^api897Gk~YJzvH2L zv?fgM^`uuOmOi5m9zlmy2U6-o`&BU`nkd~`I0|(!a9zX09>H=q_?i18EkPW*(;;W@ z-4GRt_dm*V9Pjb+HmdOQt;)Ldam&BQuo5MobGxu5z^UL0_K?o4raMh$67PY#Eak*oacUt%@g*>ZAH2fxl_d%0 zL4y*bJ>pGpabDdnz-eBc!Na}nd)@e6N4~xQ2p((6x)8dk8YupEZuZxLN;{P3sPSfz zN|wXI7uYb+bDd?BVR@QLs-Qz51;60DAy5k~P_6%9%GC{~t^6qyO|{-%g{dWxl=Q?AYArE#MPg@W zWnyA?HqO>A-B$7}M)4mXt>@vtC-%w>D~A}9K=PY(F|X9=p1mdYof7Ei^#*8TK8@^$ z6KUe;5k;Mu9O_ko!fs~?n@Arvo1sxIZ>YGbj?i(JWH?7s(2F&gM>?@23;GV1+aml3 zaMdRJUBM~YDLj+p$>h@up1U$reQ`X4*jBq>as8NQr&UQd7rQLa*pG~nt;W&R!#c32 z7Lj@VMzq<&rQr^YhK<-{TKC`UD{M-2;@&1n=yt;Xm;jC@Lx^MpHL)g?f+&1Ch3 z;PLqu619%lX*F?}w$WgoqfXe7S&6Es4rf|tyE23~k6{OU$W^d{!52a7D!`W2LjdS0 z%k|>Sw?#;7iwVIk1C3=F;m;1hl(<8xANgHg8z5|7 z6z5)wF$i0~MpQsVve=5gg4W~qxIKj7>}22<`nqA;Km$A0G4I<0UNILJOJ#j( zUv$Hk4ph$zq)5OSYQz~@`UzaK!}5)yiHt3&c@h*^G@P9wFz$LFc*x&zs=-F#>z~t(}Tj@b#@_q5ynCIkn=z5HadI%b!d$H`UkH-(3b*W}H;u5=HXO zmSDa6Xa?(dRrjgus2267b#wexKlNxKvf>e3;+@(NVCiH|6KBDmg-silUR=YoZ{}I3 zLe=r3aQ&1-B}>kw>Zx?8T$<5;gl?_hK>e*Zne=&KxG2Nc378UdZnkk9+8j?=89w1qRpWo)^Cl@i7;_({^p4#1mC7D#P`d<04q5%uJ< z0W)U&RegAItN!Tm1r*g&ZQyDkplOc=MPpRm+7^H5E_p$i0pQ1Fo{ zb=tUJo&d!_$j0h#KHIYaoQGVY)cs$&{4lCD9MC@bIzP*ug6>fbh(tHF;mGaJq%o1mq(v@sT0bj5i$udCF<&9)-f0n$#JPt z%{J5E42qx%vb#{C)+(0NIuo?A>0mlCsaBKPQoNT&SV@e2C<0*nh_ z?Ou-|kXE*0)kMPUX?lZhhW(G!5L0-4K-GOZ4(IJSRm%z1O?bY%5&D+iHVss(`bCQAn3={ zW^Q(maAl1b-mT!j8h~O9XgVAY8^sE5Yh(1gmT9bqGJts=B}(Tr$nphz*wQ!4w{30> zXAVFNONbKp@j#eA+?sIxP35fYR4GtYCg88en-1@~y-iSIZ8M)$YQ($NO#6Fp%ch8q zWiu;qsL$GCFjE+n9yyog$)0Xl1~#nW%7;*_9CRA$;IB-3$t>({-06{7-@3usuzw5; z;1i$!{acl9#}tStBp%IWri+hBl4&P1EIlRrQN(RxaOi!ndkoyr4$zt=g~M z!(~gsaRaFGX$+py42y5sM9zNK)Hd~L;jz^ye`<^Pi`eaLWaUjIc5s?E_1ScKDjcs6 zyls-3|L8?u_Q$jyYlDifN~OYPayiY>%P76og7dJX9K_eqfCu^F2X$}-WIeHb$ZGrs zm{ zRV0d)k_hOQoAbY`c>2&L>+53a*Un2l(~=Anf=8$0sK>LPbZwWGa(hkl6J<=Dco}+_ zZn3`I?gIC14`gY_=?(hWmt$G3J~sC^Tz)dd3kLQb(cKN*fLVXu046eLg6i1yxJN6A ztM&VtQh5CbQoWb}&$Z?T)~J9VuWGOdf18cCAMx+IYbzn9duLHyL&B`9)qkB~zL_4| zIdEpY9EOz~{Ylxh+;F-73~)vW2}UoW<3vS%RlBP-G!X+6%??Z33{dwWW#E~HU#9cw zw3YGn8a{94x@Lj<@Q?neO@7<{r4Z)P8)F3Y{_b_Q&Vo|W0j+c3z|HUVzRLO=7GGY! z0eaou;9$a>v86~p%!j93KFq;-wBe=ftdc-2+Ilt%yJ>a)cfQY{9bxl-HVY|Ek&lF; z9_10F!1aWnbu3ma8t(2F8O;gq<8!hr`Ky189+R>9s9HW~y?wd)Wr+_DlSQd@KV3x| zUu(%4+fE|N8|<6b$;Kthc%_EZe>ajawAh)QpuGvajKjfTVV~6IU^@k=U0A{WVKp&! z`qX3dvOG0>l)-=6{EU~Y?yV2Y7SJDYT)T|N5iwpDeOOn5yyTHb*Z>jP?hgFBe=-sg z(P`ey64X`%k-038`TIa@DI=81$?X&W!#z;~5$K1%o`?Mu-OW;RC9wS}TknC>(@x2; z<;7ahLwzSn&|wA?r)1GVa=ENV)r%_SC=b3a;W}C)pKZylP^Xt8L({uK9I!nZYqejL zAA&8JGS!<^G`L#WowahK$_=Oq!dNGPy~^ z$8J&t!qn+!;nbQ6y|NJqeW6gtijRR8|7Fw9_8Fgl-ez8@%e+uEB)aeLMDapHZ&2Z2 zj`;N}f;j~r4w~D_8(zHI18Vkox;`tFVI{;_ZS}gbk-zH42N8_D$-0vk@1F4eYM~t6 z*_cwd*~ASsVGj-)j~+?nn_OV>PSwpta~&H$4dWNx|CPK>B>-S-?!E^ zOY-+(H$MdU=r3)asp5`i6`iUxrJLiu@)xDqLc52-jj)7#ZRV8^6>-pI0S#rS6*gzt z04&!D4Pys`;>A^aelua)`oC1_mE2%e!ZKE8O9id3VdyRiY)W62u<2ZjQJ6gQ?91pY zu=UIcwgjCl%Eb1GEMfs46^u}8oYMQTxJSm9ahIzhh>A@TQ>J9q)zt@jYMwIltMQdl z?9OgUrJ7exWt8A`8fN;Wp;KcDS$B`eG?}aRBbde`xP3L2SHG%0_V?0{hKrjOf9C;b zL`HJAg}7&8vXXXr9>-v`GW0O*r$%0q%V%J*5?0)pp2aDNm1oSk`6h`feapp5+zItvC`@$ zy{k(hEe`6&P`8fRi<)rtkbrm!xsoG>knQHwsYzqZck&SYSzZ6PZw1-HU>5lYh06@8 zc@g*G=#KY(aA<%Vf|fb2|kPFX?9`7N32l zZ6B^%E&=`}<9p+7veW`T3f~ZA?7OmBEsibyl{y&fbbu<(Y-hQXpD(J6bj1Scy}HgB2Fh}-y%#D%?oCuOZEjb8(hO1#Oi zG!h@$iZ`lnC^Snyf^!(RQIE!4RfyG;_Q=z>LJ=1&PjfY5)T?mX`Y7P?`F^ai1-0x9 zcQg{LxG!Ds9Mq}f>NG3iYDtOyuHa*?WuoL!*z5EVUw{|{h>7 z1$ot=jy!v$;!ih=d{)j!f+$q``>|?|>y~kZz(Ndx#vK8{mmv=*_p3{N9(e&|t4T46hbODE|X8=$`FObetW{%)JiW+Pq0fD5@U;FW;G zs3w1xp0?BsA^-gG@?t%7Ep@?Wcek!?0H&GYMQLt@?!wfLo@N_(!F)5V9tSw=C)ZQY z9)%k8)@p)+sXe!d>*imFR2E%tpsBzV=C@Gjg1SYYOPYHVlA1c2PWAvNk^9F}c=YMS zTm8$dR0xq?8y)_)-Hif~VdN1PJ-QopX-7C#B*QSCivEdn_X# zzYz>-SGkum)qG5JVyzNtOp89^xt>1fz}%JVkGsHK_U_V$i`ZI!<%x^DS0lf(;qCv0 zgg0A;X2}q}kQac4Z||(fE;%2L6ql)^tsJPliz(71nu*69ZiGBM1CE9 z?{BAnqXpBawyLwRA~dZ*Z#Mm9OC~w-1p9hzErh4k^P&0sV!IYH{8v+d?GvxtA&Y{a zI%HlFL`~KlYFdQQr)&s?=^7s^1b&~vC4RVG(Ql35$n}bTwIZu8+?&vfz`eMN7{WdA zsC5c5G8-qU@X0$yBIUgC5a-tA+}MD3C7l~SVDmnyD--7m7nkKHWv5Ervb1SowwQj~ zrKaEmv}%$oJz57UMF5?fslfKuOu{D1qt?}BD?Mf#w@zT`Z!y9}BR&=U(JF@fwd)0EFt369LmL(zn&?~u*=1%5IMf7p0l-4(Ho z4c3_DP%9N@!T&DSC#%9lY`3;~j}dgUW@vhQW#zoS?exkTg5-KSJ*0wY0hOq|h2KK* z$HlJJAE9<5Pib&3P4gES)^Hk`WgvO*9*5SQU&4!ee6({djgaPX|40(G94aN1reR%d zn7BA_By)*Jh99E9i;aHq(-IOg5=z>BO;ZAMB9f^d$-tkTY3 z!KVxKx=)QV;RLerYmtzoz`q#@J=0G$xY|r@-7b~1RNczrdw0q|s={j<@on2CDKu^L zg29Dug0mnr8OAUku4}Dlftm?Jtu4NBd7s6nwI#Cj%exr{+}JKkgoFIFkM8`U|;&Ycc3oM>kGi`76ZkTp^YQw6hyR^Cr4{ zWX~u@7D_vD#d*UK2iudtOi+a};PQ{rgLDgvEl=if3+Uv9UT;kn-^4U7nC0ziQMozt zo2>q|!083+s(7PP>-GJt3*eet@K`{F-=v5sTf4Gqd)FQsuVfp}ctjGu!Cu3`YsKW7Jy4$}~v zEmm{0pj~w&%SX78;=hdN6XgeiqWI&HyQx3{sg3oSAV9x3)=dK2Xdc{B#C#=MocBXb z(+SuwOky7B8th81j52Jhw>y~j-GV}|F*(e#a~&4UO;rzW^F>l6#H;U#k}igOKr6M+ zd_mL;lH1qPG{{8a(kjoZOcvNy^#urnpT!J(jOlyZkRNw;kRI#)Ky$MTWT=$@sVqMX z?IYCbKkhuPOi_)@a;bnU%U^I^rH#WET-Ccg;&>1AuY4>{xON`dhKe!v3$)MhpEx|y zx(JL{{Nb6Omc2-9+M3zPcG(0ejvtS>FZ&@^h=x~*0nnwgt_ys82deRVt^l&KPUgZ_ zR>|tw&!uGToV2sS^0onoy@yl4=P~ekB4Y7^kyzoMx{H5dawf1{xi>h9;Ig^DuZzou z3U7sv3I^|U=FV(oB$%*c(}C-c(b~Sa^}S$XG3o8{+wXkPX&LUMR$1XZ47DDUv8R~n zV)Q-iW_&c>$$<~343yYAGdkybbW(trM=xP2JiyAh;)*^}n@&PRya08TfyM4Iuokqe zCBLvt%pNEOmc_e@-p22vR^}3Q{5x<*HQ-w!dvgQnnCfXkW6`9VyKu}~N0z%gK~y#j zMPPHAvhF>h%PVZxNFvv(Tv2Pk&9(9|;5;OBfK=;U^Nee}lH($XZ|5`fZtofMTP5)A zC`DLC_dY)XH@~FmtEflxB@f1@ME>C>=LktQ zv@CX0Yh{(nXSg?S;gb)25WhlF>)!4yC=lz)E*yuvyjkb$(K^0G6^Rxr@l}_CeliEf zO+$x0uS{|?9U@iT7 z#T(SyqE!?1qaiO+#AGh7x9O8_-Wb6*tMlZeCA=)>yyzj37E%!Ahyhm}Za0OUO=DeZ z*r}MkwWSbMJBtVG2t+>X9%I@^c=Hmg_nXb{~3qrsgd9}KiNsQ>scWXqKCbrVcI)4iy? zMtovVjP|XokV3~Vx?riv?UR8!1caPIUjHM7ud@6Elnk5?k<6d0GHN1QID8sx-twTx zraPtq&W8#Iuf+Dp9Y*Xe2i_3qaFk7hN@Ukj?Kdjat6)wKG2=4VomH&fP8Bk52ivE! z7jve*^LH`tIU8GKt_@~fn$Uq746D#B=YCn6FP^!RpecN$baUO~ZFd(0%R-TKSd|;% zMR10zH|f5?Towm!L68l@{q5R%0JRJ}$FD@@e$Yo% zNX_K>;LYRl`>CkVHX=)sjlrh|<|>=>gvG0POA$hPqQ+SAPUKTfDnMzd}f);KY?-XP`B+_H)Hlu@XjV6+5adT8lQg5cH;p z-Nq!lG)`9pj9NSYtyB56OYMU&FuwX(5k8$z?tHlX4ndRP|F_yY^w#MT??v86{f9hh z1I9LiRFXUjn`1AU6wjn+%_~=;F5p2c{!QQIh^_8X55@u98i-fWuq|TPd!;$l`G_~D z#rsik9iqG(VWpXmrN$m^b8^dedu+>Q3zq!em0#2Mh0HqvL5>E0X=}ZRFOXg$rq^6S zStYmbP9mnxd1fw06zx5wgCOJZupZ*=sb2q1Y(%(@s;Ui&{cVM0Bh9u+fl}fpAF1HR zs@N{Jz{BnveLtHmuD3*^TKx5XR09(9;_z(!@G6^qe6*>3bff+@tECuaS|jS2K^@g@ zC20}Bc~F0pVC~1gaZp29_0^M?midC%xB3*zMcM_X;8reg@m3= z_RG#9tmE&47s7nywHcwb30%->L2R0IvTmSU7@}bdaWKicb-Y&)3C}&GO99BBZ3MBX z8?jR`K&wPD->rgv5Yx7oCZX9!xvffKFYe;%Ga||8H;Q-X2za*CJGdne&8tv&#As9R zL}jDTPdKt%631l#8r36D&oax>*JP5t30x=PgIG^$edstlchGEe>ub=^7VM*+DpEB| zH`)9iiy?u4Ar;{*ZOcz(;{CGh72QR!8=shCkbO=o;;iF)Z_XZwCR}&(k058kI{!D< zDq-;rO#x1XEb-FnxQ9{ov_BzUd<#}QMBae51LAveYvTERl^d1m7s6woxRxD!dXtB8 z4AwpSMJh6Cs!K~XT0H_Qm99D$+M$Js! zEwX~yHM+{Cngv%WrI--bIpa}uOHrCguJwTSsBi_wZW0&JY5_+@i3>7T#4-R5Mi2xU z^LKU)mp@G`%*cKvq1W@C7Z6MHUDa6UL-b$8UOXT|} zJf=%axIG~;YbF;kO(CG=(H^Ogig&TV*7~U?%gN-Z`uWWNX}3jE zrY_6LW$5CkE1=&>R7mwe-NrM`&`_x}*W~MN4AS4(NjkZBs#v*PrbZ=h%|ul6tT1W` zGMC{;^c`goI)EiE4wFQr^pw&;d;yO?57UHVAyr_)i*E$ac-^7-o-Rl)=b}I>C7viGKL&t#Ypjr@*EL(j&ZTHuRe32NdpFG zU%_T*1)JFicEO5WR`wjDO_yH{r`xpQa&8q;6hp%7dIM{9)w_eW@= znr#>lGg$g~7^S|YhEd~LI?Nc)HmHRZ*!A0~)2C1U2D@0W{*DFnj10vJBdG`W@ERek z2NB6qxFcP{RhK1cj5FNsJoXH=%H9t5nhZx9{!1+gVAq(32`Kk5AI zF0qH5e)|BA3J6Y;&57I{Vs33k3GVbbxSKn>Qa(|ZsHJ3XCDQLVfzj5C7aPo&#(Z~d z=-S}mwV|=A)gYQ>|DLgxeb_`lFJ*J_#1vpBw1nBEw_y(0?Eu)p?y{8IJD|m_88Gt} z`*p{5_Uo-=yaij4Yz5E@ssqO#PPP zHg-1i+RvHnTjrewe`HmWEVh&mSG1t_weP917O#fS7HuSrnmwCPvR8}}gH#Rqdjo%) z&;0dNg{G!nn=|KHYU=elbFQcMiSOAnzE5xYTa3crHP0UQito)~{O%=>GoeTvs4ORz z@;NIQUa@fI8BbnZS=&1~sV!wpe?aNR_ZN6d6kLY-ghao5`t4Wu8d$w=Xx_bKdi)T- z&Xc_w*=}35>#OH4#Vzo&e{jEE>LrK2KFNmlnCaOe9?oqE?bf-6%Yc?!d(GXmblonw z=H&`U#8}jU??0>cog|igAhaZEy=22Xe7RF@W!(pud_Aj-XsDH!xdpwtHa5&XI!} z{bVs9ZdKHfMNyVwuf5T0N=BzV-)H4R%K_t8j~u*sw58O0=a|%sQ_`Pk z8h7&V-{gXIt1>vxCnXeUF^ug>o?jIe(%bh0ZR97a$C00(wD8drxW*q_i|F zIYwmOOBFQ2(lK$%R;5gw7_)dv#E8Yhb2{hx{PYWxR*lQrl=_=c9=1L13;zhO!BK}p z2lo#R9yo4mNbrWJxCLfL<{KuC-5y3LiNe06p$-1L?{BFv^T2qHqCIn?S(4z$V&R#1 zw^(S;UTdEloxKZ&G|kTE-X%_sf7X zRyJYYya@^E^BX}ss1HWq%x+<=e8aANee%RtCypOJeoD4^C?PoO?ZNlSt9_GT#NI=r zUxk2uWrwSZWvW<0gzG512|vGaua;=f2Vsq4X2AZypvnFLiFaR|I`yzyYRq|BKNq6D zi0wYmFT`u}>2ERz&Y3rCgV71(I6_x0yg`oW5yk)Ikyi6BO@?QX92%ZHFFratY-WtV z?=)IQ6VJ??aUv!)COvcN52pUBBRz-uecsDEcj)Kcy@z>*uk`g^5)eAGfsyH=QDG~G z%OldC5U~mNoO{FrJz}Z%h@0#Yf2!OZ!E)&}wotrv@(8_H#XggcpM394EA$qLNB!?% z>z04hAJukN+gTb;U<_I}pLIGxcpy&miJX%%IFo8l+RD<}%jpMM^VBZ8p^l)MXpnHC zNnJwsEEqcF*19i$H~XW(n1Qp?j2sI_#^ps#_>Z!^XP=xOz_@Aiskutk6e^3)VuchOmw*w7Z4D+A3kD(TP)< z*+d`#sAm=Wv>EE@QT=wjdu{Hj>qykJ?tZ_zZWOm&@Y9T(#F(iGUnfmF6+bm*+Nz|h z^Lvi!oD$|4-934zA>a~%989upf27J;t zyv@K*dxygB0o^_Q{5-n{$UYB74c~D~Vy)!cj}{bDZjJl&Z`W{jt+`^nWa2EHHVWIb zzza=T_yA2AJ!npdxb?<#8x*6`bao z0SQ2wD$e=20SQLr9dGr*faK_g3qMj%sstlKDmg-8gdd?bBF2d9L1drqsBj!^BT^5M zeTeK}t~5@Vj7WV%P9V}55yBA@0}?1;-ct?JTSFwWHAKuxWI+5y9PPZ-V*?V8H1|02q?!hiS1Mn=R5hZv+!5zPK3QQTbZtutS(m<5Wews<@haxbR~YIWy25lcwG6 zHnNL*RL{H96QxGDSGr>0P3_$2759d%1YfyrXKYLKZ2?zq_PpZCW5JvfZ0s5JS?3Ww z?oOK|H9F4rt{8M%J8Ndu9j`3*757Un`o&c57ok}8i%^VyA$q@XBvvREu5+3{49Ey! zzwm}5j|_;vP>g;ddcSZa9%=4zKi=0<*nr8+i0BNc?=jR3_7?F3p z)r)Ek2{AgSl6R3_3eJQOCm^JlpmvIvgczPj|HJdgiot|O6(PnQRi^y;Ya-JZEEz%!n=NNIoaM`B@yVV1~Ic9w}Q|)tL-~Au-l{UU#xAfD4GPVZ^cd z3yUHmkESm;7V!wYqel-LGIrGPD$^0i5f6_zn!fO8Y_H4f2#cu>(sKUW3nEL{=@t8#c$s_pRi6X?oHq)Tv#xgZ4j z(k0=t;W^l;={Upgl3I@j8*bzo1E-Csj% zw>AOD>t|(qagmBtk4 zn=?hq7rGh^$5GbwAJ%~GwRI0lM{SFU*fwh9mhkW`BfX-dy@sMu@`Kh!gl`PTzlgO# zTVPzDehCTv`ozhmH`1=9H;GCfzm6{Q`oT)F$Fl0-?&J&u&zc6L!qdCb*tr0s<5fNl zCQMwAySrQO-tMy6V5Pfl)I#Yf+f@Nz&CdnI@K$;l1>`j#M^L{0;;ad_!NOdTgPgTSTbQ^B?)3!UjHX4%c(ik$0uWPXEM*d*%)D zF{!pO$od0z1jOx{Ny5@Y+TE(N+TDkQrJ6~HXwZjlG{{6)Dl9G3?xsP7nn^Mmpv^OI zGH>%AIhpjS<@EZ*zvCo=RZZUv?+fzY83{ZBlo$clwH^Fm_NQ1d?x%Tw7>H`1rlz;} z{BLo=WuUhINk)VD)iPeM_>+tV=QOX~fz&Vg&oTfG5Td%Is!vq%iVBdw63oO?+PuR; zChxc8P-~BhJF*QA>fWk;Kyv&8Gq9F@YNj|t0}g8@Y9&LxT=+d&=#JyeCUS zaQyD1N@zm}Nzo%FksN7Ti`eLC+Wn2@69W>7d}2A$UPcJW2>M~Ctc?-X2e+|8*r^Gr z84k*wa^DRDNYBGY&!fZNxOOxkoGV8<)#x$_k)?>Z)FS8|8F8&fYFfF~B1j`6?i{K8 zKblCygjeYY=+z?p?L?YUd;~3NlD0kpvR~m#LsS#^xt^KfTu*7XzenQWf^L04;R`hM z+~Hoa;a6s}N`mw!g_WYOID!cJ`PWHdjj-~EA7tAPRb3M`#+^`y=1BMuWv)nchK8!<_%8GFU*_w( z%-?UB?`8=6yhjiO_V_&LU%n5%(ExbbV_;-pU|?nzs{T{W7|(C>l|h=D0R(QjFL4Lc z{ukeVfAFV9CW{BeWn*9hQ2?+jhIEZJQ@k+g-fR`E(8QHXa*` zk?UJHOlmTmvH4=Wg>f5ajN7l~%Skx%1 zpJr|9w=~E2Z(*+Fm^Rk5p!#uaFAOo_(ZLqX*k@StH8&xhQ38dGKFIFGz+{;nUB87H zK|RYkWkwGR+P!2e>SqX7WRbg=8;_mpT1+O?SN+Jcw{{P5z(R)7XG}YUJ@ysYDTlpf z0(yK4^Ei63|DDztA{}<>7tm8)!WrRM$JksMXFh9PQ~!=`3ARAY5e}r%wkQ>}REmdX>wehg zqzm8xpdVI}eeSDeF-T2{G-?N=Q)^&}s6|R)5J^K)F`rVMj1gipMra9Gqy=M}?H+bo z>Ll(>Ot@hQnJcqmiOhkyMsdaCE%8JWACl;;GLDl!QzLz_OLu+sLQjW!`dTcpFv?+| z>4r=40GjAJ=ICCm@xTn_IvR@(XfG#WxJ-@VT3a*}lhIaeMPbw3qpQwpP@`C?|C>Po07(B+dV5YsR30eF-XXsMM{?CMp(f;lJ`0RS+&C_XM56rbR? zO1}!VN-*`EZN)vaF#lE=Uq}}JPFv?6mj&klKyzS$?vAz2IlE#g=Q-pxX0bzP004N} zO~C^Y9TY)x)a@x9z{>3SJNLDjfpaeneZ;O zuuIrGKFL?bH{5r__lC1M!lmZ2bA`Fu+(2$Aw~sr;J>)a+dH521WxgKYitoz*6tW6! zgdW0H;j_qyniv)nip9j4;z99@cvE~Tew1iQlafgprD{?Wse`mqx**+=f$YjDh zxxYMGo-SWefRb71uIx}AsH$qKdDRkX6}5rdL!GA{P+zE@HAahSMYWmQJw3bLRbQe% zHPRT(j6TLjlQR>Wjm)j)DSrn45dVvS9!L}D7B~=i8q|YsFhj6ga8IaWs8*>n^GOb4^W0zR;N}!6U7HW*zpsuJN8jdEQnP?GOjkch@=omVWZlH(g75a=-9L6be zaoiNQ!`<-!JQ7dBv+)wV7H`A*@p*h7zjrD-jh)WUOlO00&3Wwna+AA7|69-P?oM#G zxM$oa9_1zQig+!(aoz#%6ER3ql8$621xQI!iL@qNNMACHj3+b5Lb8f%BK!WnMjn$l z+Ws^5N<>bR6s=(!VLyzzu(Rsee-~Bo@t_?xkFq7;|7MP88_0)i*XY( zyc#!ui)mqnH{(`@8b*wJS!!4??x(ZCZ#+PELsBem=oMFu`xNuUE(wy9NE0GJkSq=s zm_tW&CyP(-F>$h@wD?MQg0PeaMYBy#Z;*uS8R;=`Rx2sB!K_w*5Q?NF24Fu^R6$fE0Fzu12nvCdB=<}Ug&qI_HUcCAiZ}!y1%xOEAPff^ z9;3ClVPUA92&s}Qd)s3+A_nIH6%q66qmY!3z9jqqzbB|Mh7YX+LAABHM5Yo!7|bYD zmb$w;Ypyc2R3dw%27^Qkv~}FA@su-e*P39M)5{equg0gJ_JTIs#8+z~(m9$XJW_25 zJaiP85EtGfw%N?xc9%czGZ8jzJKXNLA+9!V;J$eAgg-J#Kg@rb@WZ|qC4A-# zY#aHLoO#$-~>d&H} ze;h;a-v3EcAcY$nO>ErQ7_&A+kj=7sRx2Gmg82Oy8HpppATmds5rl{oS=Ryq15SCc z7Vln?Z1&%EYO3oz5`nP{&Y%oJWBtGVDeo;yoZy@m%*wMoY0k^6Jj?SOThBsSy()!L zIh9lAm#I=H)h}eGj*6T$;K&d-A}+sa+CQAjT;C-lP{0boG2A6jD9qHi5yqxG$ip`N z`MCGreSb>V%*W?xRit^nlnH(eHg4kq4M>1n6TKig%guo+p5n;ddcTSw78xZIzf%+& z+lK)N$*L(8|G+s0FR6_k)em*`&R9z)jTV2nZ4Czql3u{x>vsR|QUi9}g-b$15;eDk z_ZZI|${|eFri8B@8}o0vtewx_|1`qfGurUrGCUt|!I_J#EgT{ax#%u+apwP-ulX9y zB54RC39+zpK(Om4Ee;?jNwYzO=m!oVZMYP~asjyH7;|@BDtgzuoy)zeZp*vMO?{yX zsl1}=Lgab+y*8UeEe`tz6&ded{-@pD?pjfK^iR(^G{bm=!`Pr$xr)N`-{1R=-`TV1 zH+n!^&#y^5;1wyP9Ye8*M!-77+a6~buA97&!-#rL2tisy(k}?g7<}J`n*T+tv_%V^ zA62MlsN%Ssw!?LP86{{T~?wkOBaJaYhIclOR%3#F8b_kqmL=mf%ULOg>UT(FrcH{EN*h&V(DQs2ZV`K7u3cMi6*a zA1K}TR&J;ong&B3tz8MyPwTP|-BYHE{%oUK&FKuzkY6w4-*Obmz|7VEMc2(GYy;=( z{Ila3b9K<0XLQq=Yin$&P(pw*W_0wOXBm@12 z(I7(&H^KyyOg7Cdv&}Wnd<*>{#Y+E^YL(U2SZBQr_Q;YWSDqrpN|Y(L&wdA0IpnD0 zPCDg`v(BketI-9QTyfPk*WGZ_Ew|lq*FFDgcHcvfz4Au8opB*SJ%J=C(qt&pKqD>D zAsx{%J@HGv%3rN?8-gU$a`4=I z764)Y{J$7R2F#*eEbZcG$DtjUb|-i-9j+Iq^+EC0DwLUD?~anRnKU4V(V=)s}C*`%(UJFP07wdLSv9F_u&EoH_U6b@cWg zA)=TPe>q9805oY|xNV6LTUf#22?&XZImY)?(?u9o#TjH79;l)m97B~u;{t91xWgkL zjw6kWP~}i~6DxLcteY%C!>9_>kT>s&Ty2N(5UXLp;Ry(dh$kIq6Nb_YXV6uIZX!!` zgbiDE>^X4c#N}s?0Uk6E|Ii@-LttaZED|Yar&n$T%}O`rXpwrET$QeTy46|3<-Y_% z5CE!NtLCsHImXOm@dB=2gRIRQuzs;&)BnEO^38WYUhv72BhRX9VeVskO-o?F5*?Ur zu6gFSVq70R<(S`x>mSwa@!W-b{?%OCXXtc@&;v=)%xGLlXg@?3&`J!j+#9)KTnrJ$ z2Z^5m6hY{56kUek6gSI#A=M3S2`Qj~*A9!xi3Exu)op6Js$Kp?Fhnr(q#9k5m#h40Jnvx^JoN^m|?`hhde1 z!T*o9nrW>;>&HHi=f$$aU%h^{?H~w zI#zIa0zx9Y!*BX zplU9q3zgRQ`T#4vyd|aHOqc;xFwZ~hQ6wdr#h{ygFDY%>IId_ai>AUFk$yLVb!I(k z$0Vml7xaBH3+Q7ENXjhVKwIX%B%1}E_zbkCwC`$$4|~kEbU=Hvolz># z9^}Y+Ud|+hS}B+)4Dyb7Fl-ENTxw_72JJxVi<)d`>1aa~AHLWk^9J?3jZ0~W?+DVeh>YDluUU(*R)#2T)JXsp31C&&#zA=f*EKU_U2Zd*yY%@=ZiSVdko@p0X zxB(*gZ$On*vi8@xhWg)V#!mu?m5~HYs$LF2)uZ( z(CHWBe{}PG2Xm9w>=qlwETdQl5%r`=Hqv%{`S7$bX-9k(02W5{ke0x_?=8%_XRcMR zE0S`Zfmz@BqKCnWvA|ZWAWKI|2lOSf2mhRqs2ON{SKjLcbHB$bnxl1U8t@jp1C_kH zP+ID=jLQif=pIp6?Omqfh7xmGMm1=cclSm78)8@fx7yc{-24T%)S1^y=QUPubK;DH zo&hdlH}R-QIjDnLrt8&i!qzh;y=dm9Ia-D#lmIh#6T12|9(Roem8F+=gxAA&> z0dG;LOUF?ruCxpZdP3bs&{cPR3KTd}euHm22rhQOfV61BVse(rw~?Bgp_>60N>1Ke44R{~9?+ zTPK-F)XwT@$2o~}T7JJcnW^T*N6S#WdRttN!pv0RPuEFUvY2j`M15}huLG8YM3l-R zw190%h*NNoD0BbR`yMz$&DF`{6-3*5A;daxne796h+K{+`{o+!`Ii0m@Nf?RIB@-Yi$@enh6kq}A6)M&H`0)lv0dNAFFe&89a%BHJzFc zG#xY-!AdA?@c&1t3C0bP0xTtw8fbw;i!3!yij@{wWwm4*ZMMu-TdlI)c4>CnX|*g_ z*2tA-ts+I%D^_BIG8NJtRBfvxPTJ|Tv$E8vm8-!81unVb|E{^N*iHA9df<_Ro_ea< zbI%?2$}2~__1&y?#i$8cWG;s~zOF=A46aAK_S{A&@rbVZVls9Ud4M=y$pdNjk4+^! zc_FNtH^fxf18<$FNl>&4AHEzmsv*cX!*t9cW<~u35-?Y_u$jZOP=o?nGg8gy^M?s1 z)0G8^S&0(ON=OWti`rR7006ksiQvQ^02nxN1x)V1X4){&2?3A=7DOw!1LVM#xd8y$ z1{}eRbLNr{0MZnY`G#3bG@!?`q-F^lL1QJ66HHITxR*2iBD~%ArRR1-Qc{Q3%S|G+TtW3H{RTgmM$a{COp&g>uSU1CjiKRS?96yNaYA1 z5i92$1hdi84oJ{;@5rjKhxT0q2*a z&op8%F964^wU2b$uu4+N|9Ly0%kRzU~Aa)&1ItmL=QG_R%Xf5HW0vJoe`{&=v@{V1b#)}za3NOQxL^c zh8_aM0imQRxQB2{LiNr)k^*W==xll|mMjgEJ#qLva9NpEIop#o9tu9=q4Kdk>C{aL z5(}LNY|nE0MTAj6XJR|nb8P<&L2XbQ*`CcYUxnB$s0-Pi?Xlg$%zmhS*`Dm!FM>oG zR3%H}V#-^|58mDt8KFL6qc7*?00KB*$YbAu_eK_(#J49%r&DbiIH_#RojYg-*^!ht zgR6?iwvkcka0bcr5S$SvOhE4zb zYRfm@{qVMXiG$iXKUA;LSko=E+&Wuj*{i}aH7>j3kvG1DkEA4vJn94|B0VHZm1&GA=9=zK^DMPWleJ#< zmMuQ>ofbl!)mwFsilm!2D(0{iNs_9nssI3ph)By-g!v_lX=oV=ejh2{_35rvRMn)f zx%9O^c^A;GGGDx9xNwIA!qKQjEFuXM0RR9rE_brayu{J9z!*bl99{O(XXGv-h%xf0 z6P$?jK#({xgBv$Lc?uFum8V?2b_4F1lbGK#9H4{-Iz$5k0}TNxEO_Db>E!n*h(`vB zprZ-hu#=-hJD2>m2hzZJViagGVaE$y_?^H2MlzW>EM+ZCS{&D0ndB^me56&R08vup zsnDc{m?U{CM6pU!fhuLFQ$w2eLRIW!Py1W%SR>|aICA67PX6kD_H(!son_6{ZgH=%~p{dFszce=w6X-|#q$ax|lx=z)eAZGx$0 znb(Qwe|F?iCVn!eX!L2C?y)bo&bD<~)dsF%;}=_DtxdMu%ew6Mg$>xqP2QX>-P$$R z+VReH$<0;Nr`kpqC{?9iiw?cish=y=vjGineAAlO(pI;rogL`-&Gychb2!DRFYxpi zeZUbXoN>VwH{9i%?(_Y;f9L&9v{zZh85K!4Z&V}$3PwfJ)f*MbfPzsmhpj|JB-zXt zjEaJpnHfovs;a600Emc4GO2ozQBh=OW=4{vs;Vjg03sriZ0ZX}MZwI>j3h}_RaF20 zL_{Q+Mu{S$qR7n5j3h}_RaF20L_{R%(}>9!6$LXhGm<1#RaF515D}3?x%30IlKks3jK~kvIS|JU>C> zZ@}6%U9hFOsG&3hkmfc`=*1?iKp5LEdg~dQRQ0auCAJPDBuyCbV?qp1QgG?YB$ybx z6E9w0*@#$kprDQr{*jUv@3hlSg)h#AA_TXN4#J{IFu$800jWn`vGplBdt88khslN~ ze|oVmK%-NnNw;11SfpH)V-c5tT2x=wutg1J4L+6zO9O1s40%e+xQ2*Dr=&g9fErK( zXgGb*uyjofED<D(ii)z4$_)~?Ab@y=l%LKX z+}V6UezfnDR~sqFv+gm`=!q&eu5~cBt3T0-dSOg02Vb{Tk01&`) zx2$S*Gt~ID1zrYM)n|_>h8_VGL)&-}%H#=o8^>Tp*T_h1?1e+9_ZrQpi?JCV_@e9M zLO#Y)1e8cu(usVVj)qn7{MaImkpL&5((#0mpP|J=NTJHfWf$@{TnLCMRPm^Gq5y-3 zkP?O13$ol}0wbztaOEO&Ryt6S(FAYqR8wcV3k4fT5KthW9G!tq6k_BcBqly-I(j$K z8mWjV5ud4#J6sST6eDc_+g6z@3&jU0^0$Ew7ay$76+_%t$2Nv-To`GS6bookbeeb6-NPU+-eut;6|IPhBJ99!$LU21Haua20#T%fzHQeLuT6z z*ud=|%t_TWUHJiD=GzcJAMPAUmE{qI0O1i>d}jC%G!hd67-9fzxB@OdqG}m-wb{nS z$b=JVngWQ3Q^XHH!(X->m@~TZp6PBajw9u&ca3+Jzz=w$kV=(K@X87NfERd0yzRQ( z8~{||wlo=K%Mk#)Ie(^^76&I|2mopZBUxWG4m8k6hFxq1@l0#T5CD8QUqQhq)d}>g zHs5#-hT;)#0Q*2L6(7RwSVrukZJmo9uIdeEaE|nzcJylJTwiC~61cOiy4&q`*lCx{ zK=!vb)~VMpnjyQW%4L;DBRp@0bWKFMB~mM`wb52P7?C;Vz}G7zD28TGYO{zsRVIFr z_oA51>=!#!Cl)GElmcx0@cxuxlg&X1#!#8_JM%3~J|O_270pb5t93s2A*Q+mut@>q z0D!*?cmbvX002q9+(=*|AGI&udrtw$ZP^RxW&j9@0g#g-$-h?tTL1vCbN{ipi0#0< z-%(tI2nfIfIDits1G^Ru0hBlrVAsNz*#LTSJO_Tlq-ZxF12UJI+{wLXOg=83l+Wug z>393X{)+y3{Z0GZ%je5W2a3T}gDpdwQTvR5oIkys2uM<9!v9)=mAE}K-amO z!=|Mx`L?v&TIK$-BowSs_M-kUUw6hqxvK0@?Ff_8PFZgYVn#yBQb)Erk&Qb#&5bwp z4{?@hMj1V=I)BQM;hL-AEKHPWvEqm&s5IVa%fW^iW}NW~Cc-Ifjy|v!*d)tlwc%-< zrIPLThion3;+DHkXp-kQ(aM2HllyB>OqA2-$4&ms$tGTIp2@Wa&@X}TF^ znrgnq=200NPLwKEqJk6v(arz>kO`0j-ZW^AoDU|2#uauT7j}x>M;Au@>%BXnT znA-KaIFpZq`N~bBDnEPp3zL#wb>WU=V5+OrEz8`QEEHy`GAjtyY+$k_l%4JDIg#MZ zokAYe;Cb4^ix1s=8Rn-nDqb{Y`MVq4ofU8b!WjS zF*t&7#bZghk~voj#FwhP! zQ76~2ub{<%<3o!!PW;glJYfTq)A-KdI*U1{hN$z*)oNg+(M9%MVz(}zpdA6OkZW>{ zN7uP`gQA`(*=JJLHnWRkItTKo;?i~F1l(i@%q1F!D>1L3eP(q@KiPL$83CU6(Q8Y1!KT*+~ zSTkiLmzcA8CSB{`2<@nTFyy)8&T*h6qqVH|rR#|1c>+{vxEu$gIk)S5a0lUnOkGgcc+eQ%8~8p1Z7&pcMLUP#4_v3xW)#Q zvW#@=oXq;QQ#+g4-OMTCqhrK&a&PBdof!tad;eW@+EUVh;D5Ts3apo)-6R?tAR4wt+8qG*hVoGi2J`e;4ue#+>EM>{+qpww0TX=EN9rP9j zNuNjbGqQCTx&q<$>Gc-2GwNC|T@_Y0@Wt{MB4!nU&3oiJ>=%pTK73)Z_3-&oWEjF| zSUVlG3vYNuE^Ut~?ZBX?Jj=M5qGK4JnV!~CB;G%1+?{wsX)D=#V>ZYNQ3VvQUnvi} zl-%%J%gy{rWxs{}M^mWm;{%NEXT-s%3sHvu5Jc=a!EBKMu!~D5WAa_3Q;sq6r zacjP!x;;&zKL_dr~3U#Dgtgz3Vcsj<&+2S@|DYiISHV^hzyNmw8eFhu`j*Bo= zS_g;I!;fR5vknLQL`O;uo756GXgcE_vr?}n&RNG!*i-3RqmRSFPjR}`tT-P@?%n+2 z2?7>p5*Z{#dF9SGM!MXdLin>>V1u7%K&pbJvkI-GaO@;sVFzj}5mUQQ(+9&1r3HYz zL+0ag=IZZf zIC&C=f#;-DNzXhAta9r;DNVKcxiU#)8_Z58921{c@2UgC4~=Qc1i(!Z;Vz9zuqJ4^ z53U)m)hG>+mcmN-JQK79hKaPJNx4)RtS5KaNjT$u*{+EGRr8Pa35MIPU%;w5tVNXU zVH*FW=6RCOm_hJZA#&mAR`nBJu~=G?71)I}6e6Vf9MuW%ChDuVB^3FTc-$f z@Sy&-RK_9wI85rtn3~6Gx1-v)kRf&(JRz}PC36y9WRmm@p(kmn(}TqAXM3&&VG5ie zYK#-x`3Q8Rn~;oXs0s|dZ)T3yjW)EBJOYg1F=tx9)1sx@*s!ZNamoGM_4}TxY|D$6 zoE)<~ITSw0PAnY;dqi@=h}*!i)S;P#&r&YTVyo?)WVRA@eRpa!B(q;Iu7!^h?jE1T)gcDA)_7I%`(t$2G0 zZTnHph3n1ybKN>v(#uAsT{8WYOI?yANf3!Y#VynQC92Us`O1D{s@S)AVW-Fs;(5*( zW%&2Oj?LPJIh3|(Sq;Lm9rJ+TlH}FErAnPEwT%*Cx^4cJ73fkbYfgwu$&xNG;RnN) z`Yhb1ec93Vg6Rd58@iq%^DPpm07{i-r) zeQ;9$$`&bn4RB zl8-v$2Z&MoE>+@qKo&yu{~jDQ^@~JR?}YE>-wpOA-4J{eu$N+rFh!ilSONf`?pGc< z|2#s8{~bT902*JGluC*>>N0638(B0N$q@ekk}{q)pQ!kLsO-yQ^!&5aeOU}f%NYIe zrS&FOr$=B}P{wfIR3{{bFb&0m7`4S=Cvkzp(!)IO?>~9oGJ}JRlX}IWfi>a`1CXsL z`TeX)DX0hA{QJvI2glX>&A%~i^3;`)N`RzVK%;;E;Qw!GEiB(%ncO-qO!$BsI*#95 zuk+YHupA64fCk=Dc5-$b+QOcRVPcqR5Iml&=o?U$$Lz&12c(91Uf+MTc*_lsb$vfl z@V&=lyYoMf4!)(7%xmAJTmL=(Yy0&`-j=9)*@aGJ#`0+8mRvQhQE@4MQuF~0{j@)6 zpvHoq%LUK?i-({G0;P-fGBOo&1LA2-YXiET?y1LYeFF=K4lVJRr{}gDZuEAZZd<+X zT_$%=Q02N*+SL&N^@WFp?e>tk`@Es7PM-*9>;!>&i5-g<{=dXrlmLN-oeOF&>j;MK)3vC-qC z)z8O?Vq;^l0%$C)8Vxk;n>*FG&-mn*E!0x&EX#YG%k>_e3#rcq)K@T5uhYIK9h^#@ zGkv++EkX;aArTRAZoU||HK?ANYg9Bo@nsKIxMt4NyN$!8^vwAlpWWlMUN)+X@=7jzji*9e1o?8RdzM}&zDYj66MpAy1M>7%34 zE6&>|=3FJlR|WeqIVW8r71yo4S}P;(51$rvsJMR9ynOO6vK<6#wy;5>fL#WtFM4`7 z2w;Ie2*fz4`Je_?|oY84;Z1vhH5gSvVcw+^v|j*9e2 zx*gOP%&90XukFuO#mib8DqQIQ{x3~H0#`G39+ z9P!BQwqDp0U2*_Ex-AA`wN=(#UhO}PsN9S1Q<%Jvv*CGWGDh=O_}p?$0)3)CjGI24 z60#UKSReV|Y)rP-G3^kByo0=s+Tnp2ey01vXS$by-D=Gj_R$-)*}+}ifwvDuY&$B_ zC*^iPUog9(th{C*N0p%LA3~@5|F{=f)yPy>CMK%{^1r+(qw3jx^n(Yi02*39#G4su z1OBBm8nc~@A3r(*)#hi4hG;=)Jh@f)=ULhuF38FsEuns`uk&3WD?E}tlIOPyI8b?R zdATp-?T108#id7sVwv44jsw^^Ii7{TT2IcP zm|$!VYr$*V-vFR0%F^a<_^0@0D1NkCx3dyG7)gy_0%{%T-KI^V=pBu_{UEHzm(gf< zxc6z>$N>pnaN?kM@q~JBxBJ(xoivS^>C!>}z_dZ>A3Ff0I5+v*FjjZ05Jqc?tz2p~_11COaXCdaXvaW%-Iu_4|nidBt53Lr5gTAZ|hq&|M!3bIX z(h6vH|7X!;CFN^XiQJm3E-Id?c6Vi!q?xLOJW6M*&4k{s{ku!*7baK5Riba~n-TCh zs)CCafR5DsAqUOlC4LY>EQclm;+9$m#lh50(R4d@xgVN4{((!)106Bm?=))vi|$Fi zTXICv6-iW<^bXv|maepEa7X*bm9}F|_vMpk z`0So&UQyMOkLij#QaPC7;~36}ltmie*S>nMy`c8Wwzz>GO7~#}1l|lZ{gls}9aB&5 zS?%rV`%t`J>a6JhA`hVJ_#esQ=~dL@&}t8239bCn^gus<5;f1yv5K5OG+tjh-(Ls< zcfg1VYYuD6v$Q~<%v;xssC-D%=LK%-I9<{K;t^N8(ga-o-(7<6(EU{O{&8?!{-K`?V&9B7x#0tg<)Vfd> zwPD<=Knw`q^7O>&Nxgbv$K}3z+&p-y!{z>i6V|Ay22=>L)i^QGKys&F-07Y(YcuVh zITyRVT!lrMEpvk3d;GPh7Jp?8CHdYh$|1cOEIFDrkV$!7e1!D4KMRC*f)?JV*XMbN z*0x=NMUDP3ouvF}joB{7j~|_r@{-HxA~Ir678&X6t@mAZ2sa&u)uIx{S$b6 z8-C>OHu3=f?c+<2?<4o!Jcb`${yO_na`QuV=D(?<&rck^@v#=tAv|Dl3{2kvprH?_ zdZG6gyZ^eu;_}$FC~n!1L$fcFUe$qTMYZ{Ow?*xm?UT`}KYeCrT?eWoj{N8rcIH$~ zk4QZR43`zJTNls#Ms*qs_(tW9Iz%PUkiu$$LRpO$eM$y?55)Bo7!^Tua#6iUSa82% zL_U(H#osaWOSgD#QMs=157a>4!fNww(JRW!0&oVp=eF6^!ST|c2A&CvF=@LhKZu?} z;Yyz%VnLu{2cQA^Wr}lq%ZC35wC=;^-07)Gm|(L`r=~@mor_Ke+N?#T{2oC)G!qkI zX(}{*-YsrcbGTav&cpdJ1M?9u0>uIZn*QK^V&i>kY+@5F>%BPPXJ--s z8~Wy*2o^);fw;lM7ceMOeBf9)jf4)!VlT~Ba3qB4G$;Q+J2ZB0?J7PsyR)Qc3mTw( z`cIXnP@Ke6Mbr{xLB}-GvGVTkjA?R69WWuB-8M~2N}i=fv_Uv9gX?C=Xyi2W1i`l) z7(l0#o^WS{H@SP40v#AW2xXS7SUq~KN{9bSbsSR4nQEh|k!@$nHnn#xPOh=Wn{Z=^hjdQ_a(k|`?jA1ATzZ?@*z_VL z<#JL**|T(N{eeVpYOglMx4PXYI__cM&~zxWW&3#_(e&O7m47OaSv!M3b2lIgN2Qns zOOYVObAbp1Wh8u4AfWVpeQ+T6Mu_0bB#>eS^?iJC!c!7XLAL}DNsvHH+ds}ZLNyqt z(+rZGeMniy>^R@^BtLxt{ziyHYtd)wT?$PqsZ(J??f zhnU>9k?4`n&&;w1Fkj0*a{%qk`3wh=-0oj2D0kPIp1fl%D#vYa7NI?J8EFKEL*MtGDB5L6-!}%wOQnNoU<1;BOM_4Ae*I_N4)#5dw0HMCaCChzxKCw# zbgxlu^^2xm`@%OaW;FAW`I`4fGq-sNr9=n!8^`je@m~rpnRNM8U*-9ss`pG#gb-`n zpa$3Jqj1a?&x080=Euz2EA^-jFVwj7@`SqQ&?=|muS9m{>W{ok0l}<--!Tt%c564; zEj_tv@I^xyX_?&=YJa^EYMsX#-BV+mB8jsQ2T9g<>vG_d6dKl~(BQbCxpS2Puyd6x zuGyR*nfvKvfhA9|Z*TU?kLgB}lj(*p-|x-pYxA;Ryw5VM%`$rNF+MrH?^EtEc>R8_ zvWJ=!vE6MQLfw8chE6sq3H2P*+|e^ErEqc>yS00Y?irAmVJwUsipZQCz;3P$HY~3I zW|V+EPF34VHtalR6IKb04r2SoPl}7}$?O&H1?1#_ZS85mPU9uA2niIV7!&{nLtrQ^ z-X|tsNJzMloRV2!hDPRc$#^cOjL6~O$sDc#{|-Z69L~>xa2$pZ$03m7;z7&@ zMFM~isg3koFfw307b}c~6*pvm)YIAU*x(*An{H$5sfQy3Bq0+1AP1tJ&V|K<^ms+k z>`X~IIJe*^L?(Djl0O~!V9hrh6^*2*!|aeK1dCUZAV21c(%`cMn( z(#RC=2ztdnmAsGy6E>k~^U?BZfIS*jFJkrCdXC{9c$er{BO_GCLrr@#GfVq}YNbJP zJ|jM-`g~wiyi+ap@#9pr&dwsZP}}OXBRdv5MO#}$C!q)~Bu&f+Jln9Z3R+HJ(2Xrc zpOYGHiDvVQQ9BdDskJ^nH8iSEtw&PBs}sbj{9&`oTd$LfTF{My=S5>PV=28&UA;XG zmSCwpO-((mZRv4(o2q(S1GI4&=`rmp$qyeUD?@90ipry2DY?B(>3wC7QkC1GB}Ms^ zDW`z*4po!qrFSuRFr~)N2bU|C-Q*t9MZEa-wn@uaw)#Kgua`z$nh1gkt5ik5OzBvAD{?w4Aa0+c} zwL_%oBJXliq@SswtA(c_N5{=UU52M@)sk7#Io4Zz{8Ps&U{^IplyV zn}&u>%XcGKb?=st=*F{`M{aC(G9x)OT4EAVcEL?F_o;Sgqx#HLqq=tYQ(NHz05oI( z4ItV}O2s5sX1Ryq^t}%mTG8pw7qV`1LLCAk%&U+Lge$%viD4xv;bP_7$E>Zqv>9C1 zg~%xX)GC|ZdNdOe+~6N*Yen_9oXWl)%yI}|n^p4#B3xXKCIvf4qHL@Q?V;JZSKe`J zTR!Dwy+>ER6+7rju;0VIoFBByfr+r=!-vPZ?Fn5Vvv%MaAU_7rFnX6>Tiw<9IY%$Y;>@{aX&f7bkYVSfJQf2GbQ z=~+1}kMj)}p*h$kl6TdUQw{V_!l~|5|5UPtbq+p?+0CS-xLcU9@LuEu52Y0ZEw=m& zDK%vl&pPH!%}QYjWAa2w3W90z<=2VeIX8*A()^3=eI9jhHgRqXiU08^5|l*J7RXW6 zd;u?!wh2UHKzf9icNUvrz}i24cejbu&#mqDYMhwL$RI%t#X7yOzS55 zUZ9psrlrWafx*HR$46ewixzzS5Nnr=tTP>$oz7ie%nC%EoPgX>vp`*AF9Y|(QFPl7 zBb>LEa;f173K~{rR8Z3E`FQT*Z^;FN1u&CNUtZ$aCs7N+3);7WP79v~Y`pC0IFE#~ zXC_X84~%|iCE>m^o>_W4ODvBifhtONHjeb<;x%(-EE)bzOEvfz@YurbSwcmeGkBIv80Up2v9h5cLCf*;(wSCcAg-64!+ z=Mom=;1V39ysbC9>s-S9j87R);ME1p14`*d86P#=6y=5)Wp~&>-3_k&*wL3P|hQ zwC3k+Vd+b;1gq;=v9$1`NPhxbfdHcPrjnC2F+n1j=qxRba{3#f2~SsSuLj;l2X6UJrU ztcUZrj19YIbf)|QHQG5&nM@eh!(}mLIsYWd!QChhZiIbx#eX0w$7Q6)h0e49)K@#P zm5^D^H6T3uZ$PH8@)fE7-voz@lUwH+mYTZ8$j+P$$Z`H3IZn!PqIFpS1Nl~Q&2deM zl`=G0&VNh6un&a>2s6fGnVV zQ~(O2E)y!rzucxwgR*2GSUj#c+F(hbB!0&V?LTebxBm0{y9XYaavLv(?>|V~$=p4p9$pp?$<2G9r#b_;*_MKV^Yyo&~1;2B$xP#M(4m>iKeID&=7a6FZolMNF zJN4VpCX&Ndv@bCr+JRe9vr-mNG;){mrbAM5bE)sTb$;5S?zFBCBNFV@4;M{7u+CW0 zb^>lg6xq>0f9KT!H&JM(0=Idgt-Vdm!Ahh5_XR$$;3bLL(>hLPIkap1&Ot+*y0FDrYR5@=hwn&FN;KW~Mx z51h}IPO6vSD!6Q ztsOD%yg-OG7aF!M3*ImHW~b-npJZx~o5r!kYm1qsR6Ig_OKm=@2W>|x-CL<+FJ<7C ze}FbVG_B{-+4U|x=id5|LK-~XCr??mbecEPl+wWIFiXM56Lb0WzE}?U(45cbf+49g zOv6kV$>3*myObYLpW-y;15=s5SvS}iPiB3@GcRnmLzJ1wePNuv&tL3#y*3$?pCj>w z&u`bC0lSq5xn|0_^j3Zj*HQ0M@aUOdTyzfS8(i<&WvoBL8`y!%lBo^cyKNg&Yqg1H zY~YtfnaMmS<7|DAiQ{$dDueQCBtzlr?*~_RyNp>IUJEfUz*O0+8*Lj?L-i5Qj2LT& zF<@rygR#9|lHx|Pi3a5-GF0+8D#O9-*$z&ejRDCzy;G4HcB!@saqBa{V5@JNjixJ{ z&^IOhvzNo>F=J!qm)hZC!=$Y6D+D~etnXi-z1F?{b);j{tD#elJRks9+1zu+Ob}hf z^dGUpBmm&f4{rx``hS+Z{?_s|MY2}Acw~h?Rm7u_tq%! zn*YGQ+t$(gvXh;=-?8#x@6gGkmCYRiT^rO|^DC@d)=Et@jE!;IgItK`Y8lf))ux(9 zHh&-XY%$n;=j#B*ytC|(FnKo4psS)>0(x#p` zKHvIL*JD=AQ(D_jzd1%7m2Xx%kUm`hOG46!nlxtBfzibLy=AV?5Ypxlb>$*?`CO=? zk*oH2dT#~UD@fj)nYXr8k$cQ_ z5XBiYjXk_~2V2~yZrx^3k2xxBb7-rx4ln)Km{4u6Mm?I#fjL0%mVx#uC__lk0J@Tl zzKo}`C&FeV9q5?07a3CW+1h8Yz*4IyXEm>nT&f9Ns%BkVtAtTDQNmB`HhX~L0DAxm zNUK61u71<(A9ZBvmsR_3fw8IU6qV`}?4fMDtv#K~%w7U0UAB0wiH*JSidlV_KcVMe#Hq%SbDml@j$3@&BE+rZQ&Fs4};8)s&_V64}~HIYH>!q7stedmQboJ=Y@ zh4L(*;B~JHbKg6q&^5;JJEPg9=+#=BUAz?RoxSxKLEKo&sb3?wmQ9q_0Tz^}81@2G zVmut^TL1u(%aqM9LF?4q1Q=}{{g@i;a?jmbs1nKkVV55WBVTXdE|P};aFf`-Iyj#0 zt4jo%>HrxCXiqkinoabTdd38V0IBUb)Gz~(0j7Z1%P3$h?JeMFRHgF%0s*Z@1w!_5 zD6kZqzyfQMOng@d(#+;a07_<72&^Gy1Szm&=qV%JM;o$X^b<=41N%t&12b=$gRCa zSRY~IJ8Z!SOENZT^G!E~!62G3r;3M5GC&^#;=)$#3yfH3Zd1%MlYA?u#e7?)HD3U2 z2D%P~MWUI>v%oy#%Eo3VHczkso9?&}Y*O!N{lrU%lQ?68DlND=AS=u$ literal 0 HcmV?d00001 diff --git a/template-bs-starter/static/images/hyas-schema-image.png b/template-bs-starter/static/images/hyas-schema-image.png new file mode 100644 index 0000000000000000000000000000000000000000..021fa462fa07fcca66fbe419ec9181ecdb43fdd3 GIT binary patch literal 8215 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 literal 0 HcmV?d00001 diff --git a/template-bs-starter/static/images/hyas-schema-logo.svg b/template-bs-starter/static/images/hyas-schema-logo.svg new file mode 100644 index 0000000..bdd0d45 --- /dev/null +++ b/template-bs-starter/static/images/hyas-schema-logo.svg @@ -0,0 +1 @@ + \ No newline at end of file diff --git a/template-bs-starter/static/images/hyas-screenshot.png b/template-bs-starter/static/images/hyas-screenshot.png new file mode 100644 index 0000000000000000000000000000000000000000..89c99a37aa8dda65a5e50ad38ddef2575fdd5a3a GIT binary patch literal 58631 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, Hugo, en Doks" + alertText = "Introductie van het Doks-kinderthema, verschillende DX + UX-updates en meer! Bekijk Doks v0.2" diff --git a/template-doks-recommended/config/_default/markup.toml b/template-doks-recommended/config/_default/markup.toml new file mode 100644 index 0000000..2880e30 --- /dev/null +++ b/template-doks-recommended/config/_default/markup.toml @@ -0,0 +1,29 @@ +defaultMarkdownHandler = "goldmark" + +[goldmark] + [goldmark.extensions] + linkify = false + [goldmark.parser] + autoHeadingID = true + autoHeadingIDType = "github" + [goldmark.parser.attribute] + block = true + title = true + [goldmark.renderer] + unsafe = true + +[highlight] + codeFences = false + guessSyntax = false + hl_Lines = "" + lineNoStart = 1 + lineNos = false + lineNumbersInTable = true + noClasses = false + style = "dracula" + tabWidth = 4 + +[tableOfContents] + endLevel = 3 + ordered = false + startLevel = 2 diff --git a/template-doks-recommended/config/_default/menus.toml b/template-doks-recommended/config/_default/menus.toml new file mode 100644 index 0000000..5c9e400 --- /dev/null +++ b/template-doks-recommended/config/_default/menus.toml @@ -0,0 +1,14 @@ +[[main]] + name = "GitHub" + url = "https://github.com/h-enk/hyas" + weight = 10 + +[[social]] + name = "LinkedIn" + url = "https://www.linkedin.com/in/henkverlinde/" + weight = 20 + +[[social]] + name = "Twitter" + url = "https://twitter.com/henkverlinde" + weight = 30 diff --git a/template-doks-recommended/config/_default/menus/menus.en.toml b/template-doks-recommended/config/_default/menus/menus.en.toml new file mode 100644 index 0000000..5e24b86 --- /dev/null +++ b/template-doks-recommended/config/_default/menus/menus.en.toml @@ -0,0 +1,83 @@ +[[docs]] + name = "Prologue" + weight = 10 + identifier = "prologue" + url = "/docs/prologue/" + +[[docs]] + name = "Help" + weight = 60 + identifier = "help" + url = "/docs/help/" + +# [[docs]] +# name = "Lorem" +# weight = 70 +# identifier = "lorem" +# url = "/docs/lorem/" + +[[guide]] + name = "Lorem" + weight = 10 + identifier = "lorem" + url = "/guide/lorem/" + +[[tutorial]] + name = "Lorem" + weight = 10 + identifier = "lorem" + url = "/tutorial/lorem/" + +[[main]] + name = "Docs" + url = "/docs/prologue/introduction/" +# url = "/docs/1.0/prologue/introduction/" + weight = 10 + +# [[main]] +# name = "Tutorial" +# url = "/tutorial/lorem/ipsum/" +# weight = 15 + +[[main]] + name = "Blog" + url = "/blog/" + weight = 20 + +[[main]] + name = "Get Started" + weight = 30 + identifier = "get-started" + url = "/docs/prologue/introduction/" + +[[main]] + name = "Quick Start" + weight = 40 + identifier = "quick-start" + url = "/docs/prologue/quick-start/" + parent = "get-started" + +[[main]] + name = "Tutorial" + weight = 50 + identifier = "tutorial" + url = "https://getdoks.org/tutorial/introduction/" + parent = "get-started" + +[[social]] + name = "GitHub" + pre = "" + url = "https://github.com/h-enk/doks" + post = "v0.1.0" + weight = 10 + +[[social]] + name = "Twitter" + pre = "" + url = "https://twitter.com/getdoks" + weight = 20 + +# [[footer]] +# name = "Privacy" +# url = "/privacy-policy/" +# weight = 10 diff --git a/template-doks-recommended/config/_default/menus/menus.nl.toml b/template-doks-recommended/config/_default/menus/menus.nl.toml new file mode 100644 index 0000000..e530352 --- /dev/null +++ b/template-doks-recommended/config/_default/menus/menus.nl.toml @@ -0,0 +1,39 @@ +[[docs]] + name = "Prologue" + weight = 10 + identifier = "prologue" + url = "/docs/prologue/" + +[[docs]] + name = "Help" + weight = 60 + identifier = "help" + url = "/docs/help/" + +[[main]] + name = "Docs" + url = "/docs/prologue/introduction/" + weight = 10 + +# [[main]] +# name = "Blog" +# url = "/blog/" +# weight = 20 + +[[social]] + name = "GitHub" + pre = "" + url = "https://github.com/h-enk/doks" + post = "v0.1.0" + weight = 10 + +[[social]] + name = "Twitter" + pre = "" + url = "https://twitter.com/getdoks" + weight = 20 + +# [[footer]] +# name = "Privacy" +# url = "/privacy-policy/" +# weight = 10 diff --git a/template-doks-recommended/config/_default/module.toml b/template-doks-recommended/config/_default/module.toml new file mode 100644 index 0000000..6acabf8 --- /dev/null +++ b/template-doks-recommended/config/_default/module.toml @@ -0,0 +1,83 @@ +[[mounts]] + source = "node_modules/@hyas/core/assets" + target = "assets" + +[[mounts]] + source = "node_modules/@hyas/core/layouts" + target = "layouts" + +[[mounts]] + source = "node_modules/@hyas/seo/layouts" + target = "layouts" + +[[mounts]] + source = "node_modules/@hyas/images/layouts" + target = "layouts" + +[[mounts]] + source = "node_modules/@hyas/themes-doks/archetypes" + target = "archetypes" + +[[mounts]] + source = "node_modules/@hyas/themes-doks/assets" + target = "assets" + +[[mounts]] + source = "node_modules/@hyas/themes-doks/content" + target = "content" + +[[mounts]] + source = "node_modules/@hyas/themes-doks/data" + target = "data" + +[[mounts]] + source = "node_modules/@hyas/themes-doks/i18n" + target = "i18n" + +[[mounts]] + source = "node_modules/@hyas/themes-doks/layouts" + target = "layouts" + +[[mounts]] + source = "node_modules/@hyas/themes-doks/static" + target = "static" + +[[mounts]] + source = "node_modules/flexsearch" + target = "assets/js/vendor/flexsearch" + +[[mounts]] + source = "node_modules/katex" + target = "assets/js/vendor/katex" + +[[mounts]] + source = "node_modules/mermaid" + target = "assets/js/vendor/mermaid" + +[[mounts]] + source = "archetypes" + target = "archetypes" + +[[mounts]] + source = "assets" + target = "assets" + +[[mounts]] + source = "content" + target = "content" + +[[mounts]] + source = "data" + target = "data" + +[[mounts]] + source = "i18n" + target = "i18n" + +[[mounts]] + source = "layouts" + target = "layouts" + +[[mounts]] + source = "static" + target = "static" diff --git a/template-doks-recommended/config/_default/params.toml b/template-doks-recommended/config/_default/params.toml new file mode 100644 index 0000000..642089d --- /dev/null +++ b/template-doks-recommended/config/_default/params.toml @@ -0,0 +1,96 @@ +# Meta Data for SEO + +## Homepage +title = "Hyas" +titleSeparator = "-" +titleAddition = "Build websites faster" +description = "Hyas is a Hugo starter helping you build modern websites that are secure, fast, and SEO-ready — by default." + +## Open Graph +images = ["hyas.png"] +ogLocale = "en_US" +titleHome = "Hyas Hugo Starter" + +## Twitter Cards +twitterSite = "@gethyas" +twitterCreator = "@henkverlinde" + +## JSON-LD +# schemaType = "Person" +schemaType = "Organization" +schemaName = "Hyas" +schemaAuthor = "Henk Verlinde" +schemaAuthorTwitter = "https://twitter.com/henkverlinde" +schemaAuthorLinkedIn = "https://www.linkedin.com/in/henkverlinde/" +schemaAuthorGitHub = "https://github.com/h-enk" +schemaLocale = "en-US" +schemaLogo = "logo-hyas.png" +schemaLogoWidth = 512 +schemaLogoHeight = 512 +schemaImage = "hyas.png" +schemaImageWidth = 1280 +schemaImageHeight = 640 +schemaTwitter = "https://twitter.com/gethyas" +schemaLinkedIn = "" +schemaGitHub = "https://github.com/h-enk/hyas" + +# lazyimg +[lazyimg] + resizer = "auto" + renderer = "lqip-webp" + + # Resizer options: + lqipSize = "120x Gaussian" + maxSize = "1920x" + responsiveSizes = [ "320x", "640x", "768x", "1024x", "1366x", "1600x", "1920x" ] + resizeOptions = "Lanczos q95" + + # Renderer options: + class = "img-fluid" + # alt = "" + noscript = true + + errorHandler = "warning" + +# Feed +copyRight = "Copyright (c) 2020-2021 Henk Verlinde" + +## Documentation +# docsVersion = "0.3" + +# Edit Page +# repoHost [Github | Gitea | GitLab | Bitbucket | BitbucketServer ] is used for building the edit link based on git hoster +repoHost = "GitHub" +#repoHost = "Gitea" +docsRepo = "https://github.com/h-enk/doks" +docsRepoBranch = "master" +docsRepoSubPath = "" +editPage = false +lastMod = false + +[sections] + sectionNav = ["docs", "guides"] + +[options] + lazySizes = true + clipBoard = true + instantPage = true + flexSearch = true + searchSectionsShow = [] + searchSectionsIndex = [] + darkMode = true + bootStrapJs = true + breadCrumb = false + highLight = true + kaTex = false + multilingualMode = false + docsVersioning = false + fullWidth = false + navbarSticky = true + toTopButton = false + scrollSpy = false # experimental; needs Bootstrap >= 5.2.0-beta1 + +[menu] + [menu.section] + auto = true + collapsibleSidebar = true diff --git a/template-doks-recommended/config/babel.config.js b/template-doks-recommended/config/babel.config.js new file mode 100644 index 0000000..e34c0a7 --- /dev/null +++ b/template-doks-recommended/config/babel.config.js @@ -0,0 +1,17 @@ +module.exports = { + presets: [ + [ + '@babel/preset-env', + { + targets: { + browsers: [ + // Best practice: https://github.com/babel/babel/issues/7789 + '>=1%', + 'not ie 11', + 'not op_mini all', + ], + }, + }, + ], + ], +}; diff --git a/template-doks-recommended/config/next/config.toml b/template-doks-recommended/config/next/config.toml new file mode 100644 index 0000000..9fad6c9 --- /dev/null +++ b/template-doks-recommended/config/next/config.toml @@ -0,0 +1 @@ +# Overrides for next environment diff --git a/template-doks-recommended/config/postcss.config.js b/template-doks-recommended/config/postcss.config.js new file mode 100644 index 0000000..d8464a0 --- /dev/null +++ b/template-doks-recommended/config/postcss.config.js @@ -0,0 +1,52 @@ +const autoprefixer = require('autoprefixer'); +const purgecss = require('@fullhuman/postcss-purgecss'); +const whitelister = require('purgecss-whitelister'); + +module.exports = { + plugins: [ + autoprefixer(), + purgecss({ + content: [ + // './node_modules/@hyas/core/layouts/**/*.html', + './node_modules/@hyas/themes-doks/layouts/**/*.html', + // './layouts/**/*.html', + './node_modules/@hyas/themes-doks/content/**/*.html', + './content/**/*.md', + ], + safelist: [ + 'lazyloaded', + 'table', + 'thead', + 'tbody', + 'tr', + 'th', + 'td', + 'h1', + 'h2', + 'h3', + 'h4', + 'h5', + 'alert-link', + 'container-xxl', + 'container-fluid', + 'offcanvas-backdrop', + 'img-fluid', + 'lazyload', + 'blur-up', + 'figcaption', + ...whitelister([ + // './node_modules/@hyas/core/assets/scss/app.scss', + './node_modules/@hyas/themes-doks/assets/scss/components/_alerts.scss', + './node_modules/@hyas/themes-doks/assets/scss/components/_buttons.scss', + './node_modules/@hyas/themes-doks/assets/scss/components/_code.scss', + // './node_modules/@hyas/themes-doks/assets/scss/components/_diagrams.scss', + './node_modules/@hyas/themes-doks/assets/scss/components/_syntax.scss', + './node_modules/@hyas/themes-doks/assets/scss/components/_search.scss', + './node_modules/@hyas/themes-doks/assets/scss/common/_dark.scss', + './node_modules/bootstrap/scss/_dropdown.scss', + // './node_modules/katex/dist/katex.css', + ]), + ], + }), + ], +} diff --git a/template-doks-recommended/config/production/config.toml b/template-doks-recommended/config/production/config.toml new file mode 100644 index 0000000..ff90f22 --- /dev/null +++ b/template-doks-recommended/config/production/config.toml @@ -0,0 +1 @@ +# Overrides for production environment diff --git a/template-doks-recommended/netlify.toml b/template-doks-recommended/netlify.toml new file mode 100644 index 0000000..1132be5 --- /dev/null +++ b/template-doks-recommended/netlify.toml @@ -0,0 +1,60 @@ +[build] + publish = "public" + functions = "functions" + +[build.environment] + NODE_VERSION = "16.17.0" + NPM_VERSION = "8.15.0" + +[context.production] + command = "npm run build" + +[context.deploy-preview] + command = "npm run build -- -b $DEPLOY_PRIME_URL" + +[context.branch-deploy] + command = "npm run build -- -b $DEPLOY_PRIME_URL" + +[context.next] + command = "npm run build" + +[context.next.environment] + HUGO_ENV = "next" + +[[plugins]] + package = "netlify-plugin-submit-sitemap" + + [plugins.inputs] + baseUrl = "https://hyas.netlify.app/" + sitemapPath = "/sitemap.xml" + ignorePeriod = 0 + providers = [ + "google", + "yandex" + ] + +[dev] + framework = "#custom" + command = "npm run start" + targetPort = 1313 + port = 8888 + publish = "public" + autoLaunch = false + +# Redirects and rewrites — https://docs.netlify.com/routing/redirects/#syntax-for-the-netlify-configuration-file + +# Custom headers — https://docs.netlify.com/routing/headers/#syntax-for-the-netlify-configuration-file +[[headers]] + for = "/*" + [headers.values] + Strict-Transport-Security = "max-age=31536000; includeSubDomains; preload" + X-Content-Type-Options = "nosniff" + X-XSS-Protection = "1; mode=block" + Content-Security-Policy = "default-src 'self'; manifest-src 'self'; connect-src 'self'; font-src 'self'; img-src 'self' data:; script-src 'self' 'nonce-dXNlcj0iaGVsbG8iLGRvbWFpbj0iaGVua3ZlcmxpbmRlLmNvbSIsZG9jdW1lbnQud3JpdGUodXNlcisiQCIrZG9tYWluKTs=' 'sha256-aWZ3y/RxbBYKHXH0z8+8ljrHG1mSBvyzSfxSMjBSaXk='; style-src 'self'" + X-Frame-Options = "SAMEORIGIN" + Referrer-Policy = "strict-origin" + Feature-Policy = "geolocation 'self'" + Cache-Control= ''' + public, + max-age=31536000''' + Access-Control-Allow-Origin = "*" diff --git a/template-doks-recommended/package.json b/template-doks-recommended/package.json new file mode 100644 index 0000000..f1b4854 --- /dev/null +++ b/template-doks-recommended/package.json @@ -0,0 +1,39 @@ +{ + "name": "hyas-doks-recommended", + "version": "0.0.0", + "license": "MIT", + "engines": { + "node": ">=16.17.0", + "npm": ">=8.15.0" + }, + "browserslist": [ + "defaults" + ], + "scripts": { + "predev": "npm run clean:build", + "dev": "exec-bin node_modules/.bin/hugo/hugo server --gc --bind=0.0.0.0 --disableFastRender --baseURL=http://localhost", + "create": "exec-bin node_modules/.bin/hugo/hugo new", + "check": "npm run check:scripts && npm run check:styles && npm run check:markdown", + "check:scripts": "eslint config", + "check:styles": "stylelint \"assets/scss/**/*.{css,sass,scss}\"", + "check:markdown": "markdownlint-cli2 \"*.md\" \"content/**/*.md\"", + "fix:markdown": "markdownlint-cli2-fix \"*.md\" \"content/**/*.md\"", + "test": "npm run check", + "prebuild": "npm run clean:build", + "build": "exec-bin node_modules/.bin/hugo/hugo --gc --minify", + "preview": "http-server --gzip --brotli --ext=html --cors", + "clean": "npm run clean:build && npm run clean:install", + "clean:build": "shx rm -rf public resources .hugo_build.lock", + "clean:install": "shx rm -rf package-lock.json yarn.lock pnpm-lock.yaml node_modules", + "preinfo": "npm version", + "info": "npm list", + "postinfo": "exec-bin node_modules/.bin/hugo/hugo version", + "postinstall": "shx mkdir node_modules/.bin/hugo && shx cp node_modules/hyas-module/node_modules/.bin/hugo/* node_modules/.bin/hugo" + }, + "devDependencies": { + "@hyas/images": "^0.3.2", + "@hyas/seo": "^0.1.2", + "@hyas/themes-doks": "^0.1.2", + "hyas": "^2.0.0" + } +} diff --git a/template-doks/.editorconfig b/template-doks/.editorconfig new file mode 100644 index 0000000..dad6b58 --- /dev/null +++ b/template-doks/.editorconfig @@ -0,0 +1,11 @@ +# editorconfig.org + +root = true + +[*] +indent_style = space +indent_size = 2 +end_of_line = lf +charset = utf-8 +trim_trailing_whitespace = true +insert_final_newline = true \ No newline at end of file diff --git a/template-doks/.eslintignore b/template-doks/.eslintignore new file mode 100644 index 0000000..e258d0c --- /dev/null +++ b/template-doks/.eslintignore @@ -0,0 +1,2 @@ +assets/js/vendor +node_modules \ No newline at end of file diff --git a/template-doks/.eslintrc.json b/template-doks/.eslintrc.json new file mode 100644 index 0000000..c926994 --- /dev/null +++ b/template-doks/.eslintrc.json @@ -0,0 +1,31 @@ +{ + "env": { + "browser": true, + "commonjs": true, + "es6": true, + "node": true + }, + "extends": "eslint:recommended", + "globals": { + "Atomics": "readonly", + "SharedArrayBuffer": "readonly" + }, + "parserOptions": { + "ecmaVersion": 2018, + "sourceType": "module" + }, + "rules": { + "no-console": 0, + "quotes": ["error", "single"], + "comma-dangle": [ + "error", + { + "arrays": "always-multiline", + "objects": "always-multiline", + "imports": "always-multiline", + "exports": "always-multiline", + "functions": "ignore" + } + ] + } +} \ No newline at end of file diff --git a/template-doks/.gitignore b/template-doks/.gitignore new file mode 100644 index 0000000..85ea915 --- /dev/null +++ b/template-doks/.gitignore @@ -0,0 +1,5 @@ +node_modules +public +resources +.netlify +.hugo_build.lock \ No newline at end of file diff --git a/template-doks/.markdownlint-cli2.jsonc b/template-doks/.markdownlint-cli2.jsonc new file mode 100644 index 0000000..3c79374 --- /dev/null +++ b/template-doks/.markdownlint-cli2.jsonc @@ -0,0 +1,11 @@ +{ + "config": { + "default": true, + "MD013": false, + "MD024": false, + "MD026": false, + "MD033": false, + "MD034": false + }, + "ignores": ["node_modules", "CHANGELOG.md", "README.md"] +} \ No newline at end of file diff --git a/template-doks/.stylelintignore b/template-doks/.stylelintignore new file mode 100644 index 0000000..9d9a3ce --- /dev/null +++ b/template-doks/.stylelintignore @@ -0,0 +1,2 @@ +assets/scss/vendor +node_modules \ No newline at end of file diff --git a/template-doks/.stylelintrc.json b/template-doks/.stylelintrc.json new file mode 100644 index 0000000..3ac1803 --- /dev/null +++ b/template-doks/.stylelintrc.json @@ -0,0 +1,37 @@ +{ + "extends": "stylelint-config-standard-scss", + "rules": { + "no-empty-source": null, + "string-quotes": "double", + "scss/comment-no-empty": null, + "max-line-length": null, + "scss/at-extend-no-missing-placeholder": null, + "at-rule-no-unknown": [ + true, + { + "ignoreAtRules": [ + "extend", + "at-root", + "debug", + "warn", + "error", + "if", + "else", + "for", + "each", + "while", + "mixin", + "include", + "content", + "return", + "function", + "tailwind", + "apply", + "responsive", + "variants", + "screen" + ] + } + ] + } +} \ No newline at end of file diff --git a/template-doks/LICENSE b/template-doks/LICENSE new file mode 100644 index 0000000..56d00df --- /dev/null +++ b/template-doks/LICENSE @@ -0,0 +1,21 @@ +MIT License + +Copyright (c) 2021-2022 Henk Verlinde + +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/template-doks/config/_default/config.toml b/template-doks/config/_default/config.toml new file mode 100644 index 0000000..f41f38b --- /dev/null +++ b/template-doks/config/_default/config.toml @@ -0,0 +1,65 @@ +baseurl = "/" +canonifyURLs = false +disableAliases = true +disableHugoGeneratorInject = true +# disableKinds = ["taxonomy", "term"] +enableEmoji = true +enableGitInfo = false +enableRobotsTXT = true +languageCode = "en-US" +paginate = 7 +rssLimit = 10 + +# Multilingual +defaultContentLanguage = "en" +disableLanguages = ["de", "nl"] +# defaultContentLanguageInSubdir = true + +[outputs] + home = ["HTML", "RSS"] + section = ["HTML", "RSS", "SITEMAP"] + +# Add output format for section sitemap.xml +[outputFormats.SITEMAP] +mediaType = "application/xml" +baseName = "sitemap" +isHTML = false +isPlainText = true +noUgly = true +rel = "sitemap" + +[sitemap] + changefreq = "monthly" + filename = "sitemap.xml" + priority = 0.5 + +[caches] + [caches.getjson] + dir = ":cacheDir/:project" + maxAge = "10s" + +[taxonomies] + contributor = "contributors" + category = "categories" + tag = "tags" + +[permalinks] + blog = "/blog/:title/" +# docs = "/docs/1.0/:sections[1:]/:title/" + +[minify.tdewolff.html] + keepWhitespace = false + +[related] + threshold = 80 + includeNewer = true + toLower = false + [[related.indices]] + name = "categories" + weight = 100 + [[related.indices]] + name = "tags" + weight = 80 + [[related.indices]] + name = "date" + weight = 10 diff --git a/template-doks/config/_default/languages.toml b/template-doks/config/_default/languages.toml new file mode 100644 index 0000000..ffb15f9 --- /dev/null +++ b/template-doks/config/_default/languages.toml @@ -0,0 +1,28 @@ +[en] + languageName = "English" + contentDir = "content/en" + weight = 10 + [en.params] + languageISO = "EN" + languageTag = "en-US" + +[de] + languageName = "German" + contentDir = "content/de" + weight = 15 + [de.params] + languageISO = "DE" + languageTag = "de-DE" + +[nl] + languageName = "Nederlands" + contentDir = "content/nl" + weight = 20 + [nl.params] + languageISO = "NL" + languageTag = "nl-NL" + titleAddition = "Modern documentatie-thema" + description = "Doks is een Hugo-thema waarmee je moderne documentatie-websites kunt bouwen die veilig, snel en klaar voor SEO zijn — standaard." + titleHome = "Doks thema" + footer = "Mogelijk gemaakt door Netlify, Hugo, en Doks" + alertText = "Introductie van het Doks-kinderthema, verschillende DX + UX-updates en meer! Bekijk Doks v0.2" diff --git a/template-doks/config/_default/markup.toml b/template-doks/config/_default/markup.toml new file mode 100644 index 0000000..2880e30 --- /dev/null +++ b/template-doks/config/_default/markup.toml @@ -0,0 +1,29 @@ +defaultMarkdownHandler = "goldmark" + +[goldmark] + [goldmark.extensions] + linkify = false + [goldmark.parser] + autoHeadingID = true + autoHeadingIDType = "github" + [goldmark.parser.attribute] + block = true + title = true + [goldmark.renderer] + unsafe = true + +[highlight] + codeFences = false + guessSyntax = false + hl_Lines = "" + lineNoStart = 1 + lineNos = false + lineNumbersInTable = true + noClasses = false + style = "dracula" + tabWidth = 4 + +[tableOfContents] + endLevel = 3 + ordered = false + startLevel = 2 diff --git a/template-doks/config/_default/menus.toml b/template-doks/config/_default/menus.toml new file mode 100644 index 0000000..5c9e400 --- /dev/null +++ b/template-doks/config/_default/menus.toml @@ -0,0 +1,14 @@ +[[main]] + name = "GitHub" + url = "https://github.com/h-enk/hyas" + weight = 10 + +[[social]] + name = "LinkedIn" + url = "https://www.linkedin.com/in/henkverlinde/" + weight = 20 + +[[social]] + name = "Twitter" + url = "https://twitter.com/henkverlinde" + weight = 30 diff --git a/template-doks/config/_default/menus/menus.en.toml b/template-doks/config/_default/menus/menus.en.toml new file mode 100644 index 0000000..5e24b86 --- /dev/null +++ b/template-doks/config/_default/menus/menus.en.toml @@ -0,0 +1,83 @@ +[[docs]] + name = "Prologue" + weight = 10 + identifier = "prologue" + url = "/docs/prologue/" + +[[docs]] + name = "Help" + weight = 60 + identifier = "help" + url = "/docs/help/" + +# [[docs]] +# name = "Lorem" +# weight = 70 +# identifier = "lorem" +# url = "/docs/lorem/" + +[[guide]] + name = "Lorem" + weight = 10 + identifier = "lorem" + url = "/guide/lorem/" + +[[tutorial]] + name = "Lorem" + weight = 10 + identifier = "lorem" + url = "/tutorial/lorem/" + +[[main]] + name = "Docs" + url = "/docs/prologue/introduction/" +# url = "/docs/1.0/prologue/introduction/" + weight = 10 + +# [[main]] +# name = "Tutorial" +# url = "/tutorial/lorem/ipsum/" +# weight = 15 + +[[main]] + name = "Blog" + url = "/blog/" + weight = 20 + +[[main]] + name = "Get Started" + weight = 30 + identifier = "get-started" + url = "/docs/prologue/introduction/" + +[[main]] + name = "Quick Start" + weight = 40 + identifier = "quick-start" + url = "/docs/prologue/quick-start/" + parent = "get-started" + +[[main]] + name = "Tutorial" + weight = 50 + identifier = "tutorial" + url = "https://getdoks.org/tutorial/introduction/" + parent = "get-started" + +[[social]] + name = "GitHub" + pre = "" + url = "https://github.com/h-enk/doks" + post = "v0.1.0" + weight = 10 + +[[social]] + name = "Twitter" + pre = "" + url = "https://twitter.com/getdoks" + weight = 20 + +# [[footer]] +# name = "Privacy" +# url = "/privacy-policy/" +# weight = 10 diff --git a/template-doks/config/_default/menus/menus.nl.toml b/template-doks/config/_default/menus/menus.nl.toml new file mode 100644 index 0000000..e530352 --- /dev/null +++ b/template-doks/config/_default/menus/menus.nl.toml @@ -0,0 +1,39 @@ +[[docs]] + name = "Prologue" + weight = 10 + identifier = "prologue" + url = "/docs/prologue/" + +[[docs]] + name = "Help" + weight = 60 + identifier = "help" + url = "/docs/help/" + +[[main]] + name = "Docs" + url = "/docs/prologue/introduction/" + weight = 10 + +# [[main]] +# name = "Blog" +# url = "/blog/" +# weight = 20 + +[[social]] + name = "GitHub" + pre = "" + url = "https://github.com/h-enk/doks" + post = "v0.1.0" + weight = 10 + +[[social]] + name = "Twitter" + pre = "" + url = "https://twitter.com/getdoks" + weight = 20 + +# [[footer]] +# name = "Privacy" +# url = "/privacy-policy/" +# weight = 10 diff --git a/template-doks/config/_default/module.toml b/template-doks/config/_default/module.toml new file mode 100644 index 0000000..0bb6d25 --- /dev/null +++ b/template-doks/config/_default/module.toml @@ -0,0 +1,75 @@ +[[mounts]] + source = "node_modules/@hyas/core/assets" + target = "assets" + +[[mounts]] + source = "node_modules/@hyas/core/layouts" + target = "layouts" + +[[mounts]] + source = "node_modules/@hyas/themes-doks/archetypes" + target = "archetypes" + +[[mounts]] + source = "node_modules/@hyas/themes-doks/assets" + target = "assets" + +[[mounts]] + source = "node_modules/@hyas/themes-doks/content" + target = "content" + +[[mounts]] + source = "node_modules/@hyas/themes-doks/data" + target = "data" + +[[mounts]] + source = "node_modules/@hyas/themes-doks/i18n" + target = "i18n" + +[[mounts]] + source = "node_modules/@hyas/themes-doks/layouts" + target = "layouts" + +[[mounts]] + source = "node_modules/@hyas/themes-doks/static" + target = "static" + +[[mounts]] + source = "node_modules/flexsearch" + target = "assets/js/vendor/flexsearch" + +[[mounts]] + source = "node_modules/katex" + target = "assets/js/vendor/katex" + +[[mounts]] + source = "node_modules/mermaid" + target = "assets/js/vendor/mermaid" + +[[mounts]] + source = "archetypes" + target = "archetypes" + +[[mounts]] + source = "assets" + target = "assets" + +[[mounts]] + source = "content" + target = "content" + +[[mounts]] + source = "data" + target = "data" + +[[mounts]] + source = "i18n" + target = "i18n" + +[[mounts]] + source = "layouts" + target = "layouts" + +[[mounts]] + source = "static" + target = "static" diff --git a/template-doks/config/_default/params.toml b/template-doks/config/_default/params.toml new file mode 100644 index 0000000..bc47efe --- /dev/null +++ b/template-doks/config/_default/params.toml @@ -0,0 +1,49 @@ +# Meta Data for SEO + +## Homepage +title = "Hyas" +titleSeparator = "-" +titleAddition = "Build websites faster" + +# Feed +copyRight = "Copyright (c) 2020-2021 Henk Verlinde" + +## Documentation +# docsVersion = "0.3" + +# Edit Page +# repoHost [Github | Gitea | GitLab | Bitbucket | BitbucketServer ] is used for building the edit link based on git hoster +repoHost = "GitHub" +#repoHost = "Gitea" +docsRepo = "https://github.com/h-enk/doks" +docsRepoBranch = "master" +docsRepoSubPath = "" +editPage = false +lastMod = false + +[sections] + sectionNav = ["docs", "guides"] + +[options] + lazySizes = true + clipBoard = true + instantPage = true + flexSearch = true + searchSectionsShow = [] + searchSectionsIndex = [] + darkMode = true + bootStrapJs = true + breadCrumb = false + highLight = true + kaTex = false + multilingualMode = false + docsVersioning = false + fullWidth = false + navbarSticky = true + toTopButton = false + scrollSpy = false # experimental; needs Bootstrap >= 5.2.0-beta1 + +[menu] + [menu.section] + auto = true + collapsibleSidebar = true diff --git a/template-doks/config/babel.config.js b/template-doks/config/babel.config.js new file mode 100644 index 0000000..e34c0a7 --- /dev/null +++ b/template-doks/config/babel.config.js @@ -0,0 +1,17 @@ +module.exports = { + presets: [ + [ + '@babel/preset-env', + { + targets: { + browsers: [ + // Best practice: https://github.com/babel/babel/issues/7789 + '>=1%', + 'not ie 11', + 'not op_mini all', + ], + }, + }, + ], + ], +}; diff --git a/template-doks/config/next/config.toml b/template-doks/config/next/config.toml new file mode 100644 index 0000000..9fad6c9 --- /dev/null +++ b/template-doks/config/next/config.toml @@ -0,0 +1 @@ +# Overrides for next environment diff --git a/template-doks/config/postcss.config.js b/template-doks/config/postcss.config.js new file mode 100644 index 0000000..d8464a0 --- /dev/null +++ b/template-doks/config/postcss.config.js @@ -0,0 +1,52 @@ +const autoprefixer = require('autoprefixer'); +const purgecss = require('@fullhuman/postcss-purgecss'); +const whitelister = require('purgecss-whitelister'); + +module.exports = { + plugins: [ + autoprefixer(), + purgecss({ + content: [ + // './node_modules/@hyas/core/layouts/**/*.html', + './node_modules/@hyas/themes-doks/layouts/**/*.html', + // './layouts/**/*.html', + './node_modules/@hyas/themes-doks/content/**/*.html', + './content/**/*.md', + ], + safelist: [ + 'lazyloaded', + 'table', + 'thead', + 'tbody', + 'tr', + 'th', + 'td', + 'h1', + 'h2', + 'h3', + 'h4', + 'h5', + 'alert-link', + 'container-xxl', + 'container-fluid', + 'offcanvas-backdrop', + 'img-fluid', + 'lazyload', + 'blur-up', + 'figcaption', + ...whitelister([ + // './node_modules/@hyas/core/assets/scss/app.scss', + './node_modules/@hyas/themes-doks/assets/scss/components/_alerts.scss', + './node_modules/@hyas/themes-doks/assets/scss/components/_buttons.scss', + './node_modules/@hyas/themes-doks/assets/scss/components/_code.scss', + // './node_modules/@hyas/themes-doks/assets/scss/components/_diagrams.scss', + './node_modules/@hyas/themes-doks/assets/scss/components/_syntax.scss', + './node_modules/@hyas/themes-doks/assets/scss/components/_search.scss', + './node_modules/@hyas/themes-doks/assets/scss/common/_dark.scss', + './node_modules/bootstrap/scss/_dropdown.scss', + // './node_modules/katex/dist/katex.css', + ]), + ], + }), + ], +} diff --git a/template-doks/config/production/config.toml b/template-doks/config/production/config.toml new file mode 100644 index 0000000..ff90f22 --- /dev/null +++ b/template-doks/config/production/config.toml @@ -0,0 +1 @@ +# Overrides for production environment diff --git a/template-doks/netlify.toml b/template-doks/netlify.toml new file mode 100644 index 0000000..1132be5 --- /dev/null +++ b/template-doks/netlify.toml @@ -0,0 +1,60 @@ +[build] + publish = "public" + functions = "functions" + +[build.environment] + NODE_VERSION = "16.17.0" + NPM_VERSION = "8.15.0" + +[context.production] + command = "npm run build" + +[context.deploy-preview] + command = "npm run build -- -b $DEPLOY_PRIME_URL" + +[context.branch-deploy] + command = "npm run build -- -b $DEPLOY_PRIME_URL" + +[context.next] + command = "npm run build" + +[context.next.environment] + HUGO_ENV = "next" + +[[plugins]] + package = "netlify-plugin-submit-sitemap" + + [plugins.inputs] + baseUrl = "https://hyas.netlify.app/" + sitemapPath = "/sitemap.xml" + ignorePeriod = 0 + providers = [ + "google", + "yandex" + ] + +[dev] + framework = "#custom" + command = "npm run start" + targetPort = 1313 + port = 8888 + publish = "public" + autoLaunch = false + +# Redirects and rewrites — https://docs.netlify.com/routing/redirects/#syntax-for-the-netlify-configuration-file + +# Custom headers — https://docs.netlify.com/routing/headers/#syntax-for-the-netlify-configuration-file +[[headers]] + for = "/*" + [headers.values] + Strict-Transport-Security = "max-age=31536000; includeSubDomains; preload" + X-Content-Type-Options = "nosniff" + X-XSS-Protection = "1; mode=block" + Content-Security-Policy = "default-src 'self'; manifest-src 'self'; connect-src 'self'; font-src 'self'; img-src 'self' data:; script-src 'self' 'nonce-dXNlcj0iaGVsbG8iLGRvbWFpbj0iaGVua3ZlcmxpbmRlLmNvbSIsZG9jdW1lbnQud3JpdGUodXNlcisiQCIrZG9tYWluKTs=' 'sha256-aWZ3y/RxbBYKHXH0z8+8ljrHG1mSBvyzSfxSMjBSaXk='; style-src 'self'" + X-Frame-Options = "SAMEORIGIN" + Referrer-Policy = "strict-origin" + Feature-Policy = "geolocation 'self'" + Cache-Control= ''' + public, + max-age=31536000''' + Access-Control-Allow-Origin = "*" diff --git a/template-doks/package.json b/template-doks/package.json new file mode 100644 index 0000000..c1b9776 --- /dev/null +++ b/template-doks/package.json @@ -0,0 +1,37 @@ +{ + "name": "hyas-doks", + "version": "0.0.0", + "license": "MIT", + "engines": { + "node": ">=16.17.0", + "npm": ">=8.15.0" + }, + "browserslist": [ + "defaults" + ], + "scripts": { + "predev": "npm run clean:build", + "dev": "exec-bin node_modules/.bin/hugo/hugo server --gc --bind=0.0.0.0 --disableFastRender --baseURL=http://localhost", + "create": "exec-bin node_modules/.bin/hugo/hugo new", + "check": "npm run check:scripts && npm run check:styles && npm run check:markdown", + "check:scripts": "eslint config", + "check:styles": "stylelint \"assets/scss/**/*.{css,sass,scss}\"", + "check:markdown": "markdownlint-cli2 \"*.md\" \"content/**/*.md\"", + "fix:markdown": "markdownlint-cli2-fix \"*.md\" \"content/**/*.md\"", + "test": "npm run check", + "prebuild": "npm run clean:build", + "build": "exec-bin node_modules/.bin/hugo/hugo --gc --minify", + "preview": "http-server --gzip --brotli --ext=html --cors", + "clean": "npm run clean:build && npm run clean:install", + "clean:build": "shx rm -rf public resources .hugo_build.lock", + "clean:install": "shx rm -rf package-lock.json yarn.lock pnpm-lock.yaml node_modules", + "preinfo": "npm version", + "info": "npm list", + "postinfo": "exec-bin node_modules/.bin/hugo/hugo version", + "postinstall": "shx mkdir node_modules/.bin/hugo && shx cp node_modules/hyas-module/node_modules/.bin/hugo/* node_modules/.bin/hugo" + }, + "devDependencies": { + "@hyas/themes-doks": "^0.1.2", + "hyas": "^2.0.0" + } +} diff --git a/template-no-theme-recommended/.editorconfig b/template-no-theme-recommended/.editorconfig new file mode 100644 index 0000000..dad6b58 --- /dev/null +++ b/template-no-theme-recommended/.editorconfig @@ -0,0 +1,11 @@ +# editorconfig.org + +root = true + +[*] +indent_style = space +indent_size = 2 +end_of_line = lf +charset = utf-8 +trim_trailing_whitespace = true +insert_final_newline = true \ No newline at end of file diff --git a/template-no-theme-recommended/.eslintignore b/template-no-theme-recommended/.eslintignore new file mode 100644 index 0000000..e258d0c --- /dev/null +++ b/template-no-theme-recommended/.eslintignore @@ -0,0 +1,2 @@ +assets/js/vendor +node_modules \ No newline at end of file diff --git a/template-no-theme-recommended/.eslintrc.json b/template-no-theme-recommended/.eslintrc.json new file mode 100644 index 0000000..c926994 --- /dev/null +++ b/template-no-theme-recommended/.eslintrc.json @@ -0,0 +1,31 @@ +{ + "env": { + "browser": true, + "commonjs": true, + "es6": true, + "node": true + }, + "extends": "eslint:recommended", + "globals": { + "Atomics": "readonly", + "SharedArrayBuffer": "readonly" + }, + "parserOptions": { + "ecmaVersion": 2018, + "sourceType": "module" + }, + "rules": { + "no-console": 0, + "quotes": ["error", "single"], + "comma-dangle": [ + "error", + { + "arrays": "always-multiline", + "objects": "always-multiline", + "imports": "always-multiline", + "exports": "always-multiline", + "functions": "ignore" + } + ] + } +} \ No newline at end of file diff --git a/template-no-theme-recommended/.gitignore b/template-no-theme-recommended/.gitignore new file mode 100644 index 0000000..85ea915 --- /dev/null +++ b/template-no-theme-recommended/.gitignore @@ -0,0 +1,5 @@ +node_modules +public +resources +.netlify +.hugo_build.lock \ No newline at end of file diff --git a/template-no-theme-recommended/.markdownlint-cli2.jsonc b/template-no-theme-recommended/.markdownlint-cli2.jsonc new file mode 100644 index 0000000..3c79374 --- /dev/null +++ b/template-no-theme-recommended/.markdownlint-cli2.jsonc @@ -0,0 +1,11 @@ +{ + "config": { + "default": true, + "MD013": false, + "MD024": false, + "MD026": false, + "MD033": false, + "MD034": false + }, + "ignores": ["node_modules", "CHANGELOG.md", "README.md"] +} \ No newline at end of file diff --git a/template-no-theme-recommended/.stylelintignore b/template-no-theme-recommended/.stylelintignore new file mode 100644 index 0000000..9d9a3ce --- /dev/null +++ b/template-no-theme-recommended/.stylelintignore @@ -0,0 +1,2 @@ +assets/scss/vendor +node_modules \ No newline at end of file diff --git a/template-no-theme-recommended/.stylelintrc.json b/template-no-theme-recommended/.stylelintrc.json new file mode 100644 index 0000000..3ac1803 --- /dev/null +++ b/template-no-theme-recommended/.stylelintrc.json @@ -0,0 +1,37 @@ +{ + "extends": "stylelint-config-standard-scss", + "rules": { + "no-empty-source": null, + "string-quotes": "double", + "scss/comment-no-empty": null, + "max-line-length": null, + "scss/at-extend-no-missing-placeholder": null, + "at-rule-no-unknown": [ + true, + { + "ignoreAtRules": [ + "extend", + "at-root", + "debug", + "warn", + "error", + "if", + "else", + "for", + "each", + "while", + "mixin", + "include", + "content", + "return", + "function", + "tailwind", + "apply", + "responsive", + "variants", + "screen" + ] + } + ] + } +} \ No newline at end of file diff --git a/template-no-theme-recommended/LICENSE b/template-no-theme-recommended/LICENSE new file mode 100644 index 0000000..56d00df --- /dev/null +++ b/template-no-theme-recommended/LICENSE @@ -0,0 +1,21 @@ +MIT License + +Copyright (c) 2021-2022 Henk Verlinde + +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/template-no-theme-recommended/config/_default/config.toml b/template-no-theme-recommended/config/_default/config.toml new file mode 100644 index 0000000..4a436cb --- /dev/null +++ b/template-no-theme-recommended/config/_default/config.toml @@ -0,0 +1,44 @@ +baseurl = "/" +canonifyURLs = false +disableAliases = true +disableHugoGeneratorInject = true +disableKinds = ["taxonomy", "term"] +enableEmoji = true +enableGitInfo = false +enableRobotsTXT = true +languageCode = "en-US" +paginate = 7 +rssLimit = 10 + +[outputs] + home = ["HTML", "RSS"] + +[caches] + [caches.getjson] + dir = ":cacheDir/:project" + maxAge = "10s" + +[sitemap] + changefreq = "monthly" + filename = "sitemap.xml" + priority = 0.5 + +[taxonomies] + category = "categories" + +[permalinks] + blog = "/:title/" + +[minify.tdewolff.html] + keepWhitespace = false + +[related] + threshold = 80 + includeNewer = true + toLower = false + [[related.indices]] + name = "categories" + weight = 100 + [[related.indices]] + name = "date" + weight = 10 diff --git a/template-no-theme-recommended/config/_default/markup.toml b/template-no-theme-recommended/config/_default/markup.toml new file mode 100644 index 0000000..2880e30 --- /dev/null +++ b/template-no-theme-recommended/config/_default/markup.toml @@ -0,0 +1,29 @@ +defaultMarkdownHandler = "goldmark" + +[goldmark] + [goldmark.extensions] + linkify = false + [goldmark.parser] + autoHeadingID = true + autoHeadingIDType = "github" + [goldmark.parser.attribute] + block = true + title = true + [goldmark.renderer] + unsafe = true + +[highlight] + codeFences = false + guessSyntax = false + hl_Lines = "" + lineNoStart = 1 + lineNos = false + lineNumbersInTable = true + noClasses = false + style = "dracula" + tabWidth = 4 + +[tableOfContents] + endLevel = 3 + ordered = false + startLevel = 2 diff --git a/template-no-theme-recommended/config/_default/menus.toml b/template-no-theme-recommended/config/_default/menus.toml new file mode 100644 index 0000000..5c9e400 --- /dev/null +++ b/template-no-theme-recommended/config/_default/menus.toml @@ -0,0 +1,14 @@ +[[main]] + name = "GitHub" + url = "https://github.com/h-enk/hyas" + weight = 10 + +[[social]] + name = "LinkedIn" + url = "https://www.linkedin.com/in/henkverlinde/" + weight = 20 + +[[social]] + name = "Twitter" + url = "https://twitter.com/henkverlinde" + weight = 30 diff --git a/template-no-theme-recommended/config/_default/module.toml b/template-no-theme-recommended/config/_default/module.toml new file mode 100644 index 0000000..c8b455e --- /dev/null +++ b/template-no-theme-recommended/config/_default/module.toml @@ -0,0 +1,27 @@ +[[mounts]] + source = "node_modules/@hyas/core/assets" + target = "assets" + +[[mounts]] + source = "node_modules/@hyas/core/layouts" + target = "layouts" + +[[mounts]] + source = "node_modules/hyas/assets" + target = "assets" + +[[mounts]] + source = "node_modules/@hyas/seo/layouts" + target = "layouts" + +[[mounts]] + source = "node_modules/@hyas/images/layouts" + target = "layouts" + +[[mounts]] + source = "assets" + target = "assets" + +[[mounts]] + source = "layouts" + target = "layouts" diff --git a/template-no-theme-recommended/config/_default/params.toml b/template-no-theme-recommended/config/_default/params.toml new file mode 100644 index 0000000..a28d766 --- /dev/null +++ b/template-no-theme-recommended/config/_default/params.toml @@ -0,0 +1,56 @@ +# Meta Data for SEO + +## Homepage +title = "Hyas" +titleSeparator = "-" +titleAddition = "Build websites faster" +description = "Hyas is a Hugo starter helping you build modern websites that are secure, fast, and SEO-ready — by default." + +## Open Graph +images = ["hyas.png"] +ogLocale = "en_US" +titleHome = "Hyas Hugo Starter" + +## Twitter Cards +twitterSite = "@gethyas" +twitterCreator = "@henkverlinde" + +## JSON-LD +# schemaType = "Person" +schemaType = "Organization" +schemaName = "Hyas" +schemaAuthor = "Henk Verlinde" +schemaAuthorTwitter = "https://twitter.com/henkverlinde" +schemaAuthorLinkedIn = "https://www.linkedin.com/in/henkverlinde/" +schemaAuthorGitHub = "https://github.com/h-enk" +schemaLocale = "en-US" +schemaLogo = "logo-hyas.png" +schemaLogoWidth = 512 +schemaLogoHeight = 512 +schemaImage = "hyas.png" +schemaImageWidth = 1280 +schemaImageHeight = 640 +schemaTwitter = "https://twitter.com/gethyas" +schemaLinkedIn = "" +schemaGitHub = "https://github.com/h-enk/hyas" + +# lazyimg +[lazyimg] + resizer = "auto" + renderer = "lqip-webp" + + # Resizer options: + lqipSize = "120x Gaussian" + maxSize = "1920x" + responsiveSizes = [ "320x", "640x", "768x", "1024x", "1366x", "1600x", "1920x" ] + resizeOptions = "Lanczos q95" + + # Renderer options: + class = "img-fluid" + # alt = "" + noscript = true + + errorHandler = "warning" + +# Feed +copyRight = "Copyright (c) 2020-2021 Henk Verlinde" diff --git a/template-no-theme-recommended/config/babel.config.js b/template-no-theme-recommended/config/babel.config.js new file mode 100644 index 0000000..e34c0a7 --- /dev/null +++ b/template-no-theme-recommended/config/babel.config.js @@ -0,0 +1,17 @@ +module.exports = { + presets: [ + [ + '@babel/preset-env', + { + targets: { + browsers: [ + // Best practice: https://github.com/babel/babel/issues/7789 + '>=1%', + 'not ie 11', + 'not op_mini all', + ], + }, + }, + ], + ], +}; diff --git a/template-no-theme-recommended/config/next/config.toml b/template-no-theme-recommended/config/next/config.toml new file mode 100644 index 0000000..9fad6c9 --- /dev/null +++ b/template-no-theme-recommended/config/next/config.toml @@ -0,0 +1 @@ +# Overrides for next environment diff --git a/template-no-theme-recommended/config/postcss.config.js b/template-no-theme-recommended/config/postcss.config.js new file mode 100644 index 0000000..bd4c565 --- /dev/null +++ b/template-no-theme-recommended/config/postcss.config.js @@ -0,0 +1,32 @@ +const autoprefixer = require('autoprefixer'); +const purgecss = require('@fullhuman/postcss-purgecss'); +const whitelister = require('purgecss-whitelister'); + +module.exports = { + plugins: [ + autoprefixer(), + purgecss({ + content: [ + './node_modules/@hyas/core/layouts/**/*.html', + // './layouts/**/*.html', + './content/**/*.md', + ], + safelist: [ + 'lazyloaded', + 'table', + 'thead', + 'tbody', + 'tr', + 'th', + 'td', + 'h1', + 'h2', + 'h3', + 'alert-link', + ...whitelister([ + './node_modules/@hyas/core/assets/scss/app.scss', + ]), + ], + }), + ], +} diff --git a/template-no-theme-recommended/config/production/config.toml b/template-no-theme-recommended/config/production/config.toml new file mode 100644 index 0000000..ff90f22 --- /dev/null +++ b/template-no-theme-recommended/config/production/config.toml @@ -0,0 +1 @@ +# Overrides for production environment diff --git a/template-no-theme-recommended/content/_index.md b/template-no-theme-recommended/content/_index.md new file mode 100644 index 0000000..49d6949 --- /dev/null +++ b/template-no-theme-recommended/content/_index.md @@ -0,0 +1,11 @@ +--- +title : "Build websites faster" +description: "Hyas is a Hugo-powered Jamstack framework for building production-ready websites faster." +lead: "Hyas is a Hugo-powered Jamstack framework for building production-ready websites faster." +date: 2020-04-17T12:18:10+00:00 +lastmod: 2020-04-17T12:18:10+00:00 +draft: false +images: [] +--- + +This line is from `./content/_index.md` :rocket: diff --git a/template-no-theme-recommended/content/blog/_index.md b/template-no-theme-recommended/content/blog/_index.md new file mode 100644 index 0000000..bd969d8 --- /dev/null +++ b/template-no-theme-recommended/content/blog/_index.md @@ -0,0 +1,15 @@ +--- +title: "Blog" +description: "Hyas Blog" +date: 2020-04-17T12:17:27+00:00 +lastmod: 2020-04-17T12:17:27+00:00 +draft: true +images: [] +_build: + render: true + list: always + publishResources: true +robots: "noindex, noarchive" +sitemap_exclude: true +feed_exclude: true +--- diff --git a/template-no-theme-recommended/content/quick-start/index.md b/template-no-theme-recommended/content/quick-start/index.md new file mode 100644 index 0000000..5963616 --- /dev/null +++ b/template-no-theme-recommended/content/quick-start/index.md @@ -0,0 +1,32 @@ +--- +title: "Quick Start" +description: "A quick start to using Hyas." +date: 2020-04-17T12:17:54+00:00 +lastmod: 2020-04-17T12:17:54+00:00 +draft: false +images: [] +--- + +How to start a new Hyas project — one pager. + +## Requirements + +- [Node.js](https://nodejs.org/) — v16.17.0 or higher + +## Get started + +Create a new project: + +```bash +npm create hyas@latest +``` + +## Documentation + +- [Hyas](https://gethyas.com/) +- [Hugo](https://gohugo.io/documentation/) + +## Communities + +- [Hyas Discussions](https://github.com/h-enk/hyas/discussions) +- [Hugo Forums](https://discourse.gohugo.io/) diff --git a/template-no-theme-recommended/netlify.toml b/template-no-theme-recommended/netlify.toml new file mode 100644 index 0000000..1132be5 --- /dev/null +++ b/template-no-theme-recommended/netlify.toml @@ -0,0 +1,60 @@ +[build] + publish = "public" + functions = "functions" + +[build.environment] + NODE_VERSION = "16.17.0" + NPM_VERSION = "8.15.0" + +[context.production] + command = "npm run build" + +[context.deploy-preview] + command = "npm run build -- -b $DEPLOY_PRIME_URL" + +[context.branch-deploy] + command = "npm run build -- -b $DEPLOY_PRIME_URL" + +[context.next] + command = "npm run build" + +[context.next.environment] + HUGO_ENV = "next" + +[[plugins]] + package = "netlify-plugin-submit-sitemap" + + [plugins.inputs] + baseUrl = "https://hyas.netlify.app/" + sitemapPath = "/sitemap.xml" + ignorePeriod = 0 + providers = [ + "google", + "yandex" + ] + +[dev] + framework = "#custom" + command = "npm run start" + targetPort = 1313 + port = 8888 + publish = "public" + autoLaunch = false + +# Redirects and rewrites — https://docs.netlify.com/routing/redirects/#syntax-for-the-netlify-configuration-file + +# Custom headers — https://docs.netlify.com/routing/headers/#syntax-for-the-netlify-configuration-file +[[headers]] + for = "/*" + [headers.values] + Strict-Transport-Security = "max-age=31536000; includeSubDomains; preload" + X-Content-Type-Options = "nosniff" + X-XSS-Protection = "1; mode=block" + Content-Security-Policy = "default-src 'self'; manifest-src 'self'; connect-src 'self'; font-src 'self'; img-src 'self' data:; script-src 'self' 'nonce-dXNlcj0iaGVsbG8iLGRvbWFpbj0iaGVua3ZlcmxpbmRlLmNvbSIsZG9jdW1lbnQud3JpdGUodXNlcisiQCIrZG9tYWluKTs=' 'sha256-aWZ3y/RxbBYKHXH0z8+8ljrHG1mSBvyzSfxSMjBSaXk='; style-src 'self'" + X-Frame-Options = "SAMEORIGIN" + Referrer-Policy = "strict-origin" + Feature-Policy = "geolocation 'self'" + Cache-Control= ''' + public, + max-age=31536000''' + Access-Control-Allow-Origin = "*" diff --git a/template-no-theme-recommended/package.json b/template-no-theme-recommended/package.json new file mode 100644 index 0000000..e5727e6 --- /dev/null +++ b/template-no-theme-recommended/package.json @@ -0,0 +1,38 @@ +{ + "name": "hyas-no-theme-recommended", + "version": "0.0.0", + "license": "MIT", + "engines": { + "node": ">=16.17.0", + "npm": ">=8.15.0" + }, + "browserslist": [ + "defaults" + ], + "scripts": { + "predev": "npm run clean:build", + "dev": "exec-bin node_modules/.bin/hugo/hugo server --gc --bind=0.0.0.0 --disableFastRender --baseURL=http://localhost", + "create": "exec-bin node_modules/.bin/hugo/hugo new", + "check": "npm run check:scripts && npm run check:styles && npm run check:markdown", + "check:scripts": "eslint config", + "check:styles": "stylelint \"assets/scss/**/*.{css,sass,scss}\"", + "check:markdown": "markdownlint-cli2 \"*.md\" \"content/**/*.md\"", + "fix:markdown": "markdownlint-cli2-fix \"*.md\" \"content/**/*.md\"", + "test": "npm run check", + "prebuild": "npm run clean:build", + "build": "exec-bin node_modules/.bin/hugo/hugo --gc --minify", + "preview": "http-server --gzip --brotli --ext=html --cors", + "clean": "npm run clean:build && npm run clean:install", + "clean:build": "shx rm -rf public resources .hugo_build.lock", + "clean:install": "shx rm -rf package-lock.json yarn.lock pnpm-lock.yaml node_modules", + "preinfo": "npm version", + "info": "npm list", + "postinfo": "exec-bin node_modules/.bin/hugo/hugo version", + "postinstall": "shx mkdir node_modules/.bin/hugo && shx cp node_modules/hyas-module/node_modules/.bin/hugo/* node_modules/.bin/hugo" + }, + "devDependencies": { + "@hyas/images": "^0.3.2", + "@hyas/seo": "^0.1.2", + "hyas": "^2.0.0" + } +} diff --git a/template-no-theme-recommended/static/android-chrome-192x192.png b/template-no-theme-recommended/static/android-chrome-192x192.png new file mode 100644 index 0000000000000000000000000000000000000000..f7c60b2c1e90e4cb7812f222e3ac45c955e55f55 GIT binary patch literal 6450 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 literal 0 HcmV?d00001 diff --git a/template-no-theme-recommended/static/android-chrome-512x512.png b/template-no-theme-recommended/static/android-chrome-512x512.png new file mode 100644 index 0000000000000000000000000000000000000000..31affbb3bffb0f6a7432ab7e76194ec516a79a2e GIT binary patch literal 22135 zcmeFZbyQSc^f!KIn4vqB92yBhrE??%0SN^`8iVd`W6hx3zxLybAzO@Lwo^ zj|=|U@%niL00`i=;!Pbdlhp=-R3_cz{d3=fwN?Kwq>70}kIB>|?J7cyY2oo6mj|>d zluebxoImP?@vIl#m@dpdQ-0#yMqx?)2_FYWP7o?WPAR_!s}R1eFE5`sp5$AYc0NC< zafx+tC!p@DYoJK_Szdyn?z~@9zj5zrzeFxR8x%#W7>to&ln>)%_R@U z{hQ8amkzh*+u=B9CQb-t2L-tc0zz4)iEXW|HP<#g5#edXH@k#-0WAj}P`bZos{GY%j)P(j54ewA&a2^e#H=?3RVPn=&!O2uJs@cPK22zgX}iPX?4 zusa2V`H`jy!6OlUJ>}dH(ZPRK4^e5Cu67`6TADi%VV#q^xOaNWaAJ-n&GcINM zD}sSCJn;@2gi;)d$PZNK35O9r$JDw@-KvCtJB%D8S(Bm(n$FDI!VfjPy&(V?Qg7a% zZ*TH{(iXvIqr?__gvoi1yh&~b(IS66^yMv8NA$u#Oq9~>b>O|OGZZ#^+i{;_m=33w zF0Po6pGar@+pp8!ey2H9yXugeEhwt~jm|SKC9}hvRjT+eM!Z2p4_o;mqc_e>1jiFL zGzM@6iQ{SLmC0z8l{CMm`G0DBT9w?x4%r5ue5Kb-$`y~<>SwU9=JkJoXdWW$rtaUj znm0HN6|)cOqzx~k?pNmQ=9hI}`Z+-2`O26btq3kkoRy4SstB~}m%Yp#oCbcKREol{ zl=0c2PP`LZllCDtOp5m-I;LMoGZ!X{cz0=ugwAuKx+e=MCRf=BCOp&Xm%5LIdj!H`DH^jIa$YkdYQ7pr(h=0wETur#%di z{riolOfC@EHWVwYD{&i|f43ju7`-v6Snwdco|R3o?OI~aJ$<*W7X-b>eQqD)VSZc~ zD8|y)&Xa-LpofA^lWC3w?JuhZnPRy_a73)f&I8 znLWiwi)RC5XL)hagsNF+N|@IKjvJ;9)0(&p%Y2Ej-qD zU5z}Al;CUV!h^n1$G&k9A}hqeP(7 zD9j*zH#AOk(3D;_yB{atDfv_&O1|j}F8SR^*P-KyQS>l`)n#}Y=%$C`@UO?Myndgn zVXyx9(GU-%%7wlNo;T-k1Y?5WM4z00%*T+*zYz$kp`X4BxB>!dw}^%!ui^{KyGIb7 zA+9BUa9bF5)kv;XRvg`tci=!m*V!;oR1%DU5m5$;o^|`?(6tB6D}WCdbrK*>fQ*c* zXTzG@uGfLZvi_R?q_g?jZaSsT#>Qs!Je`3c4g&#QmDd$&X>@IE?Q=21>FMu54;)CF z7Y6b`0J0#q)5r6w*mv@VQ>Y%AbXTylgA#iuHZf#gB z@XYTkBX-w34dl8VN%TH=ZB}}~?_@fAcx0;l=BrwA`at}+Awc|PsgPg<`5VL+e^q%eJ!#mN;`<;1ndk2FrrXt1L+}U0c zXXGK{%SIa5$rUy$pq{r0qf{ehzuVcrWeEkux8Xft5 zk$~I?2dfY_N`LCdqO;z4y5Oe zdwUexscBc^$oO`Gq0e{}X&Y8uMMshy!t$w=aab;oJMgS2Kl2TCJ8JzlTd`g}9b>yH z;24kwdwvTAM}B`+CL_aE_NYDPyBI^ZIc2*D{!}dAj6cBZTj>f3RMDkSqL94)U}dOE zPWj=?hPg`aJ(Unv#RKllt}X>F!E3Y;Q(`Lb(xVIS9^1CX%o;%9C&x3s1BWAPb!LBvyLjLDoCL9OUieKq6-eQDyYU|e8(xcfbKU7T@HyoFjHcm3NUotU%$p=$a zi=+r;h0;QmAC3|>zc1KY5BjLIsGc+VHbKK??F0215~`q%f@8>uu#3L8Fk=Vb!Yjlb zYHm@d({>mEi)pLI)#;IBe$$Q));<2yrH;~Duf=p}W-m$jiSu@U3LKknXkmCufq%29lCXtY_ zL|N%bA;NRI_m-8FOk%1Jwr zE2Z@;^j7@`N4eqQ;kt=M{B)kHs*h&M%rD6n(JL)dx8u7h-}`_A2`I8Yxqi>6ezxB- zeKoJRIJ$Nu`dkC5a1+#!me#xknHs1emht);EB!FWB-%q8#1@4v(`_S=iP+gFrt$Q+ z+|yJ>@;c7(+=veEQwDA!pU?Q!S*T!mohKWn37&O6Y@mHImE6ue@>Maz*WyGm0F0qJ z1Rc|giJ)Zm!#aL$hC+NAlZ9G-_{eMKyU&n@zIYz%V^RLQ(cvgIT` zGY)z#Wt;QNzbm%w{YzRJd?#FR&>hA3d|qCMzbu$8T@!du3_lg-1IGVI zvYVTa{Mk1?b(N||Wgkpud9h?rWg6g)AJl~mjgQA07CQz$Vjq^0Bya!Hu*vcoznU8d z@;zV2Ar)n4URG53^afsSSsDX7xosiT;bl%32XSD3=*L-0%{Rk?t0AAr;*fIqWxxWS z^qP+sw1B?I&wDwQr!ZZsSsGm}aqDP>RDJ!?B(JFDdk8TIr@JIIX#eEki31W-nl%?ZBk;?cu@YVPn6sjH;q&}a65z;wy$sci;RTm#`4N1u{4 zc03_R)4)(=fcRK)19lMRgH3)dH}%{-h5Mb7APp=D=M|*+5|3(+XMH-8o0w0PRjgrd zQ$qt&vfYcQBO-6t5R|Vl)`GNp6Vk%V=W_m~m=F5eIRwaXhkD=TI9c!1v1ok^o~WEZ z@W80!2q@O_^fvEl8^XVr#5?m4xCbz{a{AUa(U0;3cusrDIk+|P!Tgv92mE7?_Xzax zsdIlgIkGX{*Ntc3#(0u4roDqwWE{gQ1c0>I>;scZJT+Szu3!7nvirP>;P`~!d<2hA zMvv}TzU6QyAWtXjr;^GJ*l4yFV>BEd?&}+T7MjE5=JwcYdVSJ;K9R;F78f*q2W?id zmvMZ=%*^BHC!u3*&8u2P6a?pmc^oF!Z9hE~^9@g7;WN7!UO&LoIM94-j)>ZY0_BQ$ z1;aEX$Ewx4<9xl?SqJp54f^62kz5I@q$201La@=QKrv)rL#UVj2R>M*t0UXYFE~Vr z2DR*fP+=ZG7^=Lx(XB>qu`^W2b~dytO3M6uH|XDU5Q@ zJLn>#b{J9&`Uby0%gIR`Wjt#RxM9j_T-(}OLavfso3;H7rG|IlmC?nQaR+S=9l~E= zrwobhO%`!bU^Nz8vF*LsU6;AH(|v4qmnPqtFDfCOATU>mI!voI-%t7edg7cr`_b5m z|9;Pe(y7B(fJ3kXh6ZvK?xcib;9oFN{4AfL_KOMd0K5p;0#Ue8wmGqe*TgNnbXdSm zwef8j_&9WDHfm~*2&bcUDQ7EReM+Zs4N~X0zh>_TZraiBuMJBE?yOHIvOpauSogia z%_^*iuk+$%bFpN{Y8hTN4pZVfJs=yM(L<01Aqu=3{o6%hn1;qMGM70p;i?`c) zSMgy+-Rq5$^AFGFXe&Q{m_HNC-Qt|DaGp3Dt44i){v0O)Y3W6iG?#^64}D1U2iUAUh?X6)fS)mo?DPj@Hn_%EK-2g#s1~ z6IWuI_VWVi&5u#5dGM;mJ{2C|02!aZjxC`8O>qV?Eu;$Y0B zA+=@wRAibNK0}DExc=hh%ek{U1}O~a7b^hz#Q-`}cGM!``O zxkR-5`0aPnr6lpEB&KpU^Np}s0Z8Rbi&GiyEdo6w;3BX3wM~qFl{g8$<-0(-0(u;3 zOb;WEAYYdZmrCxT>eN*hQotQr^mJ+ZW}Lx&>X*fnsOHSN0KDmLegHSvhB>z8B3Jri zemHn(GoMiAp0Kzw{70ria=V3>C$BCdp@-3BI#xVvLMo}jzRY(X#UQjmiH@we`{D() zD+Wt}Ae?azDWP7Nc7EG6rQ^}l;yLyq76;eYcb0Q~8!Y|Izf~46sCcYw?V~v7m6ulF z?5Bak^5f@h%}Oh`&EHz9n?GD*Xkr+hZ``b-+i@ZdjJ+y#kEIiw!cwaILO`dgno9_P zN9>XBEePX-dr{)2Q4tLM)Rb@-kftbcUtM&>B?5Xs7aP|VW(n9a3dVnpQ2H8z<%e*& zwl=ayxq(|Zy6N4A?Y8x_?K+B6=M@V@XTHZ!hdGq*VH^X`0wqLDBSYNyGbGs9h#G1g zYW4xzi=0h%Llky?>R$HaEDvl_;s>Oi_okxUTe7BBVDU~GMVr#`SmHbvUQ;j_6!Wc; zc2u*S-#*Pr{AI+7kvK^+I`DSLVW5iRgN=5haYB&1t&rfbA7JLmkC6m4ZHqKn2~A#n zq8jAP)|GI?$2F-QXXP)_t6Anm7qy5dtB?Lr5+>1SU^W?tHX z{+V)VK3O-V{b?V8xuiH%0bNuEZrnEldxwXwXLGh{98d7*)~y{JCcC^TAGJ4yKD~+h z{+&`MF=^IBd4-v#S{?-+0pstGAM^8kh0Db8%Zq9ntdAw$Tdr^S`k7b0f+K^Zd(-9Q zsw?(>D8qxC%Wuu|?p)WFxEy3oU}M3SG6nLmnrJ;)`%vFgEZ{_R|8n#iT&CFGPeK!2%@XM_hfAFEBd@?I1nCVP zWl8u>b4WeW$ATGx$QcTfjTaV=kHLbAhim?1X0;EQ3^x&qbw^82Pp_g>H#QP}PsceP zDHv>aotjf&u;_F8FbP)b0Ax~5KoZ?k)9Nc;Cb+rOE!=lHss8R>4O>P*JtLUU)F_3F zvg0^}v1V9>f@P&$PjhnV@o({CcPTW6MO<^7@+VpA&A^2xqVMMmUnW7vlW`v5AuZ1zy`0dOvo$w^uTnTg zkvL27qe&s6g$oKdQ;!sizSYJoWsO-fwZ97uoANP-#3?T^h^>{_5gXhJ8#<`G^z8}T zmaHxqD(*PJ$iM`+dDdrnOzbR&tK?gH`*LFL(q#xmMnx8z9&vTL4sWX`sav!L#2+W_ zc#6k>`dt={z4p$p`s5oaKDScR>G7fUo5ZkIhnPu|ui4r*Z!Ie3;h0%+BWMOMS?=Bu zwF9}SXlGV_4Gqbi=sZWexo!W_Xj+Zwu^@TfmoM{5ija~tbCD2-Fm41!7D*TRl+03c zIQ_>jC$e1fxp^CNh){Uy*p$r8eB$2E$z3p)m-1inv?RlGg`KU$!sHU7U4oD3>0fJ2 zd=`XreWo?zR#j8gGJX(a-mhDujN{-B(O_MvAh)_}7B5emqsSZ;Ipr@x#r=y8`y`?2 z>U-c4?5Ae2iH!8ik|K@vO+40W`T|QNhYWu1byt-tgkx&mrsd?rfc@#59cOk35p1-w zxuDa9xU``24lD6JR_J~=YGe|>QVpS5IMs-BZhE15`enMUKMH?fl^MGnq6cP8?xoW* z7E3=1wse$epnhzTI|dZpbM&XmxGT6D?j=9c!88^3rb07`0)z(&W zwq6`WQ29YI9{{f1?Xo#fPqBb1jV52JiAEf;fPEKc2M#TK&=o<%LY(w=>@b!dd9ziF`v7(_MOZ#;nf#j~V(#hgA_^EwTZDy$e*uV8YG&dHAlF zv-Zi<Z;60MEXUCfgc@w1J8&Ri%aZMW;Q?<3DDydDh9z9b&mA7@5t`yn%q~OQIcNg zDzn?|qKZ@X*KuJ#a!(A06?9hlxw+<7FZ%lK56si9TlYFe2b@`ec@w46J>0IYE+IBC zv$E7KVo#C*|7Fiuh^WGDfZ|sAaHA)VB?%+pGXe~R>*|u}NAKeuM1uRh!xHLd4&CZj zU$1GoPo~%QpEc#b<98SHSepI|bu(sj3P2>5CNbb;fJB zMwho3v$Iha78u^Zx@$|b-8@Ng@|xXBh>@*L9?;=N2MGd+{15IL2yf*{P z(q)8;ow1)sR)dCdx8drXCmbotu-Vqz#LE%K4J{#el5>d50Aq15_BsE$Dm39DMFgp` zz{pZaGq-QPalW^=_(L=OV{V@}jU5F0YjIuW$vDH)o5jela3^Zi!|{XI6TZpBC3~j} zh4&5rN=q4TcRUF>vwV8W!VASCLQjpNnmb2VAW5W7Qv8s8s|*E%06Bj&O%p-z&#Zg7 z%;!FtTfEg!Y>kLvETO!FDS3ZnhjqcF%Rp;q-g$Tvj$`aXsbfd+`279N>F6e{bGx#M z+hFmMk6b0rml2yt?-7Dj@_z9Bb@Hn{{61!!9<&(^V&6*Cr`qDzj6j67SsMLaAvh*- zcUd!B%O#$tBzWOAxsJl5>THmCUy^MnSlJ0a+7lDa%4Tn22sA~wuuyhTLH66bdnm!8 zvk?SK2+rf7oo<8k6M=Ov3e-$`>LIkfJcI7zf0l~h6`vBi{VzqDq% znVM=wC~k zwvG(W;O;$f?b>zWBr&v5|)^7@3!`RaKK)lDbX)=%J6xfM7hn9axhD;n913 zuLkhy>WsBWH&$}qFY{)hoNhtZ(1c^`m%O>q3eLq1zE>=}Jleji3 zc}g2NHk2#Rg=NO6R?Ofr{&{GXQ4s`|UJ7tVC80=mupw()!bVn^GsWHeM%ugToo$CA zq|B@tY$DuH?Tx^xQO}sqf5@m4roi#!_AliAJ6FZP8%rs#`-X>q9Y)K=;2jA|GlQ+t zApB~13@3Eajj&($W!_amWozpzqeyv&F!FF3r)AuFh*`0UlU$aUb5D1~h(Otv!J%u4 zsP4P>nRSz0f+UO;lC++4ZpdeP#5D`6S}22ZPB z!pAN__H7=LUXotn%pk0c=wQ$q%X0QJb(Y*6T)8qWcI4OW^#CXuuJ=~=#hZiUk8@|` z=1m>ol+Mf+_#4X(e;=(q!OI4dp3uU*!;_S*j|munazP#Ty(Sq)cXl?fh-X>~uXZkl zqQkbpAUBIl`N7HLv!Mi&OGqYfsTX>1%#G!NbS*ZeZQ(>d#H+Q&O&p$ioyL;VBz+oz zVtX*CbU>vud|P)oyJ)_vV8>ve`l2aRGV5!#@EQNX0#x$r!K#BWoS*@5W}pn=t0WZp z!LX=@J<XQwJfu^w78g)O%ifRXE)-~W)wY)k0njg zeA_Qxk*q)!^b00m-@DB6^*d|(kwEix`)@zhU}1d3Gx+$T zwHJqUB&fdf6pX^|;q!HMxrQK}owe6O6h}!}Gf*q=p8^6Wp|Ivh&TnJYmdEK5j<`N4 z8W`1i*lVll-%XI;XcoUux34+d`bz{-#Zh|fu@2@w41un;wqPd2hx>;?AVD=6eHG#) zc5cL`bwBj`^M^51;*|Q$g@7pJDDG|4d7XLtoE}&QPs($A6u}3$ILw^X|8)^nHK?8LA4Ord+-eGa~i#8KpMp2R4>E$eGf=ww__GDUfhl&-Yq@ncwLu zL!hm%uY)8D*qww>st}@uh+SfF$FIUvRkd_JC*y=2P}Ebm`}h{9tc$ycC($x*L4RXE zh6@JT`kLTE*RIgHQVvhz?$vlT<=2SN?bk8LDerJM6OSOF9DOtpG1rXhjytSi(Bmtt z_4;^X?YwstfW#L&GmcTyO`d_pbPqum`sem4L?~sjLeIi{--H}?K%0?EOn`=^{Un)j z6+0dc4**TNAy{z!b_Ta-1WYBv7K&#{`XVV2oHu_GIBygVu2k}s4SoJiv6i{pUA8ul zRqk6dR6s9aCxZPweU~PHom%;GB}wtDrs7rPPjGQOJg32ooT=T2Xvs3B9@VBOzDa+n$Gm>;a_AV)23_s{UgpBrj`0~k+7acQQF%ElG> zx)iZq0Yt%O$0+%`IcvsqIpBuRcP-m==Zl?;z}@TMh!i-E#-Bc)Yu=7h9_>1Nhf zR-$~?Yk3{R7j{Xcs?M)YsKMtO0H@`XD%H(nr5Re}E!s$HJwRAgEIYGYqRQc%qG^+5 zE4CYN%l!>8;i4>4rKZ#@(T})PZf!-}ch`bl`fhrPXcc=1UUE?*ilx8CxJGdkZ68Q= zd$U(F-D4%qZ%=9+j_FJ?@zE4bIl2xDOz4dv-K{Z##CiE+N-K-GpQLC1Y0LW+ib-a_jr7qFA4b>KIY5e3Qw;R6g;88D}nuxZvs`ve+v z?SIn|aF%H*%8FPHKgHV`YOJRPepkDCU*F@4Ja>xq*&5PLivlrL7uR!D#Qj6X?Gk&> zIae;E2@&cJcy6xt!UB0Qa@@Mmk$+fwb7yQu^AMbUu$cOMe1lfB(B5HFY0qerS*JC=|ch8G%twZhSN z8xeYzF6wr&GrIU=qJu7>o)qe5(RxJnU1_lt_vS{wpL^Uq>t7acslulZ!jfaU$tHZ4 zcI*#rY{5y>{jyJ^#xbRfU*7J&`LD3gHITZFM5y(i*{>+i< zbA`duWPe5ENJC*A+1*A1jw-FaeL0=L5q~?Sj~}hYugLe>2Cp+YB8g2~xu3a30@n zl>D;&M?Z1My9D?%G&Fvh7Q;^`=HEwqgQ33T;B~c!qi=(3xBu5#Q{G1IHfyywre1eF z>Gb<32wG%hGy{lKSW;u#^8DWhben@5zmcKRGSFq~%RQ5>Kc;3=&W?}XlwM5{b2Jf6x9{?WU?rW=76ILI+v0@Mt9kq&=nlb`gy*d2jMywMupDgMu>U3 zJ$8`UeoJLaN73Wy8~PS-dSg`bI%dFLMgo7M3Ml#F+3qd-*9I@~LJ3c4P=N(tEFK&_ zW4|=PvhUeJ2n>X`MlGxI#&&9ib>wDjz09O+-hTdf4$K56T=*NoS$4}yU=iA5X0v`> zyg!Z>DB&!4ZBS#re8B(qzM>qowL3HD--j?66y!xT{l^@nYvT_X?dvZPPB*3W$VjDU z;3(T^X#a*xVbwGKJ6$U(8>|tt55qMUZXO>}{JT@o0=)Xvyk~s3s!KL|YR3+lHv`3y z5j+5?sNLb#tTnYBOR2dyq%Rq5mMGt5%UG8TZI4osTudDLGg0&>&WwV~zz8S42hyEL zN3XEMCt^yna=@`PKi~O0EnGkwj=9MOHU`LKH_)28PlETdIdr9o%kQr{I;6fYZ9KC8 z%-K51DgHPYjtvdyw~fvvN7BL~KM49~80C7jL7DB>R00x(Yn@F}5)u5s_?VTL{l>>S zme*JMXn?z8?vY@3|Ig!xTp38w80StBmd1z1l#U1MbCXICAaC?+By568+4&9Frr#Io z+5TfPJ17(%a98^qLHg+er(^ZCHJQODDsoe|AppOAS@lCXgFR@cGoaw}Wn<>g=wLl7 zd1s-bptn0^U=D{hmJkJ>3=kM0ZN3K7TUU|MK}P=Uus%m<0dj12!1&siu!D)+U)c=# zo%WtG2ly~LCxls(pbqnIucu;$APBFfI~?^rb=UJ71WDgR0heWCvXkI&KN5fihj=EW z>(O6Xqfh|TwV52jpC+4Rr;=LCo_jnHz@g4{Qkfh(0im9cr_lVzOO8=kQNi^58uzy3 z-1eK_p45Ty{3_8J3yVS`obs8|J)8t+{OTV+$zugAmltJaNIwmUHQr4W z4^O~pd*^D(?0`hOU-2|(;^E}a@W>BfDfS=)7vx%|gb_Gnk9?Obe*8_)e`kqFcK2%? z6w}-Q4k;IkbybJ>)&3m3e?cmwjLfW6W(_R0O?k-r_6>u#UU?Bbt2<^!=FV=qjDlT z=P|+EaV#xu*a~3ropyw5EaT;<@*YU&Xa+l(BUl7wKPF#{D$R*C*?CWtC0Bb^TiCd4 z&EjW3c%b#UO27+Cj~p#fqdMfl45-De{ysRG@bUYIx;lqlboJ!|Mqz0kr2slBXBSPC)13eI8})^ zWX$_)dD%|tuX7_%VaVvk?Q7aRom=PeH3h0QMg#V7<_o9lP^p9&JYSN?MnLc}xK>zB zG%3*4LOyY@@h0^d@Rm6Ac@T@z@diWnY@tqL#5tU;zzebjb<2sAHq&{a{GoL(-e&acNtR8^(aR zEm6S!Ox0^c1BZ^s?;mv=JZ}HP0QVUP?Sm*tRN_5^2vweVdt8jM5e=fqCZ4%}8<)QV z=!|{;=}~2*!#Rh;_iA4sAk8EkX^LLc`?j~vMg*|$KbPkL3|^;{?+dJtD-IR%6&2MJ zv)>vDi2U(WKejCtSMh<^S;shSj=au&-OQ|tVUzi@JZ0aB;gG~R+8_Rm*KCA4JG*-J z;=x|vhY&5GzTTXP`E33C`oonzhj5tq_KK_4_V~7X;Pzm>GgG4MDaZJ5L)Y6b?d*2! z&imfhxA`~J_j=tsImNruy`jCbr_`g=E`=kOssTKq5pon@7H>rW;fvINSb6lO(o;jvuhAu9SJ6jm&{GcEd2A9j7h0 zfN|f)P;A2|BfM9@;D$c=G5}(MoXabKjR{b&bEXQQY*J`|NEW(b%EbaXSdWVZ?8K!9 z!5_*d6Jh~kug6d`Bpbj5oL!95q`(D;GG2!WO~n(SNa7h`RxRv!km1b^7zU-r1>kak zw^+ej1kvCv1@?A8e*?S~q@;mUX`#5Xw<sfHp#af`AK0 ztOEWf4=x-Py#y{M@)k&y^1tk*Y!(~1CSPZp|}g$ zK2YBOl=q+V{4ehC%gd@GSt)a$S5E z;J<9+zf|r2=R9}gYI;GWK8=%Hnq60tKufPLzxX3Af_BacRr88Mw?udz0o~Xn0@)PMrPK9}!AM>mZ0yw{9nkOSM&u^U|VM&MeL<$H>XwKf*z@a*dC5xL*! z2n6IF%m_*jy9q+-Zi7HfPg3VT#m6}X+~#F*R}U- zi|y^F4M&DuCJqGTQqV?6JcG*7-6JmNaE##NNWAoIA^`lSiCBx!Ymh@RTDSUv#X-{x2 zUglXouPlCZ9_v)+k3USjG?0oqBI6`4eQ~}89viLd_WF*$^Aw)Y0hx>u^`bkIsC_P@ zY}B#_e^<2;XjXPDvgQ`($VShJ>}GtMXTx537cSsXskYgT>gn@!tFII%eO zf`CJl>!dKr=DwB@0czp|Z?SgX{DKe#bAi1^=<`rCo*u>;)ihgjna}~AquU*?KJvIy zQM2G_&A!L~_~wF81;YR(AwN;R{p#!&x187FRY!xnb9{|}(ajF_*;SIEbHQH+?9fRzIaw2LyBims3{c6L#b}r(t=_w{0dBztupqhS zl?;sTjfBv#ey@XEo?~$O)6!AFP(sFHwMy#FhWY3YfAOsoqD)U7I^WKzKh#4tvc$1X zp#Ev;B;s4)A@*}qy5u&Kd%JD7^DW0|fT}U?b0ZL@1@Qh)i|Q3;U$}VV#!+m2U^3XE zDg~--C&>^8H-J`Iw1wdxopw`Ng-zuS1RiuYZRCfU&;S#4(=l7-oa{+gel|=BZV(8M zsQzxWm?a|lYV*|vz~0R#N1JDk@^O1`p^@9a$I}8})RzgIw&zRhwk%A2mbD=nE+au<%*gq| z00mRv{qIg3h!MPrfX;Xh444GaAeIzj8?JzbQho9@<)QmP`(b@hCK(<4pEjf|bSO#U z`I-_WqhM=$;>;nj?HiHNz8pak$ptJ5yqqpU9}s+!NUz(g5MlcgNQ_m22nC*mr(CqU6Qb+5I_|2W;M$dr(+Nir?s-Nraf2NpGzV2&byod~a<($DFMmqJKJ~j6 zv89R8z2U?8^mGR5SCtPD6mSfC;r*9nntETsS10j076A*0IIb21wp3l?P1BhY_*~Hc zWAtyC-k`#(7v$*93wfdOqHq&h7$18?BJEA)UX3?edhE|H+uT>U5B%)!f4SliV@a^_ z4H4J%aKTHPgmtQMvM!y~c0@~U^6-z5sZ)eQWV9}+aP-mX&Y&xwdNx!Z9j+>f*bA+T z4e3gGCMx@;^gdH+%qU1A#F{KF=j>e@7ISZS4}O#9Vgv%FLR}D z1z!@ltL78*LD0wifcJ~xluKkVYgbHf2(+(|_?Ys4&=d@}ERA8a*AFHWslH;;;NK{e+qg)h1~W zaqNn~ui|NmykeRx|Dy~Q3_cn+MD_*YEMBg9ar)zd(`@`?zHNhrtl-<3(&$x zt4}-MOIiC$f$JZeNT$yIWp7N;H$c%9TUFwCIzK#|%yc^Wa~+C3{9rg2i8Z9`;B<1_ zp8nH52JK5o9Hz(?y}Msfy;zxiYRHi{0fNSMQ_fY%Pb4x<_T%{HrQij6_pMsC zvu~q|31|6o`bW9|zv+AHthYgdI<0tsQ}p@SD{SLmDf(_eA5e_u4jq)*THG1`{@$4M zROg%!MN;ZVOkdL+c;k2&SX2JH#vFaNP+Qgm2k=WlO>4VpcpeL`kTQJ{-4D*oa;*jF zR4PwQ88D|82ixz<2LuX4qdR&Tax@MKz1fDwSH}()WiQs+L4p|)0L6ATroKASr$^NU~Q$$AX1E`uXM_z&D7NchymiG=S~EeI49)ogzn*VK)A@Vd@?&tY6El~@ntIo%k zUteE)k5x6)j-RnG<-o&&x$1l|+^BmbBnj_ZQ)+vDtApD=}kQGab;)%(0 zu9qbaHhk3aTwnF$9oZZgPff$VY$?yNM*kL$;LW}RRkTsGcp7Q^^R%?5>3`u`AR0gz zdPl41CvuGpt=xI{sIw!UouO9BunLYTEM1cjC3LF6J$M1+It`n8svNHWWh%r0d#$_c z9dg3^vVVfbb2M)t=4T|>z|?&yw!GZ_;e$mZ2c;h&CXaQIRP#?501Dgp2ue7{q`Ki4 zk6V@Iq_fM%_FdxPhVh6w_#DZ{#$V!B-gI{BHNVu_un&~E)l2pl?S<*1)XJcUJ8nUw zo|np<&KH9qDNkG6`bScBkg_KOC13J+4j_tGAJ52DQvLxafIDu10b)-Bi&f?Fopx@I z9vZcWlzGp8y>{iT14YM^`onz^iTyud2n6~udEb3)=~31pK@G{H1>?Zc98V75;-x`; zCR#r-OgrQSclM?o{4abk4mm+!b%VNzmqa#08E9wwL&e@$5)x>Fl2> zjwbxwaViLH7;Kk*dE$-JPKTi)hZr+<6^i{ZU=Y)rGn____0l8eD44YS2VEM6OeY9O z-0%3PQ!rD%|BQcR(*qKByw~J=zAqB#fQ8EW&vh~VJq-{wFr5*O7lttmGE=vbpfi-H zf&Epf%xoDGcC1^|%|mXGM`2Ve?@}oJxj2OUj0X1XH?;=6-!UEZ>91YdaR_r zRDG8=|Ni{!-YmsmeuzaF%nCjuobNkbEEw4V1}fYQ-|Sfa)!#WjPaJ__Bio3_T8*)y zY;i&U8Pjv$e<7qCVEphHeh^~k`>6LGd1~wY`E9+ny}w%xgCY-C+IVK?>$=XTC36-_ z2d9r~*}izy?9X+ZBLiiZWbatt-w8q8-f0p2=Q#xUt|-)gq=x(9iJS_`TmSFgQ{h4n zastuh`6?F2gS`K4NCL zk04n6w|m7+MG|*VZFQ#j22uh8u1qKhUN_EPBSuc)SGxlbKUaO(Gd`BhE+2A_Q3k->8UNbzDo&qc4VQUB_5rC;zGxg#IdL+~JVAmnb-}v+!vDDy|bQO2~Wl zan!#AxZz-^)4MiYz8f^UjH+56-4+Q6z$4EAa1>vK{e!2Sq39Ehm|c%yk=jZJ4dK_o z{u^@D9ehPDS5f4aTe;FdyBmN#)E%R?^;&#d-cmJ7h{Cyo=>g8<(G?JJ0Ui&9@iD1nD#)%PP%$_^prYv^-BLt}9K)a#3D#`xL zZPo*R>X#ALk___y2-2qqjV3&iwn=onlPaEdRt86w;17PVb>SsFW5$S}UhMDMjsA|8 zFSKQr2ku{vYVNp=5xng4t3;^LY}A0q8_K86ro1z!z(EcsbFY2-uQ?)139J&J`?*0I zzU?uW8@I;lnx-i*Ea%gFb)M;wJO>p#C81`Q+F?7dr9J-~^&kKiflWJH*Tu?y-qdW1 zW@?ynie9JyoLI(p+R_#mk+SRsNjTRj`ld1$2zvjdG#9>62BK?E7KG*0m8Ndr6l{-W z`cPij5Tg%NzY$#@mEijM^B77{0@+aqva9vA_9+ht{u*ls9RyOr>qUimkM3-Een-Y- zrCirH#_i032o)^l80haA9ojsrRj)_=L&u34XuK(8>hUl9Tl^{NBgBg&a+k6r;lX2; zH%>pb3w@vk?QoRTtAbD|k2MJzbSh521mR`wpl=12AS#@uS4OF3{sqJDL?DSXXpq6a zZDbu+Lw><21-qJYb7`54-p@ABT#IQOO8 z+Iau(t_1<3_`E_ zrj_ict%vr89h8Npec)!iRjZC34V7K&zS!4g6Z6pwV2iXdOQavxHdis&0op&W7cU3t t>QYQrfy95SHMFh=PChiQ0QT^}m{x0S}aA@O1TaS?83{1ONk+w7viU literal 0 HcmV?d00001 diff --git a/template-no-theme-recommended/static/apple-touch-icon.png b/template-no-theme-recommended/static/apple-touch-icon.png new file mode 100644 index 0000000000000000000000000000000000000000..8286cbc51818dd58eedffed7c5babba6b3414d5d GIT binary patch literal 5960 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 literal 0 HcmV?d00001 diff --git a/template-no-theme-recommended/static/favicon-32x32.png b/template-no-theme-recommended/static/favicon-32x32.png new file mode 100644 index 0000000000000000000000000000000000000000..4407268b61005b088f76e517211ca00476e62cea GIT binary patch literal 1003 zcmVzL}$B=%q&D(H{F9i@S+I@AB>q`1S26rR7fV9gkYc&36Tw^ zE-|ne4bvE1hz}A?ATd73!<4~j$Pn%9tW0K!rGLiS(fj9^-g5644p|9leCY4#e&_to z`M!Mp-QVdY+{PLj8WMdi{%1k7jX{@1#=C)*hVO2p6{wh^a5!9G{vG?)v-3$1F09rt+Luv#pI zG$F+*4~SyLdx7TrFWy))Pr#Y6Xp2PBHUg~%V9sy8GLzAWQ`1*&<>tJ+-DX3L#|_64 zn;yT)jL#raPg}F^7d@y6U}o{uxyWH6tYJXN$CBx3jd&)LEsFTY&DN?a-0gA0<*o#G;Fb2abLaH$W8q@iRpAo!zQyCzQ(yb zOAzS5hUcE%I`0tb;Op;)yHr)}(ed8kTS#APwEQ7IUU+G}L2|Ia57CK;hU>jPY}(vu zXkrM==`kCQ+BsNrgt3;iD+n)8{}t*tFh2g(A<4wM}zJ5YAu z|LZ_bR*YG&bH{e1l7;`15BvRidBZElo!-~G55G@LX!rrI7oA;i8o5tC8o-&+!Z31H zS7Y~{z1nkr^qNiL!n0s-@R%)Uk$+H`{d1G!&OZr6qZL`x6YJJJHKU6{C={|?Oy|0% zXEM9)JmtSTI_*n>Zf|W*Yh7K2g2AA$>iM<9%xEhGxpDXiCy##lX*>OP;nK>SB7IXz za-GXkX23f3 literal 0 HcmV?d00001 diff --git a/template-no-theme-recommended/static/favicon.ico b/template-no-theme-recommended/static/favicon.ico new file mode 100644 index 0000000000000000000000000000000000000000..b7edcecf45213146291d5afb882fe48940d29e4d GIT binary patch literal 15406 zcmeHO3vgUj8NQ{qJ^-hRjH5VOXXK%1%TS6IDF$q@FyK@r&~c<9f~EMVKs&>rNNQ1m zOsUhfGi{m_6WX*%^CIu0NjA-Mv-j?99=mrpx%)`6&?F^^I7O)r>GA(=dhVXRY#yX( z9>cve|D4zVpZ`1Oo^$Rw|M{;ZEs_>X%a%zLE|;G8m?YgQNz(G=W9b_{BT0uT@1~nB zlwT)F%~wm(4a7qtBr%pxLEL9#FtTH~zi0P!Xk@Tw$J?ia&cQbWY&vv?WV<}_tsM?q z*xhoHeHemFu*i9;6||J4EYf zT@zFl_V?sJvsEj<&R$R7&yZe!=XZ5N9C;`M57LmaDYN*nVETc>4`L#d3~7aG;}~$y!ohkl&Age&5YBJ?pw$1ynVG! zPyhCDBOm3DKAdQjAp$uc%b+9v=$E9j+|(5Dd;98NpJgxa+^*AsJv(Fe?J3F68)b-#a^U51 zs6#9(%}v`KPk+(zgEtf3d6D-L#Yc;eA6O}32zA;&uX$Rv=yy802e=e@nn%{4lVj-h zIai6}4(F(8>1`w2<50lkh}j1O{jOWMemVy%rZdrzpz0juINI#htfu5>%)6V;`=~BD zLg&W|XTz~Q?kJtXvKdpBaQ!^&^|swe=dw(~@IQ`YymRAZSZt-oScjulZ1cIGM@|d* z;yAiG?2OhDow_<&qIy-OJLGfzDjc?b;-Zws5!N*AsYka%YDIdjCfB z?!s$BpN>5e@qV_ayFIH{YiA3I`m~Otz)ow=BKp>BrSFfiCy0J~X4!T(MO)zotXqK{ z>!;7xdKKC9lQggF^0^z&VNWw3$=}xW9$|EnUGxQD26p~u`BV4)#o*!m$m8Wage>adJP4r!x;PI)?16zP zKVx6am@#ALY1)_9;#{N&l)5jOtzENx3-o;5-PS1G>z-7JjS$&11qEKk;X>HGi%3$2?c8_0w8E&11q^KdtrC+P_)* zPxCCW_78Kre;{AmIwHDfic-q%U3AV{5pz~rpKu#1FU*SJgUq%kAC2L|xe9q=eTYLA zb%^IL=zuOWFQx0u<7B*aS#DaR*}i~t_Wc{a$L?8oyFrN?f52W(O*ZbExXd%Z`Gvv5 z`H{!Vc?en5!Fdou2Xt{B9s<*Nc*Xpp+|(QCE-uLBc$j~5Kg&vgm1U*vHt5*lJ*?>X zfe+|9k-694;rz(sb@33gsDtz9A?biF&cj2(h7Ii8cV|BBM=)C?{&&%*O$ z|4GlxOpfa#2cJQ;t?{9j+QLvHY%cSVnh6^)a=WM4|Di7DTC$4{)7m*I+Fs^U9N2&{ zq&n^pu_GSxI)7%~A0kaMF}9@HY!7tD!xZY2A2#Es`~7bc?>lCGt+VxlpLxNAV@kC5 zO&G5to8%+}dm;IvvTo9C#uM}@{|R@yaWxt9(3pb1?tR4XAv!P0b$8fVduuJLCEtTf zJ*TUS;a72zneN`v4q$56{7NEW9rrH$jK^~Y`4v1t?d+g??6Y)dAJZ0mSKympo_Bc0 z+ESjE&T31tSR3IsjTz|v7mW=U{QOVH`3E58B?t-J50JmcW|Ge*I!k1{OUwcIfHYMX zFx(SN_nlPazow5R_{4l*tiU(Jr(}gy=RZpQx_Y=-`WKwAPn_iZ$u-k|yi zNvGjc1pOGV@JFjG%!unt1I&0=O*A**>k@-mmEVUC3ayP9SVx3mFym3&-DsV10{KMk zAq)W`VSdQ^`)EB?s{2R*GYJ3Rw4N%_@6^Qc9r7vfQ-8D(_FeG1n##W_Gu0sY%mh{Y zwE>UvJoVd<*q^|N_rd=!LtMl?#_J4+eajf(9Q`BoBK4z2 z@8z7>7E}CPO1tqt(WUT1iid5gdHO#{Ugy^|Rema \ No newline at end of file diff --git a/template-no-theme-recommended/static/fonts/vendor/inter/inter-v2-latin-500.woff b/template-no-theme-recommended/static/fonts/vendor/inter/inter-v2-latin-500.woff new file mode 100644 index 0000000000000000000000000000000000000000..ab8c2c103c2bff0bdc390f48ea92a96fea19960a GIT binary patch literal 22404 zcmYhh19WA<(l&fz+qP}nwv&l%JDE&u+qTV#jfri0Vkckb-uwRRuXU>Tu4g}8yH|Iw z-rZHlT|rzN00j6JjUWKxziXr7xBVaFpY{J22~ja|007A58*};A9vB1|WC=wDm2YeZ z0Dw6H0GMD4Ez(&fRMdn40Ju>A03H(nAR)w=jCxg2VPFOTaK3o}wQn^DNPE*)Q58}J z0B||KZPI^w@v;nTY-{N7jp+gapu_+G)P|rl7lpZ@^EXEL^P2YdhFGyL|Vb#Wx4#AMcX|(Cgr2`dwG!+ZO=hpIU%N1$(T)4c0>o0RhB!?=p)r z#k6|aq_vV(NYTf{O;DMrOrNUI3pE^G&qxG;0IDa5qRAN;(5}JYa`v-#J^g})qoX6T zKI4P6SWLTdcp!4rE~*bO~|Db4aXw?u<+S{ruO zb!(M}-|0t2cSS9?Uu}9%6R-FAFQ30_)rD!AlV`n7{9EuppVsNGZCWzdvM=)=Wz8EK zm+4NH+}=9o)g0ZMJDy|Twi-7|Gjh7CzSN#dtXRG_y<#6QC*RJlm#1HIU8})9aw`n- z_N*$;s;JL;*rIa2MvASP@t;CtioOIy(;^HEj12d83Lqss3XlTR2Fc-X!W4j!6T${b ziKxaT<)M`mB3O&aK(NL{%^Kp8ZA>U2xW>fnB2-eGRP%_F%Vg0il(VrHiqKul6+pEA zL@YHGqGX>+b9Brn`oWq|4q#40iZf-@M;Y@rrcLP{G35@?nuAqpPGK)KgiqNRLUgVS z@WVUAiQpblQg97nO*;le>h3XXw2iaXI0t5K?6JFh^pgCz%@Ft%hG`T**21|LL7_w% zGMMC%pgt$%HAdn|mYbBM>9Pv|Id|IH|db^meYx3X7vq;w}9Gqlb>sc&cE>$xwVP+_34Xe44K0`0K zIF7b@I(thx(V#9gZkbEeBxJ@2T&%#N&K9Z0`Noz+mEb+rASJ$jYK zTXc^ER{a-+5WOtNZ5dZWK+^qq_aKK++opp3vjbtWkL^p7uOe zAD^BC!A<(FE=%1UT%1v=1k*pNQ|9N}EY-9+t*TKbghM84a?A_j<5MEtPFbGHEnP|> z_)dqKPtEwM>pFP$A996zXnb=g@41D)N5{a?AmeT>1Vv%Tif!{;{*?u!Q=|_@E^3aN4 zbucbnIa?|BnbxXD;RBD(?_%}S-$37E_spt^|D?jDrggrwtTZ#TozT~C>|eu_Wxbh) zwnuAyTFI{X*r(2v<;bk7*De%fpJc8Oo_^}N8qU!8H51-5V)+|QWbT-$>Q>FHQ2KgO zJ*OHOYv1JmMkuZ_{;4+Dr+Psr(-#MP^u%TnJVIM9$1|QxA_rJZI_ZT=V%|ck(xroBE_NZeZFPV56rpWgJ$WNd)ts$UFQ5q`oJ0`9L6z+Zp@mnIVxvR zq<^?Lw(m}iPWRKg@_*_dmkjKC%MpFs{IhM!6ztj-y^w{^@&Rvj964F`9ms_l6CF+Ln}`*oY`6e z^8K0OXaXP{Lld?CwaBdmrL>UmLRHFY$~7laPf0ie;AGrc1Hq?)#ss)vA>x|$5+#Ws zf}O7+@*N_p1ue|F=oOZdREN!X>5q8fJKvevySceD{2sYXC?t8QR9l zc3-8b+QZ?tM^o5xdzg2BnAaFNoNYBuR)9GtPv|OC0Hm3mny4 z?AtgjV2RwUiDIb17S}ez^T}c6Z~H`(P8TQ>Mf#RR7TCB8dM}J4j(xoPKe|}&a=D85k9I{ z#Qxf9`D5ypf$e1#J^uydi=QZePfPOPi56Qu%9nZQQ(Fn1NhxdN+#C{rq@WKIAS)9@ znWgnk#C93@UU>R@_T4rK`bXP)X*x))bH^(wL3PoAZ5p;MfGcg?`{5W^8R>foR!}#P|x0(Rt zJ$)uJQewiQ0u3pqKXp3xKz9QLCh`mLrR zI!jY^Y7*gC;IB$mFgw^(olbFF{(EP&2UYdb2iOC(591>GM%&^EEfZSe+d2Ms@bQDs zS&lOoGIqD5RXbhR`&L9l)U6J z+p1DUZM|tSFPvAJG83$zpJkfsDB`DHek7d>x6L3VEUl6Z48=mQJ-t6=l~_4t@#t}R z^eV~(n?pAHQA$e4ol3U9u_g>4(!}Fh$`RmFPbQOV ziB<*oaU|#Pvs~OLCKw8O)m+yul_Tr5TPCKh(43?I$E7}ML>?OC>VnxgRE0YrFFuv-Se*%(W_5@c`7k(~UW$cM{ z&bKe$x0%0l^({XfS`Uja{c2M`*4`ZT?4C)U0e*ugBk`iFR7HsfCu67s@@C57Y+MT! zcV!yK^JVmTT6z{17n*%rLG+D%)7&;*gmtRu+(@t z$Ct%1uf0^qk`;OrFI1k@Yo8b@K}L*K*i)g^W!X;dxk}&qkGsI!fIb4q#!|)wL%Om7>5-|NJ1E}kJ<~kyd(H@ zUp<0?MWt8&otme@L$`N}pH*y>FdmpxWs2RNzJ3pfvpx}%CD>2@FGYo+kQxZ+MUYIX ze1XS=-X7r-qzVYHAmd<_ZtcLD&7x49VCr;P2y{G7cQcsCUT5zEl(&O$;3Od5Y|}^9 zN%5sgu}+B?=weG2J*3vL62J0KobL@{c?Zepbq#TN+?o%Q`5HX??-o7ulZD;8 zY~4;VKF`Qb0RWFRmn4uRQW;cHdlU611KX#`+kbogAOG9%x7Z#p<(YfU2t0`{R)#&@ zCLtkCWZn;Vy*!5MC-gkqAIc=8-}lsV{CH!|$#OVH$0vl%@kf>9ZSVm7e6IHJ-20-{ zssKg!)O&0d@aXa=7l^pC9D^nszh&D&lHdiS0u4iqgO~Y9X(YLS25UkLvpOn7e+vK> zJlIz|V@|HtZH`@U?aqJHC_R(c%P!%zeG2j7M00#yDQ}oJvF~(ejpK9h&+{@cgLm@D zEwqa1Y5y@vF!^Nzs&ZY@n+WzP4<*!#C?(Ryn3!v&n7Eo4APDpFnPR zxtVq`3e^id=ef-BYL|tOveK3kZ$ak-UCX%SnjAIQZV(>+#>r+Cnbkjks5ets?uf5h zu+Lm7s!vk-_ux)6l)hw;%OD)u7OoJ{30lFEJ{M0sCl^!%Byoq*Njk@%T1JPwPkS37 zh?=}t^#Jwi>bgN6#eq$;>(85e9+?xgySnSxyt@OMrcIe(8Ni>U)L}VwdIocRG_}Y0 zcJsjXyNbs~JH;kC?RYDS5}_jkzO-NMFP|7(K1gyeblqdgqFN-xD9JVB1r-KjLT=*9 zC^bC^USK1Vx$B$z(pVwEwXkagW=3#poT=X*PDqm)pnL zV3+iP{DU?9gPV5!bxVltGB?TS)URRtVwp=NmCTu+W<|FdV`ep4cI+9OM`c|0b`@dKE$I(sQ`V6uo^NHoTRoNnE!%6` zwvIYV_G@b`_54lMw&uQ;-s^oyi>iE4hVU~T9jzhCdi!jNA=*{VYc+w~)s@36rG81ulRmI$}b<}iY)B3a~v1*^YSm<%@J}Fi8N~Yn9TsskQagAC^ z+-xcB?Zuo{FKbRzxjODA@1!MenXGryp|5ae+Fd#GQ242Csix-JykIMTidYgr2n~Gl zF>ApJ4J7GOPYH@Gr3eWcK}Z7ytrYN*J#`tPs-clUO^O^oNW;E7_N+QJF)BOR3&yp+-}!w5M2QHd~>t-Lc+k#1^UEJcnJ3 z8?i{My(lf??u}ll)l`wZw8ED8nXSi8maLXOe)@iYHZri7bM1%obb~p=6r1W1`9yhx zWbSotG%Fqc<23olytS8H^#wh8by5eNHdXQReTMcMJ8Go5^u2WL{hESy6SI6N29@-c zGT)*K-(u;jYOYFbx!5&00D^N6N!}p_i{3FBXJZ#gA#EQGhPJ*R8^`8G0g)FFh6Dlx zc>l3f{(mu&|3*q$%;+K91CRSgc3Md=wuW57^|Vtr(Oio4)HJr6U9$D`IX2{68aI_& zw=P{mH?`b1`CMu@H6VckM-ed+M8rqo#PWF;f`_Uig%k=;#S}|W$G@z#&xiW8NcBoGe7Fm&7yI#wHv=| zr$9KW=gr2rwb~kgdm+_7>U_@1k!USGRV~)swX`t2rrvojh*z!R+EcSI)u9o4F4kTB{b~GU zt*b-dMAo*NuzIO3Qfuj0+Thk!z_B2)EtqNwZkc0WljpIZxGdOg3Vod8UsE9PxI^-l z&HYn)kL4?`|0nex%~x*wPwPFNuY$mz*n5-@7lCC4_=j9`?%p~|Xd}wDIxSmkZmlDa zcb(pVUvUBi-fGR%Rtp~$HmeP$6DfLbtEQ>nMV;Y52po>vieV_;cM;3?xMCdJoqO4u zS)q-_R=e_#N~iNbuIWE2yUqW&q5t9XJzjRXeO6ehEtHx6qqf-m*RN^nf2ei;^&5)! z&+m7IR_C5nS}Y1iyH0>)6WjM5&^MKlh($b$)00ZI;-CiE)CAlE{ea>hLsjpM&E0}DM)DGoHnB7#MH2t)Gj2qDEBN)0&~`o zLKQG{dW&o4u4<2jq^Ap6963+Eq@`P?|3?g~NVG!xjm^w@bV`&v-B>5eU_ZvEFZB7W z#6H4b@oY?$WNIXCztY*cDS^ZLqKxq?!vuGHckL}g{eQ-~n}tXFD`7FfZ2tTiUSng{ zMw5t0v^?P4?QbVSIyKIcGjUC*Xp)yvhxMYJED?I-&P&FhkF}P^amu%rjvc}rAvLKS z4~AXlg?t%en;|opmV$ie!6bCo6qNUZiaC1yjN|&Q5V@f*X@E13J`9|prLh={KVF|T z-mW{|yfNPG^W&VRlCyALE7f{f_x#o~eK(`8nb$tue+l<=j{8fNtHa*id(v+@uJFYg zQoE)(XhUY1IVrno?ON~BSsm#_lyp_Tj;@gm^NvqH@W$uT#ne`P>D9NnX;vOWFQa(X zN|{B>fUneM>8>u>bmMo#MKh>5+U z=bScYUfwON-)4AQ+scxzmg3s+Tk&oR5~VQn+2uSRRD5=&v@p=c{oP^_u0vWwY)jFX zcD^ggO93Bc&m8An;)}F(G3O*p*4c8PqIdy?FQ~vJ#3JcooUGnPGRe+jZv02n3Dn0G z7dCF@s>#l5#17QQh)_qy9WIEH?D^^UBK_HcQ@$Z3pF)4M4=P(~?YpsVwY8_Y zgr=gu0yP)hXRG3d4ee-=Rm^&x>wVjd^tsqm)&9M58~ku{r=K)=!j0!u7GY^0HYo z=+^S0Q;3N1C5FWHnH2Z**>eu}N0|p|Ww8#Wjnu_!Et_l5Fi$PST6hF&B2_qH+WHj- z)O1DYOb5;__HkerR2LgbkQ^DQHzMbT;zoGZpS6X#xw5m+AcGq{6~3<4c*2dT)P~FJ z>gtCA_d)-atR){BM) z0RYX11wF%LhtCDp$Wb60n_n#CmwZkyVu=ctW1OmJrJs%;L!I9FfwN9DpNF5mx^yp@ zxVBW9C(Nb${>iGEar_X3KJC3!)N?!PxFZtY=pE3?Jk}0RlXgV%A3gKYIF~BtUmRib zp*e@qB`|Lvc_1PmU)4I1FGzc*cn_9oYz?~@5`L z?$>Eg!STS+fx9jUw708VwFav*s^vS5Qf?DWYs z#IC(rKteQk1~PGjHU~y3hZ{0IfRrUeHo4xA%MPGDdKWE_XV0>Jbs&utRGD_5ghoJV zYK;P#;u?Xtr<(TJXuNRKwC-z z?|#H)ys}s)u%`lQelU(iAZSB$%O2=ho88OIPIwkh>zq?L!Z^kV!32K%LxA~0NHC)! zUGT38SB3nZ_*!$S^ZUAWJ z_h~^UzSj%+_TIXca-(*W>_qc-l0>?)S=_o={v2wdE;Qgh3QYsk>W;+?Vmu_^1&c?r zQFUgtLZL2Qs&?p=;nQV?=K48mv*O39J58=q&hTkgU;4~SH4tbn8so9lv4g3b#~R&G zCz>E5;5+~G8zn?i%p4_})vYdwi*+q39?#|I&nv#2^K1|}S`_6;?M}XbUEnI-$ z0RU$kI~O1X0FcL;Ph_A|wjp9j?uYUEEByJ2>;75`-ckz=yw!ROSIs8=_j#pa`3=|s zJPSaw1FMZEFL{0)WPW~Kl?+&=%nBzBpjDrvlwua`tmIqnvDi*3;Y~_~R*$DvKTXyu zF0)Clq+Za<{-IG_xd_3|%FYfPA=<#Ta)DR1`7(r4)UW1J$)RQXvA9l<#{`~ds4Ai) zQZr=|**K(K*{f}>XI|Y>W0_-KMV7Lhf|IhJVk|&!Ee5&T>)`kEBBlEsS$W7`Sk`8j z*IScV$>s=`XJyPg$01ro*PMW(eM$uXF3fg;*kdQ0qX!g87BXKHNe;GtFuxG*KT&)n z1?cjkczN<<+@c8gu4K%H6DbC#u|f{t6B&UJ=BV8$6IA20e$^7D?DWZkG-PQiW1z*0 z(vVamGa4DK=^rVMfXcz!@Y;=IxX>3$?w-HEJn-RW@aR`zNI2UbghPDTf}vP!8S{>@#E~UQ!%dhqM`1e>Ht^FnFXIRipq!9%>=k@>F z6c-yy82kJuq!0})uV}s9ly3Z-U6_YkD>1T+ixSPn{<+ikoVK5jTR}0Xk%bw}8J_r( zqhf?wDvlr@sh)-Zv1+GJZIlO;doQG2E()_S?x7wPsiQ zdtFn|+QS+0)05&GjG_zcq>4p`r{u zpLb-M`Ae&Dhdbkp$MBcA^)Ga-BSGyQIKqt?@3>CaL}S;;Th}0j&t#?#^7WnN`=t2| zNA3uN50dW-#yHfgzR$qd4HVlRi`8)MLWDv&-j^api897Gk~YJzvH2L zv?fgM^`uuOmOi5m9zlmy2U6-o`&BU`nkd~`I0|(!a9zX09>H=q_?i18EkPW*(;;W@ z-4GRt_dm*V9Pjb+HmdOQt;)Ldam&BQuo5MobGxu5z^UL0_K?o4raMh$67PY#Eak*oacUt%@g*>ZAH2fxl_d%0 zL4y*bJ>pGpabDdnz-eBc!Na}nd)@e6N4~xQ2p((6x)8dk8YupEZuZxLN;{P3sPSfz zN|wXI7uYb+bDd?BVR@QLs-Qz51;60DAy5k~P_6%9%GC{~t^6qyO|{-%g{dWxl=Q?AYArE#MPg@W zWnyA?HqO>A-B$7}M)4mXt>@vtC-%w>D~A}9K=PY(F|X9=p1mdYof7Ei^#*8TK8@^$ z6KUe;5k;Mu9O_ko!fs~?n@Arvo1sxIZ>YGbj?i(JWH?7s(2F&gM>?@23;GV1+aml3 zaMdRJUBM~YDLj+p$>h@up1U$reQ`X4*jBq>as8NQr&UQd7rQLa*pG~nt;W&R!#c32 z7Lj@VMzq<&rQr^YhK<-{TKC`UD{M-2;@&1n=yt;Xm;jC@Lx^MpHL)g?f+&1Ch3 z;PLqu619%lX*F?}w$WgoqfXe7S&6Es4rf|tyE23~k6{OU$W^d{!52a7D!`W2LjdS0 z%k|>Sw?#;7iwVIk1C3=F;m;1hl(<8xANgHg8z5|7 z6z5)wF$i0~MpQsVve=5gg4W~qxIKj7>}22<`nqA;Km$A0G4I<0UNILJOJ#j( zUv$Hk4ph$zq)5OSYQz~@`UzaK!}5)yiHt3&c@h*^G@P9wFz$LFc*x&zs=-F#>z~t(}Tj@b#@_q5ynCIkn=z5HadI%b!d$H`UkH-(3b*W}H;u5=HXO zmSDa6Xa?(dRrjgus2267b#wexKlNxKvf>e3;+@(NVCiH|6KBDmg-silUR=YoZ{}I3 zLe=r3aQ&1-B}>kw>Zx?8T$<5;gl?_hK>e*Zne=&KxG2Nc378UdZnkk9+8j?=89w1qRpWo)^Cl@i7;_({^p4#1mC7D#P`d<04q5%uJ< z0W)U&RegAItN!Tm1r*g&ZQyDkplOc=MPpRm+7^H5E_p$i0pQ1Fo{ zb=tUJo&d!_$j0h#KHIYaoQGVY)cs$&{4lCD9MC@bIzP*ug6>fbh(tHF;mGaJq%o1mq(v@sT0bj5i$udCF<&9)-f0n$#JPt z%{J5E42qx%vb#{C)+(0NIuo?A>0mlCsaBKPQoNT&SV@e2C<0*nh_ z?Ou-|kXE*0)kMPUX?lZhhW(G!5L0-4K-GOZ4(IJSRm%z1O?bY%5&D+iHVss(`bCQAn3={ zW^Q(maAl1b-mT!j8h~O9XgVAY8^sE5Yh(1gmT9bqGJts=B}(Tr$nphz*wQ!4w{30> zXAVFNONbKp@j#eA+?sIxP35fYR4GtYCg88en-1@~y-iSIZ8M)$YQ($NO#6Fp%ch8q zWiu;qsL$GCFjE+n9yyog$)0Xl1~#nW%7;*_9CRA$;IB-3$t>({-06{7-@3usuzw5; z;1i$!{acl9#}tStBp%IWri+hBl4&P1EIlRrQN(RxaOi!ndkoyr4$zt=g~M z!(~gsaRaFGX$+py42y5sM9zNK)Hd~L;jz^ye`<^Pi`eaLWaUjIc5s?E_1ScKDjcs6 zyls-3|L8?u_Q$jyYlDifN~OYPayiY>%P76og7dJX9K_eqfCu^F2X$}-WIeHb$ZGrs zm{ zRV0d)k_hOQoAbY`c>2&L>+53a*Un2l(~=Anf=8$0sK>LPbZwWGa(hkl6J<=Dco}+_ zZn3`I?gIC14`gY_=?(hWmt$G3J~sC^Tz)dd3kLQb(cKN*fLVXu046eLg6i1yxJN6A ztM&VtQh5CbQoWb}&$Z?T)~J9VuWGOdf18cCAMx+IYbzn9duLHyL&B`9)qkB~zL_4| zIdEpY9EOz~{Ylxh+;F-73~)vW2}UoW<3vS%RlBP-G!X+6%??Z33{dwWW#E~HU#9cw zw3YGn8a{94x@Lj<@Q?neO@7<{r4Z)P8)F3Y{_b_Q&Vo|W0j+c3z|HUVzRLO=7GGY! z0eaou;9$a>v86~p%!j93KFq;-wBe=ftdc-2+Ilt%yJ>a)cfQY{9bxl-HVY|Ek&lF; z9_10F!1aWnbu3ma8t(2F8O;gq<8!hr`Ky189+R>9s9HW~y?wd)Wr+_DlSQd@KV3x| zUu(%4+fE|N8|<6b$;Kthc%_EZe>ajawAh)QpuGvajKjfTVV~6IU^@k=U0A{WVKp&! z`qX3dvOG0>l)-=6{EU~Y?yV2Y7SJDYT)T|N5iwpDeOOn5yyTHb*Z>jP?hgFBe=-sg z(P`ey64X`%k-038`TIa@DI=81$?X&W!#z;~5$K1%o`?Mu-OW;RC9wS}TknC>(@x2; z<;7ahLwzSn&|wA?r)1GVa=ENV)r%_SC=b3a;W}C)pKZylP^Xt8L({uK9I!nZYqejL zAA&8JGS!<^G`L#WowahK$_=Oq!dNGPy~^ z$8J&t!qn+!;nbQ6y|NJqeW6gtijRR8|7Fw9_8Fgl-ez8@%e+uEB)aeLMDapHZ&2Z2 zj`;N}f;j~r4w~D_8(zHI18Vkox;`tFVI{;_ZS}gbk-zH42N8_D$-0vk@1F4eYM~t6 z*_cwd*~ASsVGj-)j~+?nn_OV>PSwpta~&H$4dWNx|CPK>B>-S-?!E^ zOY-+(H$MdU=r3)asp5`i6`iUxrJLiu@)xDqLc52-jj)7#ZRV8^6>-pI0S#rS6*gzt z04&!D4Pys`;>A^aelua)`oC1_mE2%e!ZKE8O9id3VdyRiY)W62u<2ZjQJ6gQ?91pY zu=UIcwgjCl%Eb1GEMfs46^u}8oYMQTxJSm9ahIzhh>A@TQ>J9q)zt@jYMwIltMQdl z?9OgUrJ7exWt8A`8fN;Wp;KcDS$B`eG?}aRBbde`xP3L2SHG%0_V?0{hKrjOf9C;b zL`HJAg}7&8vXXXr9>-v`GW0O*r$%0q%V%J*5?0)pp2aDNm1oSk`6h`feapp5+zItvC`@$ zy{k(hEe`6&P`8fRi<)rtkbrm!xsoG>knQHwsYzqZck&SYSzZ6PZw1-HU>5lYh06@8 zc@g*G=#KY(aA<%Vf|fb2|kPFX?9`7N32l zZ6B^%E&=`}<9p+7veW`T3f~ZA?7OmBEsibyl{y&fbbu<(Y-hQXpD(J6bj1Scy}HgB2Fh}-y%#D%?oCuOZEjb8(hO1#Oi zG!h@$iZ`lnC^Snyf^!(RQIE!4RfyG;_Q=z>LJ=1&PjfY5)T?mX`Y7P?`F^ai1-0x9 zcQg{LxG!Ds9Mq}f>NG3iYDtOyuHa*?WuoL!*z5EVUw{|{h>7 z1$ot=jy!v$;!ih=d{)j!f+$q``>|?|>y~kZz(Ndx#vK8{mmv=*_p3{N9(e&|t4T46hbODE|X8=$`FObetW{%)JiW+Pq0fD5@U;FW;G zs3w1xp0?BsA^-gG@?t%7Ep@?Wcek!?0H&GYMQLt@?!wfLo@N_(!F)5V9tSw=C)ZQY z9)%k8)@p)+sXe!d>*imFR2E%tpsBzV=C@Gjg1SYYOPYHVlA1c2PWAvNk^9F}c=YMS zTm8$dR0xq?8y)_)-Hif~VdN1PJ-QopX-7C#B*QSCivEdn_X# zzYz>-SGkum)qG5JVyzNtOp89^xt>1fz}%JVkGsHK_U_V$i`ZI!<%x^DS0lf(;qCv0 zgg0A;X2}q}kQac4Z||(fE;%2L6ql)^tsJPliz(71nu*69ZiGBM1CE9 z?{BAnqXpBawyLwRA~dZ*Z#Mm9OC~w-1p9hzErh4k^P&0sV!IYH{8v+d?GvxtA&Y{a zI%HlFL`~KlYFdQQr)&s?=^7s^1b&~vC4RVG(Ql35$n}bTwIZu8+?&vfz`eMN7{WdA zsC5c5G8-qU@X0$yBIUgC5a-tA+}MD3C7l~SVDmnyD--7m7nkKHWv5Ervb1SowwQj~ zrKaEmv}%$oJz57UMF5?fslfKuOu{D1qt?}BD?Mf#w@zT`Z!y9}BR&=U(JF@fwd)0EFt369LmL(zn&?~u*=1%5IMf7p0l-4(Ho z4c3_DP%9N@!T&DSC#%9lY`3;~j}dgUW@vhQW#zoS?exkTg5-KSJ*0wY0hOq|h2KK* z$HlJJAE9<5Pib&3P4gES)^Hk`WgvO*9*5SQU&4!ee6({djgaPX|40(G94aN1reR%d zn7BA_By)*Jh99E9i;aHq(-IOg5=z>BO;ZAMB9f^d$-tkTY3 z!KVxKx=)QV;RLerYmtzoz`q#@J=0G$xY|r@-7b~1RNczrdw0q|s={j<@on2CDKu^L zg29Dug0mnr8OAUku4}Dlftm?Jtu4NBd7s6nwI#Cj%exr{+}JKkgoFIFkM8`U|;&Ycc3oM>kGi`76ZkTp^YQw6hyR^Cr4{ zWX~u@7D_vD#d*UK2iudtOi+a};PQ{rgLDgvEl=if3+Uv9UT;kn-^4U7nC0ziQMozt zo2>q|!083+s(7PP>-GJt3*eet@K`{F-=v5sTf4Gqd)FQsuVfp}ctjGu!Cu3`YsKW7Jy4$}~v zEmm{0pj~w&%SX78;=hdN6XgeiqWI&HyQx3{sg3oSAV9x3)=dK2Xdc{B#C#=MocBXb z(+SuwOky7B8th81j52Jhw>y~j-GV}|F*(e#a~&4UO;rzW^F>l6#H;U#k}igOKr6M+ zd_mL;lH1qPG{{8a(kjoZOcvNy^#urnpT!J(jOlyZkRNw;kRI#)Ky$MTWT=$@sVqMX z?IYCbKkhuPOi_)@a;bnU%U^I^rH#WET-Ccg;&>1AuY4>{xON`dhKe!v3$)MhpEx|y zx(JL{{Nb6Omc2-9+M3zPcG(0ejvtS>FZ&@^h=x~*0nnwgt_ys82deRVt^l&KPUgZ_ zR>|tw&!uGToV2sS^0onoy@yl4=P~ekB4Y7^kyzoMx{H5dawf1{xi>h9;Ig^DuZzou z3U7sv3I^|U=FV(oB$%*c(}C-c(b~Sa^}S$XG3o8{+wXkPX&LUMR$1XZ47DDUv8R~n zV)Q-iW_&c>$$<~343yYAGdkybbW(trM=xP2JiyAh;)*^}n@&PRya08TfyM4Iuokqe zCBLvt%pNEOmc_e@-p22vR^}3Q{5x<*HQ-w!dvgQnnCfXkW6`9VyKu}~N0z%gK~y#j zMPPHAvhF>h%PVZxNFvv(Tv2Pk&9(9|;5;OBfK=;U^Nee}lH($XZ|5`fZtofMTP5)A zC`DLC_dY)XH@~FmtEflxB@f1@ME>C>=LktQ zv@CX0Yh{(nXSg?S;gb)25WhlF>)!4yC=lz)E*yuvyjkb$(K^0G6^Rxr@l}_CeliEf zO+$x0uS{|?9U@iT7 z#T(SyqE!?1qaiO+#AGh7x9O8_-Wb6*tMlZeCA=)>yyzj37E%!Ahyhm}Za0OUO=DeZ z*r}MkwWSbMJBtVG2t+>X9%I@^c=Hmg_nXb{~3qrsgd9}KiNsQ>scWXqKCbrVcI)4iy? zMtovVjP|XokV3~Vx?riv?UR8!1caPIUjHM7ud@6Elnk5?k<6d0GHN1QID8sx-twTx zraPtq&W8#Iuf+Dp9Y*Xe2i_3qaFk7hN@Ukj?Kdjat6)wKG2=4VomH&fP8Bk52ivE! z7jve*^LH`tIU8GKt_@~fn$Uq746D#B=YCn6FP^!RpecN$baUO~ZFd(0%R-TKSd|;% zMR10zH|f5?Towm!L68l@{q5R%0JRJ}$FD@@e$Yo% zNX_K>;LYRl`>CkVHX=)sjlrh|<|>=>gvG0POA$hPqQ+SAPUKTfDnMzd}f);KY?-XP`B+_H)Hlu@XjV6+5adT8lQg5cH;p z-Nq!lG)`9pj9NSYtyB56OYMU&FuwX(5k8$z?tHlX4ndRP|F_yY^w#MT??v86{f9hh z1I9LiRFXUjn`1AU6wjn+%_~=;F5p2c{!QQIh^_8X55@u98i-fWuq|TPd!;$l`G_~D z#rsik9iqG(VWpXmrN$m^b8^dedu+>Q3zq!em0#2Mh0HqvL5>E0X=}ZRFOXg$rq^6S zStYmbP9mnxd1fw06zx5wgCOJZupZ*=sb2q1Y(%(@s;Ui&{cVM0Bh9u+fl}fpAF1HR zs@N{Jz{BnveLtHmuD3*^TKx5XR09(9;_z(!@G6^qe6*>3bff+@tECuaS|jS2K^@g@ zC20}Bc~F0pVC~1gaZp29_0^M?midC%xB3*zMcM_X;8reg@m3= z_RG#9tmE&47s7nywHcwb30%->L2R0IvTmSU7@}bdaWKicb-Y&)3C}&GO99BBZ3MBX z8?jR`K&wPD->rgv5Yx7oCZX9!xvffKFYe;%Ga||8H;Q-X2za*CJGdne&8tv&#As9R zL}jDTPdKt%631l#8r36D&oax>*JP5t30x=PgIG^$edstlchGEe>ub=^7VM*+DpEB| zH`)9iiy?u4Ar;{*ZOcz(;{CGh72QR!8=shCkbO=o;;iF)Z_XZwCR}&(k058kI{!D< zDq-;rO#x1XEb-FnxQ9{ov_BzUd<#}QMBae51LAveYvTERl^d1m7s6woxRxD!dXtB8 z4AwpSMJh6Cs!K~XT0H_Qm99D$+M$Js! zEwX~yHM+{Cngv%WrI--bIpa}uOHrCguJwTSsBi_wZW0&JY5_+@i3>7T#4-R5Mi2xU z^LKU)mp@G`%*cKvq1W@C7Z6MHUDa6UL-b$8UOXT|} zJf=%axIG~;YbF;kO(CG=(H^Ogig&TV*7~U?%gN-Z`uWWNX}3jE zrY_6LW$5CkE1=&>R7mwe-NrM`&`_x}*W~MN4AS4(NjkZBs#v*PrbZ=h%|ul6tT1W` zGMC{;^c`goI)EiE4wFQr^pw&;d;yO?57UHVAyr_)i*E$ac-^7-o-Rl)=b}I>C7viGKL&t#Ypjr@*EL(j&ZTHuRe32NdpFG zU%_T*1)JFicEO5WR`wjDO_yH{r`xpQa&8q;6hp%7dIM{9)w_eW@= znr#>lGg$g~7^S|YhEd~LI?Nc)HmHRZ*!A0~)2C1U2D@0W{*DFnj10vJBdG`W@ERek z2NB6qxFcP{RhK1cj5FNsJoXH=%H9t5nhZx9{!1+gVAq(32`Kk5AI zF0qH5e)|BA3J6Y;&57I{Vs33k3GVbbxSKn>Qa(|ZsHJ3XCDQLVfzj5C7aPo&#(Z~d z=-S}mwV|=A)gYQ>|DLgxeb_`lFJ*J_#1vpBw1nBEw_y(0?Eu)p?y{8IJD|m_88Gt} z`*p{5_Uo-=yaij4Yz5E@ssqO#PPP zHg-1i+RvHnTjrewe`HmWEVh&mSG1t_weP917O#fS7HuSrnmwCPvR8}}gH#Rqdjo%) z&;0dNg{G!nn=|KHYU=elbFQcMiSOAnzE5xYTa3crHP0UQito)~{O%=>GoeTvs4ORz z@;NIQUa@fI8BbnZS=&1~sV!wpe?aNR_ZN6d6kLY-ghao5`t4Wu8d$w=Xx_bKdi)T- z&Xc_w*=}35>#OH4#Vzo&e{jEE>LrK2KFNmlnCaOe9?oqE?bf-6%Yc?!d(GXmblonw z=H&`U#8}jU??0>cog|igAhaZEy=22Xe7RF@W!(pud_Aj-XsDH!xdpwtHa5&XI!} z{bVs9ZdKHfMNyVwuf5T0N=BzV-)H4R%K_t8j~u*sw58O0=a|%sQ_`Pk z8h7&V-{gXIt1>vxCnXeUF^ug>o?jIe(%bh0ZR97a$C00(wD8drxW*q_i|F zIYwmOOBFQ2(lK$%R;5gw7_)dv#E8Yhb2{hx{PYWxR*lQrl=_=c9=1L13;zhO!BK}p z2lo#R9yo4mNbrWJxCLfL<{KuC-5y3LiNe06p$-1L?{BFv^T2qHqCIn?S(4z$V&R#1 zw^(S;UTdEloxKZ&G|kTE-X%_sf7X zRyJYYya@^E^BX}ss1HWq%x+<=e8aANee%RtCypOJeoD4^C?PoO?ZNlSt9_GT#NI=r zUxk2uWrwSZWvW<0gzG512|vGaua;=f2Vsq4X2AZypvnFLiFaR|I`yzyYRq|BKNq6D zi0wYmFT`u}>2ERz&Y3rCgV71(I6_x0yg`oW5yk)Ikyi6BO@?QX92%ZHFFratY-WtV z?=)IQ6VJ??aUv!)COvcN52pUBBRz-uecsDEcj)Kcy@z>*uk`g^5)eAGfsyH=QDG~G z%OldC5U~mNoO{FrJz}Z%h@0#Yf2!OZ!E)&}wotrv@(8_H#XggcpM394EA$qLNB!?% z>z04hAJukN+gTb;U<_I}pLIGxcpy&miJX%%IFo8l+RD<}%jpMM^VBZ8p^l)MXpnHC zNnJwsEEqcF*19i$H~XW(n1Qp?j2sI_#^ps#_>Z!^XP=xOz_@Aiskutk6e^3)VuchOmw*w7Z4D+A3kD(TP)< z*+d`#sAm=Wv>EE@QT=wjdu{Hj>qykJ?tZ_zZWOm&@Y9T(#F(iGUnfmF6+bm*+Nz|h z^Lvi!oD$|4-934zA>a~%989upf27J;t zyv@K*dxygB0o^_Q{5-n{$UYB74c~D~Vy)!cj}{bDZjJl&Z`W{jt+`^nWa2EHHVWIb zzza=T_yA2AJ!npdxb?<#8x*6`bao z0SQ2wD$e=20SQLr9dGr*faK_g3qMj%sstlKDmg-8gdd?bBF2d9L1drqsBj!^BT^5M zeTeK}t~5@Vj7WV%P9V}55yBA@0}?1;-ct?JTSFwWHAKuxWI+5y9PPZ-V*?V8H1|02q?!hiS1Mn=R5hZv+!5zPK3QQTbZtutS(m<5Wews<@haxbR~YIWy25lcwG6 zHnNL*RL{H96QxGDSGr>0P3_$2759d%1YfyrXKYLKZ2?zq_PpZCW5JvfZ0s5JS?3Ww z?oOK|H9F4rt{8M%J8Ndu9j`3*757Un`o&c57ok}8i%^VyA$q@XBvvREu5+3{49Ey! zzwm}5j|_;vP>g;ddcSZa9%=4zKi=0<*nr8+i0BNc?=jR3_7?F3p z)r)Ek2{AgSl6R3_3eJQOCm^JlpmvIvgczPj|HJdgiot|O6(PnQRi^y;Ya-JZEEz%!n=NNIoaM`B@yVV1~Ic9w}Q|)tL-~Au-l{UU#xAfD4GPVZ^cd z3yUHmkESm;7V!wYqel-LGIrGPD$^0i5f6_zn!fO8Y_H4f2#cu>(sKUW3nEL{=@t8#c$s_pRi6X?oHq)Tv#xgZ4j z(k0=t;W^l;={Upgl3I@j8*bzo1E-Csj% zw>AOD>t|(qagmBtk4 zn=?hq7rGh^$5GbwAJ%~GwRI0lM{SFU*fwh9mhkW`BfX-dy@sMu@`Kh!gl`PTzlgO# zTVPzDehCTv`ozhmH`1=9H;GCfzm6{Q`oT)F$Fl0-?&J&u&zc6L!qdCb*tr0s<5fNl zCQMwAySrQO-tMy6V5Pfl)I#Yf+f@Nz&CdnI@K$;l1>`j#M^L{0;;ad_!NOdTgPgTSTbQ^B?)3!UjHX4%c(ik$0uWPXEM*d*%)D zF{!pO$od0z1jOx{Ny5@Y+TE(N+TDkQrJ6~HXwZjlG{{6)Dl9G3?xsP7nn^Mmpv^OI zGH>%AIhpjS<@EZ*zvCo=RZZUv?+fzY83{ZBlo$clwH^Fm_NQ1d?x%Tw7>H`1rlz;} z{BLo=WuUhINk)VD)iPeM_>+tV=QOX~fz&Vg&oTfG5Td%Is!vq%iVBdw63oO?+PuR; zChxc8P-~BhJF*QA>fWk;Kyv&8Gq9F@YNj|t0}g8@Y9&LxT=+d&=#JyeCUS zaQyD1N@zm}Nzo%FksN7Ti`eLC+Wn2@69W>7d}2A$UPcJW2>M~Ctc?-X2e+|8*r^Gr z84k*wa^DRDNYBGY&!fZNxOOxkoGV8<)#x$_k)?>Z)FS8|8F8&fYFfF~B1j`6?i{K8 zKblCygjeYY=+z?p?L?YUd;~3NlD0kpvR~m#LsS#^xt^KfTu*7XzenQWf^L04;R`hM z+~Hoa;a6s}N`mw!g_WYOID!cJ`PWHdjj-~EA7tAPRb3M`#+^`y=1BMuWv)nchK8!<_%8GFU*_w( z%-?UB?`8=6yhjiO_V_&LU%n5%(ExbbV_;-pU|?nzs{T{W7|(C>l|h=D0R(QjFL4Lc z{ukeVfAFV9CW{BeWn*9hQ2?+jhIEZJQ@k+g-fR`E(8QHXa*` zk?UJHOlmTmvH4=Wg>f5ajN7l~%Skx%1 zpJr|9w=~E2Z(*+Fm^Rk5p!#uaFAOo_(ZLqX*k@StH8&xhQ38dGKFIFGz+{;nUB87H zK|RYkWkwGR+P!2e>SqX7WRbg=8;_mpT1+O?SN+Jcw{{P5z(R)7XG}YUJ@ysYDTlpf z0(yK4^Ei63|DDztA{}<>7tm8)!WrRM$JksMXFh9PQ~!=`3ARAY5e}r%wkQ>}REmdX>wehg zqzm8xpdVI}eeSDeF-T2{G-?N=Q)^&}s6|R)5J^K)F`rVMj1gipMra9Gqy=M}?H+bo z>Ll(>Ot@hQnJcqmiOhkyMsdaCE%8JWACl;;GLDl!QzLz_OLu+sLQjW!`dTcpFv?+| z>4r=40GjAJ=ICCm@xTn_IvR@(XfG#WxJ-@VT3a*}lhIaeMPbw3qpQwpP@`C?|C>Po07(B+dV5YsR30eF-XXsMM{?CMp(f;lJ`0RS+&C_XM56rbR? zO1}!VN-*`EZN)vaF#lE=Uq}}JPFv?6mj&klKyzS$?vAz2IlE#g=Q-pxX0bzP004N} zO~C^Y9TY)x)a@x9z{>3SJNLDjfpaeneZ;O zuuIrGKFL?bH{5r__lC1M!lmZ2bA`Fu+(2$Aw~sr;J>)a+dH521WxgKYitoz*6tW6! zgdW0H;j_qyniv)nip9j4;z99@cvE~Tew1iQlafgprD{?Wse`mqx**+=f$YjDh zxxYMGo-SWefRb71uIx}AsH$qKdDRkX6}5rdL!GA{P+zE@HAahSMYWmQJw3bLRbQe% zHPRT(j6TLjlQR>Wjm)j)DSrn45dVvS9!L}D7B~=i8q|YsFhj6ga8IaWs8*>n^GOb4^W0zR;N}!6U7HW*zpsuJN8jdEQnP?GOjkch@=omVWZlH(g75a=-9L6be zaoiNQ!`<-!JQ7dBv+)wV7H`A*@p*h7zjrD-jh)WUOlO00&3Wwna+AA7|69-P?oM#G zxM$oa9_1zQig+!(aoz#%6ER3ql8$621xQI!iL@qNNMACHj3+b5Lb8f%BK!WnMjn$l z+Ws^5N<>bR6s=(!VLyzzu(Rsee-~Bo@t_?xkFq7;|7MP88_0)i*XY( zyc#!ui)mqnH{(`@8b*wJS!!4??x(ZCZ#+PELsBem=oMFu`xNuUE(wy9NE0GJkSq=s zm_tW&CyP(-F>$h@wD?MQg0PeaMYBy#Z;*uS8R;=`Rx2sB!K_w*5Q?NF24Fu^R6$fE0Fzu12nvCdB=<}Ug&qI_HUcCAiZ}!y1%xOEAPff^ z9;3ClVPUA92&s}Qd)s3+A_nIH6%q66qmY!3z9jqqzbB|Mh7YX+LAABHM5Yo!7|bYD zmb$w;Ypyc2R3dw%27^Qkv~}FA@su-e*P39M)5{equg0gJ_JTIs#8+z~(m9$XJW_25 zJaiP85EtGfw%N?xc9%czGZ8jzJKXNLA+9!V;J$eAgg-J#Kg@rb@WZ|qC4A-# zY#aHLoO#$-~>d&H} ze;h;a-v3EcAcY$nO>ErQ7_&A+kj=7sRx2Gmg82Oy8HpppATmds5rl{oS=Ryq15SCc z7Vln?Z1&%EYO3oz5`nP{&Y%oJWBtGVDeo;yoZy@m%*wMoY0k^6Jj?SOThBsSy()!L zIh9lAm#I=H)h}eGj*6T$;K&d-A}+sa+CQAjT;C-lP{0boG2A6jD9qHi5yqxG$ip`N z`MCGreSb>V%*W?xRit^nlnH(eHg4kq4M>1n6TKig%guo+p5n;ddcTSw78xZIzf%+& z+lK)N$*L(8|G+s0FR6_k)em*`&R9z)jTV2nZ4Czql3u{x>vsR|QUi9}g-b$15;eDk z_ZZI|${|eFri8B@8}o0vtewx_|1`qfGurUrGCUt|!I_J#EgT{ax#%u+apwP-ulX9y zB54RC39+zpK(Om4Ee;?jNwYzO=m!oVZMYP~asjyH7;|@BDtgzuoy)zeZp*vMO?{yX zsl1}=Lgab+y*8UeEe`tz6&ded{-@pD?pjfK^iR(^G{bm=!`Pr$xr)N`-{1R=-`TV1 zH+n!^&#y^5;1wyP9Ye8*M!-77+a6~buA97&!-#rL2tisy(k}?g7<}J`n*T+tv_%V^ zA62MlsN%Ssw!?LP86{{T~?wkOBaJaYhIclOR%3#F8b_kqmL=mf%ULOg>UT(FrcH{EN*h&V(DQs2ZV`K7u3cMi6*a zA1K}TR&J;ong&B3tz8MyPwTP|-BYHE{%oUK&FKuzkY6w4-*Obmz|7VEMc2(GYy;=( z{Ila3b9K<0XLQq=Yin$&P(pw*W_0wOXBm@12 z(I7(&H^KyyOg7Cdv&}Wnd<*>{#Y+E^YL(U2SZBQr_Q;YWSDqrpN|Y(L&wdA0IpnD0 zPCDg`v(BketI-9QTyfPk*WGZ_Ew|lq*FFDgcHcvfz4Au8opB*SJ%J=C(qt&pKqD>D zAsx{%J@HGv%3rN?8-gU$a`4=I z764)Y{J$7R2F#*eEbZcG$DtjUb|-i-9j+Iq^+EC0DwLUD?~anRnKU4V(V=)s}C*`%(UJFP07wdLSv9F_u&EoH_U6b@cWg zA)=TPe>q9805oY|xNV6LTUf#22?&XZImY)?(?u9o#TjH79;l)m97B~u;{t91xWgkL zjw6kWP~}i~6DxLcteY%C!>9_>kT>s&Ty2N(5UXLp;Ry(dh$kIq6Nb_YXV6uIZX!!` zgbiDE>^X4c#N}s?0Uk6E|Ii@-LttaZED|Yar&n$T%}O`rXpwrET$QeTy46|3<-Y_% z5CE!NtLCsHImXOm@dB=2gRIRQuzs;&)BnEO^38WYUhv72BhRX9VeVskO-o?F5*?Ur zu6gFSVq70R<(S`x>mSwa@!W-b{?%OCXXtc@&;v=)%xGLlXg@?3&`J!j+#9)KTnrJ$ z2Z^5m6hY{56kUek6gSI#A=M3S2`Qj~*A9!xi3Exu)op6Js$Kp?Fhnr(q#9k5m#h40Jnvx^JoN^m|?`hhde1 z!T*o9nrW>;>&HHi=f$$aU%h^{?H~w zI#zIa0zx9Y!*BX zplU9q3zgRQ`T#4vyd|aHOqc;xFwZ~hQ6wdr#h{ygFDY%>IId_ai>AUFk$yLVb!I(k z$0Vml7xaBH3+Q7ENXjhVKwIX%B%1}E_zbkCwC`$$4|~kEbU=Hvolz># z9^}Y+Ud|+hS}B+)4Dyb7Fl-ENTxw_72JJxVi<)d`>1aa~AHLWk^9J?3jZ0~W?+DVeh>YDluUU(*R)#2T)JXsp31C&&#zA=f*EKU_U2Zd*yY%@=ZiSVdko@p0X zxB(*gZ$On*vi8@xhWg)V#!mu?m5~HYs$LF2)uZ( z(CHWBe{}PG2Xm9w>=qlwETdQl5%r`=Hqv%{`S7$bX-9k(02W5{ke0x_?=8%_XRcMR zE0S`Zfmz@BqKCnWvA|ZWAWKI|2lOSf2mhRqs2ON{SKjLcbHB$bnxl1U8t@jp1C_kH zP+ID=jLQif=pIp6?Omqfh7xmGMm1=cclSm78)8@fx7yc{-24T%)S1^y=QUPubK;DH zo&hdlH}R-QIjDnLrt8&i!qzh;y=dm9Ia-D#lmIh#6T12|9(Roem8F+=gxAA&> z0dG;LOUF?ruCxpZdP3bs&{cPR3KTd}euHm22rhQOfV61BVse(rw~?Bgp_>60N>1Ke44R{~9?+ zTPK-F)XwT@$2o~}T7JJcnW^T*N6S#WdRttN!pv0RPuEFUvY2j`M15}huLG8YM3l-R zw190%h*NNoD0BbR`yMz$&DF`{6-3*5A;daxne796h+K{+`{o+!`Ii0m@Nf?RIB@-Yi$@enh6kq}A6)M&H`0)lv0dNAFFe&89a%BHJzFc zG#xY-!AdA?@c&1t3C0bP0xTtw8fbw;i!3!yij@{wWwm4*ZMMu-TdlI)c4>CnX|*g_ z*2tA-ts+I%D^_BIG8NJtRBfvxPTJ|Tv$E8vm8-!81unVb|E{^N*iHA9df<_Ro_ea< zbI%?2$}2~__1&y?#i$8cWG;s~zOF=A46aAK_S{A&@rbVZVls9Ud4M=y$pdNjk4+^! zc_FNtH^fxf18<$FNl>&4AHEzmsv*cX!*t9cW<~u35-?Y_u$jZOP=o?nGg8gy^M?s1 z)0G8^S&0(ON=OWti`rR7006ksiQvQ^02nxN1x)V1X4){&2?3A=7DOw!1LVM#xd8y$ z1{}eRbLNr{0MZnY`G#3bG@!?`q-F^lL1QJ66HHITxR*2iBD~%ArRR1-Qc{Q3%S|G+TtW3H{RTgmM$a{COp&g>uSU1CjiKRS?96yNaYA1 z5i92$1hdi84oJ{;@5rjKhxT0q2*a z&op8%F964^wU2b$uu4+N|9Ly0%kRzU~Aa)&1ItmL=QG_R%Xf5HW0vJoe`{&=v@{V1b#)}za3NOQxL^c zh8_aM0imQRxQB2{LiNr)k^*W==xll|mMjgEJ#qLva9NpEIop#o9tu9=q4Kdk>C{aL z5(}LNY|nE0MTAj6XJR|nb8P<&L2XbQ*`CcYUxnB$s0-Pi?Xlg$%zmhS*`Dm!FM>oG zR3%H}V#-^|58mDt8KFL6qc7*?00KB*$YbAu_eK_(#J49%r&DbiIH_#RojYg-*^!ht zgR6?iwvkcka0bcr5S$SvOhE4zb zYRfm@{qVMXiG$iXKUA;LSko=E+&Wuj*{i}aH7>j3kvG1DkEA4vJn94|B0VHZm1&GA=9=zK^DMPWleJ#< zmMuQ>ofbl!)mwFsilm!2D(0{iNs_9nssI3ph)By-g!v_lX=oV=ejh2{_35rvRMn)f zx%9O^c^A;GGGDx9xNwIA!qKQjEFuXM0RR9rE_brayu{J9z!*bl99{O(XXGv-h%xf0 z6P$?jK#({xgBv$Lc?uFum8V?2b_4F1lbGK#9H4{-Iz$5k0}TNxEO_Db>E!n*h(`vB zprZ-hu#=-hJD2>m2hzZJViagGVaE$y_?^H2MlzW>EM+ZCS{&D0ndB^me56&R08vup zsnDc{m?U{CM6pU!fhuLFQ$w2eLRIW!Py1W%SR>|aICA67PX6kD_H(!son_6{ZgH=%~p{dFszce=w6X-|#q$ax|lx=z)eAZGx$0 znb(Qwe|F?iCVn!eX!L2C?y)bo&bD<~)dsF%;}=_DtxdMu%ew6Mg$>xqP2QX>-P$$R z+VReH$<0;Nr`kpqC{?9iiw?cish=y=vjGineAAlO(pI;rogL`-&Gychb2!DRFYxpi zeZUbXoN>VwH{9i%?(_Y;f9L&9v{zZh85K!4Z&V}$3PwfJ)f*MbfPzsmhpj|JB-zXt zjEaJpnHfovs;a600Emc4GO2ozQBh=OW=4{vs;Vjg03sriZ0ZX}MZwI>j3h}_RaF20 zL_{Q+Mu{S$qR7n5j3h}_RaF20L_{R%(}>9!6$LXhGm<1#RaF515D}3?x%30IlKks3jK~kvIS|JU>C> zZ@}6%U9hFOsG&3hkmfc`=*1?iKp5LEdg~dQRQ0auCAJPDBuyCbV?qp1QgG?YB$ybx z6E9w0*@#$kprDQr{*jUv@3hlSg)h#AA_TXN4#J{IFu$800jWn`vGplBdt88khslN~ ze|oVmK%-NnNw;11SfpH)V-c5tT2x=wutg1J4L+6zO9O1s40%e+xQ2*Dr=&g9fErK( zXgGb*uyjofED<D(ii)z4$_)~?Ab@y=l%LKX z+}V6UezfnDR~sqFv+gm`=!q&eu5~cBt3T0-dSOg02Vb{Tk01&`) zx2$S*Gt~ID1zrYM)n|_>h8_VGL)&-}%H#=o8^>Tp*T_h1?1e+9_ZrQpi?JCV_@e9M zLO#Y)1e8cu(usVVj)qn7{MaImkpL&5((#0mpP|J=NTJHfWf$@{TnLCMRPm^Gq5y-3 zkP?O13$ol}0wbztaOEO&Ryt6S(FAYqR8wcV3k4fT5KthW9G!tq6k_BcBqly-I(j$K z8mWjV5ud4#J6sST6eDc_+g6z@3&jU0^0$Ew7ay$76+_%t$2Nv-To`GS6bookbeeb6-NPU+-eut;6|IPhBJ99!$LU21Haua20#T%fzHQeLuT6z z*ud=|%t_TWUHJiD=GzcJAMPAUmE{qI0O1i>d}jC%G!hd67-9fzxB@OdqG}m-wb{nS z$b=JVngWQ3Q^XHH!(X->m@~TZp6PBajw9u&ca3+Jzz=w$kV=(K@X87NfERd0yzRQ( z8~{||wlo=K%Mk#)Ie(^^76&I|2mopZBUxWG4m8k6hFxq1@l0#T5CD8QUqQhq)d}>g zHs5#-hT;)#0Q*2L6(7RwSVrukZJmo9uIdeEaE|nzcJylJTwiC~61cOiy4&q`*lCx{ zK=!vb)~VMpnjyQW%4L;DBRp@0bWKFMB~mM`wb52P7?C;Vz}G7zD28TGYO{zsRVIFr z_oA51>=!#!Cl)GElmcx0@cxuxlg&X1#!#8_JM%3~J|O_270pb5t93s2A*Q+mut@>q z0D!*?cmbvX002q9+(=*|AGI&udrtw$ZP^RxW&j9@0g#g-$-h?tTL1vCbN{ipi0#0< z-%(tI2nfIfIDits1G^Ru0hBlrVAsNz*#LTSJO_Tlq-ZxF12UJI+{wLXOg=83l+Wug z>393X{)+y3{Z0GZ%je5W2a3T}gDpdwQTvR5oIkys2uM<9!v9)=mAE}K-amO z!=|Mx`L?v&TIK$-BowSs_M-kUUw6hqxvK0@?Ff_8PFZgYVn#yBQb)Erk&Qb#&5bwp z4{?@hMj1V=I)BQM;hL-AEKHPWvEqm&s5IVa%fW^iW}NW~Cc-Ifjy|v!*d)tlwc%-< zrIPLThion3;+DHkXp-kQ(aM2HllyB>OqA2-$4&ms$tGTIp2@Wa&@X}TF^ znrgnq=200NPLwKEqJk6v(arz>kO`0j-ZW^AoDU|2#uauT7j}x>M;Au@>%BXnT znA-KaIFpZq`N~bBDnEPp3zL#wb>WU=V5+OrEz8`QEEHy`GAjtyY+$k_l%4JDIg#MZ zokAYe;Cb4^ix1s=8Rn-nDqb{Y`MVq4ofU8b!WjS zF*t&7#bZghk~voj#FwhP! zQ76~2ub{<%<3o!!PW;glJYfTq)A-KdI*U1{hN$z*)oNg+(M9%MVz(}zpdA6OkZW>{ zN7uP`gQA`(*=JJLHnWRkItTKo;?i~F1l(i@%q1F!D>1L3eP(q@KiPL$83CU6(Q8Y1!KT*+~ zSTkiLmzcA8CSB{`2<@nTFyy)8&T*h6qqVH|rR#|1c>+{vxEu$gIk)S5a0lUnOkGgcc+eQ%8~8p1Z7&pcMLUP#4_v3xW)#Q zvW#@=oXq;QQ#+g4-OMTCqhrK&a&PBdof!tad;eW@+EUVh;D5Ts3apo)-6R?tAR4wt+8qG*hVoGi2J`e;4ue#+>EM>{+qpww0TX=EN9rP9j zNuNjbGqQCTx&q<$>Gc-2GwNC|T@_Y0@Wt{MB4!nU&3oiJ>=%pTK73)Z_3-&oWEjF| zSUVlG3vYNuE^Ut~?ZBX?Jj=M5qGK4JnV!~CB;G%1+?{wsX)D=#V>ZYNQ3VvQUnvi} zl-%%J%gy{rWxs{}M^mWm;{%NEXT-s%3sHvu5Jc=a!EBKMu!~D5WAa_3Q;sq6r zacjP!x;;&zKL_dr~3U#Dgtgz3Vcsj<&+2S@|DYiISHV^hzyNmw8eFhu`j*Bo= zS_g;I!;fR5vknLQL`O;uo756GXgcE_vr?}n&RNG!*i-3RqmRSFPjR}`tT-P@?%n+2 z2?7>p5*Z{#dF9SGM!MXdLin>>V1u7%K&pbJvkI-GaO@;sVFzj}5mUQQ(+9&1r3HYz zL+0ag=IZZf zIC&C=f#;-DNzXhAta9r;DNVKcxiU#)8_Z58921{c@2UgC4~=Qc1i(!Z;Vz9zuqJ4^ z53U)m)hG>+mcmN-JQK79hKaPJNx4)RtS5KaNjT$u*{+EGRr8Pa35MIPU%;w5tVNXU zVH*FW=6RCOm_hJZA#&mAR`nBJu~=G?71)I}6e6Vf9MuW%ChDuVB^3FTc-$f z@Sy&-RK_9wI85rtn3~6Gx1-v)kRf&(JRz}PC36y9WRmm@p(kmn(}TqAXM3&&VG5ie zYK#-x`3Q8Rn~;oXs0s|dZ)T3yjW)EBJOYg1F=tx9)1sx@*s!ZNamoGM_4}TxY|D$6 zoE)<~ITSw0PAnY;dqi@=h}*!i)S;P#&r&YTVyo?)WVRA@eRpa!B(q;Iu7!^h?jE1T)gcDA)_7I%`(t$2G0 zZTnHph3n1ybKN>v(#uAsT{8WYOI?yANf3!Y#VynQC92Us`O1D{s@S)AVW-Fs;(5*( zW%&2Oj?LPJIh3|(Sq;Lm9rJ+TlH}FErAnPEwT%*Cx^4cJ73fkbYfgwu$&xNG;RnN) z`Yhb1ec93Vg6Rd58@iq%^DPpm07{i-r) zeQ;9$$`&bn4RB zl8-v$2Z&MoE>+@qKo&yu{~jDQ^@~JR?}YE>-wpOA-4J{eu$N+rFh!ilSONf`?pGc< z|2#s8{~bT902*JGluC*>>N0638(B0N$q@ekk}{q)pQ!kLsO-yQ^!&5aeOU}f%NYIe zrS&FOr$=B}P{wfIR3{{bFb&0m7`4S=Cvkzp(!)IO?>~9oGJ}JRlX}IWfi>a`1CXsL z`TeX)DX0hA{QJvI2glX>&A%~i^3;`)N`RzVK%;;E;Qw!GEiB(%ncO-qO!$BsI*#95 zuk+YHupA64fCk=Dc5-$b+QOcRVPcqR5Iml&=o?U$$Lz&12c(91Uf+MTc*_lsb$vfl z@V&=lyYoMf4!)(7%xmAJTmL=(Yy0&`-j=9)*@aGJ#`0+8mRvQhQE@4MQuF~0{j@)6 zpvHoq%LUK?i-({G0;P-fGBOo&1LA2-YXiET?y1LYeFF=K4lVJRr{}gDZuEAZZd<+X zT_$%=Q02N*+SL&N^@WFp?e>tk`@Es7PM-*9>;!>&i5-g<{=dXrlmLN-oeOF&>j;MK)3vC-qC z)z8O?Vq;^l0%$C)8Vxk;n>*FG&-mn*E!0x&EX#YG%k>_e3#rcq)K@T5uhYIK9h^#@ zGkv++EkX;aArTRAZoU||HK?ANYg9Bo@nsKIxMt4NyN$!8^vwAlpWWlMUN)+X@=7jzji*9e1o?8RdzM}&zDYj66MpAy1M>7%34 zE6&>|=3FJlR|WeqIVW8r71yo4S}P;(51$rvsJMR9ynOO6vK<6#wy;5>fL#WtFM4`7 z2w;Ie2*fz4`Je_?|oY84;Z1vhH5gSvVcw+^v|j*9e2 zx*gOP%&90XukFuO#mib8DqQIQ{x3~H0#`G39+ z9P!BQwqDp0U2*_Ex-AA`wN=(#UhO}PsN9S1Q<%Jvv*CGWGDh=O_}p?$0)3)CjGI24 z60#UKSReV|Y)rP-G3^kByo0=s+Tnp2ey01vXS$by-D=Gj_R$-)*}+}ifwvDuY&$B_ zC*^iPUog9(th{C*N0p%LA3~@5|F{=f)yPy>CMK%{^1r+(qw3jx^n(Yi02*39#G4su z1OBBm8nc~@A3r(*)#hi4hG;=)Jh@f)=ULhuF38FsEuns`uk&3WD?E}tlIOPyI8b?R zdATp-?T108#id7sVwv44jsw^^Ii7{TT2IcP zm|$!VYr$*V-vFR0%F^a<_^0@0D1NkCx3dyG7)gy_0%{%T-KI^V=pBu_{UEHzm(gf< zxc6z>$N>pnaN?kM@q~JBxBJ(xoivS^>C!>}z_dZ>A3Ff0I5+v*FjjZ05Jqc?tz2p~_11COaXCdaXvaW%-Iu_4|nidBt53Lr5gTAZ|hq&|M!3bIX z(h6vH|7X!;CFN^XiQJm3E-Id?c6Vi!q?xLOJW6M*&4k{s{ku!*7baK5Riba~n-TCh zs)CCafR5DsAqUOlC4LY>EQclm;+9$m#lh50(R4d@xgVN4{((!)106Bm?=))vi|$Fi zTXICv6-iW<^bXv|maepEa7X*bm9}F|_vMpk z`0So&UQyMOkLij#QaPC7;~36}ltmie*S>nMy`c8Wwzz>GO7~#}1l|lZ{gls}9aB&5 zS?%rV`%t`J>a6JhA`hVJ_#esQ=~dL@&}t8239bCn^gus<5;f1yv5K5OG+tjh-(Ls< zcfg1VYYuD6v$Q~<%v;xssC-D%=LK%-I9<{K;t^N8(ga-o-(7<6(EU{O{&8?!{-K`?V&9B7x#0tg<)Vfd> zwPD<=Knw`q^7O>&Nxgbv$K}3z+&p-y!{z>i6V|Ay22=>L)i^QGKys&F-07Y(YcuVh zITyRVT!lrMEpvk3d;GPh7Jp?8CHdYh$|1cOEIFDrkV$!7e1!D4KMRC*f)?JV*XMbN z*0x=NMUDP3ouvF}joB{7j~|_r@{-HxA~Ir678&X6t@mAZ2sa&u)uIx{S$b6 z8-C>OHu3=f?c+<2?<4o!Jcb`${yO_na`QuV=D(?<&rck^@v#=tAv|Dl3{2kvprH?_ zdZG6gyZ^eu;_}$FC~n!1L$fcFUe$qTMYZ{Ow?*xm?UT`}KYeCrT?eWoj{N8rcIH$~ zk4QZR43`zJTNls#Ms*qs_(tW9Iz%PUkiu$$LRpO$eM$y?55)Bo7!^Tua#6iUSa82% zL_U(H#osaWOSgD#QMs=157a>4!fNww(JRW!0&oVp=eF6^!ST|c2A&CvF=@LhKZu?} z;Yyz%VnLu{2cQA^Wr}lq%ZC35wC=;^-07)Gm|(L`r=~@mor_Ke+N?#T{2oC)G!qkI zX(}{*-YsrcbGTav&cpdJ1M?9u0>uIZn*QK^V&i>kY+@5F>%BPPXJ--s z8~Wy*2o^);fw;lM7ceMOeBf9)jf4)!VlT~Ba3qB4G$;Q+J2ZB0?J7PsyR)Qc3mTw( z`cIXnP@Ke6Mbr{xLB}-GvGVTkjA?R69WWuB-8M~2N}i=fv_Uv9gX?C=Xyi2W1i`l) z7(l0#o^WS{H@SP40v#AW2xXS7SUq~KN{9bSbsSR4nQEh|k!@$nHnn#xPOh=Wn{Z=^hjdQ_a(k|`?jA1ATzZ?@*z_VL z<#JL**|T(N{eeVpYOglMx4PXYI__cM&~zxWW&3#_(e&O7m47OaSv!M3b2lIgN2Qns zOOYVObAbp1Wh8u4AfWVpeQ+T6Mu_0bB#>eS^?iJC!c!7XLAL}DNsvHH+ds}ZLNyqt z(+rZGeMniy>^R@^BtLxt{ziyHYtd)wT?$PqsZ(J??f zhnU>9k?4`n&&;w1Fkj0*a{%qk`3wh=-0oj2D0kPIp1fl%D#vYa7NI?J8EFKEL*MtGDB5L6-!}%wOQnNoU<1;BOM_4Ae*I_N4)#5dw0HMCaCChzxKCw# zbgxlu^^2xm`@%OaW;FAW`I`4fGq-sNr9=n!8^`je@m~rpnRNM8U*-9ss`pG#gb-`n zpa$3Jqj1a?&x080=Euz2EA^-jFVwj7@`SqQ&?=|muS9m{>W{ok0l}<--!Tt%c564; zEj_tv@I^xyX_?&=YJa^EYMsX#-BV+mB8jsQ2T9g<>vG_d6dKl~(BQbCxpS2Puyd6x zuGyR*nfvKvfhA9|Z*TU?kLgB}lj(*p-|x-pYxA;Ryw5VM%`$rNF+MrH?^EtEc>R8_ zvWJ=!vE6MQLfw8chE6sq3H2P*+|e^ErEqc>yS00Y?irAmVJwUsipZQCz;3P$HY~3I zW|V+EPF34VHtalR6IKb04r2SoPl}7}$?O&H1?1#_ZS85mPU9uA2niIV7!&{nLtrQ^ z-X|tsNJzMloRV2!hDPRc$#^cOjL6~O$sDc#{|-Z69L~>xa2$pZ$03m7;z7&@ zMFM~isg3koFfw307b}c~6*pvm)YIAU*x(*An{H$5sfQy3Bq0+1AP1tJ&V|K<^ms+k z>`X~IIJe*^L?(Djl0O~!V9hrh6^*2*!|aeK1dCUZAV21c(%`cMn( z(#RC=2ztdnmAsGy6E>k~^U?BZfIS*jFJkrCdXC{9c$er{BO_GCLrr@#GfVq}YNbJP zJ|jM-`g~wiyi+ap@#9pr&dwsZP}}OXBRdv5MO#}$C!q)~Bu&f+Jln9Z3R+HJ(2Xrc zpOYGHiDvVQQ9BdDskJ^nH8iSEtw&PBs}sbj{9&`oTd$LfTF{My=S5>PV=28&UA;XG zmSCwpO-((mZRv4(o2q(S1GI4&=`rmp$qyeUD?@90ipry2DY?B(>3wC7QkC1GB}Ms^ zDW`z*4po!qrFSuRFr~)N2bU|C-Q*t9MZEa-wn@uaw)#Kgua`z$nh1gkt5ik5OzBvAD{?w4Aa0+c} zwL_%oBJXliq@SswtA(c_N5{=UU52M@)sk7#Io4Zz{8Ps&U{^IplyV zn}&u>%XcGKb?=st=*F{`M{aC(G9x)OT4EAVcEL?F_o;Sgqx#HLqq=tYQ(NHz05oI( z4ItV}O2s5sX1Ryq^t}%mTG8pw7qV`1LLCAk%&U+Lge$%viD4xv;bP_7$E>Zqv>9C1 zg~%xX)GC|ZdNdOe+~6N*Yen_9oXWl)%yI}|n^p4#B3xXKCIvf4qHL@Q?V;JZSKe`J zTR!Dwy+>ER6+7rju;0VIoFBByfr+r=!-vPZ?Fn5Vvv%MaAU_7rFnX6>Tiw<9IY%$Y;>@{aX&f7bkYVSfJQf2GbQ z=~+1}kMj)}p*h$kl6TdUQw{V_!l~|5|5UPtbq+p?+0CS-xLcU9@LuEu52Y0ZEw=m& zDK%vl&pPH!%}QYjWAa2w3W90z<=2VeIX8*A()^3=eI9jhHgRqXiU08^5|l*J7RXW6 zd;u?!wh2UHKzf9icNUvrz}i24cejbu&#mqDYMhwL$RI%t#X7yOzS55 zUZ9psrlrWafx*HR$46ewixzzS5Nnr=tTP>$oz7ie%nC%EoPgX>vp`*AF9Y|(QFPl7 zBb>LEa;f173K~{rR8Z3E`FQT*Z^;FN1u&CNUtZ$aCs7N+3);7WP79v~Y`pC0IFE#~ zXC_X84~%|iCE>m^o>_W4ODvBifhtONHjeb<;x%(-EE)bzOEvfz@YurbSwcmeGkBIv80Up2v9h5cLCf*;(wSCcAg-64!+ z=Mom=;1V39ysbC9>s-S9j87R);ME1p14`*d86P#=6y=5)Wp~&>-3_k&*wL3P|hQ zwC3k+Vd+b;1gq;=v9$1`NPhxbfdHcPrjnC2F+n1j=qxRba{3#f2~SsSuLj;l2X6UJrU ztcUZrj19YIbf)|QHQG5&nM@eh!(}mLIsYWd!QChhZiIbx#eX0w$7Q6)h0e49)K@#P zm5^D^H6T3uZ$PH8@)fE7-voz@lUwH+mYTZ8$j+P$$Z`H3IZn!PqIFpS1Nl~Q&2deM zl`=G0&VNh6un&a>2s6fGnVV zQ~(O2E)y!rzucxwgR*2GSUj#c+F(hbB!0&V?LTebxBm0{y9XYaavLv(?>|V~$=p4p9$pp?$<2G9r#b_;*_MKV^Yyo&~1;2B$xP#M(4m>iKeID&=7a6FZolMNF zJN4VpCX&Ndv@bCr+JRe9vr-mNG;){mrbAM5bE)sTb$;5S?zFBCBNFV@4;M{7u+CW0 zb^>lg6xq>0f9KT!H&JM(0=Idgt-Vdm!Ahh5_XR$$;3bLL(>hLPIkap1&Ot+*y0FDrYR5@=hwn&FN;KW~Mx z51h}IPO6vSD!6Q ztsOD%yg-OG7aF!M3*ImHW~b-npJZx~o5r!kYm1qsR6Ig_OKm=@2W>|x-CL<+FJ<7C ze}FbVG_B{-+4U|x=id5|LK-~XCr??mbecEPl+wWIFiXM56Lb0WzE}?U(45cbf+49g zOv6kV$>3*myObYLpW-y;15=s5SvS}iPiB3@GcRnmLzJ1wePNuv&tL3#y*3$?pCj>w z&u`bC0lSq5xn|0_^j3Zj*HQ0M@aUOdTyzfS8(i<&WvoBL8`y!%lBo^cyKNg&Yqg1H zY~YtfnaMmS<7|DAiQ{$dDueQCBtzlr?*~_RyNp>IUJEfUz*O0+8*Lj?L-i5Qj2LT& zF<@rygR#9|lHx|Pi3a5-GF0+8D#O9-*$z&ejRDCzy;G4HcB!@saqBa{V5@JNjixJ{ z&^IOhvzNo>F=J!qm)hZC!=$Y6D+D~etnXi-z1F?{b);j{tD#elJRks9+1zu+Ob}hf z^dGUpBmm&f4{rx``hS+Z{?_s|MY2}Acw~h?Rm7u_tq%! zn*YGQ+t$(gvXh;=-?8#x@6gGkmCYRiT^rO|^DC@d)=Et@jE!;IgItK`Y8lf))ux(9 zHh&-XY%$n;=j#B*ytC|(FnKo4psS)>0(x#p` zKHvIL*JD=AQ(D_jzd1%7m2Xx%kUm`hOG46!nlxtBfzibLy=AV?5Ypxlb>$*?`CO=? zk*oH2dT#~UD@fj)nYXr8k$cQ_ z5XBiYjXk_~2V2~yZrx^3k2xxBb7-rx4ln)Km{4u6Mm?I#fjL0%mVx#uC__lk0J@Tl zzKo}`C&FeV9q5?07a3CW+1h8Yz*4IyXEm>nT&f9Ns%BkVtAtTDQNmB`HhX~L0DAxm zNUK61u71<(A9ZBvmsR_3fw8IU6qV`}?4fMDtv#K~%w7U0UAB0wiH*JSidlV_KcVMe#Hq%SbDml@j$3@&BE+rZQ&Fs4};8)s&_V64}~HIYH>!q7stedmQboJ=Y@ zh4L(*;B~JHbKg6q&^5;JJEPg9=+#=BUAz?RoxSxKLEKo&sb3?wmQ9q_0Tz^}81@2G zVmut^TL1u(%aqM9LF?4q1Q=}{{g@i;a?jmbs1nKkVV55WBVTXdE|P};aFf`-Iyj#0 zt4jo%>HrxCXiqkinoabTdd38V0IBUb)Gz~(0j7Z1%P3$h?JeMFRHgF%0s*Z@1w!_5 zD6kZqzyfQMOng@d(#+;a07_<72&^Gy1Szm&=qV%JM;o$X^b<=41N%t&12b=$gRCa zSRY~IJ8Z!SOENZT^G!E~!62G3r;3M5GC&^#;=)$#3yfH3Zd1%MlYA?u#e7?)HD3U2 z2D%P~MWUI>v%oy#%Eo3VHczkso9?&}Y*O!N{lrU%lQ?68DlND=AS=u$ literal 0 HcmV?d00001 diff --git a/template-no-theme-recommended/static/images/hyas-schema-image.png b/template-no-theme-recommended/static/images/hyas-schema-image.png new file mode 100644 index 0000000000000000000000000000000000000000..021fa462fa07fcca66fbe419ec9181ecdb43fdd3 GIT binary patch literal 8215 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 literal 0 HcmV?d00001 diff --git a/template-no-theme-recommended/static/images/hyas-schema-logo.svg b/template-no-theme-recommended/static/images/hyas-schema-logo.svg new file mode 100644 index 0000000..bdd0d45 --- /dev/null +++ b/template-no-theme-recommended/static/images/hyas-schema-logo.svg @@ -0,0 +1 @@ + \ No newline at end of file diff --git a/template-no-theme-recommended/static/images/hyas-screenshot.png b/template-no-theme-recommended/static/images/hyas-screenshot.png new file mode 100644 index 0000000000000000000000000000000000000000..89c99a37aa8dda65a5e50ad38ddef2575fdd5a3a GIT binary patch literal 58631 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', + 'not ie 11', + 'not op_mini all', + ], + }, + }, + ], + ], +}; diff --git a/template-no-theme/config/next/config.toml b/template-no-theme/config/next/config.toml new file mode 100644 index 0000000..9fad6c9 --- /dev/null +++ b/template-no-theme/config/next/config.toml @@ -0,0 +1 @@ +# Overrides for next environment diff --git a/template-no-theme/config/postcss.config.js b/template-no-theme/config/postcss.config.js new file mode 100644 index 0000000..bd4c565 --- /dev/null +++ b/template-no-theme/config/postcss.config.js @@ -0,0 +1,32 @@ +const autoprefixer = require('autoprefixer'); +const purgecss = require('@fullhuman/postcss-purgecss'); +const whitelister = require('purgecss-whitelister'); + +module.exports = { + plugins: [ + autoprefixer(), + purgecss({ + content: [ + './node_modules/@hyas/core/layouts/**/*.html', + // './layouts/**/*.html', + './content/**/*.md', + ], + safelist: [ + 'lazyloaded', + 'table', + 'thead', + 'tbody', + 'tr', + 'th', + 'td', + 'h1', + 'h2', + 'h3', + 'alert-link', + ...whitelister([ + './node_modules/@hyas/core/assets/scss/app.scss', + ]), + ], + }), + ], +} diff --git a/template-no-theme/config/production/config.toml b/template-no-theme/config/production/config.toml new file mode 100644 index 0000000..ff90f22 --- /dev/null +++ b/template-no-theme/config/production/config.toml @@ -0,0 +1 @@ +# Overrides for production environment diff --git a/template-no-theme/content/_index.md b/template-no-theme/content/_index.md new file mode 100644 index 0000000..49d6949 --- /dev/null +++ b/template-no-theme/content/_index.md @@ -0,0 +1,11 @@ +--- +title : "Build websites faster" +description: "Hyas is a Hugo-powered Jamstack framework for building production-ready websites faster." +lead: "Hyas is a Hugo-powered Jamstack framework for building production-ready websites faster." +date: 2020-04-17T12:18:10+00:00 +lastmod: 2020-04-17T12:18:10+00:00 +draft: false +images: [] +--- + +This line is from `./content/_index.md` :rocket: diff --git a/template-no-theme/content/blog/_index.md b/template-no-theme/content/blog/_index.md new file mode 100644 index 0000000..bd969d8 --- /dev/null +++ b/template-no-theme/content/blog/_index.md @@ -0,0 +1,15 @@ +--- +title: "Blog" +description: "Hyas Blog" +date: 2020-04-17T12:17:27+00:00 +lastmod: 2020-04-17T12:17:27+00:00 +draft: true +images: [] +_build: + render: true + list: always + publishResources: true +robots: "noindex, noarchive" +sitemap_exclude: true +feed_exclude: true +--- diff --git a/template-no-theme/content/quick-start/index.md b/template-no-theme/content/quick-start/index.md new file mode 100644 index 0000000..5963616 --- /dev/null +++ b/template-no-theme/content/quick-start/index.md @@ -0,0 +1,32 @@ +--- +title: "Quick Start" +description: "A quick start to using Hyas." +date: 2020-04-17T12:17:54+00:00 +lastmod: 2020-04-17T12:17:54+00:00 +draft: false +images: [] +--- + +How to start a new Hyas project — one pager. + +## Requirements + +- [Node.js](https://nodejs.org/) — v16.17.0 or higher + +## Get started + +Create a new project: + +```bash +npm create hyas@latest +``` + +## Documentation + +- [Hyas](https://gethyas.com/) +- [Hugo](https://gohugo.io/documentation/) + +## Communities + +- [Hyas Discussions](https://github.com/h-enk/hyas/discussions) +- [Hugo Forums](https://discourse.gohugo.io/) diff --git a/template-no-theme/netlify.toml b/template-no-theme/netlify.toml new file mode 100644 index 0000000..1132be5 --- /dev/null +++ b/template-no-theme/netlify.toml @@ -0,0 +1,60 @@ +[build] + publish = "public" + functions = "functions" + +[build.environment] + NODE_VERSION = "16.17.0" + NPM_VERSION = "8.15.0" + +[context.production] + command = "npm run build" + +[context.deploy-preview] + command = "npm run build -- -b $DEPLOY_PRIME_URL" + +[context.branch-deploy] + command = "npm run build -- -b $DEPLOY_PRIME_URL" + +[context.next] + command = "npm run build" + +[context.next.environment] + HUGO_ENV = "next" + +[[plugins]] + package = "netlify-plugin-submit-sitemap" + + [plugins.inputs] + baseUrl = "https://hyas.netlify.app/" + sitemapPath = "/sitemap.xml" + ignorePeriod = 0 + providers = [ + "google", + "yandex" + ] + +[dev] + framework = "#custom" + command = "npm run start" + targetPort = 1313 + port = 8888 + publish = "public" + autoLaunch = false + +# Redirects and rewrites — https://docs.netlify.com/routing/redirects/#syntax-for-the-netlify-configuration-file + +# Custom headers — https://docs.netlify.com/routing/headers/#syntax-for-the-netlify-configuration-file +[[headers]] + for = "/*" + [headers.values] + Strict-Transport-Security = "max-age=31536000; includeSubDomains; preload" + X-Content-Type-Options = "nosniff" + X-XSS-Protection = "1; mode=block" + Content-Security-Policy = "default-src 'self'; manifest-src 'self'; connect-src 'self'; font-src 'self'; img-src 'self' data:; script-src 'self' 'nonce-dXNlcj0iaGVsbG8iLGRvbWFpbj0iaGVua3ZlcmxpbmRlLmNvbSIsZG9jdW1lbnQud3JpdGUodXNlcisiQCIrZG9tYWluKTs=' 'sha256-aWZ3y/RxbBYKHXH0z8+8ljrHG1mSBvyzSfxSMjBSaXk='; style-src 'self'" + X-Frame-Options = "SAMEORIGIN" + Referrer-Policy = "strict-origin" + Feature-Policy = "geolocation 'self'" + Cache-Control= ''' + public, + max-age=31536000''' + Access-Control-Allow-Origin = "*" diff --git a/template-no-theme/package.json b/template-no-theme/package.json new file mode 100644 index 0000000..5a795fe --- /dev/null +++ b/template-no-theme/package.json @@ -0,0 +1,36 @@ +{ + "name": "hyas-no-theme", + "version": "0.0.0", + "license": "MIT", + "engines": { + "node": ">=16.17.0", + "npm": ">=8.15.0" + }, + "browserslist": [ + "defaults" + ], + "scripts": { + "predev": "npm run clean:build", + "dev": "exec-bin node_modules/.bin/hugo/hugo server --gc --bind=0.0.0.0 --disableFastRender --baseURL=http://localhost", + "create": "exec-bin node_modules/.bin/hugo/hugo new", + "check": "npm run check:scripts && npm run check:styles && npm run check:markdown", + "check:scripts": "eslint config", + "check:styles": "stylelint \"assets/scss/**/*.{css,sass,scss}\"", + "check:markdown": "markdownlint-cli2 \"*.md\" \"content/**/*.md\"", + "fix:markdown": "markdownlint-cli2-fix \"*.md\" \"content/**/*.md\"", + "test": "npm run check", + "prebuild": "npm run clean:build", + "build": "exec-bin node_modules/.bin/hugo/hugo --gc --minify", + "preview": "http-server --gzip --brotli --ext=html --cors", + "clean": "npm run clean:build && npm run clean:install", + "clean:build": "shx rm -rf public resources .hugo_build.lock", + "clean:install": "shx rm -rf package-lock.json yarn.lock pnpm-lock.yaml node_modules", + "preinfo": "npm version", + "info": "npm list", + "postinfo": "exec-bin node_modules/.bin/hugo/hugo version", + "postinstall": "shx mkdir node_modules/.bin/hugo && shx cp node_modules/hyas-module/node_modules/.bin/hugo/* node_modules/.bin/hugo" + }, + "devDependencies": { + "hyas": "^2.0.0" + } +} diff --git a/template-no-theme/static/android-chrome-192x192.png b/template-no-theme/static/android-chrome-192x192.png new file mode 100644 index 0000000000000000000000000000000000000000..f7c60b2c1e90e4cb7812f222e3ac45c955e55f55 GIT binary patch literal 6450 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 literal 0 HcmV?d00001 diff --git a/template-no-theme/static/android-chrome-512x512.png b/template-no-theme/static/android-chrome-512x512.png new file mode 100644 index 0000000000000000000000000000000000000000..31affbb3bffb0f6a7432ab7e76194ec516a79a2e GIT binary patch literal 22135 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 literal 0 HcmV?d00001 diff --git a/template-no-theme/static/apple-touch-icon.png b/template-no-theme/static/apple-touch-icon.png new file mode 100644 index 0000000000000000000000000000000000000000..8286cbc51818dd58eedffed7c5babba6b3414d5d GIT binary patch literal 5960 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 literal 0 HcmV?d00001 diff --git a/template-no-theme/static/favicon-32x32.png b/template-no-theme/static/favicon-32x32.png new file mode 100644 index 0000000000000000000000000000000000000000..4407268b61005b088f76e517211ca00476e62cea GIT binary patch literal 1003 zcmVzL}$B=%q&D(H{F9i@S+I@AB>q`1S26rR7fV9gkYc&36Tw^ zE-|ne4bvE1hz}A?ATd73!<4~j$Pn%9tW0K!rGLiS(fj9^-g5644p|9leCY4#e&_to z`M!Mp-QVdY+{PLj8WMdi{%1k7jX{@1#=C)*hVO2p6{wh^a5!9G{vG?)v-3$1F09rt+Luv#pI zG$F+*4~SyLdx7TrFWy))Pr#Y6Xp2PBHUg~%V9sy8GLzAWQ`1*&<>tJ+-DX3L#|_64 zn;yT)jL#raPg}F^7d@y6U}o{uxyWH6tYJXN$CBx3jd&)LEsFTY&DN?a-0gA0<*o#G;Fb2abLaH$W8q@iRpAo!zQyCzQ(yb zOAzS5hUcE%I`0tb;Op;)yHr)}(ed8kTS#APwEQ7IUU+G}L2|Ia57CK;hU>jPY}(vu zXkrM==`kCQ+BsNrgt3;iD+n)8{}t*tFh2g(A<4wM}zJ5YAu z|LZ_bR*YG&bH{e1l7;`15BvRidBZElo!-~G55G@LX!rrI7oA;i8o5tC8o-&+!Z31H zS7Y~{z1nkr^qNiL!n0s-@R%)Uk$+H`{d1G!&OZr6qZL`x6YJJJHKU6{C={|?Oy|0% zXEM9)JmtSTI_*n>Zf|W*Yh7K2g2AA$>iM<9%xEhGxpDXiCy##lX*>OP;nK>SB7IXz za-GXkX23f3 literal 0 HcmV?d00001 diff --git a/template-no-theme/static/favicon.ico b/template-no-theme/static/favicon.ico new file mode 100644 index 0000000000000000000000000000000000000000..b7edcecf45213146291d5afb882fe48940d29e4d GIT binary patch literal 15406 zcmeHO3vgUj8NQ{qJ^-hRjH5VOXXK%1%TS6IDF$q@FyK@r&~c<9f~EMVKs&>rNNQ1m zOsUhfGi{m_6WX*%^CIu0NjA-Mv-j?99=mrpx%)`6&?F^^I7O)r>GA(=dhVXRY#yX( z9>cve|D4zVpZ`1Oo^$Rw|M{;ZEs_>X%a%zLE|;G8m?YgQNz(G=W9b_{BT0uT@1~nB zlwT)F%~wm(4a7qtBr%pxLEL9#FtTH~zi0P!Xk@Tw$J?ia&cQbWY&vv?WV<}_tsM?q z*xhoHeHemFu*i9;6||J4EYf zT@zFl_V?sJvsEj<&R$R7&yZe!=XZ5N9C;`M57LmaDYN*nVETc>4`L#d3~7aG;}~$y!ohkl&Age&5YBJ?pw$1ynVG! zPyhCDBOm3DKAdQjAp$uc%b+9v=$E9j+|(5Dd;98NpJgxa+^*AsJv(Fe?J3F68)b-#a^U51 zs6#9(%}v`KPk+(zgEtf3d6D-L#Yc;eA6O}32zA;&uX$Rv=yy802e=e@nn%{4lVj-h zIai6}4(F(8>1`w2<50lkh}j1O{jOWMemVy%rZdrzpz0juINI#htfu5>%)6V;`=~BD zLg&W|XTz~Q?kJtXvKdpBaQ!^&^|swe=dw(~@IQ`YymRAZSZt-oScjulZ1cIGM@|d* z;yAiG?2OhDow_<&qIy-OJLGfzDjc?b;-Zws5!N*AsYka%YDIdjCfB z?!s$BpN>5e@qV_ayFIH{YiA3I`m~Otz)ow=BKp>BrSFfiCy0J~X4!T(MO)zotXqK{ z>!;7xdKKC9lQggF^0^z&VNWw3$=}xW9$|EnUGxQD26p~u`BV4)#o*!m$m8Wage>adJP4r!x;PI)?16zP zKVx6am@#ALY1)_9;#{N&l)5jOtzENx3-o;5-PS1G>z-7JjS$&11qEKk;X>HGi%3$2?c8_0w8E&11q^KdtrC+P_)* zPxCCW_78Kre;{AmIwHDfic-q%U3AV{5pz~rpKu#1FU*SJgUq%kAC2L|xe9q=eTYLA zb%^IL=zuOWFQx0u<7B*aS#DaR*}i~t_Wc{a$L?8oyFrN?f52W(O*ZbExXd%Z`Gvv5 z`H{!Vc?en5!Fdou2Xt{B9s<*Nc*Xpp+|(QCE-uLBc$j~5Kg&vgm1U*vHt5*lJ*?>X zfe+|9k-694;rz(sb@33gsDtz9A?biF&cj2(h7Ii8cV|BBM=)C?{&&%*O$ z|4GlxOpfa#2cJQ;t?{9j+QLvHY%cSVnh6^)a=WM4|Di7DTC$4{)7m*I+Fs^U9N2&{ zq&n^pu_GSxI)7%~A0kaMF}9@HY!7tD!xZY2A2#Es`~7bc?>lCGt+VxlpLxNAV@kC5 zO&G5to8%+}dm;IvvTo9C#uM}@{|R@yaWxt9(3pb1?tR4XAv!P0b$8fVduuJLCEtTf zJ*TUS;a72zneN`v4q$56{7NEW9rrH$jK^~Y`4v1t?d+g??6Y)dAJZ0mSKympo_Bc0 z+ESjE&T31tSR3IsjTz|v7mW=U{QOVH`3E58B?t-J50JmcW|Ge*I!k1{OUwcIfHYMX zFx(SN_nlPazow5R_{4l*tiU(Jr(}gy=RZpQx_Y=-`WKwAPn_iZ$u-k|yi zNvGjc1pOGV@JFjG%!unt1I&0=O*A**>k@-mmEVUC3ayP9SVx3mFym3&-DsV10{KMk zAq)W`VSdQ^`)EB?s{2R*GYJ3Rw4N%_@6^Qc9r7vfQ-8D(_FeG1n##W_Gu0sY%mh{Y zwE>UvJoVd<*q^|N_rd=!LtMl?#_J4+eajf(9Q`BoBK4z2 z@8z7>7E}CPO1tqt(WUT1iid5gdHO#{Ugy^|Rema \ No newline at end of file diff --git a/template-no-theme/static/fonts/vendor/inter/inter-v2-latin-500.woff b/template-no-theme/static/fonts/vendor/inter/inter-v2-latin-500.woff new file mode 100644 index 0000000000000000000000000000000000000000..ab8c2c103c2bff0bdc390f48ea92a96fea19960a GIT binary patch literal 22404 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 literal 0 HcmV?d00001 diff --git a/template-no-theme/static/images/hyas-schema-image.png b/template-no-theme/static/images/hyas-schema-image.png new file mode 100644 index 0000000000000000000000000000000000000000..021fa462fa07fcca66fbe419ec9181ecdb43fdd3 GIT binary patch literal 8215 zcmeHM`B#(I);zsY|-p}6q zIp^H@-rIfKmM^vd0JeFYaq|UW6ZBI#OG6D3uNMdY1&PfGXM&Re*s246l>n|{5A;$g z$=BT#H1-&Lh8|R}xp=t%K)SzGb_p79T<_uL;-9KCH+DGT7fBg?!Orfp_spaIH#Wa% zRolEjUUY$zeF4AiMN&@YdBDd1E zinQZraj1v06QRs-c<{TC6xKjWr9vwEWQAR4bM+zhz@*pN29_r+l(xe%XLA-TwtE6q zNMv19Hh~{ib$}8iOiFJhU-%!%Z8I*vOoXDzQ-!HyX!(dy^FR zsey;?Xf&E377q^bEi5Zz!b(_B|L=p*O-*kiaYkQe3V!7h$_epCiivXGi*Wbh6_Fwe zVhDw%oiH`{&+~^NABeBm4-XGVW%j&#=Xun@f$jO0!wGAq(VWG{GpUc$omL9QsB9kfj>)jO#!0OT4yvKMCixCX*VcJ`6E;XkwC#&VK1+NAg^c_m z^JuQ5t+An_@_6&10fjLDVW%MqG<_Yp%;rtxN+Sr(FH##{N~QuC&odGwi&v3I)NGP4 zV=XvIF3aQX+kYDwkF+Vz-4}3wu3^q)nk|qmQmpPg(e2UOy}P`i#7dh>o(y0GiKe>O zQgTjyc#H;yt?@Uy+a>fUyrgReVpi|)fkIv8dln|ARU8F4$x|xqJMMOl*O89)f zwxJ?S^RoIjOlZH`*vLrFe0+uBO;WjW=7|hyUjS=0b?U=7>BvHi#j-;TE+K{A`*6D* z0DgR7XERPNHPhgg6%5IqpxGhdkitt7OZ0aWI{JfmS zV1#3b(D&+UX)z)N`%uCbEI4To5yNqy$Hd1tau6=HMaq&|y@cn6iUuj8P|v@@OkZEX zz$3`G4u2U%E=Q}kF^xfI6pS*1_r&7j5JI11*Ts^~)P>$hyys6fg6K)oghe}JTQ(cP zxYX~sB|HOw3bkU$K7;ScktXF-OO@KfKaf4)$3}QuTiwo{%FtLnDDY+F}ql{Ptiy*(-rJn5cUxAbqY{K8os#UrKz@vYixO_?8k&>KTzCQBH35^0&CL6)Tjg5`snV=$LQ^KU{s&? zk1hz>Z53LXno)trBRTDyxi!pX6lA!<3xRf@T zaJ<=3_VE{E{qB#yx5$q{vwA*2!>)HN+57^xHWRV;410Z3%uL))lCZ~|U{i-(BTlGt zsy}ki7}ipuM8NAkjjboEGc8A2%~(>~KUdU2g0BV?jQsw{y>F^N4!jv`zSiIu8z0s- z>gj68p7T4^DX@!s?i3#*NZ9ItiA`FRlDNASAj`i9r~rC2HlEh!T2M8TVZZ9pZu$14 zS=!B(6T)YECB5H_$Px5x(HPaCVhR0g<5`F9TCTG&ewSog1^7a|tCRF}UlL#3z_Xrd z)2!|YXUCdfYX17xz_~G8y@S^bCU5c;FYN3K!R7evI3*Ak22nS+CpmCikb3BhS65_ME9X3_3kbVTZV|B2A<^rI%wI_J^Leu=JjmWBaTN?{uwd z(a{R)ysBvc=q_+TeuEYr5DAZ0b^2if%L|HlmRk1t+Zo8FN5Y8SIEvQUgVyCDLZY0l6I0Oio#n&QrfT zs50Cx<_z&;>xtUrB_sb+HLa7hz(z~Edw~nYq8R6l1X|xBYcL@HzI{mO+w;*m3CXRF zCd#0~8d^a@Jx^^ReoC8bomsc(i#8@HczcVuCt}? zKALfRH`V3Jn6cYnt~cX+1-=-koY6$WJS?Q4kjpDq=9$jMZk>y}Ej7OtTEDUZonOI# z(do4f4MVM`NWTx z9KZ8Y3(%~Wglnn-?;}tWUUc2B)?#Rt+0=n~2v#!M;*w^QEWP0 z==Y5Z*X6@qa^ZTQAJz`LK9TTh&f0L%@wULu>AI0(p?oj_y}jj_n+9aS&VNQiRirzr zAl($fthAv}CRKb7>VEz*JA4bV{$;&l0 zAqCzu>s(ytPyBodEv~X2%Nmt`Ix10D1x0z#R{zkY(BkY9?O0l{>_!F{jYY^4Kl}FO zqf?wk1`0jw&`kvK5%TYa^S2OrL_;hvsLcv~khNU1`CWQu%bk~Vi+i59UiR{LlC6uh z*PWDrLGeFxRz;dj=A83tANXp#?(+AiodQig8z@40mI)_urkw@kjF4O5_lid3QyDoaE3|77U`F@-6MMHBnP^t%OGY=JhkTiYM3E3NO zba78e)gbqt@yey9F160>i8EYxY&3ll zT14)(J}Y`|l{LHrC}n-~k0n36k2INMW2Fu`6bgmyiO72f1vdWYB@%uw7~coCd?N@@ zN9@%u9G;aPW@BTNMVEafiUUWF9*v;U>?XQ&QB)QeOC084)`j_YM-S{&27PeBT&hRz zeKWmhzPo#Eh>xGUv?waz@p;`Cnh;@ETLpDUu5F-VIlMd0!KuNP&>HWTY;_7;#K9UX zVF=T+jGfc1#mA8nofA)At`b_Dt|5^v$L~_9)QO+CK5^VHZZX}E^cMvXoID@EnA(I~ z5H9>xMe0jH$;hJX{Zo>_>d_JV(Vxa}Ylw7d$?F(=EAFrI?vI7)5Y7v$QTN!H%1T*L zYf&oTqzH1emcw%L)Xa@O^2E6*_9VfNsNfNuV;e23>`LrM?>{q>&sMEqrE^&=c ztfa3rTb7YRB-ae?K2i7uN?P5Q1Hf*REa5Cq0X2BM`6Y1%Bze zoA|s+pP<3&snPLsGqhhib9MP=zI>>Qa@jv z+l2ZD8+IG|@a?a2+=T=oj>m9w_OdBYL(C%2JtOytwo*%C7Jrmeh(T)Cq z_i+}?#S>`r1y`rEu?DwDS9Fgbc#M;&fTD7kg+No6WNX?j8s(Y0~(pevk4hY-JVE$YT?%va+&?s<6dZ`tjD+^z^)c&}4JD`fk5B@WaV7 z0!*{>?Hp90LQ%0k5%H-jrb6G1wgr1lomHBl{Vf<@f=@{v&-OHMZDV5UA_#sH^+H2+ z0Nf+t?z3xPDI6g?fFhm%pi~v^3U`e-initBHtT$+8vuCTg$@21%AsVOoU*z=-}Zm+ zHnk**C)WE&tGhv#1xy`w!TS{Kkfn5g;Fwe!WNn5Or;EqsEPRnXEEL09f_6DN=5WH+ z2&IyF7wHG?>gp=*uk(FaXi^Tm;Yuep{e3-kiClmV#|!{)(ijHz=DIv%!f3}pY;1i> zdPfxvfF%#03QB)uJn<M1)cry(VXMc`IN}C zv=v6hx3zxLybAzO@Lwo^ zj|=|U@%niL00`i=;!Pbdlhp=-R3_cz{d3=fwN?Kwq>70}kIB>|?J7cyY2oo6mj|>d zluebxoImP?@vIl#m@dpdQ-0#yMqx?)2_FYWP7o?WPAR_!s}R1eFE5`sp5$AYc0NC< zafx+tC!p@DYoJK_Szdyn?z~@9zj5zrzeFxR8x%#W7>to&ln>)%_R@U z{hQ8amkzh*+u=B9CQb-t2L-tc0zz4)iEXW|HP<#g5#edXH@k#-0WAj}P`bZos{GY%j)P(j54ewA&a2^e#H=?3RVPn=&!O2uJs@cPK22zgX}iPX?4 zusa2V`H`jy!6OlUJ>}dH(ZPRK4^e5Cu67`6TADi%VV#q^xOaNWaAJ-n&GcINM zD}sSCJn;@2gi;)d$PZNK35O9r$JDw@-KvCtJB%D8S(Bm(n$FDI!VfjPy&(V?Qg7a% zZ*TH{(iXvIqr?__gvoi1yh&~b(IS66^yMv8NA$u#Oq9~>b>O|OGZZ#^+i{;_m=33w zF0Po6pGar@+pp8!ey2H9yXugeEhwt~jm|SKC9}hvRjT+eM!Z2p4_o;mqc_e>1jiFL zGzM@6iQ{SLmC0z8l{CMm`G0DBT9w?x4%r5ue5Kb-$`y~<>SwU9=JkJoXdWW$rtaUj znm0HN6|)cOqzx~k?pNmQ=9hI}`Z+-2`O26btq3kkoRy4SstB~}m%Yp#oCbcKREol{ zl=0c2PP`LZllCDtOp5m-I;LMoGZ!X{cz0=ugwAuKx+e=MCRf=BCOp&Xm%5LIdj!H`DH^jIa$YkdYQ7pr(h=0wETur#%di z{riolOfC@EHWVwYD{&i|f43ju7`-v6Snwdco|R3o?OI~aJ$<*W7X-b>eQqD)VSZc~ zD8|y)&Xa-LpofA^lWC3w?JuhZnPRy_a73)f&I8 znLWiwi)RC5XL)hagsNF+N|@IKjvJ;9)0(&p%Y2Ej-qD zU5z}Al;CUV!h^n1$G&k9A}hqeP(7 zD9j*zH#AOk(3D;_yB{atDfv_&O1|j}F8SR^*P-KyQS>l`)n#}Y=%$C`@UO?Myndgn zVXyx9(GU-%%7wlNo;T-k1Y?5WM4z00%*T+*zYz$kp`X4BxB>!dw}^%!ui^{KyGIb7 zA+9BUa9bF5)kv;XRvg`tci=!m*V!;oR1%DU5m5$;o^|`?(6tB6D}WCdbrK*>fQ*c* zXTzG@uGfLZvi_R?q_g?jZaSsT#>Qs!Je`3c4g&#QmDd$&X>@IE?Q=21>FMu54;)CF z7Y6b`0J0#q)5r6w*mv@VQ>Y%AbXTylgA#iuHZf#gB z@XYTkBX-w34dl8VN%TH=ZB}}~?_@fAcx0;l=BrwA`at}+Awc|PsgPg<`5VL+e^q%eJ!#mN;`<;1ndk2FrrXt1L+}U0c zXXGK{%SIa5$rUy$pq{r0qf{ehzuVcrWeEkux8Xft5 zk$~I?2dfY_N`LCdqO;z4y5Oe zdwUexscBc^$oO`Gq0e{}X&Y8uMMshy!t$w=aab;oJMgS2Kl2TCJ8JzlTd`g}9b>yH z;24kwdwvTAM}B`+CL_aE_NYDPyBI^ZIc2*D{!}dAj6cBZTj>f3RMDkSqL94)U}dOE zPWj=?hPg`aJ(Unv#RKllt}X>F!E3Y;Q(`Lb(xVIS9^1CX%o;%9C&x3s1BWAPb!LBvyLjLDoCL9OUieKq6-eQDyYU|e8(xcfbKU7T@HyoFjHcm3NUotU%$p=$a zi=+r;h0;QmAC3|>zc1KY5BjLIsGc+VHbKK??F0215~`q%f@8>uu#3L8Fk=Vb!Yjlb zYHm@d({>mEi)pLI)#;IBe$$Q));<2yrH;~Duf=p}W-m$jiSu@U3LKknXkmCufq%29lCXtY_ zL|N%bA;NRI_m-8FOk%1Jwr zE2Z@;^j7@`N4eqQ;kt=M{B)kHs*h&M%rD6n(JL)dx8u7h-}`_A2`I8Yxqi>6ezxB- zeKoJRIJ$Nu`dkC5a1+#!me#xknHs1emht);EB!FWB-%q8#1@4v(`_S=iP+gFrt$Q+ z+|yJ>@;c7(+=veEQwDA!pU?Q!S*T!mohKWn37&O6Y@mHImE6ue@>Maz*WyGm0F0qJ z1Rc|giJ)Zm!#aL$hC+NAlZ9G-_{eMKyU&n@zIYz%V^RLQ(cvgIT` zGY)z#Wt;QNzbm%w{YzRJd?#FR&>hA3d|qCMzbu$8T@!du3_lg-1IGVI zvYVTa{Mk1?b(N||Wgkpud9h?rWg6g)AJl~mjgQA07CQz$Vjq^0Bya!Hu*vcoznU8d z@;zV2Ar)n4URG53^afsSSsDX7xosiT;bl%32XSD3=*L-0%{Rk?t0AAr;*fIqWxxWS z^qP+sw1B?I&wDwQr!ZZsSsGm}aqDP>RDJ!?B(JFDdk8TIr@JIIX#eEki31W-nl%?ZBk;?cu@YVPn6sjH;q&}a65z;wy$sci;RTm#`4N1u{4 zc03_R)4)(=fcRK)19lMRgH3)dH}%{-h5Mb7APp=D=M|*+5|3(+XMH-8o0w0PRjgrd zQ$qt&vfYcQBO-6t5R|Vl)`GNp6Vk%V=W_m~m=F5eIRwaXhkD=TI9c!1v1ok^o~WEZ z@W80!2q@O_^fvEl8^XVr#5?m4xCbz{a{AUa(U0;3cusrDIk+|P!Tgv92mE7?_Xzax zsdIlgIkGX{*Ntc3#(0u4roDqwWE{gQ1c0>I>;scZJT+Szu3!7nvirP>;P`~!d<2hA zMvv}TzU6QyAWtXjr;^GJ*l4yFV>BEd?&}+T7MjE5=JwcYdVSJ;K9R;F78f*q2W?id zmvMZ=%*^BHC!u3*&8u2P6a?pmc^oF!Z9hE~^9@g7;WN7!UO&LoIM94-j)>ZY0_BQ$ z1;aEX$Ewx4<9xl?SqJp54f^62kz5I@q$201La@=QKrv)rL#UVj2R>M*t0UXYFE~Vr z2DR*fP+=ZG7^=Lx(XB>qu`^W2b~dytO3M6uH|XDU5Q@ zJLn>#b{J9&`Uby0%gIR`Wjt#RxM9j_T-(}OLavfso3;H7rG|IlmC?nQaR+S=9l~E= zrwobhO%`!bU^Nz8vF*LsU6;AH(|v4qmnPqtFDfCOATU>mI!voI-%t7edg7cr`_b5m z|9;Pe(y7B(fJ3kXh6ZvK?xcib;9oFN{4AfL_KOMd0K5p;0#Ue8wmGqe*TgNnbXdSm zwef8j_&9WDHfm~*2&bcUDQ7EReM+Zs4N~X0zh>_TZraiBuMJBE?yOHIvOpauSogia z%_^*iuk+$%bFpN{Y8hTN4pZVfJs=yM(L<01Aqu=3{o6%hn1;qMGM70p;i?`c) zSMgy+-Rq5$^AFGFXe&Q{m_HNC-Qt|DaGp3Dt44i){v0O)Y3W6iG?#^64}D1U2iUAUh?X6)fS)mo?DPj@Hn_%EK-2g#s1~ z6IWuI_VWVi&5u#5dGM;mJ{2C|02!aZjxC`8O>qV?Eu;$Y0B zA+=@wRAibNK0}DExc=hh%ek{U1}O~a7b^hz#Q-`}cGM!``O zxkR-5`0aPnr6lpEB&KpU^Np}s0Z8Rbi&GiyEdo6w;3BX3wM~qFl{g8$<-0(-0(u;3 zOb;WEAYYdZmrCxT>eN*hQotQr^mJ+ZW}Lx&>X*fnsOHSN0KDmLegHSvhB>z8B3Jri zemHn(GoMiAp0Kzw{70ria=V3>C$BCdp@-3BI#xVvLMo}jzRY(X#UQjmiH@we`{D() zD+Wt}Ae?azDWP7Nc7EG6rQ^}l;yLyq76;eYcb0Q~8!Y|Izf~46sCcYw?V~v7m6ulF z?5Bak^5f@h%}Oh`&EHz9n?GD*Xkr+hZ``b-+i@ZdjJ+y#kEIiw!cwaILO`dgno9_P zN9>XBEePX-dr{)2Q4tLM)Rb@-kftbcUtM&>B?5Xs7aP|VW(n9a3dVnpQ2H8z<%e*& zwl=ayxq(|Zy6N4A?Y8x_?K+B6=M@V@XTHZ!hdGq*VH^X`0wqLDBSYNyGbGs9h#G1g zYW4xzi=0h%Llky?>R$HaEDvl_;s>Oi_okxUTe7BBVDU~GMVr#`SmHbvUQ;j_6!Wc; zc2u*S-#*Pr{AI+7kvK^+I`DSLVW5iRgN=5haYB&1t&rfbA7JLmkC6m4ZHqKn2~A#n zq8jAP)|GI?$2F-QXXP)_t6Anm7qy5dtB?Lr5+>1SU^W?tHX z{+V)VK3O-V{b?V8xuiH%0bNuEZrnEldxwXwXLGh{98d7*)~y{JCcC^TAGJ4yKD~+h z{+&`MF=^IBd4-v#S{?-+0pstGAM^8kh0Db8%Zq9ntdAw$Tdr^S`k7b0f+K^Zd(-9Q zsw?(>D8qxC%Wuu|?p)WFxEy3oU}M3SG6nLmnrJ;)`%vFgEZ{_R|8n#iT&CFGPeK!2%@XM_hfAFEBd@?I1nCVP zWl8u>b4WeW$ATGx$QcTfjTaV=kHLbAhim?1X0;EQ3^x&qbw^82Pp_g>H#QP}PsceP zDHv>aotjf&u;_F8FbP)b0Ax~5KoZ?k)9Nc;Cb+rOE!=lHss8R>4O>P*JtLUU)F_3F zvg0^}v1V9>f@P&$PjhnV@o({CcPTW6MO<^7@+VpA&A^2xqVMMmUnW7vlW`v5AuZ1zy`0dOvo$w^uTnTg zkvL27qe&s6g$oKdQ;!sizSYJoWsO-fwZ97uoANP-#3?T^h^>{_5gXhJ8#<`G^z8}T zmaHxqD(*PJ$iM`+dDdrnOzbR&tK?gH`*LFL(q#xmMnx8z9&vTL4sWX`sav!L#2+W_ zc#6k>`dt={z4p$p`s5oaKDScR>G7fUo5ZkIhnPu|ui4r*Z!Ie3;h0%+BWMOMS?=Bu zwF9}SXlGV_4Gqbi=sZWexo!W_Xj+Zwu^@TfmoM{5ija~tbCD2-Fm41!7D*TRl+03c zIQ_>jC$e1fxp^CNh){Uy*p$r8eB$2E$z3p)m-1inv?RlGg`KU$!sHU7U4oD3>0fJ2 zd=`XreWo?zR#j8gGJX(a-mhDujN{-B(O_MvAh)_}7B5emqsSZ;Ipr@x#r=y8`y`?2 z>U-c4?5Ae2iH!8ik|K@vO+40W`T|QNhYWu1byt-tgkx&mrsd?rfc@#59cOk35p1-w zxuDa9xU``24lD6JR_J~=YGe|>QVpS5IMs-BZhE15`enMUKMH?fl^MGnq6cP8?xoW* z7E3=1wse$epnhzTI|dZpbM&XmxGT6D?j=9c!88^3rb07`0)z(&W zwq6`WQ29YI9{{f1?Xo#fPqBb1jV52JiAEf;fPEKc2M#TK&=o<%LY(w=>@b!dd9ziF`v7(_MOZ#;nf#j~V(#hgA_^EwTZDy$e*uV8YG&dHAlF zv-Zi<Z;60MEXUCfgc@w1J8&Ri%aZMW;Q?<3DDydDh9z9b&mA7@5t`yn%q~OQIcNg zDzn?|qKZ@X*KuJ#a!(A06?9hlxw+<7FZ%lK56si9TlYFe2b@`ec@w46J>0IYE+IBC zv$E7KVo#C*|7Fiuh^WGDfZ|sAaHA)VB?%+pGXe~R>*|u}NAKeuM1uRh!xHLd4&CZj zU$1GoPo~%QpEc#b<98SHSepI|bu(sj3P2>5CNbb;fJB zMwho3v$Iha78u^Zx@$|b-8@Ng@|xXBh>@*L9?;=N2MGd+{15IL2yf*{P z(q)8;ow1)sR)dCdx8drXCmbotu-Vqz#LE%K4J{#el5>d50Aq15_BsE$Dm39DMFgp` zz{pZaGq-QPalW^=_(L=OV{V@}jU5F0YjIuW$vDH)o5jela3^Zi!|{XI6TZpBC3~j} zh4&5rN=q4TcRUF>vwV8W!VASCLQjpNnmb2VAW5W7Qv8s8s|*E%06Bj&O%p-z&#Zg7 z%;!FtTfEg!Y>kLvETO!FDS3ZnhjqcF%Rp;q-g$Tvj$`aXsbfd+`279N>F6e{bGx#M z+hFmMk6b0rml2yt?-7Dj@_z9Bb@Hn{{61!!9<&(^V&6*Cr`qDzj6j67SsMLaAvh*- zcUd!B%O#$tBzWOAxsJl5>THmCUy^MnSlJ0a+7lDa%4Tn22sA~wuuyhTLH66bdnm!8 zvk?SK2+rf7oo<8k6M=Ov3e-$`>LIkfJcI7zf0l~h6`vBi{VzqDq% znVM=wC~k zwvG(W;O;$f?b>zWBr&v5|)^7@3!`RaKK)lDbX)=%J6xfM7hn9axhD;n913 zuLkhy>WsBWH&$}qFY{)hoNhtZ(1c^`m%O>q3eLq1zE>=}Jleji3 zc}g2NHk2#Rg=NO6R?Ofr{&{GXQ4s`|UJ7tVC80=mupw()!bVn^GsWHeM%ugToo$CA zq|B@tY$DuH?Tx^xQO}sqf5@m4roi#!_AliAJ6FZP8%rs#`-X>q9Y)K=;2jA|GlQ+t zApB~13@3Eajj&($W!_amWozpzqeyv&F!FF3r)AuFh*`0UlU$aUb5D1~h(Otv!J%u4 zsP4P>nRSz0f+UO;lC++4ZpdeP#5D`6S}22ZPB z!pAN__H7=LUXotn%pk0c=wQ$q%X0QJb(Y*6T)8qWcI4OW^#CXuuJ=~=#hZiUk8@|` z=1m>ol+Mf+_#4X(e;=(q!OI4dp3uU*!;_S*j|munazP#Ty(Sq)cXl?fh-X>~uXZkl zqQkbpAUBIl`N7HLv!Mi&OGqYfsTX>1%#G!NbS*ZeZQ(>d#H+Q&O&p$ioyL;VBz+oz zVtX*CbU>vud|P)oyJ)_vV8>ve`l2aRGV5!#@EQNX0#x$r!K#BWoS*@5W}pn=t0WZp z!LX=@J<XQwJfu^w78g)O%ifRXE)-~W)wY)k0njg zeA_Qxk*q)!^b00m-@DB6^*d|(kwEix`)@zhU}1d3Gx+$T zwHJqUB&fdf6pX^|;q!HMxrQK}owe6O6h}!}Gf*q=p8^6Wp|Ivh&TnJYmdEK5j<`N4 z8W`1i*lVll-%XI;XcoUux34+d`bz{-#Zh|fu@2@w41un;wqPd2hx>;?AVD=6eHG#) zc5cL`bwBj`^M^51;*|Q$g@7pJDDG|4d7XLtoE}&QPs($A6u}3$ILw^X|8)^nHK?8LA4Ord+-eGa~i#8KpMp2R4>E$eGf=ww__GDUfhl&-Yq@ncwLu zL!hm%uY)8D*qww>st}@uh+SfF$FIUvRkd_JC*y=2P}Ebm`}h{9tc$ycC($x*L4RXE zh6@JT`kLTE*RIgHQVvhz?$vlT<=2SN?bk8LDerJM6OSOF9DOtpG1rXhjytSi(Bmtt z_4;^X?YwstfW#L&GmcTyO`d_pbPqum`sem4L?~sjLeIi{--H}?K%0?EOn`=^{Un)j z6+0dc4**TNAy{z!b_Ta-1WYBv7K&#{`XVV2oHu_GIBygVu2k}s4SoJiv6i{pUA8ul zRqk6dR6s9aCxZPweU~PHom%;GB}wtDrs7rPPjGQOJg32ooT=T2Xvs3B9@VBOzDa+n$Gm>;a_AV)23_s{UgpBrj`0~k+7acQQF%ElG> zx)iZq0Yt%O$0+%`IcvsqIpBuRcP-m==Zl?;z}@TMh!i-E#-Bc)Yu=7h9_>1Nhf zR-$~?Yk3{R7j{Xcs?M)YsKMtO0H@`XD%H(nr5Re}E!s$HJwRAgEIYGYqRQc%qG^+5 zE4CYN%l!>8;i4>4rKZ#@(T})PZf!-}ch`bl`fhrPXcc=1UUE?*ilx8CxJGdkZ68Q= zd$U(F-D4%qZ%=9+j_FJ?@zE4bIl2xDOz4dv-K{Z##CiE+N-K-GpQLC1Y0LW+ib-a_jr7qFA4b>KIY5e3Qw;R6g;88D}nuxZvs`ve+v z?SIn|aF%H*%8FPHKgHV`YOJRPepkDCU*F@4Ja>xq*&5PLivlrL7uR!D#Qj6X?Gk&> zIae;E2@&cJcy6xt!UB0Qa@@Mmk$+fwb7yQu^AMbUu$cOMe1lfB(B5HFY0qerS*JC=|ch8G%twZhSN z8xeYzF6wr&GrIU=qJu7>o)qe5(RxJnU1_lt_vS{wpL^Uq>t7acslulZ!jfaU$tHZ4 zcI*#rY{5y>{jyJ^#xbRfU*7J&`LD3gHITZFM5y(i*{>+i< zbA`duWPe5ENJC*A+1*A1jw-FaeL0=L5q~?Sj~}hYugLe>2Cp+YB8g2~xu3a30@n zl>D;&M?Z1My9D?%G&Fvh7Q;^`=HEwqgQ33T;B~c!qi=(3xBu5#Q{G1IHfyywre1eF z>Gb<32wG%hGy{lKSW;u#^8DWhben@5zmcKRGSFq~%RQ5>Kc;3=&W?}XlwM5{b2Jf6x9{?WU?rW=76ILI+v0@Mt9kq&=nlb`gy*d2jMywMupDgMu>U3 zJ$8`UeoJLaN73Wy8~PS-dSg`bI%dFLMgo7M3Ml#F+3qd-*9I@~LJ3c4P=N(tEFK&_ zW4|=PvhUeJ2n>X`MlGxI#&&9ib>wDjz09O+-hTdf4$K56T=*NoS$4}yU=iA5X0v`> zyg!Z>DB&!4ZBS#re8B(qzM>qowL3HD--j?66y!xT{l^@nYvT_X?dvZPPB*3W$VjDU z;3(T^X#a*xVbwGKJ6$U(8>|tt55qMUZXO>}{JT@o0=)Xvyk~s3s!KL|YR3+lHv`3y z5j+5?sNLb#tTnYBOR2dyq%Rq5mMGt5%UG8TZI4osTudDLGg0&>&WwV~zz8S42hyEL zN3XEMCt^yna=@`PKi~O0EnGkwj=9MOHU`LKH_)28PlETdIdr9o%kQr{I;6fYZ9KC8 z%-K51DgHPYjtvdyw~fvvN7BL~KM49~80C7jL7DB>R00x(Yn@F}5)u5s_?VTL{l>>S zme*JMXn?z8?vY@3|Ig!xTp38w80StBmd1z1l#U1MbCXICAaC?+By568+4&9Frr#Io z+5TfPJ17(%a98^qLHg+er(^ZCHJQODDsoe|AppOAS@lCXgFR@cGoaw}Wn<>g=wLl7 zd1s-bptn0^U=D{hmJkJ>3=kM0ZN3K7TUU|MK}P=Uus%m<0dj12!1&siu!D)+U)c=# zo%WtG2ly~LCxls(pbqnIucu;$APBFfI~?^rb=UJ71WDgR0heWCvXkI&KN5fihj=EW z>(O6Xqfh|TwV52jpC+4Rr;=LCo_jnHz@g4{Qkfh(0im9cr_lVzOO8=kQNi^58uzy3 z-1eK_p45Ty{3_8J3yVS`obs8|J)8t+{OTV+$zugAmltJaNIwmUHQr4W z4^O~pd*^D(?0`hOU-2|(;^E}a@W>BfDfS=)7vx%|gb_Gnk9?Obe*8_)e`kqFcK2%? z6w}-Q4k;IkbybJ>)&3m3e?cmwjLfW6W(_R0O?k-r_6>u#UU?Bbt2<^!=FV=qjDlT z=P|+EaV#xu*a~3ropyw5EaT;<@*YU&Xa+l(BUl7wKPF#{D$R*C*?CWtC0Bb^TiCd4 z&EjW3c%b#UO27+Cj~p#fqdMfl45-De{ysRG@bUYIx;lqlboJ!|Mqz0kr2slBXBSPC)13eI8})^ zWX$_)dD%|tuX7_%VaVvk?Q7aRom=PeH3h0QMg#V7<_o9lP^p9&JYSN?MnLc}xK>zB zG%3*4LOyY@@h0^d@Rm6Ac@T@z@diWnY@tqL#5tU;zzebjb<2sAHq&{a{GoL(-e&acNtR8^(aR zEm6S!Ox0^c1BZ^s?;mv=JZ}HP0QVUP?Sm*tRN_5^2vweVdt8jM5e=fqCZ4%}8<)QV z=!|{;=}~2*!#Rh;_iA4sAk8EkX^LLc`?j~vMg*|$KbPkL3|^;{?+dJtD-IR%6&2MJ zv)>vDi2U(WKejCtSMh<^S;shSj=au&-OQ|tVUzi@JZ0aB;gG~R+8_Rm*KCA4JG*-J z;=x|vhY&5GzTTXP`E33C`oonzhj5tq_KK_4_V~7X;Pzm>GgG4MDaZJ5L)Y6b?d*2! z&imfhxA`~J_j=tsImNruy`jCbr_`g=E`=kOssTKq5pon@7H>rW;fvINSb6lO(o;jvuhAu9SJ6jm&{GcEd2A9j7h0 zfN|f)P;A2|BfM9@;D$c=G5}(MoXabKjR{b&bEXQQY*J`|NEW(b%EbaXSdWVZ?8K!9 z!5_*d6Jh~kug6d`Bpbj5oL!95q`(D;GG2!WO~n(SNa7h`RxRv!km1b^7zU-r1>kak zw^+ej1kvCv1@?A8e*?S~q@;mUX`#5Xw<sfHp#af`AK0 ztOEWf4=x-Py#y{M@)k&y^1tk*Y!(~1CSPZp|}g$ zK2YBOl=q+V{4ehC%gd@GSt)a$S5E z;J<9+zf|r2=R9}gYI;GWK8=%Hnq60tKufPLzxX3Af_BacRr88Mw?udz0o~Xn0@)PMrPK9}!AM>mZ0yw{9nkOSM&u^U|VM&MeL<$H>XwKf*z@a*dC5xL*! z2n6IF%m_*jy9q+-Zi7HfPg3VT#m6}X+~#F*R}U- zi|y^F4M&DuCJqGTQqV?6JcG*7-6JmNaE##NNWAoIA^`lSiCBx!Ymh@RTDSUv#X-{x2 zUglXouPlCZ9_v)+k3USjG?0oqBI6`4eQ~}89viLd_WF*$^Aw)Y0hx>u^`bkIsC_P@ zY}B#_e^<2;XjXPDvgQ`($VShJ>}GtMXTx537cSsXskYgT>gn@!tFII%eO zf`CJl>!dKr=DwB@0czp|Z?SgX{DKe#bAi1^=<`rCo*u>;)ihgjna}~AquU*?KJvIy zQM2G_&A!L~_~wF81;YR(AwN;R{p#!&x187FRY!xnb9{|}(ajF_*;SIEbHQH+?9fRzIaw2LyBims3{c6L#b}r(t=_w{0dBztupqhS zl?;sTjfBv#ey@XEo?~$O)6!AFP(sFHwMy#FhWY3YfAOsoqD)U7I^WKzKh#4tvc$1X zp#Ev;B;s4)A@*}qy5u&Kd%JD7^DW0|fT}U?b0ZL@1@Qh)i|Q3;U$}VV#!+m2U^3XE zDg~--C&>^8H-J`Iw1wdxopw`Ng-zuS1RiuYZRCfU&;S#4(=l7-oa{+gel|=BZV(8M zsQzxWm?a|lYV*|vz~0R#N1JDk@^O1`p^@9a$I}8})RzgIw&zRhwk%A2mbD=nE+au<%*gq| z00mRv{qIg3h!MPrfX;Xh444GaAeIzj8?JzbQho9@<)QmP`(b@hCK(<4pEjf|bSO#U z`I-_WqhM=$;>;nj?HiHNz8pak$ptJ5yqqpU9}s+!NUz(g5MlcgNQ_m22nC*mr(CqU6Qb+5I_|2W;M$dr(+Nir?s-Nraf2NpGzV2&byod~a<($DFMmqJKJ~j6 zv89R8z2U?8^mGR5SCtPD6mSfC;r*9nntETsS10j076A*0IIb21wp3l?P1BhY_*~Hc zWAtyC-k`#(7v$*93wfdOqHq&h7$18?BJEA)UX3?edhE|H+uT>U5B%)!f4SliV@a^_ z4H4J%aKTHPgmtQMvM!y~c0@~U^6-z5sZ)eQWV9}+aP-mX&Y&xwdNx!Z9j+>f*bA+T z4e3gGCMx@;^gdH+%qU1A#F{KF=j>e@7ISZS4}O#9Vgv%FLR}D z1z!@ltL78*LD0wifcJ~xluKkVYgbHf2(+(|_?Ys4&=d@}ERA8a*AFHWslH;;;NK{e+qg)h1~W zaqNn~ui|NmykeRx|Dy~Q3_cn+MD_*YEMBg9ar)zd(`@`?zHNhrtl-<3(&$x zt4}-MOIiC$f$JZeNT$yIWp7N;H$c%9TUFwCIzK#|%yc^Wa~+C3{9rg2i8Z9`;B<1_ zp8nH52JK5o9Hz(?y}Msfy;zxiYRHi{0fNSMQ_fY%Pb4x<_T%{HrQij6_pMsC zvu~q|31|6o`bW9|zv+AHthYgdI<0tsQ}p@SD{SLmDf(_eA5e_u4jq)*THG1`{@$4M zROg%!MN;ZVOkdL+c;k2&SX2JH#vFaNP+Qgm2k=WlO>4VpcpeL`kTQJ{-4D*oa;*jF zR4PwQ88D|82ixz<2LuX4qdR&Tax@MKz1fDwSH}()WiQs+L4p|)0L6ATroKASr$^NU~Q$$AX1E`uXM_z&D7NchymiG=S~EeI49)ogzn*VK)A@Vd@?&tY6El~@ntIo%k zUteE)k5x6)j-RnG<-o&&x$1l|+^BmbBnj_ZQ)+vDtApD=}kQGab;)%(0 zu9qbaHhk3aTwnF$9oZZgPff$VY$?yNM*kL$;LW}RRkTsGcp7Q^^R%?5>3`u`AR0gz zdPl41CvuGpt=xI{sIw!UouO9BunLYTEM1cjC3LF6J$M1+It`n8svNHWWh%r0d#$_c z9dg3^vVVfbb2M)t=4T|>z|?&yw!GZ_;e$mZ2c;h&CXaQIRP#?501Dgp2ue7{q`Ki4 zk6V@Iq_fM%_FdxPhVh6w_#DZ{#$V!B-gI{BHNVu_un&~E)l2pl?S<*1)XJcUJ8nUw zo|np<&KH9qDNkG6`bScBkg_KOC13J+4j_tGAJ52DQvLxafIDu10b)-Bi&f?Fopx@I z9vZcWlzGp8y>{iT14YM^`onz^iTyud2n6~udEb3)=~31pK@G{H1>?Zc98V75;-x`; zCR#r-OgrQSclM?o{4abk4mm+!b%VNzmqa#08E9wwL&e@$5)x>Fl2> zjwbxwaViLH7;Kk*dE$-JPKTi)hZr+<6^i{ZU=Y)rGn____0l8eD44YS2VEM6OeY9O z-0%3PQ!rD%|BQcR(*qKByw~J=zAqB#fQ8EW&vh~VJq-{wFr5*O7lttmGE=vbpfi-H zf&Epf%xoDGcC1^|%|mXGM`2Ve?@}oJxj2OUj0X1XH?;=6-!UEZ>91YdaR_r zRDG8=|Ni{!-YmsmeuzaF%nCjuobNkbEEw4V1}fYQ-|Sfa)!#WjPaJ__Bio3_T8*)y zY;i&U8Pjv$e<7qCVEphHeh^~k`>6LGd1~wY`E9+ny}w%xgCY-C+IVK?>$=XTC36-_ z2d9r~*}izy?9X+ZBLiiZWbatt-w8q8-f0p2=Q#xUt|-)gq=x(9iJS_`TmSFgQ{h4n zastuh`6?F2gS`K4NCL zk04n6w|m7+MG|*VZFQ#j22uh8u1qKhUN_EPBSuc)SGxlbKUaO(Gd`BhE+2A_Q3k->8UNbzDo&qc4VQUB_5rC;zGxg#IdL+~JVAmnb-}v+!vDDy|bQO2~Wl zan!#AxZz-^)4MiYz8f^UjH+56-4+Q6z$4EAa1>vK{e!2Sq39Ehm|c%yk=jZJ4dK_o z{u^@D9ehPDS5f4aTe;FdyBmN#)E%R?^;&#d-cmJ7h{Cyo=>g8<(G?JJ0Ui&9@iD1nD#)%PP%$_^prYv^-BLt}9K)a#3D#`xL zZPo*R>X#ALk___y2-2qqjV3&iwn=onlPaEdRt86w;17PVb>SsFW5$S}UhMDMjsA|8 zFSKQr2ku{vYVNp=5xng4t3;^LY}A0q8_K86ro1z!z(EcsbFY2-uQ?)139J&J`?*0I zzU?uW8@I;lnx-i*Ea%gFb)M;wJO>p#C81`Q+F?7dr9J-~^&kKiflWJH*Tu?y-qdW1 zW@?ynie9JyoLI(p+R_#mk+SRsNjTRj`ld1$2zvjdG#9>62BK?E7KG*0m8Ndr6l{-W z`cPij5Tg%NzY$#@mEijM^B77{0@+aqva9vA_9+ht{u*ls9RyOr>qUimkM3-Een-Y- zrCirH#_i032o)^l80haA9ojsrRj)_=L&u34XuK(8>hUl9Tl^{NBgBg&a+k6r;lX2; zH%>pb3w@vk?QoRTtAbD|k2MJzbSh521mR`wpl=12AS#@uS4OF3{sqJDL?DSXXpq6a zZDbu+Lw><21-qJYb7`54-p@ABT#IQOO8 z+Iau(t_1<3_`E_ zrj_ict%vr89h8Npec)!iRjZC34V7K&zS!4g6Z6pwV2iXdOQavxHdis&0op&W7cU3t t>QYQrfy95SHMFh=PChiQ0QT^}m{x0S}aA@O1TaS?83{1ONk+w7viU literal 0 HcmV?d00001 diff --git a/template-no-theme/static/images/hyas-schema-logo.svg b/template-no-theme/static/images/hyas-schema-logo.svg new file mode 100644 index 0000000..bdd0d45 --- /dev/null +++ b/template-no-theme/static/images/hyas-schema-logo.svg @@ -0,0 +1 @@ + \ No newline at end of file diff --git a/template-no-theme/static/images/hyas-screenshot.png b/template-no-theme/static/images/hyas-screenshot.png new file mode 100644 index 0000000000000000000000000000000000000000..89c99a37aa8dda65a5e50ad38ddef2575fdd5a3a GIT binary patch literal 58631 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