From 5c8a5d6cde3be34966ffc61ad6763e71b149f567 Mon Sep 17 00:00:00 2001 From: Elliot Hesp Date: Thu, 29 Aug 2024 11:55:06 +0100 Subject: [PATCH] feat: docs.page 2024 refresh (#359) Co-authored-by: Mike Diarmid --- .eslintignore | 9 - .eslintrc | 40 - .github/workflows/pull_request.yaml | 17 + .github/workflows/website.yaml | 22 - .gitignore | 4 + .prettierignore | 8 - .prettierrc.json | 10 - .vscode/settings.json | 1 + CONTRIBUTING.md | 26 + api/Dockerfile | 9 +- api/bun.lockb | Bin 273274 -> 0 bytes api/package.json | 18 +- api/src/app.ts | 35 +- api/src/bundler/error.ts | 23 + api/src/bundler/index.ts | 166 +- api/src/bundler/mdx.ts | 25 +- api/src/bundler/plugins/index.ts | 33 +- api/src/bundler/plugins/rehype-code-blocks.ts | 76 +- api/src/bundler/plugins/rehype-headings.ts | 51 +- .../bundler/plugins/rehype-inline-badges.ts | 18 +- .../bundler/plugins/remark-component-check.ts | 105 +- .../plugins/remark-undeclared-variables.ts | 27 +- api/src/config/index.ts | 28 + api/src/config/models/anchors.ts | 19 + api/src/config/models/content.ts | 17 + api/src/config/models/header.ts | 25 + api/src/config/models/logo.ts | 13 + api/src/config/models/scripts.ts | 16 + api/src/config/models/search.ts | 16 + api/src/config/models/seo.ts | 9 + api/src/config/models/sidebar.ts | 43 + api/src/config/models/social.ts | 27 + api/src/config/models/tabs.ts | 18 + api/src/config/models/theme.ts | 26 + api/src/config/schema.ts | 65 + api/src/config/v1.schema.ts | 182 + api/src/env.ts | 17 + api/src/events/installation.ts | 8 + api/src/events/pull_request.opened.ts | 53 + api/src/events/pull_request.synchronize.ts | 26 + api/src/octokit.ts | 51 + api/src/probot.ts | 72 - api/src/res.ts | 55 +- api/src/routes/bundle.ts | 57 +- api/src/routes/mdx.ts | 25 - api/src/routes/preview.ts | 57 +- api/src/routes/schema.ts | 11 + api/src/routes/webhooks.github.ts | 57 + api/src/types.ts | 3 + api/src/utils/config.ts | 93 - api/src/utils/github.ts | 137 +- api/src/utils/sanitize.ts | 10 +- api/src/utils/variables.ts | 22 + api/tsconfig.json | 24 +- biome.json | 39 + bun.lockb | Bin 0 -> 503528 bytes docs.json | 284 +- docs/assets.mdx | 39 + docs/assets/github-bot-comment.png | Bin 0 -> 34959 bytes docs/assets/local-preview/step-1.png | Bin 0 -> 66587 bytes docs/assets/local-preview/step-3.png | Bin 0 -> 74495 bytes docs/cli/check.mdx | 27 + docs/cli/index.mdx | 24 + docs/cli/init.mdx | 25 + docs/components/accordion.mdx | 55 +- docs/components/callouts.mdx | 13 +- docs/components/cards.mdx | 94 + docs/components/code-blocks.mdx | 175 +- docs/components/code-group.mdx | 85 + docs/components/custom.mdx | 2 - docs/components/headings.mdx | 4 +- docs/components/icons.mdx | 23 + docs/components/images.mdx | 21 +- docs/components/index.mdx | 3 + docs/components/property.mdx | 94 + docs/components/steps.mdx | 80 + docs/components/tabs.mdx | 92 +- docs/components/tweet.mdx | 34 +- docs/components/video.mdx | 9 +- docs/components/vimeo.mdx | 16 +- docs/components/youtube.mdx | 14 +- docs/components/zapp.mdx | 37 +- docs/configuration.mdx | 641 +- docs/contributing.mdx | 51 +- docs/custom-domains.mdx | 19 +- docs/debugging.mdx | 8 - docs/frontmatter.mdx | 67 +- docs/getting-started.mdx | 178 +- docs/github-bot.mdx | 4 +- docs/live-previews.mdx | 58 + docs/local-previewing.mdx | 31 + docs/locales.mdx | 41 +- docs/navigation.mdx | 172 + docs/previews.mdx | 64 - docs/publishing.mdx | 35 + docs/search.mdx | 2 - docs/vanity-domains.mdx | 12 + docs/writing-content.mdx | 2 - domains.json | 211 +- og/next.config.js | 4 +- og/package-lock.json | 966 - og/package.json | 2 +- og/pages/api/og.tsx | 112 +- package-lock.json | 3171 --- package.json | 32 +- packages/{client => cli}/.gitignore | 0 packages/{client => cli}/.npmignore | 0 packages/cli/CHANGELOG.md | 9 + packages/{client => cli}/LICENSE | 0 packages/cli/README.md | 23 + packages/cli/package.json | 34 + packages/cli/src/check/configuration.ts | 8 + packages/cli/src/check/index.ts | 84 + packages/cli/src/check/relative-links.ts | 93 + packages/cli/src/check/types.ts | 14 + packages/cli/src/cli.ts | 10 + packages/cli/src/commands/check.ts | 84 + packages/cli/src/commands/init.ts | 187 + packages/cli/src/index.ts | 1 + packages/cli/tsconfig.json | 14 + packages/client/README.md | 3 - packages/client/package.json | 30 - packages/client/rollup.config.js | 16 - packages/client/src/index.ts | 14 - packages/client/tsconfig.json | 95 - packages/npx_cli/.gitignore | 3 - packages/npx_cli/.npmignore | 0 packages/npx_cli/LICENSE | 201 - packages/npx_cli/README.md | 3 - packages/npx_cli/package.json | 20 - packages/npx_cli/src/index.ts | 29 - packages/npx_cli/tsconfig.json | 65 - prettier.config.js | 4 - website/.gitignore | 20 +- website/.npmrc | 1 + website/.vercelignore | 3 - website/.vscode/extensions.json | 4 - website/.vscode/launch.json | 11 - website/README.md | 36 + website/app/api.ts | 99 + website/app/components/Anchors.tsx | 51 + website/app/components/Button.tsx | 55 + website/app/components/Content.tsx | 160 + website/app/components/DocSearch.tsx | 62 + website/app/components/Edit.tsx | 26 + website/app/components/Footer.tsx | 63 + website/app/components/GitHubCard.tsx | 57 + website/app/components/Header.tsx | 96 + .../brands.ts => app/components/Icon.tsx} | 373 +- website/app/components/Link.tsx | 18 + website/app/components/Locale.tsx | 247 + website/app/components/Logo.tsx | 39 + website/app/components/MenuToggle.tsx | 18 + website/app/components/PreviousNext.tsx | 115 + website/app/components/RefBadge.tsx | 38 + website/app/components/Scripts.tsx | 46 + website/app/components/Search.tsx | 57 + website/app/components/Sidebar.tsx | 203 + website/app/components/TableOfContents.tsx | 72 + website/app/components/Tabs.tsx | 54 + website/app/components/Theme.tsx | 163 + website/app/components/mdx/Accordion.tsx | 55 + website/app/components/mdx/Callout.tsx | 70 + website/app/components/mdx/Card.tsx | 64 + website/app/components/mdx/CodeBlock.tsx | 56 + website/app/components/mdx/CodeGroup.tsx | 188 + website/app/components/mdx/Heading.tsx | 36 + website/app/components/mdx/Image.tsx | 56 + .../app/components/mdx/InvalidComponent.tsx | 28 + website/app/components/mdx/Link.tsx | 15 + website/app/components/mdx/Property.tsx | 45 + website/app/components/mdx/Section.tsx | 14 + website/app/components/mdx/Steps.tsx | 57 + website/app/components/mdx/Table.tsx | 11 + website/app/components/mdx/Tabs.tsx | 187 + website/app/components/mdx/Tweet.tsx | 61 + website/app/components/mdx/Video.tsx | 30 + website/app/components/mdx/Vimeo.tsx | 26 + website/app/components/mdx/YouTube.tsx | 25 + website/app/components/mdx/Zapp.tsx | 43 + website/app/context.ts | 206 + website/app/entry.client.tsx | 71 + website/app/hooks.tsx | 65 + website/app/layouts/DocsLayout.tsx | 89 + website/app/layouts/ErrorLayout.tsx | 97 + website/app/layouts/Footer.tsx | 67 + website/app/layouts/Header.tsx | 77 + website/app/layouts/HeroGradient.tsx | 157 + website/app/meta.ts | 78 + website/{src => app}/plausible.ts | 18 +- website/app/root.tsx | 168 + website/app/routes/$/route.tsx | 252 + .../app/routes/_layout._index/Afilliation.tsx | 289 + .../routes/_layout._index/CallToAction.tsx | 24 + website/app/routes/_layout._index/Demo.tsx | 17 + .../app/routes/_layout._index/Features.tsx | 122 + website/app/routes/_layout._index/Hero.tsx | 32 + .../app/routes/_layout._index/Platform.tsx | 136 + .../routes/_layout._index/Testimonials.tsx | 19 + website/app/routes/_layout._index/route.tsx | 30 + .../app/routes/_layout.get-started/Card.tsx | 36 + .../app/routes/_layout.get-started/route.tsx | 269 + .../app/routes/_layout.preview.$/Toolbar.tsx | 194 + website/app/routes/_layout.preview.$/fsa.d.ts | 279 + .../app/routes/_layout.preview.$/route.tsx | 302 + .../app/routes/_layout.preview.$/trigger.ts | 44 + website/app/routes/_layout.preview.$/utils.ts | 383 + website/app/routes/_layout.tsx | 22 + website/app/styles.css | 389 + website/app/utils.ts | 294 + website/astro.config.mjs | 13 - website/copy.cjs | 11 - website/package-lock.json | 16987 ---------------- website/package.json | 81 +- website/postcss.config.js | 6 + .../favicon/android-chrome-192x192.png | Bin 0 -> 11260 bytes .../favicon/android-chrome-512x512.png | Bin 0 -> 110250 bytes .../_docs.page/favicon/apple-touch-icon.png | Bin 0 -> 12966 bytes .../_docs.page/favicon/browserconfig.xml | 9 + .../_docs.page/favicon/favicon-16x16.png | Bin 0 -> 1147 bytes .../_docs.page/favicon/favicon-32x32.png | Bin 0 -> 1569 bytes website/public/_docs.page/favicon/favicon.ico | Bin 0 -> 15086 bytes .../_docs.page/favicon/mstile-150x150.png | Bin 0 -> 5676 bytes .../_docs.page/favicon/safari-pinned-tab.svg | 30 + .../_docs.page/favicon/site.webmanifest | 19 + website/public/_docs.page/logo.webp | Bin 0 -> 45106 bytes website/public/assets/beautiful-by-design.png | Bin 0 -> 73594 bytes .../assets/collaborate-with-live-preview.png | Bin 0 -> 48320 bytes website/public/assets/customise-and-theme.png | Bin 0 -> 110961 bytes .../assets/get-started/add-content-editor.png | Bin 0 -> 49197 bytes website/public/assets/get-started/preview.png | Bin 0 -> 78838 bytes website/public/assets/get-started/publish.png | Bin 0 -> 100798 bytes .../public/assets/get-started/terminal.png | Bin 0 -> 27757 bytes website/public/assets/manage-docs-as-code.png | Bin 0 -> 26836 bytes website/public/assets/publish-instantly.png | Bin 0 -> 36418 bytes website/public/docs-page-hero-video.webm | Bin 0 -> 3212193 bytes website/public/favicon.ico | Bin 0 -> 15086 bytes website/public/logo.png | Bin 0 -> 122330 bytes website/public/logo.svg | 1 + website/public/social-preview.png | Bin 0 -> 569780 bytes website/src/bundle.ts | 219 - website/src/components/FontAwesome/index.tsx | 13 - website/src/components/Link.tsx | 67 - website/src/components/Links.astro | 43 - website/src/components/Markdown.tsx | 83 - website/src/components/Meta.astro | 46 - website/src/components/PreviousNext.tsx | 84 - website/src/components/RefBadge.tsx | 23 - website/src/components/Scripts.astro | 292 - website/src/components/SearchBar.tsx | 16 - website/src/components/SideBarToggle.tsx | 15 - website/src/components/Styles.astro | 31 - website/src/components/Theme.astro | 32 - website/src/components/ThemeToggle.tsx | 24 - website/src/components/icons.tsx | 145 - website/src/components/mdx/Accordion.tsx | 20 - website/src/components/mdx/CodeBlock.tsx | 42 - website/src/components/mdx/CodeGroup.tsx | 81 - website/src/components/mdx/Heading.tsx | 36 - website/src/components/mdx/Image.tsx | 34 - website/src/components/mdx/Table.tsx | 9 - website/src/components/mdx/Tabs.tsx | 82 - website/src/components/mdx/Tweet.tsx | 27 - website/src/components/mdx/Video.tsx | 22 - website/src/components/mdx/Vimeo.tsx | 21 - website/src/components/mdx/YouTube.tsx | 20 - website/src/components/mdx/Zapp.tsx | 36 - website/src/components/mdx/callouts.tsx | 87 - website/src/context.ts | 44 - website/src/env.d.ts | 1 - website/src/layouts/DocsView.tsx | 43 - website/src/layouts/ErrorPage.astro | 105 - website/src/layouts/Footer.tsx | 46 - website/src/layouts/Header.tsx | 67 - website/src/layouts/Navigation.tsx | 53 - website/src/layouts/Root.astro | 70 - website/src/layouts/Sidebar.tsx | 128 - website/src/layouts/homepage/Feature.astro | 30 - website/src/layouts/homepage/Heading.astro | 20 - website/src/layouts/homepage/index.astro | 245 - website/src/pages/404.astro | 12 - .../[owner]/[repository]/[...path].astro | 215 - website/src/pages/api/docs.page/tabs-sync.ts | 65 - website/src/pages/api/docs.page/theme.ts | 47 - website/src/pages/index.astro | 9 - website/src/pages/preview/[...path].astro | 20 - website/src/pages/preview/_Preview.tsx | 157 - website/src/pages/preview/helpers.ts | 314 - website/src/types.ts | 0 website/src/utils.ts | 151 - website/tailwind.config.cjs | 23 - website/tailwind.config.js | 55 + website/tsconfig.json | 36 +- website/vite.config.ts | 29 + 294 files changed, 11498 insertions(+), 26995 deletions(-) delete mode 100644 .eslintignore delete mode 100644 .eslintrc create mode 100644 .github/workflows/pull_request.yaml delete mode 100644 .github/workflows/website.yaml delete mode 100644 .prettierignore delete mode 100644 .prettierrc.json create mode 100644 .vscode/settings.json create mode 100644 CONTRIBUTING.md delete mode 100755 api/bun.lockb create mode 100644 api/src/bundler/error.ts create mode 100644 api/src/config/index.ts create mode 100644 api/src/config/models/anchors.ts create mode 100644 api/src/config/models/content.ts create mode 100644 api/src/config/models/header.ts create mode 100644 api/src/config/models/logo.ts create mode 100644 api/src/config/models/scripts.ts create mode 100644 api/src/config/models/search.ts create mode 100644 api/src/config/models/seo.ts create mode 100644 api/src/config/models/sidebar.ts create mode 100644 api/src/config/models/social.ts create mode 100644 api/src/config/models/tabs.ts create mode 100644 api/src/config/models/theme.ts create mode 100644 api/src/config/schema.ts create mode 100644 api/src/config/v1.schema.ts create mode 100644 api/src/env.ts create mode 100644 api/src/events/installation.ts create mode 100644 api/src/events/pull_request.opened.ts create mode 100644 api/src/events/pull_request.synchronize.ts create mode 100644 api/src/octokit.ts delete mode 100644 api/src/probot.ts delete mode 100644 api/src/routes/mdx.ts create mode 100644 api/src/routes/schema.ts create mode 100644 api/src/routes/webhooks.github.ts create mode 100644 api/src/types.ts delete mode 100644 api/src/utils/config.ts create mode 100644 api/src/utils/variables.ts create mode 100644 biome.json create mode 100755 bun.lockb create mode 100644 docs/assets.mdx create mode 100644 docs/assets/github-bot-comment.png create mode 100644 docs/assets/local-preview/step-1.png create mode 100644 docs/assets/local-preview/step-3.png create mode 100644 docs/cli/check.mdx create mode 100644 docs/cli/index.mdx create mode 100644 docs/cli/init.mdx create mode 100644 docs/components/cards.mdx create mode 100644 docs/components/code-group.mdx create mode 100644 docs/components/icons.mdx create mode 100644 docs/components/index.mdx create mode 100644 docs/components/property.mdx create mode 100644 docs/components/steps.mdx delete mode 100644 docs/debugging.mdx create mode 100644 docs/live-previews.mdx create mode 100644 docs/local-previewing.mdx create mode 100644 docs/navigation.mdx delete mode 100644 docs/previews.mdx create mode 100644 docs/publishing.mdx create mode 100644 docs/vanity-domains.mdx delete mode 100644 og/package-lock.json delete mode 100644 package-lock.json rename packages/{client => cli}/.gitignore (100%) rename packages/{client => cli}/.npmignore (100%) create mode 100644 packages/cli/CHANGELOG.md rename packages/{client => cli}/LICENSE (100%) create mode 100644 packages/cli/README.md create mode 100644 packages/cli/package.json create mode 100644 packages/cli/src/check/configuration.ts create mode 100644 packages/cli/src/check/index.ts create mode 100644 packages/cli/src/check/relative-links.ts create mode 100644 packages/cli/src/check/types.ts create mode 100644 packages/cli/src/cli.ts create mode 100644 packages/cli/src/commands/check.ts create mode 100644 packages/cli/src/commands/init.ts create mode 100644 packages/cli/src/index.ts create mode 100644 packages/cli/tsconfig.json delete mode 100644 packages/client/README.md delete mode 100644 packages/client/package.json delete mode 100644 packages/client/rollup.config.js delete mode 100644 packages/client/src/index.ts delete mode 100644 packages/client/tsconfig.json delete mode 100644 packages/npx_cli/.gitignore delete mode 100644 packages/npx_cli/.npmignore delete mode 100644 packages/npx_cli/LICENSE delete mode 100644 packages/npx_cli/README.md delete mode 100644 packages/npx_cli/package.json delete mode 100644 packages/npx_cli/src/index.ts delete mode 100644 packages/npx_cli/tsconfig.json delete mode 100644 prettier.config.js create mode 100644 website/.npmrc delete mode 100644 website/.vercelignore delete mode 100644 website/.vscode/extensions.json delete mode 100644 website/.vscode/launch.json create mode 100644 website/README.md create mode 100644 website/app/api.ts create mode 100644 website/app/components/Anchors.tsx create mode 100644 website/app/components/Button.tsx create mode 100644 website/app/components/Content.tsx create mode 100644 website/app/components/DocSearch.tsx create mode 100644 website/app/components/Edit.tsx create mode 100644 website/app/components/Footer.tsx create mode 100644 website/app/components/GitHubCard.tsx create mode 100644 website/app/components/Header.tsx rename website/{src/components/FontAwesome/brands.ts => app/components/Icon.tsx} (52%) create mode 100644 website/app/components/Link.tsx create mode 100644 website/app/components/Locale.tsx create mode 100644 website/app/components/Logo.tsx create mode 100644 website/app/components/MenuToggle.tsx create mode 100644 website/app/components/PreviousNext.tsx create mode 100644 website/app/components/RefBadge.tsx create mode 100644 website/app/components/Scripts.tsx create mode 100644 website/app/components/Search.tsx create mode 100644 website/app/components/Sidebar.tsx create mode 100644 website/app/components/TableOfContents.tsx create mode 100644 website/app/components/Tabs.tsx create mode 100644 website/app/components/Theme.tsx create mode 100644 website/app/components/mdx/Accordion.tsx create mode 100644 website/app/components/mdx/Callout.tsx create mode 100644 website/app/components/mdx/Card.tsx create mode 100644 website/app/components/mdx/CodeBlock.tsx create mode 100644 website/app/components/mdx/CodeGroup.tsx create mode 100644 website/app/components/mdx/Heading.tsx create mode 100644 website/app/components/mdx/Image.tsx create mode 100644 website/app/components/mdx/InvalidComponent.tsx create mode 100644 website/app/components/mdx/Link.tsx create mode 100644 website/app/components/mdx/Property.tsx create mode 100644 website/app/components/mdx/Section.tsx create mode 100644 website/app/components/mdx/Steps.tsx create mode 100644 website/app/components/mdx/Table.tsx create mode 100644 website/app/components/mdx/Tabs.tsx create mode 100644 website/app/components/mdx/Tweet.tsx create mode 100644 website/app/components/mdx/Video.tsx create mode 100644 website/app/components/mdx/Vimeo.tsx create mode 100644 website/app/components/mdx/YouTube.tsx create mode 100644 website/app/components/mdx/Zapp.tsx create mode 100644 website/app/context.ts create mode 100644 website/app/entry.client.tsx create mode 100644 website/app/hooks.tsx create mode 100644 website/app/layouts/DocsLayout.tsx create mode 100644 website/app/layouts/ErrorLayout.tsx create mode 100644 website/app/layouts/Footer.tsx create mode 100644 website/app/layouts/Header.tsx create mode 100644 website/app/layouts/HeroGradient.tsx create mode 100644 website/app/meta.ts rename website/{src => app}/plausible.ts (54%) create mode 100644 website/app/root.tsx create mode 100644 website/app/routes/$/route.tsx create mode 100644 website/app/routes/_layout._index/Afilliation.tsx create mode 100644 website/app/routes/_layout._index/CallToAction.tsx create mode 100644 website/app/routes/_layout._index/Demo.tsx create mode 100644 website/app/routes/_layout._index/Features.tsx create mode 100644 website/app/routes/_layout._index/Hero.tsx create mode 100644 website/app/routes/_layout._index/Platform.tsx create mode 100644 website/app/routes/_layout._index/Testimonials.tsx create mode 100644 website/app/routes/_layout._index/route.tsx create mode 100644 website/app/routes/_layout.get-started/Card.tsx create mode 100644 website/app/routes/_layout.get-started/route.tsx create mode 100644 website/app/routes/_layout.preview.$/Toolbar.tsx create mode 100644 website/app/routes/_layout.preview.$/fsa.d.ts create mode 100644 website/app/routes/_layout.preview.$/route.tsx create mode 100644 website/app/routes/_layout.preview.$/trigger.ts create mode 100644 website/app/routes/_layout.preview.$/utils.ts create mode 100644 website/app/routes/_layout.tsx create mode 100644 website/app/styles.css create mode 100644 website/app/utils.ts delete mode 100644 website/astro.config.mjs delete mode 100644 website/copy.cjs delete mode 100644 website/package-lock.json create mode 100644 website/postcss.config.js create mode 100644 website/public/_docs.page/favicon/android-chrome-192x192.png create mode 100644 website/public/_docs.page/favicon/android-chrome-512x512.png create mode 100644 website/public/_docs.page/favicon/apple-touch-icon.png create mode 100644 website/public/_docs.page/favicon/browserconfig.xml create mode 100644 website/public/_docs.page/favicon/favicon-16x16.png create mode 100644 website/public/_docs.page/favicon/favicon-32x32.png create mode 100644 website/public/_docs.page/favicon/favicon.ico create mode 100644 website/public/_docs.page/favicon/mstile-150x150.png create mode 100644 website/public/_docs.page/favicon/safari-pinned-tab.svg create mode 100644 website/public/_docs.page/favicon/site.webmanifest create mode 100644 website/public/_docs.page/logo.webp create mode 100644 website/public/assets/beautiful-by-design.png create mode 100644 website/public/assets/collaborate-with-live-preview.png create mode 100644 website/public/assets/customise-and-theme.png create mode 100644 website/public/assets/get-started/add-content-editor.png create mode 100644 website/public/assets/get-started/preview.png create mode 100644 website/public/assets/get-started/publish.png create mode 100644 website/public/assets/get-started/terminal.png create mode 100644 website/public/assets/manage-docs-as-code.png create mode 100644 website/public/assets/publish-instantly.png create mode 100644 website/public/docs-page-hero-video.webm create mode 100644 website/public/favicon.ico create mode 100644 website/public/logo.png create mode 100644 website/public/logo.svg create mode 100644 website/public/social-preview.png delete mode 100644 website/src/bundle.ts delete mode 100644 website/src/components/FontAwesome/index.tsx delete mode 100644 website/src/components/Link.tsx delete mode 100644 website/src/components/Links.astro delete mode 100644 website/src/components/Markdown.tsx delete mode 100644 website/src/components/Meta.astro delete mode 100644 website/src/components/PreviousNext.tsx delete mode 100644 website/src/components/RefBadge.tsx delete mode 100644 website/src/components/Scripts.astro delete mode 100644 website/src/components/SearchBar.tsx delete mode 100644 website/src/components/SideBarToggle.tsx delete mode 100644 website/src/components/Styles.astro delete mode 100644 website/src/components/Theme.astro delete mode 100644 website/src/components/ThemeToggle.tsx delete mode 100644 website/src/components/icons.tsx delete mode 100644 website/src/components/mdx/Accordion.tsx delete mode 100644 website/src/components/mdx/CodeBlock.tsx delete mode 100644 website/src/components/mdx/CodeGroup.tsx delete mode 100644 website/src/components/mdx/Heading.tsx delete mode 100644 website/src/components/mdx/Image.tsx delete mode 100644 website/src/components/mdx/Table.tsx delete mode 100644 website/src/components/mdx/Tabs.tsx delete mode 100644 website/src/components/mdx/Tweet.tsx delete mode 100644 website/src/components/mdx/Video.tsx delete mode 100644 website/src/components/mdx/Vimeo.tsx delete mode 100644 website/src/components/mdx/YouTube.tsx delete mode 100644 website/src/components/mdx/Zapp.tsx delete mode 100644 website/src/components/mdx/callouts.tsx delete mode 100644 website/src/context.ts delete mode 100644 website/src/env.d.ts delete mode 100644 website/src/layouts/DocsView.tsx delete mode 100644 website/src/layouts/ErrorPage.astro delete mode 100644 website/src/layouts/Footer.tsx delete mode 100644 website/src/layouts/Header.tsx delete mode 100644 website/src/layouts/Navigation.tsx delete mode 100644 website/src/layouts/Root.astro delete mode 100644 website/src/layouts/Sidebar.tsx delete mode 100644 website/src/layouts/homepage/Feature.astro delete mode 100644 website/src/layouts/homepage/Heading.astro delete mode 100644 website/src/layouts/homepage/index.astro delete mode 100644 website/src/pages/404.astro delete mode 100644 website/src/pages/[owner]/[repository]/[...path].astro delete mode 100644 website/src/pages/api/docs.page/tabs-sync.ts delete mode 100644 website/src/pages/api/docs.page/theme.ts delete mode 100644 website/src/pages/index.astro delete mode 100644 website/src/pages/preview/[...path].astro delete mode 100644 website/src/pages/preview/_Preview.tsx delete mode 100644 website/src/pages/preview/helpers.ts delete mode 100644 website/src/types.ts delete mode 100644 website/src/utils.ts delete mode 100644 website/tailwind.config.cjs create mode 100644 website/tailwind.config.js create mode 100644 website/vite.config.ts diff --git a/.eslintignore b/.eslintignore deleted file mode 100644 index ea717d99..00000000 --- a/.eslintignore +++ /dev/null @@ -1,9 +0,0 @@ -public -.next -package-lock.json -yarn.lock -bundler/dist -dist -build -_docs.page -og \ No newline at end of file diff --git a/.eslintrc b/.eslintrc deleted file mode 100644 index d07bc392..00000000 --- a/.eslintrc +++ /dev/null @@ -1,40 +0,0 @@ -{ - "parser": "@typescript-eslint/parser", - "extends": [ - "plugin:@typescript-eslint/recommended", - "plugin:prettier/recommended", - "plugin:react/recommended", - "prettier" - ], - "parserOptions": { - "ecmaVersion": 2020, - // Allows for the parsing of modern ECMAScript features - "sourceType": "module" - // Allows for the use of imports - }, - "settings": { - "react": { - "version": "17.0.0" - } - }, - "env": { - "es6": true, - "node": true - }, - "rules": { - "react/no-unescaped-entities": 0, - "react/display-name": 0, - // All images are from remote sources - "@next/next/no-img-element": 0, - "@typescript-eslint/explicit-function-return-type": 0, - "@typescript-eslint/camelcase": 0, - "@typescript-eslint/ban-ts-comment": 0, - "@typescript-eslint/no-var-requires": 0, - "@typescript-eslint/no-non-null-assertion": 0, - // suppress errors for missing 'import React' in files - "react/react-in-jsx-scope": "off", - "react/prop-types": "off", - // allow jsx syntax in js files (for next.js project) - "react/jsx-filename-extension": [1, { "extensions": [".js", ".jsx", ".ts", ".tsx"] }] - } -} diff --git a/.github/workflows/pull_request.yaml b/.github/workflows/pull_request.yaml new file mode 100644 index 00000000..f0067e8b --- /dev/null +++ b/.github/workflows/pull_request.yaml @@ -0,0 +1,17 @@ +name: Code quality + +on: + pull_request: + +jobs: + quality: + runs-on: ubuntu-latest + steps: + - name: Checkout + uses: actions/checkout@v4 + - name: Setup Biome + uses: biomejs/setup-biome@v2 + with: + version: latest + - name: Run Biome + run: biome ci . \ No newline at end of file diff --git a/.github/workflows/website.yaml b/.github/workflows/website.yaml deleted file mode 100644 index 6884e635..00000000 --- a/.github/workflows/website.yaml +++ /dev/null @@ -1,22 +0,0 @@ -name: website - -on: - pull_request: - push: - branches: - - main - -jobs: - validate: - runs-on: ubuntu-latest - steps: - - uses: actions/checkout@v2 - - uses: actions/setup-node@v2-beta - with: - node-version: '14' - - name: NPM Install - run: yarn - - name: Check Linting - run: yarn run check:linting - - name: Check Formatting - run: yarn run check:formatting diff --git a/.gitignore b/.gitignore index e2aebea7..04871a10 100644 --- a/.gitignore +++ b/.gitignore @@ -1,5 +1,9 @@ # See https://help.github.com/articles/ignoring-files/ for more about ignoring files. +# We ignore this since we're using Bun for workspace management, and some environments +# will detect this file and use npm instead of bun. +package-lock.json + # dependencies node_modules /.pnp diff --git a/.prettierignore b/.prettierignore deleted file mode 100644 index c56984ad..00000000 --- a/.prettierignore +++ /dev/null @@ -1,8 +0,0 @@ -.next -node_modules -build -dist -domains.json -spelling.json -_docs.page -docs/components/tabs.mdx \ No newline at end of file diff --git a/.prettierrc.json b/.prettierrc.json deleted file mode 100644 index 58c3742b..00000000 --- a/.prettierrc.json +++ /dev/null @@ -1,10 +0,0 @@ -{ - "arrowParens": "avoid", - "trailingComma": "all", - "useTabs": false, - "semi": true, - "singleQuote": true, - "bracketSpacing": true, - "tabWidth": 2, - "printWidth": 100 -} diff --git a/.vscode/settings.json b/.vscode/settings.json new file mode 100644 index 00000000..0967ef42 --- /dev/null +++ b/.vscode/settings.json @@ -0,0 +1 @@ +{} diff --git a/CONTRIBUTING.md b/CONTRIBUTING.md new file mode 100644 index 00000000..1c93ae8d --- /dev/null +++ b/CONTRIBUTING.md @@ -0,0 +1,26 @@ +# Contributing + +This repository uses [Bun](https://bun.sh/) for workspace and dependency management. To get started, run the following commands: + +```bash +bun install +``` + +The repository is structured as follows: + +- `api`: The API server which is served via `https://api.docs.page`. This is an express application which handles tasks such as fetching content from GitHub and markdown parsing. +- `og`: A Next.js application which serves the Open Graph images for documentation pages. +- `website`: A Remix application which serves the main `https://docs.page` website, and the documentation rendering for each repository. +- `packages/cli`: A CLI for running various commands and scripts for initialization, checking etc. Used locally and on CI environments. + +## Running docs.page + +Generally, you'll want to interface with the website and api. To run these concurrently, you can use the following command: + +```bash +bun dev +``` + +This will start the website on `http://localhost:5173` and the api on `http://localhost:8080`. + +> The API requires a `GITHUB_APP_ID` and `GITHUB_APP_PRIVATE_KEY` to be set in your environment. These are used to authenticate with the GitHub API. You can create a GitHub App in your GitHub account settings. \ No newline at end of file diff --git a/api/Dockerfile b/api/Dockerfile index e984ef7e..11640129 100644 --- a/api/Dockerfile +++ b/api/Dockerfile @@ -13,14 +13,15 @@ # See the License for the specific language governing permissions and # limitations under the License. -FROM oven/bun:1.0.29 +FROM oven/bun:1.1.22 ARG BUILD_SHA=default_value ENV __BUILD_SHA=$BUILD_SHA WORKDIR /opt/app -COPY . /opt/app -RUN cd /opt/app && bun install --frozen-lockfile --production +COPY . . +RUN bun install --frozen-lockfile --production + +WORKDIR /opt/app/api -WORKDIR /opt/app CMD ["bun","run","start"] diff --git a/api/bun.lockb b/api/bun.lockb deleted file mode 100755 index b7a1f90b0ffbe889bf7e769003bc1a0423bd4f57..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 273274 zcmeFa2UHeG6ZiXoAcz@J#0)B8Kok)WMUW&W6j3oN8I&YZjF>TkSrl^?vtj~s788po z1~6x3%{koqGgHg+?%jnMxc8jzd}sUYP)~Q)ud2Gbr>CC*-?zTLNo07KiDy8tiBE7; zJYL%fFj1_b&T`-X%Cc|;gTwa`*kC=^#c3@4 zeWlF0*Q;hvou)RT)Qcu+q@_^ofHD2ax9YQbM~c>7zX|IKVf+$6FDF=&AoS1q5yr$=W16 zNR}ZP5f&2Z=dVx*u5b3FCeK;bw852Bwa}Ak&LF~!CxPe=(iH<^+`gn zoGAaSDCEW4$1~E8#t{^b(I^ylWQYEX^{OJoqoBAjKc&TdIZ?jLQazd)5%+M92%nL} z8B%bF|0%VD_a{j%Vn0(m#xW{7Ai|6C?m-nY9s8WxE0AnQ_9z9hlPNgFmqbPlNscCo z_y?23{Iwz3kfa{TdL-YHvJuHBlCblOk_5dMBoXf=N&?z1Qyux(PZIW*kgQ9xZ5<)6 zdr3my%PS-@I6|RlPVs=NPZHz&Ny>=#GD+0aXsj5|Q>sJWBnf?8(#N>(>I?IiNfPx? zkFao`)(XW!17ZFK(xQOAizux~!hZ{r$ispLg55vJ4-GYToLJ{PpCG%Hsl6>FiBcHb zh$MK<`)`qpZzQZU?)UQv3K>RAcrvwP9HC($o*^{e$jAV1LKKlrg!{!igzkqZTK7Id zQ9iWLdr&*(HO3<_Fd#fa5#|#f5*X#9=+I2aqXkLC-IyfCWC2wM@>LEwi)d*s(k*$MGJr*`argGe9o&!k@D!_Hpt z&+C!%!{g2p<2>getgqc9s}a}7QP?k*P#t!UkRJAdNGBn_Vd2Ix9zlT$pYYJIfFKWr zN0?v!ExWO!knezyFdy%LaK&_IVSHmrVx5c-r5DKxR1Y-{@(86^U8#=wu@~FTNFpEJ zKEWd*X{H-c9eHU_^9;QST?9YRNaDVT4hi$dTF4dKv&8nGfM8nJ;Sqj;A)ZKBzixtl z5=q#9OA>Je1pE7h1w@1g1p5XC`1wb;PJx(n;et*@}YFH#-z;TIyrXG85+&!;FJ z+<({l33k#&xsTeBk0752{}AtR#Zs!{ewjoP@k9oP282=uhEN^z?G+L-Jb>zMV!tg( ztnbz&5oef3w6SN1cg!CH1%HDE33fbVB787ZBhtgTJiNSoLLWCwmZb!t$dP}K}am^%Ik>oR4efjG>EW``z z$tTJun8HzbM*8~Vc@f~_<73gm#$r5V6LHn1MTPihki>XK zlEl2~kOcpMR$D!isR2Si>usVsxChh^{S(6kdoRd7=99<2cDT^a`Qo_4e7$MJbgm4d zox~%;pW~zbgtAj`ehfsysP5(O5lE&K4}%1I^xQP2XOSPDN3y9M@qZ^}vOig}7YF2;z$f4-CM@5EvFY1UpeMWf}QyIYQug{b7@Wy`JB>c>#vjn);Bw_ynN!X>&`Fasl*Q5I1pF3lT$G-eN zN{G{+>NwZflWa)RkR;;xWh9*ULW5|LP+1xyj(em~Z#YVrzbDk5zs>@@Bf~xXd_2Nq zf-y1J)Ao#Rh4ENn-0U|n#M=WK9Y0UvC_b#O#PNb2ox_4cBLZW>d_3~^#m=!p z`zX>wo@t$g1(98x4Y2MbqRik%;W$C4ds92+jq+mbF)}2W*H6odVjRNlrU(`D5$xmR zjW0;y9wYPZ{I$Oh_YMf7HQ?(N7!pkV?qnD9h{skym`~W@$$~v^j~Jv;;T1+|v{rbZ z=}P*T?|)m@|F)jJ{ApkG_6YM07j_cl0g>p(3G00AG$9WGG!J<6&)M!&uS9j$ ze;F^tnL!eIHxq>Zbdrdh_4O$}jQh)6!Ef+9Vcg;Lg&py!&llFgcWQ?oueV|0p23)C z-Uo(KKkT}a#QmDPK;VLXB7!`^hbx*a6zuONiG2BlM@9q$hAZmP#sj;X#dh9rc%SJ& z_Ao9#p9tef`mXF7PKWo1Fpq{y1pC9n=}Q28HNUl3SpOL$VgD%kuS=58b;02nkxxXR z2kwA^b@-gdjd*$eeWX6bW3o)hLqn3NXOq++c~)#^e?cK(ejb#G%F6{kKCftqbv}>2 zAiG#cKH;8`0fF9%)vJX0j3=p0?PEn5L=xj2Al5sR#J*!evIq>uY&5y_gU?-8E!JpKr3H=y?6B=h$HuaK}{iunck zt3d6V`-HeYr3mq!p*rGjw_k{-0m$+@ z$+zP8)*KSzJwkQFpGy+!AzhT;Qw6>Uy=XxDQ>r6h7fHh2HqwJ1{(j&=$K-%uKgAMi z$GVwA67h_rd1*p&07*PQLyrpacB4At|3-D#r+wAa!`sh?mQ((CDJ|jjQBmo*5Z@yD zoS!dKI&e`LM;GFzM@0TQ=}oc{)!UJTUE06Bu&%zH5XRZ(q{yoZ`Q!I_{GP9<_jZ4O zU&rt1_&wmLGeW+GkwhGWNtPq2PU{YF{@eO{a#rXM@}@5n6fdtso(Fzk#q+`MW%zxK z_}WnM_xa)XHKt?}^AHhk985<9MNBX?P}z7%n9t=T(a-M@tI*QVWB<6R|RbidA%n;T|4U)Rl9u^W9NUuwfi~PF2e|?wl8+z?p*gtDgS9{Or z#^w)Sc61njyg}U>RetW#(%WOGTXohludRM>iEeK;_$X)lLK zFV?Rz-+H^f?wfb+eU_}5`}nzo=BL4@D~#UU^oes-x0#wpWfD zCO+u;V4?ZN)+R4|e}CX)(7AdYy8#9h8mCz6^z3RrW!tJ-&&x$TIdCoH`$)6bv1w0| zvd^a9(;VID&GO)^8{JNR+qJ!=d7H!fclNtmPn#qIP%<5hL$2IcYo7;T~`O?(h>A3ymyvXp=6QAzh(OGTdh(!s;e^|~kt~F)wlK5jC zFBshUlyquAo#S7g9$)wKcX!xkNQG49e z%{zWxd*f@}q*IoiTqdCnl^>t6 zDSf5-fgu&D-}7tV{aRIg=D-_iJ1@ zvu^LHtdtw^&UyA8H>yS)UF{gwtL}!rZ6{vT*R!pCCdhg3BDaO7_FXjbsdBoN&c>!Q zss=Z7dQyG**Zr}_j>pAc)wy1wO|W*=E}dd0PB0t&^kccWeYH0EIp1<>J0R=(wj*82 zs^|eRKZP@LO!>KBozs;{&mQl!Q}xR1=vGhl^pSfvbaT8clSX)% z_k8?m_3|4>&20J{jou#GGbL$xn~!e38?wRJw9LnA)2IA6wK$+h zW7h^}=XLW9ui5ZK^7?xEk%8B(d(`Ue>1tWkuG-n=Zqu4qf4RFt_t5SGx*uGzw?GO=#_W>-Z|}#Ib0iU zo;`T^yUdz-T{~TESSNkK`EPOak7-REy=&mS@uRcys&;zZr~JGI58s>`8=7?EV&=QW zJFnLmqyNsR<@zf%pGAKDam?atx{s^(q@6xjnzZSDaP6?D$e3RPYCGG^EHl0Hy{pR- zFVq+jbf9e7t@Osm8tdkFno)I5xrs*=$F*ZV8VR&L z8#mUSbl+M*FQBW@wjIw#g_~F{sBd_|_II32?PVC0U?LDVkR8SujS$n?a;U5_% zO6~B~iEg++tIWxi?Y9R$N*`8rd_vg1I!P0gelPJY)wka~6_c*R-aM}pvZhR{qurA= z&+W8JTr$!_>r~Rs%Z%g$eHp_K)4@yb+w0_m0+NCB|);qnp`c=#8 z>zd@wjO^67vz71t?8KDG_VxN*2-gW5(DsbcT9;j&&VZ@9uEvZqxI% z|L*r)TF%X9^y{0yw{twqjp?$bx$ZWn5l@;VFWwqEd5Wg>SigDaAMNISBEWN@Rw`cL~9&Un#eibqbcu1UME2R@od*~}Z&{%a4lJLb;YwzpmY?dUF23Z5|!e?y6SI z%j$C?_ssl08&#awtE9DC{OIvj=X%x71?yMH$lRAwQ~&nYZgu)DEL*`~PX7*W6|N;2 zM_RRP|D~0M(UvXyTCA&e{l{$!_mqx{Z!cPMe{z|fqs#rauG9U1+6tF(wZ8ZB&rR() z^J=)6gSua%m`^r2v6GDNR)2Try2|95*GIK*k1=cJrd6eNrz$zVk6sou3ug=YF2qHmBwb!-xE+ zo$w{DgNe%g#e>s5KAb$g?(NSr>w`V}ZJe<4NxbF#nkPO?9y8WL%#{v_YFB{WL z{qf1q_suUov)Z`*+0W9?^e=YPD!0qh(PxckDcu2;;$x=G8uZ%VxBk={uPaVa?Us1N z;-S{8?K!i~%q?3^!`N)jPP;VAz|ilaTmSv}6jtfz{&!yoCg_fw)u$$7`vsZ#~sVR z+F`v~C#AQMM$+7i^(Q@9Q@hsB@pHF4J>RgK{;E?pcdFP7ei!x4e&yCT`{NQ4H6L59 zsj%c=MKVl&fe6^^rwyM`2+ro6SHa^yW_U^)ViQkYscB-X1hL3e(V;!J5gu! zhwE*|Cx`Ye8|61X>+Y|nk1{GJY&ReB+T~W%x8TqtO@<9H>3=v=t-+jrFB3-^882Iw z)^vaSm|a%$GuJ(8>GoQ^=FsHl1sIs@tI_L6f^{2Dh7(*#Fuw4Tq;+4=e~%AO7T-ZNeAT zukCgneY4;g@7oU7PbNM(T73sUk8Rb*+y3fx)+)p8bkdPCLmKnG*X`TZp+Ag2sq9|; zHGQsOb(NnN)VA%Z?5){-TSoNj8+xr-Z@1sR{hmQhx1_&T@7uxfsCnuiPdqn;@12%n zSEG{l?X+`uH8$8es=iryx|72!qfy7>C-;v0)w8a{7x$h?ieGh?%GbfkE>5yn&Qz&Wu4Qgl=km-t<`tiZ>D$WlzDU2k25!JJyGh_x~et4?|WZ1 zYH~fDuk-dkf3Wmd9mALB-uyYv_U!p+-R{lz*ni1sS?2fLl|v)$t2CdmW8A?qzs?># zxoN<;-M4ZNG>w>8Zb!W#OaF{Lxgsoe&*nYa2aaDc@YUNfwQh!6+@Pi%=Panz#r*B3 zPF9=jF14M-dc$wM&z||yFTVTQb~<-z{h_nDzw7kMkCR8NY_?>^-hp>c^7z-Zy6&=a z{Z|Xl7sq{U=<{Xw49osXPSyM5;r`N@@jRiYgIl!_N-$#vT~_`o3A{a(4uR# zf!U5Hy}T|pdLK6bj{l+ZeQ#gj^N5Sdi8Xo`PU?7$XkcwywxVT5-z`@=eOUQ;n)*DW z+ih>(4#`+?XzYnjJ%)rlX|a1t?og+dIa}7~rhe()t%{TG2+dmSyoZck(>27+=V!82 z?Ka~-^7?DKsFhp%P~DxH*VXTub)4kyw#vq5>iya|j$`MyUuPb0RP)}Q&D#P;c3f9K z$FY@Ja|hlZd0*T;=X6)~-p86PR@ZX~Hk#ypG;wxb>}}tr>NmQmM678YyWhCf`ifUh zzSEp;uW@(n8tXoNj_Bu@T&a~iF5acgs_gH7f9_OvNbXbXcAK`JZ08K!`#4Lpann`@ z7FcAhuRT6Ry>7+xJ}VQ=Kd#F%N~^o4vHfdZgUC_+Ej?n++`Cw9XmjmWNyFN#&$Dbl z)?xIvnn%i8zy2`pM4xY3x- zXf^^d*Wu$k-u}!N~^3zfM<4fDk8lDr3cXoTEwlU}YiLM$eYs@_HZW@ntZ=yKtZ*~=LV%Uzn?r+R2^lT_YkTAdg( z`FYIpXaBaY|7|_{9h)(zrj5y=0|^s#r{u-u8q{5^SKFZH%-%y^{r;BV@o7xyLCdUX ztq+c#?E9p7_sG^-%kSTstnsjwL&cpNBW7Qn;XP|#pMX0n@>Wbuwcqr!!iHly*`*Ji zd|KD~{jpsaDz)}k>ucKUQt2(Ho0vHN_%cA}-IvI(lY76Mm!h-ne5GB>4!Y0CzIWx| za(7aP zkF0 zz{n=|YK}Q}DtNf{g18Zxch2t2%bh+=V}K*?H@wf7>TWe0)pE=dCc8^`@o8xwAjIOe0fAOG-L*|QDKeC|8; z&qH2!mKY9bQgu%Be$Vpf2d3FO9yqfzA>sDaJWa!qx@GIu$UWwDsqT!Ky<^+l?oics z=cvsIH{RYm*x-?BjVi(ESD(#qxN-fXr)n*|df!>SK5SI#hT4_Etc=?+q~vFD^su4 zycgPKmub204|~}VSRY~>h%|w>-@5g<&p)qr>-67Tm9zec<)229=+{U zUTQZ=?QCpv){$E70(C1m*Mv{X4&z%pE8{q{(XM@6O&TW8Sx$Nx9Po zH(VFH8tA9#JnjC(W|f9@`MWdLwQJFL^ykM_#&1g-7r*CX-3m1f93NPpPD^@tNY7eJ z)m$S+E9PxV_HCQAabGL@4F6?zDRF2gud)Wyd*A92c-y(+`VMpX9Hx^0R=4;+==FJi znLvhm(0g4}(8lek7gks=gLo6-OObLly3`7Tl=_&5LucZ_$r%&#G4!D?@#-RvIHVNj zGw6ez$fHea49r&{hgQUMo!-GqDy-j)czU-V3%|HDB+&))G>iB)CE!mJ-+_3JTkiOq z(8O7YJXjuAQNv)pDB>}G%pZj!d;EV8Z$~^>_{TbuQrN!^IrbEJaIhn#Fds#{^88~Q zQVR1s2{0r7sB@bf{t@xE#ADo2=MMJSSA)`me;zltL#MF9dVPs+A;u4VZZC{g){7$^ z_b+1SIV_4*=J(MJ)0}v;A@^iXQsFos5s&!cUz0AWIb>dkAovHzZBhbYT|45j{(1i7 zuAd0v5kEM#DaZdh;(7gn<8@G!4fd5yJf0sIztr5pHuFaG%ix|R;71WpzX~n3|7XMx zEdf82Hco$$R~{EW7gl)uw}|gbJl9zk#-fk)49hAMGfEKuPU89gW1B_!R`#z+zZ}Q@ zhjmjNUXOl}On;(U?D>l%zE=tO^TZDp`QpUih7KZ$QfJnC|ufy_6iKN`aR!OuV1P9zoP1Bu7;3lPrE2KXSMFu#g;Jim&&f4vdo z2aiIxgQUX#o9HMM?a4o$-*TRz%*PXt{Tub-m;3!^E%8p`_+f+X;&Wkz^~%$i)?UOTcT&$@u*-Y|@n%Z?<=#J= zh<72L*AL>5QrQ0|;vGa@DhvC}ThSkN(cjt?+y64+`zVc{$5GT6*#C*@3Pl9*9J|yx zVBVbm7?SsY<#9>%zlwNICI52QpK1;Iw`V2bBZ%koBXYpwk{bUV;zug^mz%#{^hcmr zKkS#KRR1+={crx{@?(j|{>$?(H~+VZ=k<@6<*vWF^v8}vmHf-)#}kkB&+*G0e-`n+ zO1xbEed-A3SNP=%c_^xIoacx~{-v%Pw#$6=y8pZXaUNLj-z4*0iO2j&<=7tc3B>dB z6Ma(cFkh*ju>W$M?H46ke=zZu6hG>iJFTKXv7h-x^@QgS>WE!#{4bPv!e#UA^$YSZ zXAN-t6N$H_@$-8ZZbvMI71sMo{6ON>L}hL-j71;o^)?Xvi+G%Waqksp{Cyh!uYcH)QaH{n#Pj(XXMbKtMcH6JhxpD)@pHRW zzK5Z({xEkaQggt5))0^RM;)x(@xLP;=YK-+?>A)oZ`MedKk)F)aiLyVVZGJF>lNw>A>?59A+hQf)9lf_OZ?c>m(~ijvHy5#O44d~ZgZR6ESaHxb?+ zgDXz{j}mVu<{x91JARd>Lj0A8MUl(f6Oa8H`;XLn4}N(3(Zpl@%3+oHUBsIc&-Wkt zq!jl5j(Gh34CAJ+a|fA-`R-|(!-S@=f{=@w%_1Ovg?5hVk??HTV*Z(TwDTMsz zPX!p3SlE9ZI(+i}jTq#vUti++`2*KDM@T8`e>w5C6u(rzY@7KU;&J}x{IO)cf0N9& zq=yIckF~>X|Hde{v+e}qok|e@S>j!Yhdty#Y982sRXV(3|3Uo4S^sXtbNuiv)du@d zB%b%r;;f$x;xT^shE2J@KNw0kKmL9RamzV_ar}>n$NV!ZH~(g|`0@P<_HfC~-#FrN z|G|G_x}+A4|0?m_h{t^=_1OU*%-5#L>mtT4b?nN#Kk@Vk$)7)|_ntDpgm}6I@_FTU zd@ihT{1=JG`sdtB9Ru@Pw0Q9R#r};skUM_?#AE(oPwLqh<6{3iL>~U-6y|>t-f6x3CuGk2$G(5c6Y*wrqC@Kc_Z)7X@=W(-?$_EqgtmL2Lkjn29dG^avD*uak&Yx5kwt4&x9fZFh z1&cOrhfZOI^~Ms9`NzJ2Ho5bcD*6Y?8O7?L<80ANGn9e+Kb%g!pUy6g6({=lIJy7My?4CpZ2m z;)jUy$F`+N_Mb((8}YbzP~^_P5p5ng|1&2y{wc&`{UP@#9G6i0_n)kHjd*#eVj`i+DPM{KaD&QVR30iO2X6e=WLr z9*VNT{BnBu;Q5ET)Um@h^RJ1wC0=UWU{RPi?j-Q=&29M#Mf_mhAmZs3%+H@j5sY#- z^Sg+rS6H#A7iatriO2a9<1Y?xLSNnyKjsgY)WY$H6Hm85KF@7ZY_RS@;`#e8){fLM zF#no(oL|7<;`X9qV7=CK_(uMC-;g?o%qJ3$`vFlX!gp!2DIFOX?i3e@hCU zUIFBfpK!^A`B35!KS1O_ZvM9tkLM5UfoHq)vCzVLPn6q0JxP-@!?Z9f7fb zPvQ|juRUG|&?&4ipG>@yIDY6$je+^!#5)kr9Jd$d8-1*2PcIKK|6G^5enyKt`dvN_+<~{}rWxq7L&$J%!&Np;_wOL6`Y{#M_Gg(I$8NiNs_5fyKQmm%l+g@Bd)s z@)hau-9n6C>b*~H{u;jx@f<(er54WLbmDDA|6t|De_o8A?aB53m3UL~4-U@&sdiYe zX|IC($$17bKY)1U{YUCO$b2I4%HRLE9pfpiuwEwd`2K;sb6a5?_pxr7-Ua7Zte-Nh zP=sW@E%D9BKi7-E{_19ZKjL})BX@H1w~}~c@{icHios_SZ!6}HaM|B~9Qz3GZ;}7< zbje-+Gl;iSnm@VE|9ixjWc}4~|KIf|H~)Q=c&RM%%=14_iATHK^ZQ%k=?L=I`j?yk z;e89w6K|&EpZklF%ugrYS&5f=hG0HJ^bdbh-yK1hdG&z> zU*6h+OE2H8h{xRX9H76b!n~u%!#CP62T}_2T)v#AkUu&1j&l6Y#N+ved`NwED)aM*cM|iD9Kw#2!g`;G zcOV|)mU{2PKJ!*y!umrSe)o!bkW!crBOdoJd>6<629d}5N0DlS{XZn0&mU-$JO6s# z1?R8gJb&DXcNWK=KLCk8IR34~WBu^`BRBp}#N+%cHE$dq`)}n_@cdDuPFzw7^Z5S| zrLR!=>rZOzu+Mxt@mN3b%WZP}|0bUAKlqnwgY`Q37OY?JQpdpjSmLq%)TIQiq{I9k z;_>|A`IGDaHSu_UBY&moVmnH%{_!LGZ|o=h{)OvO&v2~oO}vfhzZQ9tyML@z;wuwh z^&g}Ce>bxK7XAh2Z@mAMIuFb*B;G!D0=t-J)V(ymFl}QkZulzPadMP7KUP5RdPls7uWq;$wb;5|8n7J9G*wtoN39tUrvOb5Iz^eayEG z7VaOZdHXvbL_EL0L!ZbS{8eqsL?L|)F=VSstHP~rZ={(=2h?*2WVc&uNHy*T;XMLf=5gy-i@ZvLJU-&rYt za_7J82x0zs|Kz+Np27<2MH7$nFLaA@|0NUOmiXf4|49jX{V?JAUtIrviO2q3Tz(bt zIDZzGze{|7;`#oA9Vvz9uT8kH{xEk^*ADD6kN-1ge*cMfsWzD3NW3-05C15*holtd z9}(}OG=6R`$_DG1MhN>K{MMjL?){fUyc78cCw1(Ijs1TU{qy+IC#5joF0$bLCAZ1p zM-ktR;>Z50DFqaD*wUUJxaL$vF{=VsX1icjd;Xgo>*LR`BlWbiSs9Q z?UtoLzrQI?{;v^lF8VJHuQg6s|A=2| z?s%+_?TF|718Y}q{)Q2c?{9K^EBoIh#*ewj*-z>@g4f?I;*mdamFbeZe^eU(zu*7Z zE}1H{uwGZ<@%)A|_8z(Z*AdV8E6)5sAfC^!91~(Gs<3X2*n;;zV5FWQnD0$I;s=W& zcm2$d{olWTVY~Up3i-i$H;6YC{TC;HWhNBNKisk1LR{x}v0iuLmG7UTIPPbDtdf7k zFL(brNW85$e#{+gNGa_9EAd!AeBa6C+fDr6e?Kh6H+0zlEaG|nz&E!SWry`H5Rd#r zAN!Zw_`eX3@$++=?ZRGRh4tD^DtLZz4h!SBkNHsIOR|1e5Rdhb_+eA-{d-G{pYtYl z3><%j$-@8sAM_Iuf0OKg3h})EAqR5bADkl|>rahX_=XKBh5eVF zBFsNnj9p6#OghY45#L(LzlTgdg!s0^!(K(YWBgKc!2I(P`fm~^e1Bp8a@U_X@eY)Ksd00PIQ~t<^Z5~dQtdGRjCg$i zK^?KnjlaQkA%5l&gOtMlV~EH5bJV#_4u6t(tbcWa5W7?xtfw+V*#9_h++I`+tYSVpu#N+PrRuZKWxbLUwOVlVM{#LzEt0cjdfj#NB%kQybnUB zu)_Rok>~XzH~;5}$NkHEVLp}n*#B42Kkgf;xq}_%TQ3mKAI0?_L%b8k&-bm=7});{ z;%!U7w_YebKiD2ijIpr7dc%q5^CR@-#{YzPoWEdCDhogCzsaKijbHBi8A?3XFV?M8 zR@r|N@%a9Yw(@jIeTH!SH;Cu^7kdb|!(L&9^~x+3_77e^a{apzkNul@wp*BQ^s(MD z;?0Ri>?l%m$ownfasDhzEVtzwD&hz0wp^l6*b>imscVS!M-Y$i&xl_ti_n|bK|f93BL@jb-&F$P>x3di3rN!Y)n z=ACUbKb3gge>{Gvc9{Qz_}0XOlbSokz*DZzOUQ2^9_Rn!#{Z^-{@bq+?w{iNpFuqC|Kjqui0@SbzWLgc@e_&f zQv(0l#Fu3JM(awJ{|MqsvVM+~kk?#aviuJu-lYWj-$H!P67WBW$Md7O>(_Zh$;O{V zd`ZUtLiDdf1K3h z^p6;%7Unk-Uy}1flg$PH|82#|e**FR{SUEA9RtUIf_O7={i2QAi^>D*eIg$FFZ*RF zmG8Voc>b%2fYf zGFwY_e(Xp*zP}@WTyp)l-1figpYuSb3N5U+n0R~guSMEYeZw&GuZZtPd^u{9y7rX$ z*zLmp%j=gVbP6l%|1$A-{&QXG7+Al~j)L!B@F$n=Pdx5lb&+Meg~g6O*4r-nN4+@t ztGu(|-|xV#-1wgn?@949hjBVE!u}6!yR3`u8W^sRaJF6OZo?#r0qAP{H#DYk=)Yoj+gVkv}(zdsKd8h|5|Cn{KGEp z0lp7VFRZYCFXH+8Z*k(^MSMxlUn++S)?ab_4BmCUd*2k@pAK*Ci0j&{Qgbu`KA0Z;qUhdE!O{k&p_fWmGXxiNGY7Z1;>Qv zH|Jh1e~k@)7sgGHNM|7VHk^E>8V z?)RBA-AJmSYf@h#N+&`P0HL>7{`6A zTl%CzVM{#nF7@7p4d#askNKCwD)WiN_az?BJ;We){@)UBC;FGlD*JDBN_hXp<3Su! z3hR$19{VrW9oo3PC>yM|i+EEpezZv)1M?4ww`#KbDIQ;5g&hx5kmQsYk{ z-hp`d=c_0d{p{x}@y$j5JO(*@qbtJrv2HMawp)}9*7G8szrTUuJV@nN|BdH)l*->F z9_Me29YyZ<-#S%<<@)cMA^h)8!7p-O zu`s7fee8cF@tw&(e8UE}E2;kDN7nm7Jf0sMyWH_N`$HH%?mMY-#{n792VC&kSZstu zEY0XbjC610_nVMJfrLKYv-t%Q`t%(tfB&QJGWmI=HJ#7fl7xN-x=^IZa->IRqI^59 zB*FKj3q_6u=SCOimDX6k9r~`6Um(%nk1mXJ09}>o3Zx7Ap>&~t1YH`4aZ%HDtctDUvt~oTm$R>G7Ojr)?sCZ_gqL zdpUH0yH6M5ct#iOzMu>3d32#bqWukBi03_B=>IIr?<7%_CG>vL1-t4L1mY+yN)1tJ zqLGTSL|m1q9saaQ!cR3(4-)oji*-oo)fMZI73AJ1N#1AKO{Z|h;o?N4vBb!#5yGAA%Z0MD6zdb5@@u@Lt=bm zNW%Ukv0YiBX|mW3iMXbbL{psDt}L;q&Y^b1nIOt}qTWAA*jq^bkV{BHHBppHQK13} zdr4yZaWL*lviLaamL<4dt#5{bC; z$PVIsFWQqLq5p;SfqWI^H<4GC7}pQ69kMRfYohUQ5>2(~2UP2b{e?;7(SY>IlQa?a zA;Gs0>&g=GwierqBVpHEWB_J)AfENManrNuoVa~2M;C^2sbM7@Jz`#(we zJ1q7qOV~Rm^2fz~WeNW$#Qu|F|368bJJQ8|Wr?OsB7a%zhs4LLVjU83WRk=OsQ)bFmJIk1xgcJhA>plOJa zVXqpD{7s@=S8RtQRG~)__kCTl9TIx=#C`*@9TMX*6lD{!U5yW6oA&I7TVml<-t;PC3N%XfD`wNrM zvmrgi*+H~xCvuSJw-=>@*ba&H+f}SXLa&=xSC(jZ5!)eA?=IFMQSTv2S5fv9r5i~U zNW|A$tV4q9LlWz0fY?7s?1x1EV6hH~bCADSSC-HVpmuZxiv5uA7cABx;U`?ID@*7_ zQakKKkwkr@s6Un@p0_hdB46`J(tnDD^aFZ}Q4uBTiDF$@!tPSB9TIldkc9p^u^kd0 zH_{KRr)05RS;Ed%u^kfpc2Vvm32rY*`cJVRKST+=gJQif3B6QNuP_OfBlH9D93=_v zxXAsJMBdMc{gB|!it?P;4vBMb21y-~kHz-?lO^)~T#OSE<9Z?1l_m7@s2%d1sP|sf zgT%*A^aK6h#CAyJ^@mu8g#Djl9TNH~^aJlNv`M1B3Q4r<(hsb&x?+1hG*VHPFjb%0 z;isXfZ%h*NU@q3%i~Y7FVZQ@O6iC$VL}^bF_h&bf@Y|at3MA@-NJ4+G*ba$x;U!9c zl6bC1kVHIDBvF(l?2HrJl_m6J#dc*0`%|bL4EWs_K zcGy`V_A5)YuNK>tCH!v?+aY0RqgYp#Xx~Kb7{?Z||DPoEl0`dPNy6_Al9;apV*5c+ z9wLbX3A<@x9TMD8l6W4UCW)@|^aFb7B;n^G8vjLtzasYklLUX2`Y~VGqF!MV`Zq}r z<9HzIL!$kmScgRYkyw`^abJ8C_5c5ni02d8N8Y}Oev~Epzl!bjG5?*b5lOT+MgtW{ z`tQ9fR)_E&7E9&7_pZY8!uLTr?_05s zppW}X`F$(eQOElF@4YLsL4UJG`M~$$uK3a?O5{!XeJk2gN4txt2Z{QB?_GuU^xu0| zArJrbz7^{S?Rf70_uf_5&;EPwid7-Jf5p1^@4c(ApZ@pW_5b$wuD>e&!h`ew?)g9(`^6X%kGv@=Nn9_-rMR}@}ogL9ymP>UQ(&Lj&8&a$5X3TjA&k=+SwHeD~4Lx z2mhRtJZyobQ~Mk0lWHYY4{MWnWFf`Kc5!Cnq84Y8W-!}w;f;ace1_Ry)qC~G+%!e2 z`rS?X<+fb^ykTOlRlH)S@t0wLehW>~yEG{BX2@x`Ub}a0%qTU#ZgRSIwWVZ;?TW{V zeA8+x4~9+dIel!Ov8G|$Hm5e3tJ2`n&(58zfB618D{pA6RdbfDPpLmG^r&TsMlYMq zrHzJ6Tf1X%H{Z86YaPwFw0Y{9mij5v$gHXjoKCiG);_pG_xf`Y!`on#6|6s zV--{LpwPFUXQrM#6l$ftZ+`pvm-Wr7L{tbiO?}l+ch|gI@qb*tl6$3NuN`I~GrB+Y zaP9rtqT>F{J2$5v4O}vf46$9D8M&xUFfZF<=AUSecuC zvc-k;j85zITuy$>eDiaVfY7$)25V+0*Uw8XgH~9ptJpaiB*Zk3G|!gZi&~8~!MB>cSth)YlX-Veg_9#x6@@aSXg-tS9n zu9dBG;(|w=->N;Y-?{CwePM?2lb!2KFYfARI6vXc)vSB?n{tj9e>=cMZT{Rn^{S2U zknH*<*ZsE1@@?Px)I3p2!@{pm`#A;?-TDXl4^Dd*Wf;N8 zmTUO&VC#w&?x$)_KYKc>>E<@8BBq^x9b0Lir+(YWA4&8-#q*b4{4SJ>+CHzwO}nYg zUb5i)z#Ut)Q|Cn|o0nO2`1E+Al(0j-N1aXP+vbdVHSD6}x!Bh2K74*|aVeziyWG9A zy;5o{e&my#Ih+h}y!ab=E^1%C7<_x*yvNNl=el~fs2OA6>fg#>h^rRuOL(RY0Z%`{g# zGC`wzy|@kd+jF+7%|=P8WmY+qIBj%;+Dk@Vv~QBwe{7AwxK~&9XGPq+(Oq+2_Kj+# z+dckt@7gRkSDrPljl6T%{D zUC(Z8etVgo<58~x9qfBV%uLwUdD?o*-BUbW8yXzGeMHT{W75ItHI}uU-S^N2zeyby zTEjeTSc|jy1RFrY1ZcQ%A@al8(!K`HRE_vl|f@%thb*V-o3?jtKKc| z4NEn8w6D5Noh`NY#ow==95Sxc?rHCh9;vQ>v5E|F9;&iYl4_?nN0(Xnad3Z|`LT_U z=?|~nLv`kjB!$!;}eyZhU{ntS+m%@cnP^>F+(G;_nYhwJ7feAcjN)@i~p&EPKaH|(@5W$Dlg4rNxA`mB2VW_z{DuQrrgG^O_$T|6T=-Wtkw z4>@$0*eI=QY^{LwTD>CHL}ol}JKZLElwZuvJuNF39JA26I>1pYuCtZv0RIQSmwc(4 z^u6pI<9_Md{U4mUzEv-Jj*{J)%61PpKd(I1$|$|{q`h?;`7O?BpyvL>?LkVZoQ~=* z29FLn6VmLD)OOXne7lo&bNR5z+s2;{tA2m~h|CF{P1PbMO;ik1vRg~puEnc1M`|RO zHu9K#tLytb_dT^zv(&fL7mmG_wm%VwR>#LX}EgZ;0-nHP6e$@ zsXAV3`h%3q@i&$1)>gLbxui>VgS6O7K{fm2Je|7dWRt5-EvAI|*S~2zbydQp6?IHJ zZ>HZp(eusadK+t9Zg*!|L`LH&uNDn#@N{{L>^pa7_g1otzlG$Y*7joL%~~&e3~71Z zz53NP{>O(K`X}`W4&3{ri=TN$#)gwg-S<1rUwH8IS))3udT;RAbbWHAamTidX}r!m z*WPen?s(%ap_E?z2VN)AW6ss>|0pQ4p_ca9AB3)1>YbyKS|-?7gyQ-$m6ULDeq{V-ixCszt{!QqbFoWh)mKV(8z|fLc-^}8C~xog1Kn49UYN3PjIX_0h3es{ znOD2_47h9Ybyul4gUExU_jZX%e(U*skM&vqptrZSX|!53|G?*gKIen6=kmNYRJLoI zS9y}kMphbgAsngGl-DXxL`D@t`9etknTdN;9 zeg4hN_va2>8F;Y!)FsjPlbA|}EKVAfI~CkDr*cnsr_8DM z`kY$!eQIC>fBaiD&VvyfC8=f~)NJGQm92k=X|GCu>bUcuZ^xcH=iGm5II;Q8G3#BiwO@2D;sQ6JW_gFeUCV5uPEDPXy_gJf9-6XIl4`xpT7^BTSJn3W z`B|?Is&pRI-nxmV*ItLKUx)v`SfhJ$PmYC%tlG79raniwAqH-JIFoc+Q6p$3=+@Q4gZ!D zspUWJ#z3d$1Imp*Z8vau>9h?!k88K8=oYMTNy#q%-4)EMS*C`KZg1in|Ixgi)07ML zopxRQ7Nl7(AoER)io^WJ<+b*?xVuB$yR9zY+vNJNW!mLMJ8!IhUv5lj@{8v6&sI`w z%v7@50tUsRHfXKA!@Z$rudQ-68uap(SDfcE_vd$O4ZYHPLg3@fP33cMCLL4z(scXh z9(Ehfv~#qcZFBqCkGhScE-kdZI&;SBR#V9i=eH#rC8=gzbxNH_3v%wgww?cH()G3t z&)3=C_rw1A+pUg=xBKyGliDNc*JYDat!5;M&25+zHxn7@%A-+_q%ztc;^eBOOj1PHo-JY1(ZiyRDS%rp2!Am*sS4SBmpRhqU-(P4D+H%=X#7 z*)4Vd?d=11x^${xd8ffo+tLAcH=Nvm9O-&mEyXvpO}U6B+b19CZ)NFjtz_3s*=|zE zsG5H8Wmttq91urP&^ecKzpBH*jcf(X- zh8ay;^7`#YmBwA><$O}I+gjPK`&7SQ(WVx?%Ktx9-DOmiYqS7hV(4z9kycW=Te@4i zy9J~>MY{9Q-QC?ONJ>a|3es?4tvh#pcmLUQ{yejNzuNDf8IE+m{{YW8SF3T=CgN9j z*Dj|-#^6Ha2O`0Ur+3}CXPOiN*EnFP#ZJG!|&sTNmeP|JMCi1u(g_oyZYtVUkMdtB*D6MpB^@?>~;;BNO9+B z#oG5T%ky&ruM19~>maYPM0&xXt&bf=gs^oI{_fecc=XdxQ3>Zq4Udwpak>wDOeB6n z8=KA@zD4RSJDd#s3+k%`*5&z>)gB9rZ@mb(UM`^PF#+YU<8`f~d;@7V>RUamI@+@{ zsO=ZjG4JPC8K;F4J>r)R`;q2H&e#v*W{&aGh&``O=8_oC4-jbtXH{sO0GAu+`t+y# zFsVlut?puCkM{ft-QN#|P5$9S)U7H3oz>TLU#srpAys?`MNGUe{FZQAjoNO*`SY#D zGjX(3+FrL#Z?iaXy>Guq2M35pZ0z4b_N`kZN-B2Q&?C(<>Dl{xvAD3`p=#vJX6*lj z)0#UbLKMqO81>%gjQpKx8&eH&5r)%@&^-J%sy2WBa88B zfa~Q0x|ay~bYHx?s^SB9tq!PJ{s~7HaNgsnV_0XtAUA(In=f!76&il#E7_6vn|If* z$NtzdITl%cddrjA9O5)(tOao2t`Ts6Y}+1WA6_&W`5SQ+0>3S^mY=pqag%ifsUp67 z#P|wBBT*wq^i63p9Yk|*bOA;D*(#uG--Nw43u805@wP_h@f8BsD*#4cGsxDF%aL?j zEk)YY_h;kA$aHsVIyZ_~E@itls>5V22B@ z=SQCfxZq6UQb(-f#$vJxmW8HYeai#V%3ae-HgqQtAw&hciT%p}_ic{|4p4%yXf8uE z*?T9BYAEczJ~Ss&MwvL9-4?BNkiaSrv4myg3vBl13qwwAmFopjPv+Ne2V2-U@~!LG zIm2~mH@x+{;Pn*&qpum%(Ix+%M_CYE`ez!&uBT3z$Sn93!?)^@F&he<3(iwi=# z)~mxiY<3M)E#&37iu`wNj+^~rr8f5UVI_iZ&j_&lHUk9*NUTRA**az>UU4kV7!0G{3ygCFZ7(G2y-Jz{8*AtrZ~;HEE?CYM9UEkkF8_2~OpWLX#fm47h4s=)JV`V*cq@B^x%Y=Bk6>sk0idOj#;{=s&6zbR3 zg369klU(l_=R+8%vN!o%TdH-&-0dQWvhxahkSBC^^vVG4XP{f-4Py->HvePU#*(uG zf08s4X@_mB%JoiXv`BCsTD;?yRpyQ-#E@_+6pvrt`=7U~4p{-Sw50%^_Bp+h*38?? z47?6+vmS7OjNd&>)z<`)CyC8B_i;W#;o@s9pC_j^m=EXPQpU?hB*q!0;wc6tdWTaC za}Qe~uNY8U`TFuJCg6yL&j|Tmyh31C5{$lP(3BT~WNV-A2nO=LYcZjP9Qxhbr4NG9 zr@XdWvt#|o7(%v`O_IJ6LYiiYOt}

1D?M!VDvSEqB!YNmZm#fe(dOYjYY<9mk!TsfeN4838@wpf9O_jUMJgXCz3z4N1r5DTa3^tKbr;BGuDicKjI zYO=}g^)-`*qTeR;%h6n&w!df%RXH}PxddZ4z?BEOd;eWu<%QVDu{9SMuMNYGN;}YY zcwQsn;34}WQ`NUU2`CYM94UhT(@o5l`qh=Ra`CDh?Wb-3g*FlW$k}K(aKEVlbXl1Y zX|e_kWE-`OE;+)RvmJSZ@=rw+t|Z0k+w>|T(X`h5P4I%Ok!}?rZYdH!=uP%jQS_xd zx`C3SU3+~b-)3gu^?loOfdjxK zHwLyn2wM4yO?rprp1-0iitsP?5RX0L%WScj*23E!2<$3>(bo)mzDYTY(`K%uSfD*? zk+oAFj(a9}*(5){Qk^{*#_}Z6#S*!EM$mCUr%dvHK@HvhfxD#Qx|hrUm~xO4n@I)i zcffyd=8Xq=ei)eH3NDCla;?8#pIDzSHnFirlBSt}V&?f3Oku|T9l>I_A?iEa!pU`* z1u8OW>WJ`fF1tPDm9sN<`@XlIvj1PbDsSNb1}J_IEiWFnQ=e)RvWCkiHQxWrBD^RB zg}X;?5nVDI^0t;RgL{b9+N7dHw58QBSLrySTxwvXJoPqu(zs*+$KI<0UI$e$`kF!d z={G(4yB=G~S3h+KFzuCNDc)aEEkm3|q5RzvQ!8wQX=-h1B>C{k3`w!Mat-FpX70K$ z!zZV(m4=#KyYk@eS^&FmGcRy}W)0BSE;pLJ2O?fMqe|CWuUx(h;N7#;mWft zR#D%GpXGx;$L?%!f@9`TAi^G2tVkWK$#QtGDy~Jy?*4Isbt*o$r)WfkGaaTg`T_IX z%mG}l2G9*diY?l}^h?9QPMR4hE%&(;H7@^~@&%O9VbH|yqcV(GZW5GPNJzY64w-``Dg1WZB*lUD=)7`3gbyyo)wEB)SS6?-eiG zO`!sx?hE%-O@cD~u5Ya&PIAm2DokXS&i*5IaKi276M3u!xNp50I6&QDK7Rj6Ui~JY zvf|n&hFpC%d9qKUm>23QZ$b4@r%8yIU&YGcDufFT+HHwPlh=X>e03n4zL#a00>ylF!F^p32Y`lnc@UzLt9crlFlTfhQe*6v#lh80)>teWg zbtqkFi&-eru&<(fWDxj~>U)oFN#QF5Uf;J~7#tvZA?;}gNDdok$e}Uch;s58ZHx0W z=F@6x*PG~I9V`|#YZMt!IgNJou~_zU!~2=Z0J1G*b&RF{e4$ddkZl6^3`hvf+Bt+C)M(?_wF9xrmHn3M8mi$z@sx3uWkX_nnAlOeG!TZ)2^3 zK+;G~Wj{BH!M(;m09P02a^JlmusDmE%nl*SVNNLsuKv-bm2l)~+)Mo{9u(o(O{t!w zd2*s(XtK`x0lt&v9lDV|r2NkIS`R@+Lx2;k}gT~2`kuXDR3zGF^L5z%lcP-!Ly zHfUKFD|_dwi>#_LXogb!1`W(dpy!R{*SDy#_mcJc%OWmd4U7O<;tM@&|>kUT*hb~hr+!Q z%D4iR4vFdgJa0N>Q=`aVnDaQFTbEhIV0G-K1?rF}pMUsKa&er!uH9<5WTvxQuMl`0 zjKJt?2FcH(mD#~3&hdqnB8ZeN@$4II(+3En6SlJ^&l2ltmmU+-e|gbtgr_a3|FvIl zII{W$PRz12;<*dWqhaA&emuZ62D*I01<;6tf2js_@#ojg2klT>DG}tMVJGbl6aP!I ze>O45F_`v&yzXW_Yhtfeq7c%-h>IWg+)IMCZ32yb4P64bCO{XOc89`B1u_=Z<8<&F z)>1H5%}4C_|qF zxTZiC_mrIK_g_ys5pU>&Yx1P$_vmBlQ_#gU)+k$dWQ0E zUXK_@!A8bW?OefFw(mZh0o=FO-~cISjEqH=WtD8`T`7dHFw&z^Io#d5zx(qYr%m+h z2xjx26=V*9%>g*JZI{oF*D`kL_#4DL-&ZR?BO79|(38E*zQM=M9E`qZP{W8R!@cY3 zjMP1EOE+06@fYVB5ZC%aF;#1#{rf&{T_bezkMzimj2ESSa zFHi&zy!9er_ics`4v^5}kf(Ju+oeo?ZlaipT)xr_cU7xwd#>4AZHh_ijS@>@EP; z7U=PA2`~(y=gXvkvCb+%Kx-71XHnq&trR_%R;+2G4O*6g`^wuU`mvw zz~8Xy@bGX5Gcwy2IieL(FhCDLc8^b`j9x5tL=5> z$~R*#b8|AzEtU7b$`AmqBhbB_r(c4L)Mg6NR0&F7G0)EFMa`r-fe<~l^cruVra5yH zjTfI@Ccoq+CYFVsRW&GRbW3;Dy18{152 zjl+MBKNSCC+uHQK859w=H0a54n9_ut%C~?@Zb?U8`pHkR0z*+-1+}H|+a!bq;5q}{ zUzIr$%aDb?zGHK+YQfW^oy%3}r z4wQBZ-7c=YuXbWx{`91DdQ_+)TE%qJ`h07{=k}{MUU&I!_$4&V1tbbJ6cHa}b{zH! zfn8TH`kF!OaG%5Hoyy{SW+(CJ#aiU!hN)8uiRqYBkkYG3lxNboAzk)12daHu9;Dok84K>wSlHW0Rh49N%LtNv& zfjX0Zd&0fA<&ZuO4_etNt=Zf9Xy)GEWt{U%1`op7kH*8s0PZ)So4bme`L)9b&crX2 zg#R>_Xo+1DO(1P+`Jg|~op|oNqOELNc)q@WmDuvw^J+@n337`5K>O_c(}ah&M)In-bIylccfC~23Z^tfRuGV}Slc71SNMapLn~&FgSmGP4=$zFb;C8t|@Ak^fxwHUXR`A|y<{pvaQ2(GYPWcU-5s5~$>%+s{7pwkU-{ef;XDO(JN z_VdE((coO-Mu$RdNVV}6b#1qDf;)fQ$Dnt^me|vuc`~U!!haBr-v0xS)BJ#cxYDw~ zoxiwr50|(Ma07s@#U^dt;Ay0>_xcO!(Cri>$m6gv4zK(~brrx30=g$ZB{;0I zaL5^!Vr&qbi_1&)Rx?YY_g4Q&g&iQ`_C>!ScjY<=={t+_7RTh)md;k^Z}o*v;4zeF z&z4G0KW+ltx9_lk12o0YBQy3jj|W<(r?aK0@rW}(c5a0>aKt2~J&0gnlSYKmnhV}u zvA*&UR#!WhQ67!OGHRS~JARjldc2S$1=vT0fYH|s60dcC<_>n46>(s9&s&Jkz#Mt> zWYy9|J9AyR)ws=MI-(X#v1AM*q>W+{w}1(LPF5>RcIR0m9WD1Q3d+Rmcs0Q1St!t5 zAiMu;G(6{^Ke*4tO+@7+pM93D$+RCk!&6;-IN3kw^e!TynM-O$4?=ggA>4OBeo6-f z4T{&qm6UafrM^r8xNpx6aDa}X+qTAWGs5JGkHRVC~pOQimlt<&txyw|s_e>O||Ji6wr)Vlo&f$M#nDS`uJ7t{7G@;yorS5Ls& zts-9%ws9~-q$6adG-OCIH`xnIprI4jzN`HQ|6m^|Ly)u)O7H#z=4TIB0Zhi1DH&x(QR;p(xse80sq4J! zT=R=8apxvs#Tj{SO|&k<2MVMDDS-PO=)S!0rKrWxkW%&2pMQmbl#TnxO69*`pG6)u zj@%Jf+~OCzneeY%slz&Mgll(2jXEC#xmjZ+2I>Pw!DmH2?IVC233MgGryy0kRfN3J ze0&MyPN`lVbVH_{Kafin*+XMuNG_7&>XDpjs{Lo#!;bvqXqMc661E@`k94xd^84(+ zavtD)@(0j0hS?m!eHs%FKvQ|*AGf34cSD)9N_EqFP724GOn4Wh8>W)`*PdKrF@eC6 z+rONL4g1NjO&Vf06ql|lR9|%uP;V5_b*P~8kYNA7*U~rV`s~~O>9a%YU@I1VjrTSb zT$eWj$nf)eZ%IJzm&q?KNA1#tYfJI^J~zEDwH|*^qN#tVKLOlmpc}C-hH~I${!RQU zd2P#YN|%&sws9kBLvzI#j@)%CGg`y3==U)5d9pRi@*@WUE1GY-NzPdmPARYV-IJ7S z1S-Id0lEwr8;@uV1$IYmQ>K+#*nf~%^;UK5L3wHxj07zO{qiT)FlNZ_B!68ZeG>2P zPdG2dr^nbHn&iJnizy@lQF8#?SfIPbdVxkOGD_jv?Z+Tl%i}-A@hEv{I$@C!g*^IrwYBZQWwXaEn>uh#5C?Q)X7f=0BR|dfs%tFy z5JWf`7W@2ln+WDd%W7q(lT|an?@&@32COUDM6jKfjmQbH(I1552yUaGPqAt$v^LKAK~G^N*ziw@ zj+=U+IClW|?cN3skoIP{v$+{ri$bB|3u!<{^2`c^1F695JxnxLi}HeK4wJK>j1$U@ zvCTEP`i?@mu5lKcZmnMc3& zshPrL_fzjEVQ%=I^43vez&rH|)Luo3vj>l3TXg%iV~@GW(ZG%rg`*AvLYedS2Lrj2_m_D={4h_kmd$U>}tZ zbWbp2Km6eu;2IB(&LaGF65O$o7*oy*&soK*9@?qlyq$w$oQ=$krPY+0581;`V79^g z^aVnem%$l536C&O>I6`42GAX*-+M+b2%zof_kZYI#>WT#0?t_jb1*(wMOf;Jr? zPS+)%<3NRZ;f;fKE-`aAMUcd>*l?Y6*!+*ZEVWLpcGu)k-||yg44f~K7p}wGy#{>T zvViWl%shLp)d;TdD46hD% z>J{&*AA9&+sG0%=Y|ID%ZZ^thIR1P}Y(oJ>HRSQ!U%k&2_ju4}Tbk;A0AEUR#Q~$z-7hBC| zS$UJ~fBDkvO%0;Ax;+5u%>}y2K_!oDHXadA-JL-lx}EadG)Hc-F}F+4quzRw4dIyB)&p*98Wm{+&rK=XgECP?^e^B*gb~6VL4~X zL`Zb}71h*1f}Xaz_zPJr+ZZ&o=7X@bOe4{XQoG((6U5J2e`Z5awmtr%eZ48L-^mBM zHp-^cKcv;Bj14(E8h(c4L!*s(XVT*=z2+Uc%{;AJe?5?J))pRTr?w&{GsXy}t z*6$k;;{3yFmwpjzzYkcb`i5S2_-Sf!LhMK0r;~Gl`*sY$0jkO2KJ_dal&@NG<=or< z3kORuQyVuX{_{Mc#^jNVvGcM{1acCiDh$O}PB@&=B(Zdg&VHJv-7gt)E0i&9QQ;K= zUl&DS^fiMPV`$a|AtXw-KK2)0M*KvQ^tB!FMa_L^z*>Em1^o!pxh16^<5F+) z``>82mcD_IbBq2l(!{^%m$F~pW&>dNZLbUt5T{FI?P20kiORZAna+HFGzlygf<>R_ zePt&#!q|Ob%X%+%{d^1Au!b?;w5Hqq(Q&JWhJH{QF}s)h;i9<#aNqKFF9rul4ZH5c z=kfHEanykCcG^NQs@x)-bEuR9@4Pf|T=si3Z~oR~;m-zCZ`^+xum4G&y7I+qqeITJ z!m_rQ2;LuU=M@6iTM9;BGblm#p!tzf*f2Y$yFj;-@@WU_*;QKj(I^uqykh zIqjqECoV?LKWYDR`3Ss?WQ}q@<5Zf}g^eg9<-N_ez-}4Pok4mouJ@Uu-tSDNrAif2!L=JEX#=zYF-Z;*z-^O<-1J!DJhZrIPkaz4DO-S7Bz z?hy#yBJCP$xSM*)zwZI{Rsh}0;7DbzcH7g|G6Qb`LwFTR>RE9GOm@r0g;T~ zWhnB+br$(UGHe>;6e#`^GPmEHU>{MoYDA?T7QJ#aWpq(=q=IysaEu0%g+_ueaO0it zC|)73`*v=C12pU%!lyw|!P}?#h@fSVGc!BY@aax+_?Rz_F!k>OkdR&>uv-mAUo!|TEc6|xP=+v0H7RNGn%O*l-LZgX zIG*Bl*Ca+qk0FkOO&ct6znY+6P*08NuW644Aq>-{0 z_whP>2rFZ)!1>wRxd9H4Q)~6Ap5&NyluEqiL!Y4Gu}Y#KYd_8KeOV_H4&({7<&RVJ zbmHBXPEjwBINm|3Q8|KK_*S`4{X<#jPy>UOR|s71+k1cmBxk5`GAO>-u#b3SMrFpU ztFn0(5@)Os?1d{Q<%owXO7~;5Tohu)Q2P!STioIY&M%>&p7z`5Y?Vj*GM%|J;B&qn zjJ{?N8#ZMs=~B&9ySF(G*_U%vXbqXBTOFQlx0xYVCQ*K5cJ`m4jJMw>uo_K>uo@1{ zyItmYRFBjY^sp`RSfmSp`|h{i9UP!0P5(u$@7M~p!%6%PUdTfdd2n0k`Qj#|lIUGc zO8e?gNh_syN%Av)4(uWvLmJ&AYfv|)gJQntagFF=pyYDBLg0011f#DR#82RHc@tsZPF={7J+v-3l0)%QzNZc0u4&Te&JM}$;3_u%i0{~HH(+6F7GYa*}|1%m=!8r#*jHb0o=E9100}PC`Vt6 z>t5(4g2q$9Jr#NR{i4(FTdGjHHDPR0f%jfrgf{`jHW$Mm$We)yB=A^Z1>FLYs z{dLvy00a9r+XC0y3PxWuD2M8=rA-NZ&o&>!L^}onpWD@kZtk?dM_jk)n!JR8BM-Ta zt~a7=um)XGAg#?CgnhQ|5T0YHFyb2ff!iK=5WsB%y22541&^rf=SjXUQ+L@Fu}GvA zwJ(@1RJx`n@8!i6Z@8-QR6H;~m~7dN5V{IhPU#>Bu)D{@4Dp}w@i!?c0-r5I48HCDt+01IV z<3#ng-X9j{!xc4Hk%Y)NzFXIO#vRtH@|t~8q<)3K>-)C%1P4gl!ST@CM4Y7}Ar6!0 zTJ%}{@CUa7ztHR_cMTJ*xn3qY+N_E&1Re$r)8KgOg$AvN(Hy#A*8EfTsZ|BUHSO6~ z2<&!&(bo(zaMyw-DPZ9?)#O#?^LjD;di=e=e&z_IQFh(P(_X*xZVI)pfNWmv+X8A+ ztNW_MbMm*F_`rNuO{pae`N4W3fZGjpD>G;E#5BuZ&<%l!QC zOTVO`-r`Il#r?mFcvMlhJ_XK=z=P&JBiqF0hX6e*JEOY*U4YvIbW7hayx@zWDy*EvTAd2zBIG`g0G*Sb0Bu!qJWR2`{PFsY>2g<_mUk+RBkz zl@P$~1-hBVRI9ijZGPX!B9Kr<*zV70jg2|blm6>mxgTEF+Psn`S`!qGlf-B(4uYBq zgv!j4VKjEz5PH}4ReN&EB{XFs5Q&K z_PhT#PtuK5LoP{tE$*)4rRw>CeNO#~&pKU%Ob2;hSyu0+HaYi%P5pu)J~%84oqj`& z0k{J|_pea&G3lp2k4t#MNke+R{%W!1Bu-DY6l~F4Y!$CR2DbZY=Fn;JPqUkwVU$!z zO`oweKsxK&-VO)j=-h<&y&1qA1iI9Uk-U33Uquj0l^o-9N!9(Z)h$?026)E>H?Cd3 zmT?x>knbuc%1=--bp)koxx?r%g?ZJ+k>6}|$>5kBdc5`i;PZC~=we`6t*F#d@d?{# zE}fDc-!4XMDD!Iz#=5q4!wnhbeZjf=zADHL!U{qO=TAh-6pab#HN?Rlr!=V@=q1T7 zq64_YKsOInpio@#pFycwf$%Os3*#@mb03y)G@xz8l%`%MHM2t04Mzg!qd_3w3hZKl*%C`w#>VQM<&Hg@EiFa`1AuhM@v zgJBWU6pDs=g~09@7=6v4fa|vRuEWFn5aFYTUm|Q>Z21ag?Lw*`F%g;Bi!ZP7jj$%O zQw(5}cgH?N6~pzTP1AiKYGw9XrKOq)c+C2418~QIZt@&;vPB4|S-fVWPWrIgy_d6D z;oQJLN!XYv{3b)?P+i=M_v`_Pk$Z{fGS#%>SVo+Oh51?NtVIw=1G)H?%ozgY+4q5dkE?+lFa5%S#A z7ITvGol)BqMxOeEI13?mLd3ZJkGKahll3fw-NVAXw4BVhrp}^Bq55RqU z)`0_*mtZkgCPx_b{ZS7L`1WuRpf3V4RCDcH-G zv}05yr=U-h@O@3SN%Y*8e}%y7`wNV|W)Ru}T7b-0qVCB`fu`^=%Ojs*T+`o9ifV_UWft{6 z7kR4@T<<*4Ee%qVp_I=YtXtrx?uZD(3Kwx(c9mFtzi*?ywrjt;hxz)0tYZ=hUD0bl zdpfmre0KHZCpmSxd>Dj^c2pZ9Cg{hze7vC{(1 zC-)ri6PZo!y{6B5G%pq;A%6%$+mkyGde&ho5<3fN|A%You@7+HW-{Oa&6ixRY_K3a zVRwl8?jdT@J*9Ntpq6-Tcjv~XixHE}QpOaCzR`s(fF8ty}F@r+(onnPANt@DGU=To;!C8^=(J}b~KJb?Qf=sMvy zv$>j@6^bql)<+l&WyT+&{Lz-5lRGvY@7>50^R>!d5&H3+(^7fVxqX7mUeD#1`-dT~ z$_p`=Ddk#tw6_@)xZV|@ixlr_?(iqescgEgr0Z515h~NZQLCqDxN@kx0P03az5XKX&Za~vpIB=mzFXTb6q)e@Ym!e;OEDyK(~}nf!@unDrT?dXPQ%9q)Msw zQ`yMGqIbR8zflWX6S+26i-q!)uCai9E6O#gyiVMtD#&g;{G2A`F_|yKLwp5lBsG(ZSdYxip&B3))`=bD`TFR=obF-2tdhM^;Pw6U_8h$X>|5(Iy8W0<8%amr9NjUhC-oH9v zcLR*RW>81bGHw|kODaYM)kC$Ks_T#CqMILKEx%v8g<7IB!K~!%)isQulcoqaHiB! z80pQ}nU~w5*cKe;MVWYjoxL6z@6X&y-#l#EOk8rhKN06n(irGeHt*D-m-cTSzjv#O zCs$ylUVZzwgWYYQtIS1Ec#xD>M;?REs?bR3oP?(&z=J0l(bgZLS3&3uedi{)F@0xz za4=HJcWv6*n4Fka5`LuCj>~QQ3D5D{DZqW3DS`uJxcUo&(M*%FRO0Z5!s^VbG`_O5 zpZStZ;9y(e@@CpVp@C7mqv}3%^fBI7>smY~4NnOCfjMO>S%YJNudVWLdslG1yI}M+ zgMQQdNsRi(tS+|Vgy=Hs0lSUv^J>NifeP@Ie!|5<#S|l@?#OO~t7SY{i<~ zjy}L4CYF|1`3-ci!UNnrpj$O;iOCg%5iY(2!{+j|Dsyl#@cyIwSIqf*L*{rk(Rfi8 z;>Uf)E&H1D-cT=G_)1UG{AojD{|A@9A1~4q_YnZ@+r1bZpoDUq7xkljyFwUYiH6Pz zWosc2^*^m7vveDjus_^Eu#alfaes(c>j!E(MsdQ2m?7I8P=GX4&L~2UQ|op7eZfteXl~_;x~u{Fm0sh#EU{fT5q7~J zI^m@+nQar(8(Q6A@6-sS5{ur57B7YJ^zGIIq zYH}zsUC?n$le|$cWa$l&P58BmII=RqQX51d2t`Fsju0HoE%*w7>pcRauNf5oFlgx` zXr$hx%@>JyHO=ixLgsnMRc2m{XE(ue@cNB{aU@FGVXeigpbY#t)|El&0GMy18Xs|+ zT|!gI5wqU*u3-20|GBGSPaS+^kxaNlc<^n9K0UpaJOgL6$u&q}>eph&>m1s?X{8yb zO4HgtI2mIXS`xmu@8NbnL4D^Ln?kJ#pai%lK$q);j?_~6pn}}Yf!OL)vWaDiqEt2M zk~ea|d_WAN36-{6w>o}AUaIf}pE+L8|G!F^QIU+EJZSW;<}xbUBnVOc z{|J*3+`Kv(-k!nWbvOf~uNegTnXcKi`f~@(ve`se+-ydWvGq!9gv&km>dVtgao@QW zWTVtDQ;WAk*aUQ43RIm@AqGTH@n<~6Dz`B6zYC=R_pL_(2Pl6~r9B*LZap5`x{s%n zn0v(W^^?1}*NN#e!6ihy_k|x+`BM?=tf|2#+cr27f9Mxp*+!Wc^$;v$${b~1_Mle? zT<--Kea#?wG3lz`*a{eM=R^9DunpWrh?K+dXH;PO`K9plqc`x& znHt(}PIbyI5&5gf&!Bd05LZ$JQi$+fRy(*%5hgKZl1~&Re}9F*_5KB;uNhQ*&DEl} zYNUOlnc>if(Kr2&8?0i4ReuRt&n;ym3QuaL^nEg*6`dCrU1&3!raR0=p#g*4lqaA; zk)cTC8~)o23hZ71UDv8o4^@6E;RA;QUw?5W1sq8pA%q2xn-J3P4MLnBOtk9$#>gfs zM_mq7;R$I{zwlzund|w3DKIGc+RB5D^C(@pt!eOH!x+Xdjh?KQvw!iwwD zZzwC8l#bBT4o<&46r|wZ-TzQ2^~nr*4d(M#!^i$F3R*76)yq3v%w=(rvKU)NPp*=^ z+xEu66Fq?lMXwNe9o~9NaDa5IW04mZlxdF@JD8G7X3(0Ll?dxF;i+tPgInVH1KpWX zoRiczDQ7qE?pt`{kWSB%n{AfIL!{yDPF%XY;9X|0&d zy0`1!7&bSIhVMIWcPr>>X@L9o85B4`IaU9|{3>(hz?tV={ny{Sa+ zqUoxsbPz)1$|CVI)%@t41?<}Fs5zs*P{TaZnKkn~B9i#Ty+Yu6-#()T2S{_A`l?w; zIXX!xU+(_O4udD;?+lq)ikjpSF)m#CVSg7^U>S0tXHzs3UrD0KF_8|0o=Eq3LK!k zbWFY+%E0qsp{39*m#@!zWsI%PYI`Qiqzw4Km)$+|3y&%24tAs?eHYJqhRVfF7pvK^<0PgD>{9k~^GYf?S*)MBgc=q%( z{NsXI!bIz}$5Hnu8u%%$dkXEgOQApYBGe{~4& zWctapkg4jAVkB02;jJR75D5TWD4@$hSy_;U>akH>RYip#TAO}HPacnuGY88}mink# zq=5I)xUlUTT!}THzFErW+)s zJnRX+{sn;$W!A1~y8goE-ahW81JdNp6CBvo^&?r%=gK4Bn&QB4ND?(x11KZ0uh2EX zxjhKzF86+>;z%Y7iCsW_PeozDDQV6UHCQmUcP{Wj^1Z_aVz8FmgVP_f4B-pd3=&HX zG>`MfWT%oJel;sACBpCo)PQw>0lGGf{Ygzy7O7J<(9gf58I0~zYdY4P^c=qbr~myw zDLDz0JVXzt2f9GXg~_ifv|PK7^4+eG!fJoeRQq&jt>KsfE-cWMPxF|54pWSoZ9eSU z$tH3gVWr+*?=6~?mp-R}e;~)iEObZ66o?znLW92>{N!(pw4fVY;!dZGUytN{O8@n( z_XnR3a6lK4K8qJaLGqrwdc3mG86CTq;hL-ggkLfI8UJ`mgzJbCo%VQ-aq?xRy z5dQ}6;TtcnB0VNKgHsyK&F2z;3lDUAJI5F0P;u~vy^@S+EwU&^gy}lh#mH}QpQYI@ z=ue@%eiYf~F4)K@pp9?Fo`l?Xw1TjPb^LRmkMo-P==+nI%#6Y_zr%46?OP2UUwnl(GIp0T23`7G^HB-^ zF+3p+xZK#VNQMftUpyxS16-v4=kAhM$3CjYsC2c`C!s=4I%x*+U{I737|_e6(3s0N zL6tiQdXY=#usAQqMPLc9BCEli-J`b>ou)cTpC16*XFo9xuvtQYCW>LB|m-^D*D z0+*sGO^LsTY^(Gn$#O&&A^OuR)r2N_pu(nM3zRAo8O5zjK!J(!z@G7bdj2U$R7Y*p*f1P2chDSg>cJMhi z-{L6$Liagf<8n2ffvOdz`D1+>LC_}TF1?>>@)H4j#OfdxN*=|An{fVw4s@xcj7Zhn ztO#5$I?#>&?%_Bjpx#?;;7NNgOy!)qW|neN_LD};FW79Z7Pfak>RlGzKVi3PT? z%@kiau0YQ#|FAv3CaK2M%f1Q3BHE1{Kc`%}bUc%! z)r3$Tdr@ej4dLoq!N#FMs5${A?cupMD>d(SY3EevH}^R;iDIoAA#c z;9>z?w@PgeWdb+C1N(Ch%Ld(~+)|CKrl@UmbG3^2GWO~qujb!)5*;kXk#l7@`g7Zd zs0Zf?#+1%1B$mg$bR34=02dqRmSZtda9cu;-D7Qsn?(rRI^dV~9>t-KOI^Otc>Ri% zC2bYz!rg4LY6ATo=>CQ!e|$U})d`u?G}lf4hfT*U@chLAx=E_^%=HN#YS@G@JFT&*q4`smZjG<=;O%Xbom0&Ukm(2u^HH3qfZ8p_I^4sg0~CMO@f<`(NDu z-}!(Gbfh&Qt(zh+8`?^VD zH{U$pw@?3F;@41^;7vo($u)qB2XyVWKmWWJZort4rSOwF%|WyCs+UQ}4U(}Bk%P{2 zWKo*vvp{u*+`mCiv(p(L|HD1CB6QUu&A~0mu@n6o z@L-rt1>qqJEcwwcYf_Ku-g3l-T&#rK{=hnjVLLB318AO^T-3~vmURe2U0aaNC`|>R z-giJZd_;(N%ZkIUeO%kzT%z+=N3CM0{rECLa{-qoI;Z-@OZ$bp;sP*3D7mn98{ru$r~o6O*K#S z`Ey3l97xg1{V@msGR?x89-p|>j~#Oc`cDJz{z%+x(=_41baU_xzl+|NN|}|%KZU?P zl@#b^avgeii(`I}c5$fM@SE18*>z}?PM{SRz3B^dgLJa79kH{+s^c>R%U%0C909l0*izV4qkm!3RLS z?}2VDnBxPhn>a$AOhFi%$et$K>|m8n zQ9k1qas-s*0EH8$>f{K3O96DdobfVah&sKhW7$Dw;bD+trk?d0x_g=2#MgZYp6WWq zI;ZI0=gT^1ir8U_JXKdD;6<2}&gp+N*hps<3JR73TuPv8n8x{WA`Y$IXp{l;OAIad z)8A8Ry~3|C6f>XrYlZ^V7Icq(@61S^E<14=K=+%Y+c>s$jK`A55!oYVh%_fO0$eJf z`?&C+KtDT_-!y_LZ}SJ|Y|W!;=;QCLymN>a*L7yerye0h68&tH|GWZJ`X0wEQFK2V z%h9&_vbN$$3%d*wVgg)hpvy-kBr=ZcVcn{W1cmlfG(9id+=1 zRSoqIEtHgoLq*_rIo6>vV2D7~@^&{UR66WidMUuA0lNHt48a_Y>88?yM>A*+Q%D!J zcM9cPC^Asnk7-h|t&ak15OJ0}{i0hEj!K^8Tc(Fa1OvLiS`MnM5d_Y*!q}AFA#$s;ln_7(Lw$(k0#9-6h>A-5{WJhlF&ebeA9^NOz}ncSx6X zU4PGW|99=n8{U1^tXb!~_dYXo&PhMc_IC>jJtEeKFoxep)aXw^6irH}u#-iqJC@+D zRcpzc%37lDxoWP{%A#I)D>hC92e|a0OUX?GWBz;n5Qk`9)62JXa54AR_;yU{ONgFC z;>vJO?D+dXhJ`seYaQapr+CIY1~XAsfA`#-q%4%jTpa>qdjXdLbSZwU8X;3H;9j+o z%fRgHWxTyt2)8Ova@>#-v*1tNpn9qAc++rKTFJx$F&EkrHqLHKF<*WdAp0wi8RKo< z(SP^a|66|!J&)z?B`+ewDPg$N0|r_FUN!M&2+?HFI6?)%&8Pxkl&0bjD9gt z$=yLr&Uey%y%vttFDap&9B4>%u?F|~|GumIzdsm_pGH*))-*_b{Q?8ULZ{OV143pr z?n5EBsg^;XKijdYmpvUd!xbtRpzZh zqg+$kd4|Xy_UTtyS9Wv(4TY98)W_33urI<2x`~IhJ=$odAE)c4?khrcA2jOug!}S6e@(hW&SGhL4gwI%kNQJ&O)^XX;FlmOLv3CC7l)P z(2%1%v_AkYJLvKn{3vJIDyVvrb*4hC|I#(kqqoIt(lch494|r8weUH4V~$)k93uRW zuFBWEGHj7Vt-G)#snAa}d0Dr#-z!}KmjiU|MG+msNO_;lScI#mxcpGx3q95IO0ncy zJm?n{?l_HOJW_4Bc9sV@$f5q2 z)5@j5b)5@zhgu)_Ly}`ZV<4h$ZTu8UDEfom3H3AN1xdut!vt-;O^6 zdH-Ln^MC6DFX)Cz>0BsjM<*Daw?NZ6#J|F(_EpehbwX-rt;bJ5JP3JNj1ogyadhe4y*{J15}QURR&PRam}u^z_Xu_q6y)OG+0W;=F(J%VHH5G~4M6e5PM7RA-R9fVtF=N@@PQrro8vLM}fg-YakKq7y zCHd2pJqDqCah_{Gss4p=O2coW7Q!APEx0uEq;@OH5yGqvvPvg_j09z2pYwp(ZH6W^ zL6+#hS)l*rK>&2$@C6sGICj(M5z833)DOC(_e!fn<*rn`#P=oe`|Y2zj|yAc;4$+y zpdAfwao!=z@d$oj8g*iQn|}^%c2ohLqXa?MZM5RE;QS1WK#IGec3wH-rXxGf8`luj zqx1DWL7wrbR<6RS%SWK(~11hH7tcu3Ntip^+`Nqo|oqngso8w zHrx6+x_~PTy5U2rmvdh&zx-aiQdLICiaSz9`N;oz;Q9x-L3ntp-P{o&R|_x1azaG(>}QVcsW)>RBq>`oVI^&nJ{Eu6BzEM7$r&jUqqiBa(Th&@hTC-vFe;0&0L5|pjeps>t1Ls zV4C&-t{CV(9CJs0gxCB_XKN5XMx5s1Xy!ceHD?WKRK(t3TVftzT#ah{$IjZZM$IvT z(&^u}fd_dA7y*6qf?xFW;ft+Zz&>l?_Gzyw>6o*tF&LluZAwmS|($%{cx(9&jZ;Il`Z zL^JWn)(2ck(EYt7Z(gRuWPRQA``mZ_1TOz2q^(yY&};h3qG!dYxqeLg(#~LFc8si2 zc=MJj9t+lxe*c~~+1!f@a$AngUuywZ3Ut?_A)jMM4H~YZi_BGvmbMFctQ%8~EG)uq z+8Gq+4eD7tt`c<#YZ7P#+mFyhetfX(gIk-VZ<{sYB10Dto&x*b(x7{WPnRM60Kxy& zoZT!*{0bUB;LM$xp3ETKaD87jql+x-AnKEbZGB6esTf1b0po62WR*Q3YXH2{2OqZ8 zjw^89NCtEnydSxa6jt04OzdUzGPe_ob4rSy8nE8rqcBfp6RMAWsu1HeO7U!uGsaor za7tS#tCpb;((Tt#bq$-5@beQn=pnpJ#Z*a3X~ow-+J%6s$>3g zSK~&hrEcv&B;}A-3g}k&fM^WsO8?E8Q0WRe z_ePytg=jbqWt+@P%}?(Vwa8@H)`m6xj&5LtR!?ukMz6V7HP+}>_ld5%`VvgeLJq|u zz&e3E=pId7hRQJ-Ef8}FJ{BNzm%H0!dW>VamV7gZEh}T5{e;+WhbHHAx(>%N?;D5^ zKK!fOmjWw~q_juShkbr!Rvd^|0d&3jRXF{;DxnT+5miz7CfxgA<;OE>Um$q%sP(Syob>l4Wq3LCIJ%CCe{UdJZ+*pL&@?{we@=0OE? z^Glc`@GDifCkd!y@UKfJ$YE*4R8~h>c_VQx;Y7y7oQu`rYKy6g2-U}zd^VRBKJwK3 zsE>S;18uD3F23yx)>BnMcfb_ofJ1qx@$1RBJFFi;UD6-d5e&7pcYppm3mnW2X}x_< zu1^2l>BBa1&c_L)Tt*dv9u=Pj3 zle5%7{kzad7eONfR|?e9_C8gkg|{R+F!7;X6rPH}c({ zA(fu$f-RS)I2EL2N~SUZR|9l?NfujHzqwS_e?diLd#j4w@aq1G)~Gy2`7zVt3xewG z;gv0)CkBIB`I^!FdxAK5{UOqKEA1`v^PG(IA9om$09O-q87mX`pWmTRu%IG+L3$^) z%``F_2EkZp;@{2Hai0`IIjrAzjr7sg@NY<{Zcc2=Pl8?xW~(O|!#ro$vLQVWfNqu!9;*s1Nf#NGrNgAh2M)ZGJH7 zUWAR|AF7dJ;2}+#ZtC4&i?(Z@Nt1zrX_1`yng_T#po?*SUulpwXeeLAF!Gg_`>WUC z8g%9#9`XE6gov0VTk^mY)i1LWlI&$rqhIiN`tW^)jcjUOnb|R}@FPBaKluc>x}Y0J zo3MC2uQ%RWw<@W`$@g_ zEJ8`v^urk}_Q-#;uK&Bv^g#FT%w}vlK@RP7eC8*moZhB0{&#Vz-ASgF0?h)>(CXAS4mSoLdB+6eG=6Kmhya0tcT}PWE!GT+a;>=9@yI6pi9^E!{U{tO3^{ zLGlI;t*lT;`LxV!z%>M2b32$q0h{!uM@g4H(MH=Iw9fi&+ms)|$yO={80)0vSzh>C zUHE*t#fpa_NGui>KI0#BB?M{m-AGhGz2xkcek+j4AjGBj3yAkU=pL~Q zMw{=QqwKbaGIqk%&Q0yB5@p*mKknPFcyv2{O9+z)s5A_3Uiq#?>a@U#YzOtnpDC&P z&Eh+g>*zUm+W%(y{&zhXgKo~X3QHoq21ar|))8*e#=AE|NAF3_5is&?eMWCP7PYgn zCw{u8@G{}sbP)wXj?{kJt>&M6$`5Rd=9G_do)`pN6VT;YXb)JlrJ85Mi_+Ga7_a6! z!P6y(+JC|={|LFnQeAHN##B|;sGSEQTmgRvu_FQp>+rfIqf^P{qZH0oS|Ye#n1ZeZ zw|Up>U}KCBTSQGRPl4%nuSj5Q>LwXYEPp%HnR)_Hhf`{p!)ns3si= zzfXlaiYFm7mO=shEoPuwTVOoDPbx-uCpW|@;Vj7|XuQdNp#4V1ZvNZUy4yvQ$E4me zw(YOhsrh@YoaZI;l#cLb$n>!fr{XTp=bw7bfjpRlZd<)g6{)luY)wkFw?=P31zad4 zO+%T(Iob~^#H@6NhE;h~{n zl;s4{Gn*IDUwT}l9lvz6Y}@&FvSX#hPToG()rk76;SOMz3sw2OA(2iaujW@B<414J zS+v8$Pxy3rUk13Apeufk^K-rC%_Q?1c&KyoI{8>bB1rxHjfW1n)}ZTGQEOE` z*Vk%&XJoX#{xN8;L~Nxo`5}Pp_e0gvp&2QxylS;eT;s>RYfcQI!o?7e94pRF^01?h z#N%}6Vh!;A!UlAsRBdf0XPMH}U?g&=ZQlr1>Kf;b;t? z!U@M-8uBj9Hr+51qtUJQCVMIpOex$1;tQ8-=4y@Dnc=>{87CAQjtlQgx?v_H|}R@i#hwv_1~J;R=_5bJUKgJmXkYj>3p)8zN;jV?yr zRz8pjK@GV?bJ4^cu%=`iJfUv#2oU24ROC+Y7H~a z%0*@oHTNK?C`;bgf)9tE-Ocds`uzac0d!q;AYzjzagmTY*&1|UMUc<4-nAsK%4=s~ z3@Y1|9J99INoHq?RNcJKOi2@fkeCl^+6WvA_OeJLHqSP;V(tW7N6?i{a^@bAKHJ86 z?e7U`Bg{m-@u1Bh_-cl>Lt~8<1*J(@c3G=wcm$!EFA9+DJRCj+QgWFNxyc0 z*=z*3A3)cZI?2#*iQbl#_(W;sQN;7YwzU#HhnIg}H)7l1Hkb8JPo+3fiqV}x1^$BR zOsjH+;drtoW5gF_yDw<%xQX?E>jb(JYf?z2yirRA`k|9mqK_hokkA~uvVYR*ACnT} z%~2|a{+#ToY|rxxcR~3-_c&1Hc5JO(g`qoW)fg0T7&U|SRA z|GI$g$fs(@AhELiZoT8aN%63n48y^gNXO#2g)f5db5UAmE*z;&yLf+9^PhC1(+1wn zh$~I0`fkJ)i(i&)5$5ZFb(pLQH&-MbQGwJknV_vv-3)A9asmp+_3m zgi?Y(eg8J-3;aTZP~HtMroo?LNK!;YR&o4F5=`_~9U#A-K)0)(MlLD4T{#8f$@lG0 zM&PQD5%=#dBJtV6C@ZIEP0vA#2-!T$4C>Fb;;dcz{6^o)3m5xtO|1G2mrHGE7pMW( z6?9phoHJdVA`PefY@dJ1AvEH>>yQ`dj4I1sYg5(&R%SPPLD==`4R3WjHM1W^1GX*Bx}P&a}(-mhl91{_gneeT!Y5 ztD=Y?l^R_koJ8PWQY7{b3^5{`PECBHYT&F87H~D+qecmtTd{o83y0d%emJ}exE`RJ z6ar_9=%r{U8p&YiWC=}V$rj_gC2#w7>bOe$KqEO*XD+|ESVlLiXJ0Vzf=EB8z+PT$ z4)L(ayKjmx+z62ca6LhHNS6a~=CU9t?P#A9r3ujvleil~+p0VK7I(XyZA?>lVHMeo z@=;cX++&;%5fPfe`^`m%NhnD&R6y zI(xE&cWV-(3E=vGF6Ly9)hWcnaRg)C(W^uMBbs?eOVJFs_*X?tOysWdVR0I<&yKjQ zL~poL5p-ShzaY74fBDt(UccpR_WG5@r5kX4L3eW@_^*2s_ErK!Up^XPKc85h-d7v% zE8<;#3;rJr+>CEDs^iSL7oRDy)ZEOD$a}4^^w{y>2wf4LFlGSP4|Fd|EgCq8 z&hiA?DM;+8uy8k|I*-pkv$fwc=@k{q#ylORMllmJaXqaK>8C{VH}<9>4{<2vn%lbN z1fe3SIA;N_Kj^Nfkx7Q(rn*~aB$iMT$Ouc0{A_}~)PIG3R!`Ci{{3&*4+eF*RQXq< zh-=IOGfcb6HXYAu&s$W~VPA5(yJE1969Bqa%4n+H-3lpVl-(It{(>p$Lkfc^gLEa| zE#v=fnK9{tp>s4-a({jnP&qiFm-gmrn3VZ;ekySPqg;8F>tas@#2W~@8}A|&l*VpT zAa%9Btq?yud7FBnQ;LTTr(@mUS$s3^hZYiInf~Yr$02f56%*B;Y5cr7mv`VKp9Lqe zTC-0^0JuS*TTz!Z`z3(k7*39*BhULCT$D#aVB5E9(Himv7zPWOCCYm;?Cn+!Hm(O{ zrQkk0dfX`e*Pg9ciwdabT4V_o@cbJLx|*Ibh;`h_rIy=KGT*R`HM~BQN^L*KD^igL zET)bbVZ=3I#GdTCXTl?GwfT%}1ue*)n(gRo8=^YEXX;v%I|1>AfNsrxXZ7^`J$rMS zrqdIvsdm)I!$qT>QkbP=SuWd9;g#I#@wNlfFR}H!9^Y5B^J`mpFRS~bAo3m=d*?4o z^TB@XXVATX{IvYrWRLAs@p|^>as3X~-tmS%=fHle@-M0RyfOco$0SXop07E{gN!m{ za?U1~a3oXFa+Mzml+M(BZ_H$Yctb(ghDHPPnPZ7$oVj^}L1F#P!f)2nM1eS}0^2n$ zC~MPwh~DtRW8B<=w(nsZLwrH{Es+*etP{%<^TBhMLPi8+fExz7;r>i))>3>@0elsU zv^h@8q1Sqrz5%N$Qfo%imM7(Hu{@1N#hLK({vgSC3--%0Pe< z@$iP05N)@UR~U{XBhMS%C|Z-(i`Hrdra0-A&nrSvud_&|u8S!~m+z~Q&&_tj!ltti zpum22B(zCS!{dPkOTp`z z6!9NA#n7 zv;uNi6HaUDL*hIPuVN3U7ARiEE7d+`sS0>HO|+ z!zTrD@;fPy45IqC(fse(q1SOV3kRW3jnHSZjaXC{MmLU?05=YFziPUUHft^hX37%N zA!Lmlyz3@2lOEKP>wp=l4ZoQ|4o@DTg4Q)vS`=Z?Myx;3ZCrkEf8<0rk&(%J_dtd8 z-?LNyyME(A7gGCtRl?n8?(isT%9d3uOLp5wW9c%rzntqh!()kpl0K(hGMUeq>L@C1 zCigZ~MUxH3yLKH*MTqS_&gUnT1mGrsE^V{-8jcy15H}Y)TaQ*tl>ZAn1tY(ClMxKW zSoSP`_g|rvtnRcuoh#RUcCiTTt*ddI+z49L!*@pZE?F9xmmmaHboLv6Lb1(9g z(D@E3@s4AJ;l#ypEEEr>18y4VE}rdM9K1?9gLRk; z&^6N+VMF4F;bxf0;|*{PVAC~yKqvm{Rd&&OYjTlKX}Dk2pL^C!JvVS>^7XjKYZ`lx zhp;sl9YbGsgP{l!h6Kn%Cg@TdUpB+Kw{SN_^s0Y}=RlhwdGK{q_grIHC3K#5z8ykh zX*rcP47z&fASL$?x&W`V9lJx9r^XR4MC94gk-8N<0( z@+rFQIwSnu@@z_JQ)}?4`lI0fTJw(2o@{QdlQL4YZ{eHH-+gmLTZ%C`2GQX8;VbB7 z3GlmJ>UJXD{JkxpRXpnw;M(SUBIYok9C}g|InIeaoVT-gYg(!;kPVY>_@ut^jX-{C zKGUm4=tzM*D%%Plh&LN_J8YpbPkmDMv75C+D7H03nSYN&Amis`%$%HI>oEqoD}Cz~ zVbbg;G1Q9boA~j5B(y<`U|)>p70=qhDK5cD0dR9bS5pa#Ukx5fdGgapae@PH&Lrpi z!`u_*;tm)>lzMBmEf||ZRa$Ouc*H0M?0@sK`h<8h96#4=2t@MOgU9a-!G23F=>Ec- zS!r7t@8&T5n07U=T4l%DHxr!C9wMESXzHUbi?yi1zOnQA@W;oyIh308Ov)JpMsjcPzOiJkJD%R&^6>A9)s&Ik zp)~fy^#zXNJe;VT$73qR3XCV;@q&UvC%7}kA6cs@4wih&ZWt3il$eDlMbd4^WAy zPAC*EV@JJ6f992SD^*qNg}T*(X@l|KcJcr1Z$+T{?il;P)fQJrR z4DpprM(5y9GZm?EclyqfG}*b>HgXVIK@-a}Ed*xMA%r1YcsPuK>69ISTL!vNjeMb! zzPFXziFxVO(ucn=9i{)hM*4Qdkq7-uCs(xOw2?S|O1eB^>LU~~`}d*v5FLhAci!b| zD0uEQHv!Ehz%2*eH+5$Q)oc$J9Ib;BuY@#SdnjutoMwdB7-IPd zTTs4+7fD2ASURz(-sWG6~xVD^ojA3vBK+~+GnS9!^hD|;SV z$b+zkNsoBQR=ZGUj70~7#{`kYNq2AY3;IM*vo|a(G&yf>)(J+~d*6G0y>B>1b>H5l z4acWs2Lka{fi6vDwX-3ehH+uoOXoM(#*5}k?5#<+UZ;%}r5^e6$%M&4(rTk4Tp2-K z2GtD`T%N*@QoB-1FqTM{QmJYy+UkH?4Z4C*EXdIrwuI!wW#2SXirGnZlI}V`CjI-| zL)3Ia;d#s6!uyi$V8@NKW#YIHGRT&j>+Hv#P?K>{cpio!JdaAi{RX-r(wdLVLPb^l zoLvMIU74cX>9#KO)2L1>8iX_{TjlwAK1>TWz@I?hgwlL0O4AquJ3=$8a#h1OOPOWr8Df9c94dnM1 z=sv&X6(fH~tw?J*vFL)s`Y27Fd=p#cVL+iO)*{1VFwyPS&TkC6z%8Z|;{Ez}SRglt ziy`1Ry_7&-fq!6K0ep_C33Rn}rvDnvPQ4b^M1L0^Hwjr5SiT+9vL{&};E537-8=Zn zqZVyCD^a;k>Eg9%R$bscT`=l>9beO=7#lw6TW<%%+YGv)XQ|4xRQB`Kle(fKdmMc| z-p`GbuNsXKHtf>Qn-EwPtb%{|DfxUy57w8X2WvkhLw*>6xZ(Xtm=7tamj~SkxGkW& zA>4IfeK%8>E~VozZgR->wqjQ+;8!Q)a@!DjQ|zN>XDS)qR^EyG0+g)B#m~B4POk6E z79?TLD>RP{EjqJc{kIi#E8+v&2>j}nV@Yo#>--0@yVcrXT;~c1ovS93&t6zj3~x^u zmZ2^?0@vHuxt=)pmoj7Fx{c5n$PF$0?vBpE`dJ(3V$&n4{N-lgn)|q98yHCLM_FHA z{J~OgGjRC&R3WL^oca&^*@^^K%C2B}3TM7^pCaTm3Ja=0P>1y!UaWgXVIU9fpgUIU zS4APFqQ4wVE$L)qN2fMs(rVJ6f~rQWw-V-z?&8g}VqlaEmE&44)5Lxk_$PFF7dN|M z8CHxb;=M&O78c-kfUYzql*r&?scl8%n_dxN zi4Y7q>Rf~9|LguY-_{Mf`-ISb0lBP=OOX6a!Ip8w-yOTjexLm;VH>U>wrJjAK5Hex zC;bI`N1~gNeYb6(7?<&|ro=OEIhOa8GZk+gJeTx$O~% zbjOt<71?-X{yjMBabCDPtL60VC%@#Er<}--AW_6=?ffN0&Ky?-gtZ71|9fZZ|LQxv zpi8ZE;^{gTYs#bfHgtSX2-CM4)exqPB=h1Cp#v_l-cw9BfmCbNW)|XUl3L(CP0GkM z%8`+U70NuGT)P|xM-y=SK=)wJVW)*xf3l#~t^ArfOoNrALO~`fQ0tv=zg^kqgX2>t zWw!;XA3xpLR7r#X1ZPRe@QAp-riGJ#n35?WxrJeb?qhnvyK{3xSo=dH!!6bd(;_JC;&Xjz4UGNffjW3!H~_lx zby*OLs7Fe(Q4zgXFT%{b@*MsgM94&AU+Jn8IItM2YghNF!wm%efB0j5Ie>&N+LOZ- zJIVPbFH2C9=6ReC#5)MO7G0R8M*>Ac*~6O!?gK3XUH=vrK|P&htmqBdJHhHzc6Iu6 z9)m?GmEna!0%h*Hvk!892k*ReU^v(IGG}Cr0e1*=qj{NWFW-na*wE6`dAe`DPb%gj z4C5ZfqbjfoiTS+aJfQ)DEx*uBvXCDu44vxvUb11=Q6!sqFP94;@iG#F4seG-7h;QC z9wMiNLbvm|Q^w`{V~Vx%NjPlyCkOMp-L3Pvhucw-GmFMLuT=-+1#8EiueX0IIVt(2 z{xZfp+}X0~6$0)E=sJy*+_kBVj?JMmorQhKqZIz=$J5nVf}PTZ1ocQ$Mx%#^CNNRm zoTB?2XZTsz@s=#%B^ig_qUSnk$p5TsX%cWpLAUHs7;j%u-K2rJ{|@%2)7JtQ#k=mT z9kt?9aXY z1<@_HDD)k0$3b^nwZLCaz^C^zg~8~jzrT`TC9aL$ zciXN=Li`HXT{S#8F_u=EaN7Mw(JncFI{~_Mz3<;B{DqJ5N8b)g)Gw#3ZZnjZt)vh%?0i``AuTn!9AeW}@uk9qY&7*>dJ!wu~+0394hbp}W_pa7V z6OW%Ci1#<>%KM-!*N2h$Ch3;)_!fD}hq%<)p8diRc3X=l{f(PR6QErZYjTc|!Ya}_ zK)c+4Tn`CJc%`O5GA*=x5|d6=2Dnq88%v=X+UUS|DzVL{VzGD$?TbmNWP~}MxnN@` zxfHS9c}by?c*jbC?9m@HIP+osETREPgkQ`?CErE3gQ^!D{Jl+su9=N2$|=fN-U$4* z@UYV!3fiYB_q0oqDGJS}fYBF9X~*$i18+sC=HF8pr(?p*71+Jih@Vl_J?7ke^q-?z zcYt_jK$l8#`b%N;^)p}ow-^CgKAV72?HsvvNXjDjL6Oo8#L4@P)R_sE3yCUX&67-2 z1T=jto{PDrV=pF-*5SWiYW;va3%bo~PCkefErZ+mcy>kOe8%{vNCIt4P&p)eWm*@r z6Rf19C@z(~S&*8j1?QcYmS)o#=#w%Xx!0U7Z&wtP$#?*F4s_ezYO8L$!5;_qXen)D zll3Fs`*Bm)9CuPt1a$_JtGu=#ZPwi$zU)C^x4tyQxmwwXsDyvhw2?C6r;^d&aSQ?6 zdC)aPKH~X|PInyp!toL5j8X*aDviNor;F?ieZ}tke1=)J>(d(7raD&g=d#fW)GDU- zuLjtE+U5sPdAHeu46wktpaszFcD}JtDZZ!demTUNx?aPcx_(q-u^Em`d3uKEqg(HG z7_1M{duvESqV|oYfjNzP>GEg}?l$)QRu_UvcRUf;KVAgg?=Zv2n(tqJ2pGRrJh+6w zcU94}zcjkzBp19Y_*Q>;B@%O-f-ZGBqa0KE?^8Ey2ye_NZ>wjQ$G9SlpPBA*zM5)OieVcTD*I?i@-Y@@vBYv1_Hn%$YBC+iemzz`V zB^*#%4$*zQe{y2W<_zR_8FanQzpr-GTh|0InOSAcu||b6V6Ir_*`17q0Y@KjS3q}&+DxS;;H=VD8vh{V)Yry#$=b$xy}mlJH~ zyUV&Py`iPlj-jZXz>_6^^Df z&p}w&N9YS>bKJRj*OHFqnEvB&mDP-~&jhD5Np>$L5(bV`)HnAU7jI0y*tiz`*5nyFk_b0i%yIzOG z@*}#cZ7Sm8o&wxW(AB65PH(iUHSJ>FtuRv)`)!1kR`~Z^oZG4?@Oso-RS8$S=()l- z1?A~FNkAIonbI{YG`kY_?ceN^M?!8d`VWA+1-fyhd@jSZ+T~CficxaKwTahwou}S& z+@tm%Ct^5{vyw5F%{!;>^L_mKR6>{cS?;I=Po5as_w-ud4Ijt1JX-+nHt52wI>11N zlEg{U$NhS>esjpQLYG3eEAkpFYn4Pi|5Evk*cE<-Q>*o+DRcJkD)pD2ICFA`pOAKA zZfd1X)5+k~aQIxei7&2VXdAV%NREo%^n|x5nU3(yUYg>BW)>a;h zs_&NFBawN#HhlHT($V1#vQpH19=8bx++EOJ*W}Z(HyHEQQd=$go7_w+6Bnyq!_`xO z*Q8Cin1(mbp*Bbcp?+U|`WnWz=Rx)FoftQH)*@0`K9}5sDYKsr0Cx{``xPpXKCkZ@ z5JwEhOx--kE@+>A(Sl+@lF~48r4_W2{bKFeDhVgX(~c_V7rrBS?1d>?`GZ1aSk3$b z7eXsl8F2SOSGrwIllW&8Lu~z`+YXaxs{VVX0HW`0kAY*-YM1f%)>KEByABB21mb2& zm?wz>VTx$Ba=s6ba`wVbe=z9s!TZfWpnD})k=Jr<^RM%9(YGs5OI!OR%bj)IzLFa9 zNQX}H)Hd*7?Wff%@mp7XVeZ;Yw2IV2YmrA$vAjLMZ|EwY$32i^a$5ORq`z~)zLMjw!-y$P72@d`l9f!Zt zF8uMn95TU7@H!IP^~j;g+6&f33?Dhx{Ceq#(9G6y3p|&cfiC*-4nIZ~^!)YD*#t%@ zeMFLekr!9zQNx;lxl?|pL=8Q|&$itZNhPDob1?W5XU716*;cA-_KmbuP@AP^s2Pxl zbI^sP_8n42X37(bEkI{)-uPJ%(SgGl^_0JGD0k12uT>*2BaN^cGbW_Ho&#}W-VFPb z5_%o=`n`|PjmgrAP8qnrU4ZV+^hUsVr;5eDxzC228O54dbH$1U7~3}*{&gyHc`pI| zY;cWv5BZjt7)z2ckrwYmRH|=ev?93muDo-##p!S4YUQ`a>5wR2 z`S_c;F)6)1qpOb#k7{im^+t>_U$rtfO`eH z%6hi!WG9p34rSEqapPv2?tv2oiF>nR^QCreizuD8KPdNgn7z(davQalA2q8)lnFH0 zn~@G#?Xz=Yau)8v-`ii%U09Su6~fU?a?QY=z5?@F&N4?L&%eIXjdpSIJ|aZQ(eJ@>+R{(u5qkbM zNRjU^$sdW4a~QzA1>FHP30xO5{~Ks@t|g{m!MTg3=JWI5#SlelZD_&`Zz^AHPBiY$ zG+NT$d#OUS-@Bc9)qh8;K9s>;cWA}7*FFO79q2;Hu#>HB<7@0cR~Kla;9mXwp!x-K zMoW{9^pO`D_S9JeP3)*zbf9E?u!_P}+*5n`*E9?-*>0*}Pmx(UC)*<6-h*zpA$_E} zpy|R?f>r!$GmQy0b}IQwI;Ah)uYAD*VfgX9>2k$EB!=L?10CtZ{K9bt(R!3{v34Ka z0CI>ho05-!`vAHsx>Qg!_^4LwtMA3L7+XjNR$ANl)a&OW#_RZR8igWFwJ8DuHJ00H zRUd9Em^LQ?==bT%w@FcBplMhIi*J2gf9RB~lXZhc3+yDMxL`=5U zj*<3UKD;NLN9EVbX7=e#ZfSFTh#YJ0@ipw|P3b51-}LSgA2R2UAwq2S>kLB#M-8sVwbm4bmvKLO-TQ)qZAWs~MIvW|Lne%Q{MK{LJ!sdG7{I>ME9jmQt)E?_ zUYrS3JJL5CW3B8%;`0qg6=k%2+eD@go~B_Ou|^Xy8;o(rA&w1UG(FCRGPt%QHG95q}T!Zj<6uNeF4wTk z<)6Cz5BBkUd%JBVRXf>j5VA zaR)5=F)bA&Ol%(DLW8dT??k@H;+@Dm-DD5EOC6%%a%whS>+J40Nm7oB@?gVic)bhk zkX4+?`sk4N%e9FoT?OsYrCnqE8;ad7!lUbe3j@058-;3@dlZ>C2vn9+dv|qq3-zXz zJJ6X6P_eew#rU7XCj91~>I#3EiC9V)_L}S zbAb>sC+&*f#Y;89>9hZ+Mi@R2G4Lh`9bFaycYtr8s4tjOkY?zm{=vqVu7$zmmQuC9 z9)jhqN4d%n5HB3)w!K7hig=MB+afnQto$Po_Rt*mkRvzU!=93a(Q-UFSaa=5wtlDtv^4;a$NA z9Y@w9HaHKC2)ZBkYsolSP1@RG=Hr#rk-d5|Ey_=xv9x2uB=C|_k7T^hE=uHTE%-D9 zD@ar*efxN(3~Uqcy^w#lHZF}GQ*HtAB7yE1IYyCiGTYaYDAmJ`=1{Xw%QjCwmKO?t z?jrio(EY{Z23Lv~<=F3QPBRo}(<=%;k3(nQjJC}_6#RPx-iJ;caFIdR!%Ulrt|lWD zTP~8^XPPNcHRIcw&kTN%i)nfy+s{M-OGn<2WV?(7QC9RW(d5)tUCS(|AG=u-^VFd} zN>P#j z5?7FkSa_O^Y@74HmSL8@CGu7HCkqi{%J~dCa(qp!zwk$_o+ked%-8D)Wu?+alL=vzf7CE z2G?J7&@GOKxl?~vNP#^(Z^tOj|6^0GgwvJkd3;p2qovp7PTK3)>5GzS8quiq*ir8> zLYJ>Vc*iR%>u`K+gltZc1^9kM4A6~K$c{IG7KS=E%iIIx7ZY^3jB`phNwQ_$B-`iP z<1Sb3JJBpVv$&++M|@B5Qp8RymrQ9ya_ijf)5zZAmAjchB_NLO-|}yzc@qwm3Z3B% zxLBY|u$pXvC7Ix*du%n-_Xu-!f5spUqoLM#G3F4l7B5=TCM>F$?(9qG?chQmP0av% z{v+bsI*Z2>dPBtJkD%rUz{LjLmv_pW7U$JjoI+bz;Y-QCWdroQG%UOWZ;*PcWn@16 z4D)Cz%S#VN#w$!z92lve4A7Xm^6bZ;I8xe4QCIk!0Ju1y+Zjs`5#HCI!O}}c*%AU@ z~e(pxSX8yrvgGU} zBQTZ~nj%wwm@xl~^WSjop4^8uQ;%M`hLYs~m;ZB1{GUty&m{m|iFDM<@R4J( zPnT$)tO}&=H=WSc*Fp(gYCfpI$z2Xr5+;7&zg?)zSJ01Jt8_226tu{1VW_2EddXW# z?c%2Szx7`Tgnujq;s4L&HLux<7gxKNwBWAE?=l;ORT4li8Q~4iD|m+*T2garKapcZ z#R1XPu6~UyQoQ1MO#k(Pug)Q3(8DsJ=ivYLvml@_{<%b;>yU=gL7DrLJ_ z>-OpRi#q+kn@xN31v#Nq47LV~;)ZP6jPvAhU-2%Qv;KMi z9ryloi9vVvQo!N4bFF3YFA<@w`)Gb)A(PUswuB=q5jm50F&x$|thS(f>AEh_PIbWZ z*wtpJ2FZ1@^p}dXuOu4BM9BZQz7zO=ToTaLmGTb=s2aCj{9=dn2bobZzlb03{;1M5`<|GdBTHB)MgZ&;5HIQf!`_>~_0+Zd z|4k}MBT7UGO*GS_C}c_^gp%eo&njsm6pG9w6;dQa3aL~o^O#6w2r0=-gQi{0No z=l^uhxu4(jd(QOTuip1s-)pV)S!-Ww*lX=?x!JmV`pbjF*T>GzKh+_&;aQ*QH%khpD+epsy<^>b*mKkuo>-`maWR~V&)B!ByOo>$Hw zQK)3}#>Rj{)BH-T%Ou?w`RtnZOPA-Dt{hv}*ZUs)jwG9{ek_mMdRYfxF*|A67V|XcTuZ)WpYBsOSgA1Mek}BxND3yvOC#%#n#t& zb6~Qrl4Z${&tpfe+BrkXOu{JpM7={P#<@D>R7E{ZKH;&xE|rOWqgVkoe6owtc` zZ671|%I$Gb)0^@;tHx9m?)*7J+w|M*pc|F@YcoH6F;|qeyH#>tUhI1Nu2C6*9!^>L zMU(b?t}7ODb&D2f{6G_KxQXf@1vY4{xt!@hw-8WsBGv{voNiIu;3qUFrg zf;$>{pC4RYn7i05Tx9z)@+APFBI{hq9TI6c$ zD>?slsZ4uGcQjjf+EE!B^MbB-vHsT`f9jkM{JF1YkfiUT)1^5L9$J1IH(ps)KkjsC zaIo-|`_osq8Rt80yk%mue}eAttblt@Tn3M1+DnsJk*#ZBE|O^c_H?{S=9lZQrIvmO zd8?qE+qKKv=k%l(Z6uE0#Ah(= zC0!-9?zE+4Ay0F%@~5WMKGFyu<9hl*_=ztn$?ZSuLzjyb=dSHE8tQVZ(p~6V-_W@e zPCio#n>&KvR3};K&v)vc?mmRr&cv+_@^{UIGvsr z9~R1$xls81tfjWYEDKEMly6>AesIi;8}h-9x{JC@E=}0e{`$#mKGkC(=UBQbY~AZ$ zclO<#x&Mcg`C)m**NZN5ec2;%zo>QTEPD+fVVBgb*!@pbx0%OOHpUDyiTC@y&rCiq ze7|d%N93BH`p2(5Ze{7JvUQzW)7F+nB#i2NAw=rpp(Qa*ClXK3;o6+9{i%a5;r5mD z!TXm>o4ZI^Wry8fXsGYGZC&)^*w1|T&fKwT4pWz!kOItP@t*(SK!Ke30rfbZ)k~&T zm$G!nvUT<6Eq?rQ-Pt<=W zH$V0r$Q3oi@KIhhZ_9)u2|D$L)j!33W>oBn-Rojuwk}TnY3U-vCtM0UKD=rgUb%g# z?9LS_ac_R6Ze@Qzq`}r*@@T8YlyiESCmNI8Wy7BP#+=&l`t$m2rZR2W0}qEh_laLA zb#I=;o(oZK3A!I%Twgi5WyhqJY?Y&~gD?AC3ias2YOf|+x7<*UHzP6ot&ITN4s=bu)(qsZ-HM z@}{jbT3POQ|8bn&eRrw(gAOZgW9e$Mb(^|!U7qw+4cVmN?~$dVcDj$p#aA-Cb)7*E zOlpLO?mhXXw(r2k2(7n%mNpd{rs*;+3GUhtj_MCcG?SPcRCVqdOIL@jdrt1m{O~(d zH(uC&B~)Ae&4Ajqbu*@3bF8W1z8V%*FP0>pv8?u#O;)OIcEYzyhho;gIk~{os&Hei zLcHhIIO~z0Si0lby2T$l4m*FANlr~rTOJDkes2C=cgC}IgDdjSFDpLdwx(ly*Ja;{ zDG*s^a9jo7=(vZScL)ZJ~S-N^`-A2g)W9o)H=$@vYXjyzPFt-RP@SQ(&yYQFzc^)s0&)Pqu zLtQ*is6l#0 zg;;+vv(_;ePEETsd)gvLFZO&hV(T7O_3Bvp!+7wObc=!4AH1-MGOyEG*;O;`+W6w* z=f}3U9^CSzdiI=oBK`)8ssew+k*y($*--Cb1nQ(X0`lI4w+K`z6~m1pT4**nK=%nQDq9fy=0 zrtIRCAItuCStqh}v+UZp6l|^#)=7JudT~eGk^E9?c@-;-%UYM-8h<_>6hHswiazp< zf`tR`^c7pX-aF>)l~cvDg@+WJ)%5LSaiXe|)!s>L-6ZKB0!;$WibhHNvWq{N)PEbW ztFE-8F8Lt8G=E*^d9~4Qa$*nn`p%b%YMH%zXS8HwnnNF*O=}J8`NHSlx!hsK(luf0 zejGJN>)Gq=pZU6t8jjcwa@us?E^1U(cK0Dc)8yR>d54DmXtq;Y+j`~`~0g-hReH(2UYj@z~ z^TbsPwB6onw`AWPlCmztd6jUG7JkAH4hKd8+4ifiS&x^vBY&1D`u)XnrhV-;n+ zxBbreSOZh`_c&A7x)s$X38Cmxv zEZ1EfyXs-E;*6p-YwG37UtVrL)V)sDX3q&<#iHBody06g4@yf7D;l`NPgJSmU;KY; z%-Fh>=Trg;1Q+D;f15XP&G`2r)$7c+cHTNLlh4L`o}K$dpKGy#Z#53rbU8~Yo=>~F z(mcktFVFYCw(R=Lu670PLjgsTa-UuH5;WSlwQ>B|Y4`X3j9<*1t5l-) zdcmDwp5q&@vvg;$b&DG%Q=Gc0Cw}xD=s98R=V5+(%yhDqJ8d*)OyNy{q4FDVJzL5Y~42%$2U6{UeexTEBGSmT-nJm z;rx=r!Y&J6KOY|?@iR9trtcZow1>RhO+hKjKQ{+;)|yOQ73c~ zd*-v)y3rrI+IG42|7ugX%sQ#Wc(v3~F@r-hcbQ5w-MK#G^pCI~!Y`lOeXCiiERrT> zSkqi&)S36wY_!#?L60I=ZM{&pg{5oG*4^Yd=%#W)L~Y~f9R0vEU%q;NQU1}PlXCM} zsZ+}7bGOD_*(KrmwR_aIcZ-v`eUIE3Vm0>Yt6`pfH+Qd@!o{6YzKEqeo2~0LIbwcL zfNdXU!pV=;~(8=aKedVFh%ROtXw) z>`&c+l^?U_??1LEVcvyFOB`C3-@9Wz&|+4+C;RtP=dg8;pYZD3<`8Adv(9kxvcWEj z=ky+|bAG98eI}*faN+2emk(Zye6QkojV1=C z?Z0&{)xmy?e{;2y&(HCR>AKE0uT{q>L35g9U{ou<#+d0afNd|OkBnDIqF z-{jT|d&RNu!ucJ=7x>O_Nl>>j$?iN{S~|;m-IkvlHLVBptJks5L-W|WGghYU7%OmW zR#mXc@N|Fg0FiPtyQ<**xGt*NMgIz^13yVyq3C&qs+W_H7rO~OuYZ?O3adJ z+p8A_E+5&=YOfVrSLB}J7v&vmZEG)wbR9@uAiPX#5Z^#-RANWYUNKK*R`6H;RfnGp z@-sR&ajCCCaox;B>v2Yl+FMlI#<<1z@$2|~?*6^5&u8oMb-U>V%CGGZ_EFuUq_Qbd z>~^!9Den-`!VS{~*j|0rcX`_bd#AOtgumz59Z<-S-jtT<{-)oLMvw20MSO3HQ+}+yUpVEBKzMi%4j3Rf?vDmEkOUk~FLBiMz!`Zf?Gr)qnBbOo0-&kHKO$LhEI(a=qc_w>%gs|D}(F zrMKv-Lji5?S-OkZx+46RnLgtJuZgsjj+>EJv1HVfg9AhBzS=5E3v|jp+h{rB=z;8l z?IF$%t42gT-MqQvdRObPuNKZ{yrWY)&phB~|6S-}wk{V}#5$GHrne?9brTm@^7^#+ z_S^?|kH=U{Xq$Av$+-Yx-W_;&g%EX=F?mD_hdF~-GN@YPC3G1+5urB-M8F~J295OUB>f$x3g%% zXweS-NwW^@xU^{2hLN``5^6=V$BbANb26vpbL27g^Lb@kJF4m`S?#rD>&6WVmD(ik ztB|ztdfukC@R%@>ldcNVfla)sUBl!reG)7%zEiA}aImKJM^~+*_mCIqE??@4j_mer zz7uZI^yJ;|_guf{#ZtCz#hRvR+wDdgmI(W|8LXD94pY0DJA8_(_;s!e(aF=_rN0o| z8>RiQb+>q58}GzVHY5AH7qr@2*ZNAv35(AzR#jrP*N&}Ql(psK0Pn5K=6oyZN^gEv zzvXP?(B#9l0!pLj8Cy%mC7-IRn%bO{DPdH$Fp{f@CpG)t!o|U@mrTmatg2T=JJ)dHotj(KZD2a_>S~g`_uM*9fNcIS-MVaUD-9uWp|#D+3-+Tu-*2Fh=n8uut2-9BWW&6sU*AHts(@`&%P?U47}B%%LvX6o#vS}a{> zw(gtzuXbKMC&*XueaPd@+cs(D8nrH;-`(%S!NJC3og*aX*erZ>ydZX;@RR+sW>zO3 z`pA>yUVd`dgG4n&UD*cVHIG@kE^OU>!jr1Hjf;a~L>`x>4D7#o}oJdUUb+Xa)E#Mc$3nJkrw*Rw`1>?SbA)K@;z#- z26tIm%{^9o-PpPc;|!k{&r#hftl?@sccIN*)pNWy>2aNdng-{~=!!&M7<^;JCgZI) zN9%+S8~0r9&GY&_wIb*GSggBjF*R)R0m)4)-Q{fEU4D*9=Drh}6&o!&gLfZo6hAim zLV%>;lG$S(`CH^XFTFLqeBnsdu}beO=h&afTO#yo>6qmgS~|o_vjQ^&KLtdyblusy z@~RhuLR`%Cr!{WypR{$@<&z5q#`IYtcy)%gU+&YAc&;q*_)q$WjGAAzjr5d1Cw(dN z$VX-K{7qN*o@&3=J$q*bOV@*~o4o&oeuxNv)7s8BW#4<7dDWhFh+2#=`+80Kjce29 z?Y)@ZxFa?qEbt(BYSCan;iXYuKWVCey=%PJ1; z(iT72f0ysY*7cjV|7U7kjr$(Id0w%ZJXz{v3nCqcgd2yvcXJD<^Et5g!KW0d1d|Sr z8S~}rS8MR=iw!fJkSnZ}?Zz{5Y{wIQR(rkKx@*%dtFrth_U0^h)!8Pys3}JG>IwKeKZEL|VAE^q9% z-7jy)R*oGSwY60_P14~&9|e`D4U)wbgEh-OADFdm>_Y9O8mrDce6&V#$8w<++r9Wg z#s?`ji+i8lUo6-*m!<2=*1a?8n^eQ}y4y>WW@g{Jxb_&&;OM(f@Ap3LGpBshnB8O6 z?dZy0n>fQ@&a=J`3kDA#ZRIsJRDEy6J16IPWiRV_DtTGDer(;~_-Dgp6-TcbzTeF2 zmHXk?#fn_cp6dFy3imwvaTOr_G7+C~I~ z@rST<{n@&;QD+kk1ytUfxXzwCZH3TEo2XI!$33?!*s`rItAASm%t@<_G!OF^Z+s!A zCR>#~OknQ)lQ|Qmh4wl82+guQzl8noh6b>8)eno+@J-zP@cx*-8y<1zPdUD0YdlxA zgmi1)1H&Wq?CPWZ@>)(O@SVTpWwk&lv-Rf=joX#=fnJMKmVUH&l&)CHYHuK0S1G1` z%--YggUn8Jy7`I(hiE8E8b;b zvqIR<==4*m8>Ms7Z&uW21gw+xKFQJzVe7^Zk`T^V(l6b4u*#GL^VD<1Pu|hJsx?x3 zM8xY84g~^!B|rKcI={#|CT;1v>f#^!e-3uut*LqG^y#MxJ3E}NUSNOU63W*7Aiw6q zNv9e;rMh(E^sy~^V|I^E+k8S{kdy1BC@!7g%davV(k|UD{8;nF>}G3V_2r4Hoed=3 zaG%J3Y3Db`E@!`2*owDr()jtZ?Ua0f4 zXX%Esb-M!;G#|99R}blP|A5V|vlD%rGkLk)=eQ0Xx!OwGCDqK-;p}jWvSjnU)m+VuLHNm5Mai`~wmNSAS)d9gnYjjnVct-P0 zc$bv;uyNTZQ-!5l6E8$aJh@;yZWyoDERmU@~xKUGDDy?=;c>rSnjA8F0^ zxKdk1LB+HmPoc$Hg2gr$7|lcY5#ib^$W6XU+1mOSTt;6#I*pIT$XMWTi3Z!A~$4MheLLyO2$5uF<}vM z8&9q8(7Eb1Gh#)3(OYMm?#L#M&u2#12A}>OQ6%0vXi!7hOAX)FaKHGkA(GG7=d5V9 zZruKfQ*YFdyvlp8c*Sn_vFAKoe_C)~k69)XfBntVpLu+j>QlodCdM1`OeDLyTZ&~e)Ve8Hmc~P@;bbfQ0=txSt@RlGi*!9 z<<7#s@{4M1l8&AncKLjGp1P=?=#TQ{qweyK&HQ0FNGpB0QVvUZHCxv(jjy3~q@d5d z`z>3#<3@efD)@ZJgEw6DcGy$ZHplBzMJ=LjUmCQ0893F~CQryv=vbeV`}cOnf1ao` z@U{()4gG#X&-=4AY+VtSSRyem(^o#a`LcNbFFL;kj+H7-v?7og$ zry}R%!zl)jpRXvKUgKhEf4l9Qf{xOgnvEO$%UHUxY~9E0TLU7ee;Zo7&^j^uTY{Is z%0t58agk2;k`iAMrp5Ge+&r;!ZWJU?qO`s=n8)QDaJ*mwtP0CV6C~m+`nSZJ{jP^=#dWg?B4%dV37c z`z&8J(QcF0xcNLE>i9}KJ{t;unapMRB>#X{zuiYH4h^r}`p$Ce_*Jv_tEZ;4Y;Fy! zxh!yZtS)=~jbrOBykt0ON1#=TQ&U2uNWbkN?@sJi-qY0mEoS4nlF?l2_1=x^V=(c1 z(=0VLlY{9Obn~7r*`hTnFT~z2y6kJ+w@vJGKs;O5N@RIjqvjO8^{d~le&gb6C4Ede zq$5BFBg(ve_e%Qd) zRlmP!uvF`&SN5`s7LHsw-6PFUt-3C}ed8O+R{iAgCw+9{ozCsud-{m*t=q|}mkzzx z7?gB(h1Jabg$LulzLYZXW9e>W>+&f3^U7OrUo0r?A33%ucZQ|su(B=1CZ_#eu4U~0 zyu4WSi0`RYk~wFh_{ZPhFwi42Tw(C$1oK79X70+`yr@V{kEOebtt)==c)Ljhuf$;+ z+gQg5AtsqOuDI%EUwt+A^n8VV0m^6APQ2~sBi5=qG;UJ;p>Z1>ZfQ?*eHZ_3XrDFb z<|f;y+p}~N*t(;P4&C0@F+7`pJB)=<)E&r z+FC0*CM!Xy<;{*RHJ0ucwrZQ*!uj{`=MRK&Ma>G_%*IVWbVta zE>$eut!&+GrF~lty3LyuE;pyZQzv5mO^e1U6a6)6^4-j{s}410^4WB&Zn&@C_jyD2 z-Di607xwX7=3kfCO^L7O~m^hNtR+SifxYH+`i)A9Fy^jhrd0)YKTLIUdWL?67e5dy4%^h)+s{T z!rECog2wNh?rb|;&p2wA@~6k{^KMG-itf+;R?5O{DkYuY-4v%>|1brfc$z6jrH zm6+9eBhdnu(UY6^pu3tah5ujMhXG?V`v(O)HIhiY zwPaS#3852nrXBDTb}{JxSg&6Z`~CWEw(gk210KjpjS80I4*NM*`g!4tLF-3J4ZHp{ zvtVCAd~xt7A=Nn-6YHu=Ej2}Nmh2vtoL9)dX`W1oxnS=4&|7(>;w(SxVe2X+Z3|X> z=I}vO*U-OSVydY5;_(fID4zcA zdla`EQC>g%=|h(8UbgPZ3ywQts0nRXRaQ@s zE~$9`OgSgi^}Wk8znPMW^D}SkOjO9R`H+54iG99EX6s6aubJ|8#Vi${+RE^|kC$%g zA3M+G^6GHUo9BJ?hHtt4&gj~?$p-6GTB2C( z-N)ALH+9RL>BDY>pL`{-sQTu?%E?8KrJvpj{62H`m!qqFs&^ zx*2XLTNr*x?S8z^XpbH1Wj54atQp6p&s}=fr2W$PZHAF=r9YN@t~qM0=I`&a@xj{1 zPh$re2^XwpzxPaK>y{mVxOo)+st0b-o8RZ<3>eBAxs&T+h2+I+3#?^QvGG^?Nxt4xEf!@I6&c_UiVf8-lgYUSjz-jjemSQhs|)VbQ0oJ%XkW((Sfi z8+qc(zDI)neXi-IUKl<9gZ|j@ep`mm-VxGi+kRMGV#+63x%I`Z+D|k~_^cj|n$CW| zp3c^7zUo?WD7ry1Kz-u+p_SU(pDC}IGu68JM9a2ePd+)W6Y#$!py5`zTx@a^*U3FY zs+x|pE!Qa*I$S^9VVv3PhKFxh?LENO4ZgT`S!nZ}Yt!9BpXbKs$IXgQZL!vRxPe|^T%nst{!@6YrZGiII`M#;?Gy?bIU=tZgWNPB!hK# zSFL!vNp$AZWs1@#65>Ojy7H8LxDkaN6Xs)z_yh z{69aL7uvACh}GUhY~28Tt&%l4IwOW16>p7DA7|q7N>H+*a`@F&4=stzBi5pW+y%BC z-Erppkd4N&u5B;VMP6iejgwlS?-Q|ns!O}g< z*1cBoW3QBBrQ`YG{h!}o8XYFH=cQZCnz`qmcw{+RjZe9C_H&s>ldjaY3$A9@cElA$ zN$-?RD;^Tz_hY|9q-)fbgDl-lwr)UXYQYfs8jponJO$Gv;(2R*2EA>XCKlbIe0^9kYy6j*0 zt0v^M?>N9K8}D}QBnROamGcVB7DQ|vw+`yqc%%>#q%u0npdZx{TNB)Y|CoLt~rbz4z< zXsXbovd9CKs&#Q5O1t~07p{}2TzP*DOZO;S_mNb_+3cl(mu^S*vk7qX*4g8jvqW;Y z+1K#pJRNJAw{Z_@*D?^~u3i~a)b#Md#2rV^XVzU-)idC9A#1*t*^l644_RCVEfI&);g~#J6$3*!(YxB?qgC*3M9WDOhQm zQ#NnX=RWxsXWBMhA2(&et7Hb+mcs)$McmsD6396}JB$H>C6n+;QvP=k14f zeP-z%XX|nw`RvnTF>F!m*0-| z*?t+h#)yA)@~X`jyzhJyU;AZpo1`RkIoE$J4^a08uL%CtC`Wf6HIKmmTJ7VshU0<% zTMy6}_jCwyq4!5lUhbSR{(tLGPI-<8{-Ou|r_4dR55E9kN8cbWt`qo0rT$!8zrOMa z4tA$skK@TEVUr~ae5)DE1nezoU6T85L4GgaEX|uWa`Npod?cd1vx9Z^7{_!55=e`)AkaKZ7 z@Xz)Dtp_fFj=}C;&Rjq72W$QQ!k+b?-BwP091n0j@W0ywv|c$l`3CqPT#7%0?aNuO z{>Kl9Uws}J6yWaT#zp^VKj#_s&+BsX{kMz1&;Eb)UHCt*m7JRXr+R?SMfC4Uu+K*n zmj?8{lym)c573+r@b&Tv#=E(eyIfqN|Db0m_g`-crv%3X91n0j!0`ab0~`-a6G{A0LKFy4{$ud@c_pI91n0j!0`ab0~`-a6G{A0LKFy4{$ud z@c_pI91n0j!0`ab0~`-a6G{A0LKFy4{$ud@c_pI91n0j!0`ab0~`-< zJize)#{(P>a6G{A0LKFy4{$ud@c_pI91n0j!0`ab0~`-a6G{A0LKFy z4{$ud@c_pI91n0j!0`ab0~`-a6G{A0LKFy4{$ud@c_pI91n0j!0`ab z0~`-a6G{A0LKFy4{$ud@c_pI91n0j!0`ab0~`-a6G{A z0LKFy4{$ud@c_pIy?NkVCeN=V+ta^8p$UNjPHOHxfk6&lUTR*xPM)srUM_0$16*8; z<+L>90^L`-__~gf(~)!Va(DCbbroWiySjg0^wAPp+z9(HY4n*FajJr!u~{)TvP&|y zg-kg+i$tQi|=4Pk7H7#nE~Wo(OKqjCaZ7-L(?yOVTr~$Z~7@G*KdwwZF~rX> z`P>+rIBWv2QJLlV58ZXHmZ1~|)1X|QkTw7qEWF?@@*tRicm0{C^ zjmGeH#-@U}K9g?;Z1~|)1=ASYE+*d?*rqeK-HdH4Y%>_WJ&a8awpmQRy|CejOC6Xq zwtY-K4cKNgwiL#u37ZgO+t1jvVC%=&QW={zY{HB!jj`##)*m*Si|MeD55@sr*k~Ld zVr=6PF9b9fX&s_`x*#3Ubrd%IaOr^qfad2hCZ9gyzuJTF1YqVqN|#*%||?gu{}UY_qG7gnn_m;V_S$gt(kN^WNg-mx1s>e zyIRJ!2=TWhf~$_PEk?WnHkym|jBN?x)aNu8A2Bu?#6y^}k72_Pmn{fmY)_edOJQ3H z8_n4U#%71OB$MwMV_OE>K-g&BJ%`E#^!`L zjV-!fF*aw!t1wRKYGG_Hh}XbIbL=%^b49!yZK1i-%GlfxPl1i*&Kt(I9Ptg*P+V^r zn>*qgVWTnpjgvAHqr|M zX%xZrld%OOp3d0l`9;wc;1D7-M!FeW2;#}G(HNl$C|@X$rU))>*r?tx&_)Jad@!Im z*GfQhi7tB1QIT*!T24TKv8_VZ`ttEfVn)h*Q4^F}5hga}cL~ zq30&m5e@bsPW>Xx*kTY*L7XmnmQwpxgKdaYU(s`u%B}%{h|?v;*kTcgBV*J;tye?exY@SlHcFY?~1;VQj+~+ZNdFp$=;M zaK@H|_-)vzopOwAE8>R`r%Rr(Z9_bRv5jDC+hL>U2Gy^?*y8BnhfBKjcPKO=SX;{& z`}kgV^mNOVlcX_Je(ksT5efi7&=&}Sen1%X2O>Zehyigx&sRw>01O1Q-;@IM{G;cc z44`M+P(aTYdY;h!P7cU}5kLWq1f#%cpa?qAphoZ#G=XOD3bcUNpcT9UZ^1k89((|_ zKR*d_0qx6a&wUnf10KK&_&^`P4+KG9AOu8!C=ds?EkHBN_1Uv-|;2C%hUVujM1KK}97w87mLEL}`@B%*2 z2k-*{APD*bAK|l&fgTa8#2py=u6MO{%sQU@*R}iOj z!8LFl+yu1$zYQuuAt(aHfYxMMgK5pBHMSkly4ne7E&T?*16o6A&7}2^1|O|=Jb)L_ zI!AkYTH9zXqqU3HDq5RpEuyuD)*9NU)A~aDaN2k4fN@|v&;_)|HUNfT0x$*>!6aY` zCWEPf_T9A4o(X6lP5WlrCtH9yU@lMt>Occ%g1&(E&9qOZeX$7W#;wqz!vnq}`UCs~ z=Rg5C57Iz7&;;s08K{6Z_`Vj@fk)smcmke+2Jj3dLYMZvH^5DB3zUFTPzK7uIWP(A z11VrD*ap@E1uzoObDZ|TwC61aYd|{sAqDIQyTKmd1-yX`SOy$`GobVAIG_o1fI659 z=7I4*1q=a?q5BQ}a~O4|gM*+IpWlEc@CuZGQm`7t0@~-s1KQitUe*b?09W7!tiePu z2}}V~ff<+vrh^$^CNKhqKpW@)4WJ3s!C0UQXw4i6Mge*@NP+=i71|vGX#djyX#Yif zPugo926TqW0<_Qc2La#>^3&e&DR>5+gBPF?yaY|48N325U;&{0BJB^ofe-Kne!w3D z01sdTY{5cc4Hf}qK>Ni3fc6Z}!3)p`UV@1}Z=X3<0SqCkr2W0$rd7^nn5R z0e`;(=fMWB2_%5cU<;tVUML6yD!>CQ1*X6R%m@Cp->LfKwnBJP+uvLKAlh;W^p;NN)yv=t7z~C2Sx^rB6tEAZqD@Z_(tWXY z=yL(?Wg|!gE5Rz@1-t>JyE7rhC$Qo@dU4R*1TLcvI$xdv!5|3GnehWtFXcZ34%26_ z2Mh-6_T;0Eqrd{#f`_;d8V__2#2%*p69{v_KClh=0cziM)OiCG06Isl0MTGI=tTL4 z;3}glW?lLJ(F$k9 zLTfgi=LaBshmfA%+JM$oXF$*NV3d>oyVks6c`BTtVVg{fgBU>IiHcer@S`ent=AIv}dLK zBY_f-1ET@erwB#?1<+HL^r&vi-(#cC6ek@j+heCZ)Lybvr~!KR$!ds?1wD0-L7djk zo_haQos_pnyQkf~eP-vS_OU_zj|P37 z2&mtvzi8|j14^ecL*Wcy3aAd+m(l*r3`_-6z+^yuK)(80b@yf`Ka>Bczk2*ZZDsc_ z`IY*TolZVs+i3jKzQh8|2D89S&~u+Xp*d`nx92lEqG3jq0t{6}dtA1EX|fE#cHwt({40Ln}Gddk=#z7$Y;kA@@S4uIyMJy-^) z41K0NF2EU39w$IH>g%5J?uai3REF-O$L@=`5AX(FAQ`OV#y$qbf;Aup&~r5m(DO40 zEC95g(LO>Aj0IzWDmVxY6@<#*9pVk(KDY~l!CtT#B!CDI0)jvQ@CSi_@~r?X0qxsD zK{!|i)`Li}4y*<-AR0u0Sg;1H1#w^lhzA?NCa@b&-HBiq*a>!kB(NQ916#mWK(;*~ z51a-kKn@@u9Ru0m5J&_2K?>LhQkl=>hjefN90h5B@*M#gfbt#&^euK4!c5SUPHCh~ zpD9k^agYm6f>TV`Q^#$5z6P#3I&Xm+fZ9d&>wxSx0lTeaXXooF+jCD;_73PNe-H60 zPz{~}P4EOf29H2Jr~|d&A*cZln0PZn8avNG6L<+4!3*#lyajJSD|iK{4_m-%CQkjS z$c<+OkOy*LI2Z5Hf)3CQ z+Q3Kf0lWuaz$fq-^wdE*RHmnHK78&;qxyU5{(&g}zbBnOj|AjD+WXVmMdMi$p$1R~Tk)CJ z2Q9>>gK5AF?1XJ9!YP2p&18foU?La~#sPZorwvHM2qC@m(+7G$7nH(20ihu<29rQK zYy@eT0&0&H!a2YK%mTB4IiNIx?DK#nn9JDbGa;qBBfbbw+ZF=SrT(QhScBzYDX;}} ze{^p)2$}B;AF`)Y)4L4v9mH|8944i-ia0D*E6$Ai(;0Jtx5AXt>zyo*#ny&=q zAzM#gic{IZzhUdi8-g_26DOnm3WRA0BN0XbI@_%R;UF5&y15!5;`i&H}oJe1v)6G{^-fz;SRC907;HA&?GeT}?%}A8ZGS zAP!JHq_qj*Mi37+fKu3Kt=o(^dtFMx=XBV&AlwRQZQ6!#A4mp!!49wo>;}8QPLKl9 z0Ihci5FP{>APZyyYC{gfV@y07A$=}|{S-o)V7$GerwYh;76Rs0ev^p z)Bnx*OzokzzXQ~cZwS8v9_0Ig@I811deU1EZw0TxTkr-@Id0_d$@3ky9-WVfQ~A%} z6X*b6Ko!cgBWz>h)bE{$_h|HlbU^Heo$C03a2>)fgg+VRb06g41O0&z==q*U81a5U z9P~kcdX~`lJoJ6fcf=(S`T}p@1?YV%opIHGGVn(pI{zvGMKBtS0waL}7y;yg92gFU z0a-8<(7SyZFc?S!DKH2O1Y-fce+ovMR1l5<<58CuLi(OS2yqRB@(70j8KBAJF+!a3 z+(kGZ;W(fJ=$$crruW8lwx{!WKjfkIPXnI71Iz|)z#cdP2Ve(GL0{ybfRO4pMA#o8 zFCZO$un*z0iF)!0tpKPW^0*xHCf1 zpz`iuITNR{RF4m!`Acgyt#LFa{Q%9&AV7P^N(S0{)AMd0*oHKk8ySdiLKp{PKs1O1 z;b0Yr0MzCvR!HgVfjI0UU>)LX!D>Kx$rg+F8s;;_$-WWc1`rPtK+pKyig*&(0ycw0 zK;b#LPOt+|zU_c~v>O}&Ss)V}1{r|H%OP+O902Jc4Wxqopy#QU4bb}aMw03&DbKRGl3Vu#DLQJJx@wx*kthQ{L~ls{v?y89 zr4A{YxFPM|r*cwDQeToVI^Rg2QuKb+oRR~@(l>2GEy={_xny=!%g?2M-Jt3_6>6JS%Hy!%64m1`2BZ0+?wN2 z2)F7I=oswo<;*3fU^F>I;PYAXj;4;9jxLu=s9%6fU?A7nnU|*etN9M&fk)9elu3o6 z1X>UxZ_(@^X?W<@{rqy=DWuT->>h2SGB7a&YSg8;(O>86K}eanuq5QT-@JTko8~WH zS0PmzDXK@DUbY7xJjjFI*8Jsb_rS4^4$f{a@~ykxNWN@OK|NFmKJW+}8|L8c#g$mQ zQS|GoaUY2(?wLnXaW~84tjT7vum*_c!U23>N<3RgYJ$?bcj=n+IZ-tM4XqWQo z9@J>?=>2~B)BV_;UHr1K&|ofk6napR!W_cd8vWGw@K~+BZPh&7)CrVAyGrugG%Got z$_ouOzsDPmL^Y()s1keiGS8I9iRwWa8i^B-LaiQKnpK}6rRh$s{?(g2XGJa{_8Sg z+;-@0jQL+HJ9%gHvmc^ARh~!x>g`{*Iv>jp%^x>I!4s=|*U~IurX%et$k(SwOAXwV z>~!o;3Oy(Os#@=5=-WDK!Rw5)@yF_orT%z_erJj5$=hkQqvFgBb+mxG0UacP6l&Y| zP@T8YMNRvV!gO7*kGre8i!)ct6v1}8N|A6%p>FuMeBkKd?nSV>bR;d!ZH- z;2Z3=9DBdk1>c{WjhOkT%nJIe6tv)oYSZ+ARvSBz!t_G#e(Svj^!r+}Xq(RJE%Ju9 z%SJylrT2PzSL?k@?>*OhnFc(%< z!0!=%Lw@ii*-PHjf3^D8S~UPE)C*?WtG(8TUaI_aKe9-{)Qi40;!*p)itSiod(HY=MP`!4uTN&->_B1Pt%wVG+WZ|9$s14yCSI7i~E zj=`rTnDssN^zOId6~Q#zxE@}<-XIu0;{(dz*-Ycj*~LHD0b}urz0UmgIxpgo!i+>` zcUM;`^D1;jb%J@k3{sd8;_2lQ9Do#Sqt%<17RAK_VolwTh0{Z6N2L8LiX*4bQk=x6zkUuAyHlHPsYyISwP zeFgPMpq{Zq*V^sgTsjT)Fh1yAt@o7P`^OYZ3#~5iCOgy&3@S-SJ><7vz2F$^2Ja-U z;nH~~bM4Zf6blp>j57X>CJm*@XM`CaV4%4nh4x|vryf`42`J2FQlQqm-y%_lp4;Jm z51#O5x?+v*89UpNB9D~zOK0YI%6GBGXz#wxM;RKUd*e)cD&_g44rgN0C| zS#mwK&$(qHi4}j;LYR6E`8%8TkGh-nC*|*%3;+2ezIX5ZJ)^4kp8M}v&p)=+y{`xV z*m}HwohR|uAg|(ne$8g=YUlt)`*9(W_&0!kgRZ*@)8* zPGMZ04nZ!VXw2E@(z3YCcLw}P`Dcy9-urYk9+|X*d?2FlBQbE+475$}_c640U$>wP zof|Wihb%pHf3Y~qF#GEcq|g)H(B}U4oC~vluY5@Rt3CI7AJTh04yXi!Bzn--)dPl4 z5}|sS7SJze(SGz_?3I7*YI@)I{{K&*Jv*V5A?`s=II(aKun*PtpL-kiFyo+i@AQ76 z?7hqiY@NuX<63tfSXuGh?@v9kNTGdIo|D^S{$WA1C;xXx;zty~d+6vg{?!{42E0y2 z8D@tv7=v04DfdmCKCBE+_W6^dkCahJIX7Tvj+9Im-b(e9u|o=-rcN4+ERnhM(DhGB zI8x~OV->CFI`QpG)`?{wQbr@?KxL=G-T+fNxiT&2eP`GE)A>Jtmi$+4+uyT4=zZV& z_dHK~UtM}RFJL|Rd-}BZy-V-A^?&UB^!^0=$F`vN_dC0BD8Y9o(Oq%fm5GHx?SE$0 zS)|ZPG2wI7l-Frmeg34}LJI9Vh4@`_=Cu4M{gd(zgF1Z*SEh}=HGcP+(eUUP3*g)O~P=`tSYpCS>t>6&findKekNo zW3+egI63(S`vl>;Jd3qIw;wWNJ!K5>l^8lA+GtEj<-wnYsJ9c- za~J%KxV->s%sZ6cpIN=X1^tUN_}_ZFf^+aK3~G9>JnvbySNIiDa+vo2z{!cx< z@9cWtAN1bpzxAH)_kOhZGQFq#?Y$+r^dcU>;Oa<y=F2HRhk!traoE3H%+8RL5B5R|effc>Oz-#8dp*6kS_3af z>06Ow_bdggZC~Ttm!1|FAcbbuoPzy%GWX}Z|7k(*Z?-K^hQ_sYYp%!~zd1H2!+6w| zNf~H5=(3vCdNri<%=%uxdFZ{K-tRPWa6-GlpL(h=RR2$N-vJ<1k^DU% zh=L+0K|mBShav1P$s;PLsDOw92Ey#j?C!9Wn6Lo^K~WJDFd~X#027CT3LD?8lSW zGy+7*+MSxaO{@uTQ%)21?VHe5S8VUTx-U48eXcYdON>D{ddH2Q4SV~EFF$AAc*WD9 zKIBCgV)Y)>C`P>h^an0!(Y>73v!s9hJsf{p;W*@(k|vd>+=Z1$v>dOS{RIfk3Qls_@o^aHI>4 z*z?sv@PS6A%|l+B`||6f$ntf@3>mx~1xO=6de^R)B2VH%^+mZ z)nQGXMi~(FT`KGI-K!IlbGK~38nR}4uLOif+HC7PyZ-Bs&9v5r@DA~ojKmW(7S3r} z(0s@R7u>@*u;tjnCaImUX>dtlqf+iNsK%{(k#xrQ!|cT$w7mAjA3#mo zoiolB`u6CUifr{?SGNWPeV$z6E`ZbrZ#OIszjJ1{K`%0I*jD26^#KI#%cMV6ciF!_ zJXrJvww7gqbfPkjwU%Df55MK2Pc|_%hK%=%n%+O>t(IeB%SA+n!)zsyc*u{fFb(%a z8n#?II1L=>U)OFYc5L<;U*!X&lhC)z0inLo^`f`-72Myl3J@qkyN;cFqW~eU z%Q}sEto_;F((0J3X);n$O%g4h@yHx+Z!4Hy1tK>jQ>x zIfnp`xc()6&-G2}KXwvRV+;F=gbW?Leqf-{^VI7l2T4CJOGMmm%Sqkq-B^7yX^4c> z2j@iXf@_a?xOn8Q#|;Q@BC$xu_w$HLZ~Zg<)|r4%Z$ueMe?N!r-GS2tIEDKzFFCYtIr)52)|&w#-rkw{_)qU` zdifhbB-h&jq23s|>Zbo9CXFbHOax2E%Vn7`)9)z%mH&<5)EY1nUt@3{!hu9 z2E9PD53;b>kL19C?2Uhc8hPGR=IuK5s8!>J1BZA+eVX9^q#^!c!;ZZA?sHa2YRG>T zAY`vU?0&`Fzy*NM_^JL2TDLqi69gT^iOM!PK~)o&fvX7}T!4_^Ecy7o9&= za)5F=075c&_}M-icb>J5`ka)`d4SMZ^21BpKirE&a|7ZqX323occg7pt7i|f7ssI- zjKE}fu7D0SLOI6XFG!~o?d+KY4hWKJ-0Okn&yH9M4mx2BhGd=uq!}QIM-DGsHE7{s zfROIM-*w=P{9fR!0uISwOw;RTrIsB}YoT%k+yn^e&f#m9KK=1EpHt70zVZrK7%JzE zTJ0|x^WB%cV*s55E$&{9OFg zMXTK8#=N;xbLY)TcZ5lDXgT+q(snxV=0r_&ItLCUPE9oNd_iGng zwW65>ATI%jde+h(7k_ux%4Wi=L960a3LuRDDXV*6Ugs~f3mJ#C>SGC6c;xi!Z{9VG zRs={vU=zQV)W)^g)2s0CA^lYf;}O zYLG!|KxhO^_sNl>EFs{{zTSv7Ww|-}iJgeIF_i(9!O&BueRbxIf$gA1Rt)8& z`iOE){J8zd(?*{71t4-}^d%rP|EcJ8$GD#RFRerS`It4|A?J!#h&ONFegE>GJ4=Ws zHTQC+gEOkBvA_3B<`w54&J%5Vc%u93Uk$!*CF~CTx6Y`LgN2nbl$vO-yG5#rg>~=S z?&Y{^{JnieE7ZOyR`BUj>>mh&$BhHb0v$&{vZH|1gtz~$4BTt#-U>Cb zuI7BC&vP?VT?! z3iPS76A-CYk6$4CgFA;lUhBdIwGcy@NO}NkdGdvVx0RPo-;^%uTbHS^?-B|-?6YI* z9}36EX5l|QIB?=|2d*p=d(0T82-L{-jz8k>9>)(_4(kFAFg77p14u(aW`BIoy}PCy zzL+844ri7CA#dZj5B~VL%dn*v03yBhq(2r&!fF(DIsK`pmUWm92-!s71SPfi=K8be zbnN*X*(#o*`^Ex7BSwRUZD(B7XGlZf(7YZv6C|Y7i68GDaQtwZ1In@f7C^|7zZpNV z;pTUjk#{T0aiqrmr!<-G9I5;6d#7l7bep#mJg0t6r{plv`-DhgRiNwposYoW>_`a{2AG`CtQtXkD zHvURbBd$-V{prZT`}QS)BgY>{&znc*xxgXaxpLLMx^s7YdpdB)t3iFf2ZVHI*x>gD zjQC-lX?|)uGV6VfO zKq)oi%F-6W^|f9^lwe{*LDpx?)$OnP*SmF2W*LxD`AQJvD#P!A)koj_+UUds zqCTVxGi5mg=DghHv--C_ZSZyg|^k0)P7IaE_Lwl5aWlqEuG-{+ef&w9G^ zsBf7AjtMQ4)VlTyKT>>1^Q(y(yE{HMh}l#$)o9fVKkUC|7ULAs__GW+q&p2NO0Ro= z=U-_>bwJ?f9v zvwoY}hj|0zU41`+8nyP&UHgg_o!<_YPm^^;fCE3iMxT5fdT-sWQyGV4J^xaHQ+(y) zlNaxq*_F8FZt8mm5RzN_T6fMKxjsNzMb@&Q2v#f>_J@jnYhRoH{hzNdh*LS8*!I>$ z6W!a?U7|JVC802)NQr9SjQH(uzgqoSCqvdX;o80b)TEb?L`f4%PP%E!w?|E`O}t@3 zhZOsKff@k{?{n`Z?%M0FRpGF|B$7&J8qKV}`PLENmJtU$E%C5B4&wqk7TLs_==Fpl zqR(x=_4V5u98u3t97szc`>A=4CL3knhARZlkbqM%nP7}r#|{-XvDe5SDtdm9jU>A2U_ z5yG9$otk@1-ML)@*>z;f#*>jG?AVMezn)Wdy8nJ2Ww@i-;|JQPSzMh7Q}=%2%}%clSg|KYCoEZY zJp3wm8MymM?$+Pkclq}-8u-Vc3OyVhWt;^H3^7WsyZ z6mm<|E#I@Z_bklXXu^UH?68V0(w)wUYjLFCMhW}&?8E!l-+t<`wTylE^+$_+X#;-$ z=jcEDznCBnt2{JpLU8V@JoeQjje|c?4q4?t->S3dxyGTx3=S?pV2(WR!~ed0-ssFO zaKLjJ_?DLfLf%vJLG7M9@3-w80VxtfxJu%@`Q3je_I_hsB_MKs>bN?_gK$|mib-r+y6_8TTKPzyeepx56~2n9`=n{yUf&usAunL%zxNbBk$(PWKxow$T4lFy6ze3& zM?s+>!!Dca`|Cfyza?={pGY_y?$W8qH|2`#UzeTG7rg}3&w+0~9d~hO%w<3gyFdyH zn_xOg{inqkwzi>QZI&NM)X zxBLDxY3+llmCqRvcdp$b?z}w_5xkXu^yAj)f0jb4G!9k*LLB_k|C}ez-T04N4Tzn$ zk!TzG=gz^JF+$&-ylU_*jdw2`Yfy8?afb{p7nXcfVo!%>pV~1RtsvKo?DkEA98|9_ z6jK&=-LcOX*ji#>aO_!Z#U2IM)aM>4{9xd`1^c_O#`CnGFe>Vk*!qQKeejyA=e--CWjJ-)9qxcXm+?Y zCVI)h_G=z#@zz>c3fOD5d=7iVY5YNa^fTa)9`suq3~oH_#}v0I%K$SYKXz!8-np%8 z#gW55CJQU;a{!EywJaWca*y5(j_S&C!-^yB#Yu?KdGqk6Hue8$-fl75g(CWTB!yP> zn{a2(`JE%!AA-kPRFsLrr|#qp3}P9bw7gxj**=dbZdV}uN z962Z?BjUbm!o7VQsTGm1op8v$y0jeYfg?4JU!Pblr1S39b$k0Sx#~Y0yX7|RjSHXJ zM-sl41J=LXc=;vc0g*=jEZ|Vfb@ERhw|Czjg3z=Lmaj7)q&w5Le)7(XQyNUIT^n2S z5KYBMo34)2(9~@CWsBM_{P0xZkR^w#i=*(N!y#XjMe7x# z(I1F;)3#`ID&H{hMtVJb;1BylBaisgxY?>C7zGQsvGLd?j~+cB3+qpVSw~Qdm4_m! zBzDLhC|ObQ@;vNNAxIIZ#lztcT|)Hd&+UF3_EO*hG15Yy*ohg+rURwnS%q7t-ISdA z3d@=RbcdHeP?d=PxTA7VNE8B`V(WH9u|QNI`J}-FH03I^DA^bLXuOz-zqbCXr4vV8 zf*A{1f$fgNsxLJ+>f^rZ``oocN7vnUZNuiZ->;(9X0bW7DJ_%2QurqbEB4gAZ!AA8 z@eQ?)J?yy}I48h32BW)=*O#5D)IYE{#EdDEk`Ki`RK+2yk3v|4D$b)mX3@F7qh6YIn z%Hemyi$0^($9pflZx2Iw^*@>j1!!q?^`{j*9_TjkJwSMd+_7lRb)r5~{$Bdvfn%G( z?r8OK*%tubQsDrv6!$B;GqaioOfhJxwNl-g$=Ka1!ZSP*o_J9o!ta2&_-u~=b zaq6I|#a$VK7Q(%;lSL~`_Aegrd7a1M_ktQsIXs67vRH`y*Z%i!|9G-qF+*4n+9sXwhdRv-won~<0PR(JyAbkpZIbwVuEc|PVsObw&p1Sw8&1*IQ zhejqq+{Z?TIg|7TKSQ&Ty*AB^=sXkjz+q-2rQ zX+&*%!t55U+g>)EA@J?6qM87XY zinKd|egDfK=pWC*uU*)78Qhi+XqG_vi%eGFj^>|CQw*;sX&CaCrJarKh7 z8g;_#kk4zPwZ{WOGN?1W;PQ=!KJ^+PA!zJYGDNX)}`Do0)(WqsZ*27uiW-iJwQl0Xt|AmGySuXksG8nrgYIs1%KUbyRV7S7&skTvV|{WHY+>B_?0kKO#z z&VR5(xg5uHZ3X0_*kuh3!BxeMr`O1iLZX{zidMMoiJ_ki9e5A=DeA+JuK}Sx_pk4} zp3=N%D_Rb1T0s7RU2c#l&*$9b=5T&ama~4A(5f4TOgnYNE2;V@hh{lwpAP|P1P*q0 zJ#^nCubthEIbi9ym*dDAkARLiY~TLh%fR02VMkft?Bfq0Y+W4ZOgR5pbWrwSqO@;c z-Y((?*RB5h;#wz!$hKA$J^q-STmT3ia6vgWsSmXdjTp<*8=JMP9P$;Yq5o2^KY((m zZ#QbV@8Km6G#(5Ho%?|2UH48gKkfO+z_Tu1@jJ;t?js(PE{=nkuUmDC7e0CW0oZGF zMH02cypgOw*+h3)uewW|S*_kxy!Oh{wilxu)RUUKCN(V$XZ%^*-CF;Phwk$CUez7c zD2{}h)}&2$fH#_>KmS7FoE^u$xDeDdJ#cNGGw&AK``CxSyt{Y86k0>3o<(gM&cp)g za^KoOYV13QkKG9fd3I>iCxJsg#o~QCZn?SM)#yKv0roHz`JR=K<@-)~^Um*iPAh#e zm!0OQX`6dQo0j*uYwFl{x4pp}unh^PvzbUV?W;QTlUCQRewAh{k^^^YxpNtKX=IgA zj(wbCYJeO}%ZYi43l6K5yY6hBE#!7&_OlCKI^+eK&q+VzBS4OZM7z8)ec3(d?Rp0g z(gVoaomxp6$A&Yhz=#P?b-Hrm5p98k$P)?9Wj{IEbW9pY&T%#M#cQ8V!Wyeodnx2=!oa z@CYC@E^PV!lNV3^ymm{5u-ulQwlo47UozlUfZUb<=V(CYjtiUuab8Lr}rG$E4o#L^;pRyKTq(Kh}R&2j05) zGQ(wnG)0bc5B+fBl6vEhF(9RYknUtIIqt&1oeiEdAXR{n9u%E@&w(E8pZwK;+$zht zY4q7owR-9JPYuX}vYbtQemMT(y4N-}AkP8P2-FrVJbChE=^o!2khK!hB75kghn~}_ zz<|692=R8v>I)+mjw!j+fP4vgPNyMT){5y7i@6e0`_w@%3*#q=ohi?K%i2H42KR+Sb=k;HQPx#M@ zplL@`gD0g=v3=Uk+urMQuECr8eNQEUY%~MjE}WA(%j~g|e0SJ{-``rD{Y&`D=>=V*BxEB!WCC!>|ykYsf7ky|z9D0e= zokg;oi8ufD&VnCXiv1y6)0Y7u8LYW(;I72Zl_Nn-)@MB+WGP;Jc6skRrXMxNC})R+ z+!3Gs;r`u!oCt{Qjo$-8Tz6|ZaLne$r;~3fsU47zHXqb_@!lV|kRLC3vwx38`w~dq zMS{177o^6me5`dNDhJ&Z4dmW`jt0&N;9$Y$U)1Rsyu#EQ-M{nTe#@JCo4Vh}<$mjy zd(Zj^T$6<@EpAl2;frxti5!Vf=}-f?*R&?(bbDIZs?5s9tFBnTo%BG?3LNhRWephw z9BR`RN8LU0h%wXJ14p*$m4MKA`bU!kXP2W*0M}pN-nmnq>1PfHMCx?_pOuQE=YRO? z%+QL5KK~vNanXaXe6jHT@4c({tM4rzek>qTq8UKif?C~^W*>3U*T;7?sNDkyjadap z9Qf?=)*oPZpjOTjKqv+|Z{>TfK1p7@#DJ^^ggm=DzIb5PqI=1|)^KWaQ}IPhM9=Cu zvi3{w{pT?1r?RF4k8u2QMhCC&V+;ee&b7U! zXF`|hpF70;Ch3|;)O}=H@|@WD`_-g|$-f^@4K*ZskoUH-|5g)yt4S-^<)-x?cQ5UK zp_i}>{=4=0@3zl>R|f7i&9&E!YMr-KSXTEtnYSYcS^xVld2``yivm@KCjJ5ljm~Y4 zsdM|T8>dVLM2;ATEfXW)lN+};Kg2h|XW%&c%G^HgJ-8+#x_f>8w>WUOJ3-g`q8+(r z8}G<9{0&5nA?t={g+be(FtiA6-T3&Qh-@146QHoekXf zO5)dl8IUVq6wxAozrJ0M{cz}g2E?7(|9g#hx7Y6TpGQ^*&tctHzwG?s)`w}wjr4o% z)ZE8YZCtS9Xpovn$6c%3?@HdVQs~aryNAyD>WUNZHd@Yobp8T3Wd}4A`pN)e7bsYc{xh2J>L*jrJM8 zdn>r>XmXY4r-jQ-ynAu&1qYY|zCG6-zlOEsofhspq8wN9`G#711VhvK-@yS%^oXZ6 zZ91pUT(Th?qV3=iTW8(rhzQOrV)k*_Egw96{P2rtg}q4lqxM@U)Muck1C?Sm_VZ>3 zbx#(pmlS&4hUE|sL1dlU)IDnWGk7BlYl;@h{^Jnakhcb5UqH@RXi1{@pHnQL8)9|^ zPT!~1`l-Wr5u_Evj;J64fWBE@Y~9gf)~k0ls`cy|5n1{jzcgp6y=CmA*?kJm5?Vzy z9lBP`cK1Fp?WhkvI5b(i*7-Dx-Id0bk$GtudUx$@*+W*qmVP(rXd>vMn z;}9)U*7Tsh4l6lu@K7YgU7`;DjyDdpYUJxe51zm5j;Hq~QnXW6>dqKIsMTjYbY<&! z(@VupSze7D2MF2geoy)5ZoTNdX|&fJ1wqf8Vq7BRT$A{YLnKSeIu^q9KPa!=dnZ2s z%txt*S$o;@-t&gAJI`(ZZp)*!?wJFKlz~GeOSY-QC?jRy5Mh$k+#wF5vnj>AYRqf!oEKae<%BQ5IcIMUKOEg%jft)%8Y(#lUY`--;C-0{o1=bwUB zkS%xmMiJv`(W8Ft&h@HkT%Zrzqnv(#G$O6~w8v{N&HaqdeNZ`Fa8t2_Oq}`Lh7%gL z}No7$5Z3}cnFAPFz=K} zXPm5M%s>m zP!x23<8b+3MH{I%(s+v7@!WUh{&vM7T-C0_#c%!Y=~S>?B#v8)qS1C@Usk(*(6CfI z5FNtaS>q0{9sF1;yi=QhmbpICDAfPsQ}9l{&Vur*r z_Sg7pKRoS;*b#K_nEwPL+H-Q z>+w$dGN;pwGyZeuZ*xAB`MXrsnZ4+Qhi?BI?_^tN9(`$H-B!DYoj+c*?#_?iI7PVi^;xA^tX_g-!`Qo>6!=TB?1=HBZ|C4A(+_q;H)-Df|nyjzrCz44hpuCMx{ z(`$Hd4E*u25Bh#mTF@YO*UtxlQ!hMf)Zpf)-+TVQGwC4LfAxVT3sQH@YC`p=w4-)B z+I?T^u`4n--<84{h!O9$nS5Ev#lP)eFUFH8T{~^4Rn_pXOxhpE@d@9Q;hjqwzqw;% zpAAAjcQ0$bxY^B%Pq{?CSHHOI^uZgx+d2&IRKJ1e4tqPbrrXRC3GaG%w?`gX*stAK z317Uu@|Zq-TdkXfcamqc?W|@KUnzfN2Huax`|O)nFL-lF$G0ECJFTog_3wQTE*f>_ z>ScIuiuVm)?p!mz^v<`|{<#o({I|C}v**9>^9Olsk$XVzgk z)bF0{3U$-9t)oTTuyZ64O#72KpydxFBfS&B3=Xqp+E<2)%Ww@~+E16fqe13-`dy zP4e@oLUd%~aRyVaNZRzmGJvwB=n@kTKHX597?9Nbv=6B;{|ZIYR$@2^!AIB>6wI~M z36O_{xsbOoc?Ja({`J$4+l9r(@8~t?8(|NT^fu=M8Om-@@jx`IBk;_xeqOll$ZUun z9>aOA4F3^ITY{sL=xeF+5WbM&Q3x8WBoYn@iO>^~rZF8dfn>#fHh4%z1Ch8tQ9QO@`OrTStCyBhc*Md%(s%YazBF?9mA>aMvKORJ%u(KiR zuk{%_93_wo;;ksUyg*HV_LGivQecWnAkf4Ea0p9Tn%*d)K>gL|+a3}X(^z1N2d<&Y z4AG<*81%#SQssA3NYHQtp=(fUqV5<=$k@j*poIK%To3_zs@Ul} z<*G?(Qp<(X+KaJ(4f;7k(EEmmrfS{Et!tueRTh*_jt_KJFVIh&DHFk+&+d+uJu}L( zC+26JtZJii>~14mMH+Xs_%R93 z$(|0xp&&54I1Q5v$`)e+6pjO$zo63wl0`y1Gcf^c)`%<-J6$QNn$R@Y-%i*J1$DKN z&k><$3_D$sUK4&zEomof0@j2!G&D!I>_yn~9ArrrmABBhKn{{>P7kxt&4C$|jmFZ7 zrYmM6ah{Ocfzd#5*wlSA92nTBslRE-m1PlJu;bLPqXEpW;jrt5$0$n7-!rkOA9wq+ zpO$~mD>I{61YoBM8631O2W@=Y3$f=hq@7ny?9#IoVh7idJ~x^pX@=C0Dr<-%Rfg1% zs!1swX`A4AmB51&DDf{GQJf!CIl2@eh^65IkluJZ#pV&vR0t;dj48n}FONjeBTA)< zT<~39?_!;%E`&~#crnM&XEd0Xsg+;jf$()Y9L`sH?WXV-5KV9J;VIOCdYHJPD4Eg! z^--OIdS!X_7%K{~s=EV|(-b!xC^uz;lH?KMaYnEfXrhE( zNsD{dhEJBI5XOz;Yd!8E&&mj*vLGu~@tFOC=m%N}R=%`Uj!vj%xK=rVkTn4`XwKo? zGi47zU>Nwui&4Hwn#km&zDV{ElM4n_+o3Cf77LOm#%>u9TTetI@p62J7XgxhY1B9R z6cH*(Br@?t#x(p};WTf=eFtT!M7Gqin-h^t0HJm_PT&XN+%TAM&yXfIq0C^l24X_- zW&$2kvu1=+tD|u4Ov_q%7ANy?NvdJTy(9?NvlLqApt>l{i;FT@+SsEcOTPb6iJI1V z6sBcCIqD(XO?J7xz@xm}tXx0UNNMf(MBT90S~ul(&q>cMEC;OBJtx^B{~Va;g4WWl z>h5KKyzuO`veIQiDV0071gX;w$%bNScVHAqe5nyXiK>bW@#-c1TsLg!}TAR(@f^@E^i@Wc>XE|#_MTquSxxx^Vx z2Lo8NC6UsaZ@3hz#2$_9lpRGmCBt9Et}Mmq9^@kgpdcQ2XjOR?(g`5H5b;UiS`%2P zs&Y;1&`f|=u4z@8xn>TeCrL}-xX`gITkI!zsb#4g7mwpg)FiHftTvX)^_hZ)9366l z4~JBih^jUwRy8VgF@kK9SG34L`7I%GxaFewAPw~1SZ^pm{-eSya#PF zb4HbzSIm_(_e!r4uRt@jlLt|e0p!F3%SP2B4LvfI0TPbse!81d3|U|;&AVT;PUOcY zNcrLdeIYuU2y#3PyJ$F|#UU}T*}pX-n6M_~rEg*lTq_zhtOiPDgdby;1+J^dcQf)7sK}fnO_7+Fb7AO%Au~5ok~mbudns266vP9XlN!L=T$tnl zMAI9O3|t~_XH6xF6Pb2nyeukA7V?0Kc<>_;$k2;w2tx%seRlGaSZXtZ=D7f5NK6iOx{@eFnw@dtzLnXuO{H<6+ynGB*Z zr81+#o5T)Ce2f=iq<94w$h4<+rOUXyv>jkHDCOd)s>*;{3L!*uq39FpPA&KY zs(A1t8cf^TphU#3+}Z7^h9VCrhzAUOM8dll=n@2){>(0o3bPt(-6TwZd-=phRPQ%( zsnkQnG6x9ACx{6fMY-R=EbyvgED_2^F7*`elvep^+)&v?;V?Q$8*62|YYevwrCSVpSmpZUT zI~Xp>M*Su5zn~&aoo4Gvd`dJ%77d%P(;1JV^gJjOr$*HXORuNV=UAo!P#mWH>SDvU*RbV=f)d<7tjH<_;GO2!Km$73Bk-jA z0i_P4u&X|j_F8^3^H6G#CV4E4Un+}v{p+fX*I3je?!(SOl#o=b*>qxgakvd zh1lL(oJe@BEg6}>gYklHCFjKfTU7%;F@2V zfXdoA*Bq3b0o)*}g;*zj07a){Xnh{qXl*PaWlhPerVd&FN)D+soGa%jj3?Afqaxl= zBXy5tY#ara9Y~{Kq@YIXX=*YX$LEuInB(k5KY7Q$YBjgCitB^Y7%l0U~v{aA;lu*KUv%aZS6Ff9(F^Wyv#g&zEL zWDOH&obF2pqW&zbk{{~W!2v{%hB1yKg0S%d*62!o z^o7c@K&G-3`<0^}RE$g{8XbcdhXj>yaU>L_i2(Hw+DGk0&6b&{+7j7&QF(8fR8ePO z(+`}*ypBMbB?r_TSsHcnsDZ6PKu2pE(U(~7)jK|RC?JaHx%&W27*DBi)Av*NK;ps4z9iV*`saE*-(`E z)lXkxVcihlAH-D)!Dtpcg0Ux`HpQk_wlz4E3L~v&q0m7b zA9TZJg|c=uGI{VCGi?=CDTj$7s%3gZqpGzuhdqNrBrO;gs-fsNIu%pJ&7@4pOiy)& zP^Ty4Y9=L8^6EA^71>&5GBSy|QS}_1j?@A(9hr1c{7B_8k&!9jM(yyAsU+pVUz90# zukeIa9EtW&DpM{HFuh^yQ=9%Vl>sg`zz!7~KT)Ee&r6aIfa^)HI+2OQ!r@>j9q^|k zrE((dy^80M8$~&!vR|f*?6|W9s_sBRT%qU==7*$WvPNu6ltYvln#eH&I{RlGF{X5D zhrh7FxKbh#RD0j%Y#?KPr6%nRU%-2~)7Juktv{mz($;$Dl0F>B!3+enVXZTiiEEJ$ zy5>CrUwg!g27U6#n{&N<(`@Ut z4+_?wS(Ea1e=KE!jO88NOJV5T3pmvhca@Ff_{h8#XZBj0!xLOyd{Q#2lh0x4`G#X=(%GK&Mja<95NWT#p?B(qUb z^>D$YUUc2CyEI5G zvZYa4*u)1aX{QChc-j&@KZ?+wNe}4Tq28jbOr$~-nggcx2+^tcRU6C#(|AG12&+4a zGW8k*ReweoApgdj+gK!y1vPQvQ9goOwO2%6`$l2(gY77?dz7Tx;dEV;mIawEeRl-(4VT8D*aAn(NC z6>`6{WyOgQE}tSdA%&R~2EB|QyO^}wsI(-SHUzOG5yAQ+E_e)NvZ=7R1p$FvdHR4( zuwzL(5Eb2+w@=D#0=(@CcQuMVv$#5scWB^Fwz6=D*PXFRQ=EOks#sOEAK#M4Dn1T* zO3uI>wtHhh#7ay$oI$2cf>=tF&?fmbHl|@)mxoT#z1I*0{XlwZ%V(krG}9Z)Ue$q# zGe6(TCZB+XZqMcnS2slhyu5)Ufw8c1p~J`oMvNC85erq`EawkV*OpIUq?3BgG4V*K z2FJW>MKyL(D`7@N{X}~-daOqqS=*JcEe#FU)tsC4gee$m1N@Ha5Oo@pK}N*+ANZ^4 zz_?jUfoOhZj#av1>IgtLy+LN`RZ#8gra;vmsh;>xHBiLJr(mrh-Bh(HHJj|pKr_8@ z%QAK*Vch-Y(aPp*AZ309=W;i#) zz>zeW9wnHpAEAl!Tzs1c)kif~(TynK#%U#-7SIV(#V6exkxGzRlTW}>_Ymvt5&X?v zg*=Rqu-fh6aRe0rQ`#fAqTK}EG9OFUVr&|oB&LX*ISp;1D^}w1u-8JNIU7irUs;H3 zA!!Qcr;UkW?DtQlF#OP7W6VJ@55-liB3zF5G{!iu^#f~06lYC9fq879v=j{*mUnJK z;ZTS(TA2iPTGB35T%PAOT{h(cP174oK_!05&ts~@<>$OGb%_E~e+H&HnyfbpF!g6H zlcy3OhItZQl?7(_fFFhfzrI~G8jhEG-mu}28wEL}qDUEomgQkPcR(*xN`@IQ`!62$ zzzxNat&JL2Th-s~5)m@b5fjr=+4Ir_TT%Mq{HpQ7Ni-Td}+pq|7+IIyjs=ltdjstzB};MGRVf0ktF#M;(^OlXg`XxlENitxbkZ^CJ@(Q!4uzs(GPl;sq+EHqo|)L|lnI53SDFpt0#bKkQ^8?ucBZMwH9q-DF5y#Cn3`kAwV ztoap8kyd&4$l_{TyGHV$UyjwOFf6lKU|QZGOSLylC*6`fv6oN4D%7G+rHM=gJ5s$4 z1IEKzCKPYHK#+1jm501c2ateldShFts(bFKp00WL^7=6-l&3!<-lpC@hNCiPAm?%=e=B+Oo)d^Y62Ot0B`7e#a~FIvBiy;jd&Mvk4u`vRDgw5AqHz?~-`lY0l&Ms$ z6kw`{&)il4f!riiS`Oqa1l-UAHx1X;l|{TxW7zV7vMr4}zN&J`Y>d~?@MB^Hp{+!T z?3f;%4v{b;AF*J5hlFSi%v-iDwgI$UAfPH2A3XR06xxmw(xfxZ>ZrE+08ZVHP+8@!4KT!2& z;fttxyd0}sR^OEdL!vt_T;P%ouC&Z!a+a-Fbb3o)D1gPpsd(WDjMWZ?n=^O_U!s|F zLm=i?($!8d6X*gmGm(?=C7D9;Rdpeh3&c4XO9n&Lt?b1C+f+EWR-QzRz#AsZD!q~g zYYR#iX~=Ugt}rMcEw{2Ymvqdra+yToceTKBg7oTDTuI$5X!7t?^F0SXA!#$)Py!n3 zz0IH`V^UgBF};x{b+c#^EKJ-x6e(%SjG!l0Jwv?f4i>Ik`%08I$As!6Yz z91AvQy~}Xg2#t|V#l5)69dq;zuwGIr2?a?M_yM=-+0__)yN7~Ez|kJb)ygNVA^mk= z8YY_tXqCl=J3@{f{qT^aiW8f^n4%8yMagLadH&_WRmBhD{n2u&1^ohpHprlF(Ut-D zE7e$N)^AbZih4-jnh`Xu38=1GuoTI~DmkqNX^%Yqs;VK^fQ0ug*R?^zDVgJI1c62-7Wb*%<>Lq=&TAPE|Td(LmnbFGUlzFw?!GgpwQS+*}9L2Ts&z8%QK+G|nJE|(qZr@}~yAo6u5F-kQc~G?W$X;ol9;Q>F z9mFB-JcK|~Y|}+j;2|f4E3Q&qeJ8kfPZj8Bk2tA-Lk_~1m7+CZaxEuNiZ5)I($!GB z=p6HB@T*^ z!_{&|ZLx31e)AlZ1Q(a(-F2nlEH~U4C0LS4m(^}dt}xI89q-sP3USK;8zkeQw24`M z$(nx>!SZlQPvkdB$AMQm;HClOtB1USL~H<6zs#yPrSTBXPcXCep=3&=Z1N;McHKao zf>9g;qX>Q=%dtm%;ef7vDxi#kD#XrG$sj#rE*DKy(^D)PB?ghnwBK2J-2_ipr||(b z+~n+jtEM@dQY}@xVhimyA>M{B?L-Z0Aul8VwnNE*?;%JeJ{slMIw|C<#BvFE8Km z$WNT4%K{xyiuMRR^;UskHcGQyl8JcA3k!j_FvVr~moZctiIWt_kH2U)xh+6Z8=hL0 zkm8%9%vz@^%i1Std!{OoD~=hVDDfcTtjfM`oTvk)@xq#^(r>$YCmQrkS**N z>zZ87qsz%XBxlM6f~L2;xWWu5mdr#s(kCBT*;Nv!P$i0^A8sLz=Eh)S)GK7BT%cfj zL)AOLoAnNXSjS8duqNcC%=8UH`Ysdy=7m9ph%sB1C|* zfu~;9HAn)h?hddsT;kzZm_KuB4A2j_qqjGI~v zV|kQ_Pm&@6h}kdvZuDb1ct>uy@nLs*^XMxjY3^U-LurrPS5zuaNYfA%Zbtg0F6lj>*{fT%q} zByt21enBRgReYEN(V=uYOy0A6Vh5(HO3$1FPM|`*o+SvC*I;f6Wr2o>X@QZ>!iVsX z9$#mL+pK8+2oJ$x%0cT*SzJ%j)vsNV;z7gW1fY1!JJxQBl&cnjsz`$Ll7GQBW=w2) zOR&{5QHj-KSTpPe@#O>f*&RsII;sKmJ# z!W2)auUr}TDl;5|x)BmTKoL3#*?ZtPRuLo|(;-7?*Tk15F!Ra;=)Ai8Oqb^f=!SyA z+(6u4R3oH&^MSIpJ)w?r9xF`3L44JO_93Z^keL(n0;*mrVqKX?JS)_TZkvx{Ql3a5 z*cnZf`a}3wjEIzr_VZ}9+;5k3f^lHo_P{ZUfLx3h)-07ix-$-1?m+0e)LIdfr7xgh zaR(o+TG)k3ATsT%c%rgPAr>q|G}zl7XP*mCND2i*Nm;u{6WSX7ec9mKPk@ z()i0zDy?KJ9h;U!c(}!33OXl=@i>jozh?3{r)A1U${In~~nQ6R95m%J_^G~$g^ zvVI#F>!r$i;nE-8eT^T^ud*>hb7+eT$}(PH>(#p$gpO$K4SZ`tUghVg5D~E|6}xNP zhP^Y1L0?~t(*SaGsFv=#v5Wkm@QDOP2}^A1?kyP zu>Ne!Tj;`s06Cam(Jp)himsGl3S#S#ZgxDRZjfd~tsGQY9Uj%C0aX1N1{T`}RFiP) zzOsC-h~he!jT#EIrLm%@$|fuaLgplEje&t@En&i;vMBktSuJ%YE=<%mjEcS`!E^1}hZ+is|{TX_Kt9DeTKc1$+ zFH8%5+9SImsv#g67)Pr@^aGQPex+(V%Onn%mUk41P^(ISIUWj#lN46@_a2)@QmAZu^1 zk!o9DFbZVjB`^C*`*!3|0A$k}?3;Ra6AM)VnZEN$(|^+&`>(v$nrG24s$k+$OTsOl zDct7e?_89dg4Jdt5yAgTM0#uqmP~X;yf|&9rKMQ1;Uk;bDt}>tR-kw{NQ-x%STi`# zh((g=&PDi8nQRGxnM?-liTE~dup+mNbYZs+RT?tJjMCy!BU$%CNTnO5?(`f3Dm*1BfY3JV;l6&4&MHBF`_ zT3XUUQZm}hM9WA#NNTz|n270V2T4olC2O0BnkltL^rTALD9ZF2(Ug71MpLHOh^E#{ zZA3Ldji~1K58Y}Uv_9*YHU?2fjd-*4GeN$FTv_^3?RP||6ygALKwJ2 zlwuyVS=PAC(@%Q>%uuY0WpQ(D!Y>j%1{-`fl{F$%Z94pC^T>muSYTO!dLUE z>ArC|>mX!$<0j!41}+5RZ=s7^bk=}B7Op<4m75g>vRbPJ}6?Pqc8ZN*sMhfM4&_ zx|yZkjF|;pz=cIY{^lhv62%lIfo)2LahFf2a2c*ZL)cO?4%&_GV(nQJ<{@bXCTg$9 z!Dc`eKd>+hnwEDz0va-4YU;0$2MNc6b$e!RE3-sdyqHPLF~fwxSDHqs`%=$~VaXM1 z6Q-(a%M>9~nkHHgo*Z(!h>(`eRnbKgHJu+TIX&6vV;9}a7u3bxVCaNS0}_%wzX{@sL!3Jdo=ndeAOhI05J#tVD;u2@SB<2pm%32% zLXL%8kSO4u_Buo1iRW20(BY`Jk-h?(ZY=rWw1jH4%bwg zQZCPIH!C7(&+~+~yeQL_#>J?#Tyh|h(e4H%ycmM>kcNeXfld}qbpeRE{=gKUQyDY)rZx7G-j4Ap3)*5HkL(8a&eTRT+NTE1!vA z%)kH~FQv1|T8f9n?U}*3J<*t(&`B}$HC*MaQTNlgDvBJ^qqx2z=(R@fiUS^8VR_B8 z9k7{8XTl81tEX8d4Qkc|V^(c2kP748Yuf*cU9G$!7*+sZ#ln{<@I}B>1bY&ZfFq@m z7(bPTtFYk4ZywDC6jMg5MTS11aMLDlZ2Ch)35akNTUl2@&d8 z+&#OZG#= z2B2xrRT1>HqxI_xz_n_C}8FUOY*WC zIv8c%a=`7UG8mrQ8&C#scaggtSbe!EWaVVKM{8I!f}TbS8lj%V^tSB8AZ)QG1G~ns z;fx)4`gWk)&#GON+H>pAhO#mW`$5Ect|4lX^v~H*H+@ zmqp6M6fOobO=`%PiRl(@v%;o6o@I6HB7VAh)E`G$gS7vVfBo1qDGh2gkx1jBxp;;5 zrdD${P%*zk%jAKbk-SjHyiiI9%zQG5azvax_|o%$s{YL0v}&os6w2gi4vn*znUFHO zf!Li=bqEtOe~Hub&N_XtoH=ns;#av+D7hrUrzGVQ-5w~K-$SAma`Q0%f?svt5IN;_ z7GT!$4x?~TVP#_qsRg&K)wjdB1eGlC0gG%YnK|(QrBesLU{hUJZS#q)6ywAlN~E8> z%EJl5a@vi~zcd2K00eF0#&ID2Qf>vGNATl1v(juT8w<$y3_>$l^z&N5%E^gxa#CPb z)Lv3<`34!CCDc{@5fXEqK*RisUZ&PL%X$q6Sl*3KNqgwIX~HE}c0k6SNNYh-ETSi~ z&*OOz#?<4Tby!PfdvXxgKwnz{r=~*mWJq3q^xC7|mRjh9WUcb*OR0!hlbB|hPoq1!2N$}EHH7szu9R^mDlkxI`d2o}tA2%b$4abiygidPd{ zd?gEqgD`+ZtMz<(vdHR4h3@XcbpWKI$mO9cl7FhGtO+bAIUcl}7Q{EYGUS+=XV~)I zo8B3WZ8*AA%9Fm19dh0aa^8z_-aCs$1qwZ3Qv&!zz>6;hhy}{!Rmc@xDU_3>`Uer$ z31f{N*Q{3t#pMF@P#N%CtG#(-G8aK5hMsm46EaPfKd2YM+ zm{bIzgUWC;3ZIxp8e9d6@0OH$3EB+@Wm#zOz{lL1i_u~)I8JF!7F?oqbWSWK~WVWa8;bpz9P8Au54(9|3^+$pA8NYtryVwn3 Ty8oRM=sc&4>-+vc{r7(W=Y;Y= diff --git a/api/package.json b/api/package.json index b67ae62f..86c8c276 100644 --- a/api/package.json +++ b/api/package.json @@ -8,15 +8,17 @@ "license": "MIT", "dependencies": { "@code-hike/mdx": "0.7.2", + "@docs.page/cli": "workspace:*", "@mdx-js/mdx": "2.2.1", "@octokit/graphql": "5.0.0", - "@types/cors": "^2.8.12", + "@octokit/webhooks": "^13.2.7", + "@shikijs/transformers": "1.12.1", + "@shikijs/twoslash": "^1.12.1", "@types/express": "^4.17.13", "@types/morgan": "^1.9.3", "@types/node": "^18.0.0", "a2a": "^0.2.0", "camelcase": "7.0.0", - "cors": "2.8.5", "dotenv": "16.0.1", "esbuild": "0.14.47", "express": "4.18.1", @@ -26,11 +28,12 @@ "hast-util-parse-selector": "3.1.0", "is-badge": "^2.1.0", "js-yaml": "4.1.0", + "jszip": "^3.10.1", + "lodash.get": "^4.4.2", "mdx-bundler": "9.0.1", "morgan": "1.10.0", "node-fetch": "3.2.6", - "pm2": "5.3.0", - "probot": "12.2.8", + "octokit": "^4.0.2", "rehype-accessible-emojis": "0.3.2", "rehype-katex": "6.0.2", "rehype-slug": "5.0.1", @@ -38,9 +41,10 @@ "remark-gfm": "3.0.1", "remark-math": "5.1.1", "remark-parse": "10.0.1", - "shiki": "1.1.7", + "shiki": "1.12.1", "unist-util-visit": "4.1.0", "zod": "3.22.4", + "zod-to-json-schema": "^3.23.1", "zod-validation-error": "0.2.2" }, "scripts": { @@ -49,9 +53,11 @@ }, "devDependencies": { "@octokit/webhooks-types": "^6.2.4", + "@types/bun": "^1.1.6", "@types/js-yaml": "^4.0.5", + "@types/lodash.get": "^4.4.9", "rollup": "3.9.1", "ts-node": "^10.8.1", - "typescript": "4.7.4" + "typescript": "5.5.3" } } diff --git a/api/src/app.ts b/api/src/app.ts index bc922732..6db633dd 100644 --- a/api/src/app.ts +++ b/api/src/app.ts @@ -1,35 +1,32 @@ -import express, { Router, text } from 'express'; -import morgan from 'morgan'; -import cors from 'cors'; -import { config } from 'dotenv'; +import express, { Router, text } from "express"; +import morgan from "morgan"; -import bundle from './routes/bundle'; -import preview from './routes/preview'; -import mdx from './routes/mdx'; -import probot from './probot'; -import { notFound } from './res'; +import { notFound } from "./res"; +import bundle from "./routes/bundle"; +import preview from "./routes/preview"; +import schema from "./routes/schema"; +import githubWebhook from "./routes/webhooks.github"; -config(); +import { ENV } from "./env"; -const PORT = process.env.PORT || 8080; +const PORT = ENV.PORT; const app = express(); app.use(text()); -app.use(cors()); -app.use(morgan('dev')); +app.use(morgan("dev")); app.use(express.json()); app.use( express.urlencoded({ extended: true, }), ); -app.use(probot); const router = Router(); -router.get('/status', (_, res) => res.status(200).send('OK')); -router.post('/preview', preview); -router.get('/bundle', bundle); -router.post('/mdx', mdx); -router.all('*', (_, res) => notFound(res)); +router.get("/status", (_, res) => res.status(200).send("OK")); +router.get("/schema.json", schema); +router.post("/preview", preview); +router.get("/bundle", bundle); +router.post("/webhooks/github", githubWebhook); +router.all("*", (_, res) => notFound(res)); app.use(router); app.listen(PORT, () => { diff --git a/api/src/bundler/error.ts b/api/src/bundler/error.ts new file mode 100644 index 00000000..98423ec8 --- /dev/null +++ b/api/src/bundler/error.ts @@ -0,0 +1,23 @@ +export class BundlerError extends Error { + code: number; + name: string; + source?: string; + + constructor({ + code, + name, + message, + source, + }: { + code: number; + name: string; + message: string; + source?: string; + }) { + super(message); + this.code = code; + this.name = name; + this.message = message; + this.source = source; + } +} diff --git a/api/src/bundler/index.ts b/api/src/bundler/index.ts index 02b14c6e..a428c4e3 100644 --- a/api/src/bundler/index.ts +++ b/api/src/bundler/index.ts @@ -1,52 +1,60 @@ -import parseConfig, { Config, defaultConfig } from '../utils/config'; -import { getGitHubContents, getPullRequestMetadata } from '../utils/github'; -import { bundle } from './mdx'; -import { escapeHtml } from '../utils/sanitize'; - -export class BundlerError extends Error { - code: number; - links?: { title: string; url: string }[]; - - constructor({ - code, - name, - message, - cause, - links, - }: { - code: number; - name: string; - message: string; - cause?: string; - links?: { title: string; url: string }[]; - }) { - super(message); - this.code = code; - this.name = name; - this.message = message; - this.cause = cause; - this.links = links; - } -} +import { type Config, defaultConfig, parseConfig } from "../config"; +import { getGitHubContents, getPullRequestMetadata } from "../utils/github"; +import { escapeHtml } from "../utils/sanitize"; +import { replaceMoustacheVariables } from "../utils/variables"; +import { BundlerError } from "./error"; +import { parseMdx } from "./mdx"; +import type { HeadingNode } from "./plugins/rehype-headings"; export const ERROR_CODES = { - REPO_NOT_FOUND: 'REPO_NOT_FOUND', - FILE_NOT_FOUND: 'FILE_NOT_FOUND', - BUNDLE_ERROR: 'BUNDLE_ERROR', + CONFIG_NOT_FOUND: "CONFIG_NOT_FOUND", + REPO_NOT_FOUND: "REPO_NOT_FOUND", + FILE_NOT_FOUND: "FILE_NOT_FOUND", + BUNDLE_ERROR: "BUNDLE_ERROR", } as const; +export type ErrorCodes = (typeof ERROR_CODES)[keyof typeof ERROR_CODES]; + type Source = { - type: 'PR' | 'commit' | 'branch'; + type: "PR" | "commit" | "branch"; owner: string; repository: string; ref?: string; }; -class Bundler { +export type BundlerOutput = { + source: Source; + ref: string; + stars: number; + forks: number; + private: boolean; + baseBranch: string; + path: string; + config: Config; + markdown: string; + headings: HeadingNode[]; + frontmatter: Record; + code: string; +}; + +type CreateBundlerParams = { + // The owner of the repository to bundle. + owner: string; + // The repository to bundle. + repository: string; + // The path to file in the repository to bundle. + path: string; + // An optional ref to use for the content. + ref?: string; + // A list of components which are supported for bundling. + components?: Array; +}; + +export class Bundler { readonly #owner: string; readonly #repository: string; readonly #path: string; - #notices: Array = []; + readonly #components: Array; #ref: string | undefined; #source?: Source; #config?: Config; @@ -57,6 +65,7 @@ class Bundler { this.#repository = params.repository; this.#path = params.path; this.#ref = params.ref; + this.#components = params.components || []; } /** @@ -68,10 +77,14 @@ class Bundler { if (this.#ref) { // If the ref is a PR if (/^[0-9]*$/.test(this.#ref)) { - const pullRequest = await getPullRequestMetadata(this.#owner, this.#repository, this.#ref); + const pullRequest = await getPullRequestMetadata( + this.#owner, + this.#repository, + this.#ref, + ); if (pullRequest) { return { - type: 'PR', + type: "PR", ...pullRequest, }; } @@ -80,7 +93,7 @@ class Bundler { // If the ref is a commit hash if (/^[a-fA-F0-9]{40}$/.test(this.#ref)) { return { - type: 'commit', + type: "commit", owner: this.#owner, repository: this.#repository, ref: this.#ref, @@ -89,7 +102,7 @@ class Bundler { } return { - type: 'branch', + type: "branch", owner: this.#owner, repository: this.#repository, ref: this.#ref, @@ -99,7 +112,7 @@ class Bundler { /** * Builds the payload with the MDX bundle. */ - build = async () => { + async build(): Promise { // Get the real source of the request this.#source = await this.getSource(); @@ -117,7 +130,21 @@ class Bundler { throw new BundlerError({ code: 404, name: ERROR_CODES.REPO_NOT_FOUND, - message: `The repository ${this.#source.owner}/${this.#source.repository} was not found.`, + message: `The repository ${this.#source.owner}/${ + this.#source.repository + } was not found.`, + }); + } + + if (!metadata.config.configJson && !metadata.config.configYaml) { + throw new BundlerError({ + code: 404, + name: ERROR_CODES.CONFIG_NOT_FOUND, + message: + "No configuration file was found in the repository. To get started, create a docs.json file at the root of your repository.", + source: `https://github.com/${this.#source.owner}/${ + this.#source.repository + }`, }); } @@ -125,17 +152,12 @@ class Bundler { throw new BundlerError({ code: 404, name: ERROR_CODES.FILE_NOT_FOUND, - message: `The file "/docs/${this.#path}.mdx" or "/docs/${ + message: `No file was found in the repository matching this path. Ensure a file exists at /docs/${ this.#path - }/index.mdx" in repository /${ - this.#source.owner + '/' + this.#source.repository - } was not found.`, - links: [ - { - title: 'Repository link', - url: `https://github.com/${this.#source.owner}/${this.#source.repository}`, - }, - ], + }.mdx or /docs/${this.#path}/index.mdx.`, + source: `https://github.com/${this.#source.owner}/${ + this.#source.repository + }`, }); } @@ -154,59 +176,41 @@ class Bundler { yaml: metadata.config.configYaml, }); } catch { - this.#notices.push( - 'The configuration file is invalid, falling back to the default configuration.', - ); this.#config = defaultConfig; } try { // Bundle the markdown file via MDX. - const mdx = await bundle(this.#markdown, { - headerDepth: this.#config.headerDepth, + const mdx = await parseMdx(this.#markdown, { + headerDepth: this.#config.content?.headerDepth ?? 3, + components: this.#components, }); return { source: this.#source, ref: this.#ref, + stars: metadata.stars, + forks: metadata.forks, + private: metadata.isPrivate, baseBranch: metadata.baseBranch, - notices: this.#notices, path: this.#path, config: this.#config, markdown: this.#markdown, headings: mdx.headings, frontmatter: mdx.frontmatter, - code: mdx.code, + code: replaceMoustacheVariables(this.#config.variables ?? {}, mdx.code), }; } catch (e) { console.error(e); // @ts-ignore - const message = escapeHtml(e?.message || ''); throw new BundlerError({ code: 500, name: ERROR_CODES.BUNDLE_ERROR, message: `Something went wrong while bundling the file /${metadata.path}.mdx. Are you sure the MDX is valid?`, - cause: message, - links: [ - { - title: `/${metadata.path}.mdx on GitHub`, - url: `https://github.com/${this.#source.owner}/${this.#source.repository}/blob/${ - this.#ref - }/${metadata.path}.mdx`, - }, - ], + source: `https://github.com/${this.#source.owner}/${ + this.#source.repository + }`, }); } - }; -} - -type CreateBundlerParams = { - owner: string; - repository: string; - path: string; - ref?: string; -}; - -export default function bundler(params: CreateBundlerParams) { - return new Bundler(params).build(); + } } diff --git a/api/src/bundler/mdx.ts b/api/src/bundler/mdx.ts index fa5c6de6..4f898d49 100644 --- a/api/src/bundler/mdx.ts +++ b/api/src/bundler/mdx.ts @@ -1,10 +1,10 @@ -import { compile } from '@mdx-js/mdx'; -import { Message } from 'esbuild'; -import frontmatter from 'gray-matter'; -import { getRehypePlugins, getRemarkPlugins } from './plugins/index'; -import rehypeHeadings, { HeadingNode } from './plugins/rehype-headings'; +import { compile } from "@mdx-js/mdx"; +import type { Message } from "esbuild"; +import frontmatter from "gray-matter"; +import { getRehypePlugins, getRemarkPlugins } from "./plugins/index"; +import rehypeHeadings, { type HeadingNode } from "./plugins/rehype-headings"; -type MdxBundlerResponse = { +type MdxResponse = { code: string; frontmatter: Record; errors: Message[]; @@ -22,12 +22,13 @@ export function headerDepthToHeaderList(depth: number): string[] { return list; } -export async function bundle( +export async function parseMdx( rawText: string, options: { headerDepth: number; + components: Array; }, -): Promise { +): Promise { const output = { headings: [] as HeadingNode[], frontmatter: {} as { [key: string]: string }, @@ -40,9 +41,11 @@ export async function bundle( // prevent this error `_jsxDEV is not a function` // enable next line // development: process.env.NODE_ENV === 'production', - format: 'mdx', - outputFormat: 'function-body', - remarkPlugins: getRemarkPlugins(), + format: "mdx", + outputFormat: "function-body", + remarkPlugins: getRemarkPlugins({ + components: options.components, + }), rehypePlugins: [ ...getRehypePlugins(), [ diff --git a/api/src/bundler/plugins/index.ts b/api/src/bundler/plugins/index.ts index 979c69e0..0ade873f 100644 --- a/api/src/bundler/plugins/index.ts +++ b/api/src/bundler/plugins/index.ts @@ -1,26 +1,32 @@ -import type { PluggableList } from '@mdx-js/mdx/lib/core'; +import type { PluggableList } from "@mdx-js/mdx/lib/core"; +import remarkComment from "remark-comment"; // Remark Plugins -import remarkGfm from 'remark-gfm'; -import remarkComment from 'remark-comment'; -import remarkComponentCheck from './remark-component-check'; -import remarkUndeclaredVariables from './remark-undeclared-variables'; +import remarkGfm from "remark-gfm"; +import remarkComponentCheck from "./remark-component-check"; +import remarkUndeclaredVariables from "./remark-undeclared-variables"; // import { remarkCodeHike } from '@code-hike/mdx'; // import { theme as codeHikeTheme } from './codeHikeTheme'; +import { rehypeAccessibleEmojis } from "rehype-accessible-emojis"; // Rehype Plugins -import rehypeSlug from 'rehype-slug'; -import { rehypeAccessibleEmojis } from 'rehype-accessible-emojis'; -import rehypeCodeBlocks from './rehype-code-blocks'; -import rehypeInlineBadges from './rehype-inline-badges'; +import rehypeSlug from "rehype-slug"; +import rehypeCodeBlocks from "./rehype-code-blocks"; +import rehypeInlineBadges from "./rehype-inline-badges"; type PluginOptions = { + components?: Array; codeHike?: boolean; math?: boolean; }; export function getRemarkPlugins(options?: PluginOptions): PluggableList { - const plugins = [remarkComponentCheck, remarkUndeclaredVariables, remarkGfm, remarkComment]; + const plugins = [ + remarkComponentCheck(options?.components ?? []), + remarkUndeclaredVariables, + remarkGfm, + remarkComment, + ]; if (options?.codeHike) { // plugins.push([remarkCodeHike, { theme: codeHikeTheme, lineNumbers: true }]); @@ -30,7 +36,12 @@ export function getRemarkPlugins(options?: PluginOptions): PluggableList { } export function getRehypePlugins(options?: PluginOptions): PluggableList { - const plugins = [rehypeCodeBlocks, rehypeSlug, rehypeInlineBadges, rehypeAccessibleEmojis]; + const plugins = [ + rehypeCodeBlocks, + rehypeSlug, + rehypeInlineBadges, + rehypeAccessibleEmojis, + ]; if (options?.codeHike) { // plugins.push([]); diff --git a/api/src/bundler/plugins/rehype-code-blocks.ts b/api/src/bundler/plugins/rehype-code-blocks.ts index 55648e44..5c2001ce 100644 --- a/api/src/bundler/plugins/rehype-code-blocks.ts +++ b/api/src/bundler/plugins/rehype-code-blocks.ts @@ -1,48 +1,72 @@ -import { visit } from 'unist-util-visit'; -import { Node } from 'unist'; -import { toString } from 'mdast-util-to-string'; -import * as shiki from 'shiki'; -import { Element } from 'hast'; +import { + transformerMetaHighlight, + transformerNotationDiff, + transformerNotationFocus, + transformerNotationHighlight, + transformerRemoveNotationEscape, +} from "@shikijs/transformers"; +import { transformerTwoslash } from "@shikijs/twoslash"; +import type { Element } from "hast"; +import { toString } from "mdast-util-to-string"; +import * as shiki from "shiki"; +import type { Node } from "unist"; +import { visit } from "unist-util-visit"; let highlighter: shiki.Highlighter; const languages: Record = { - '': 'text', - gradle: 'groovy', + "": "text", + gradle: "groovy", }; -shiki.bundledLanguagesInfo.forEach(lang => { + +for (const lang of shiki.bundledLanguagesInfo) { languages[lang.id] = lang.id; for (const alias of lang.aliases || []) { languages[alias] = lang.id; } -}); +} const cssVariablesTheme = shiki.createCssVariablesTheme({ - name: 'css-variables', - variablePrefix: '--shiki-', + name: "css-variables", + variablePrefix: "--shiki-", variableDefaults: {}, fontStyle: true, }); export default function rehypeCodeBlocks(): (ast: Node) => void { function visitor(node: Element, _i: number, parent: Element) { - if (!parent || parent.tagName !== 'pre' || node.tagName !== 'code') { + if (!parent || parent.tagName !== "pre" || node.tagName !== "code") { return; } const raw = toString(node); - const blockLanguage = getLanguage(node) || ''; - const languageActual: string = languages[blockLanguage] || 'text'; + const blockLanguage = getLanguage(node) || ""; + const languageActual: string = languages[blockLanguage] || "text"; if (!parent.properties) parent.properties = {}; - parent.properties['raw'] = raw; // Used to support copy/paste functionality, - parent.properties['language'] = languageActual; - parent.properties['html'] = highlighter.codeToHtml(raw, { + parent.properties.raw = raw; // Used to support copy/paste functionality, + parent.properties.language = languageActual; + + const transformers = [ + transformerNotationDiff(), + transformerNotationHighlight(), + transformerRemoveNotationEscape(), + transformerNotationFocus(), + transformerMetaHighlight(), + ]; + + if (languageActual === "typescript") { + transformers.push(transformerTwoslash()); + } + + parent.properties.html = highlighter.codeToHtml(raw, { lang: languageActual, - theme: 'css-variables', + theme: "css-variables", + transformers, }); - const meta = (node.data?.meta as string) ?? ''; + + const meta = (node.data?.meta as string) ?? ""; const title = extractTitle(meta); - if (title) parent.properties['title'] = title; + if (title) parent.properties.title = title; } return async (ast: Node): Promise => { if (!highlighter) { @@ -51,7 +75,7 @@ export default function rehypeCodeBlocks(): (ast: Node) => void { themes: [cssVariablesTheme], }); } - visit(ast, 'element', visitor); + visit(ast, "element", visitor); }; } @@ -66,7 +90,9 @@ function extractTitle(meta: string): string | null { return null; } - const title = Object.values(match.groups ?? []).find(value => value !== undefined); + const title = Object.values(match.groups ?? []).find( + (value) => value !== undefined, + ); return title || null; } @@ -78,15 +104,15 @@ function getLanguage(node: Element): string | undefined { while (++index < className.length) { value = className[index]; - if (value === 'no-highlight' || value === 'nohighlight') { + if (value === "no-highlight" || value === "nohighlight") { return undefined; } - if (value.slice(0, 5) === 'lang-') { + if (value.slice(0, 5) === "lang-") { return value.slice(5); } - if (value.slice(0, 9) === 'language-') { + if (value.slice(0, 9) === "language-") { return value.slice(9); } } diff --git a/api/src/bundler/plugins/rehype-headings.ts b/api/src/bundler/plugins/rehype-headings.ts index e02e0e08..c12b860c 100644 --- a/api/src/bundler/plugins/rehype-headings.ts +++ b/api/src/bundler/plugins/rehype-headings.ts @@ -1,11 +1,11 @@ -import { visit } from 'unist-util-visit'; -import { hasProperty } from 'hast-util-has-property'; -import { headingRank } from 'hast-util-heading-rank'; -import type { Node } from 'hast-util-heading-rank/lib'; -import { toString } from 'mdast-util-to-string'; -import { parseSelector } from 'hast-util-parse-selector'; -import { Data as UnistData, Node as UnistNode } from 'unist'; -import { Element as HastElement, Content as HastContent } from 'hast'; +import type { Content as HastContent, Element as HastElement } from "hast"; +import { hasProperty } from "hast-util-has-property"; +import { headingRank } from "hast-util-heading-rank"; +import type { Node } from "hast-util-heading-rank/lib"; +import { parseSelector } from "hast-util-parse-selector"; +import { toString } from "mdast-util-to-string"; +import type { Data as UnistData, Node as UnistNode } from "unist"; +import { visit } from "unist-util-visit"; export type HeadingNode = { id: string; @@ -19,7 +19,7 @@ type RehypeHeadingsOptions = { }; const defaultOptions: RehypeHeadingsOptions = { - headings: ['h2', 'h3', 'h4', 'h5', 'h6'], + headings: ["h2", "h3", "h4", "h5", "h6"], callback: () => { return; }, @@ -44,7 +44,7 @@ export default function rehypeHeadings( const nodes: HeadingNode[] = []; function visitor(node: HastElement): void { - if (headingRank(node) && hasProperty(node, 'id')) { + if (headingRank(node) && hasProperty(node, "id")) { if (options.headings.includes(node.tagName as string)) { nodes.push({ id: (node.properties as Record).id, @@ -56,32 +56,38 @@ export default function rehypeHeadings( } function newVisitor(node: Node & { children: HastElement[] }) { - const newChildren = partition(node.children, headingTest).map(part => { - const id = - ( - part.filter((child: Node) => headingTest(child))[0] as HastElement - )?.properties?.id?.toString() || ''; + const newChildren = partition(node.children, headingTest).map( + (part) => { + const id = + ( + part.filter((child: Node) => headingTest(child))[0] as HastElement + )?.properties?.id?.toString() || ""; - return wrapSection(part as HastElement[], id); - }); + return wrapSection(part as HastElement[], id); + }, + ); node.children = newChildren; } return (ast: UnistNode): void => { - visit(ast, 'element', visitor); - visit(ast, 'root', newVisitor); + visit(ast, "element", visitor); + visit(ast, "root", newVisitor); options.callback(nodes); }; } -const wrapSection: (children: HastElement[], id: string) => HastElement = (children, id) => { - const wrap = parseSelector(`section${id ? `#${id}` : ''}`); +const wrapSection: (children: HastElement[], id: string) => HastElement = ( + children, + id, +) => { + const wrap = parseSelector(`section${id ? `#${id}` : ""}`); wrap.children = children; return wrap; }; -const headingTest: (node: Node) => boolean = node => !!headingRank(node) && hasProperty(node, 'id'); +const headingTest: (node: Node) => boolean = (node) => + !!headingRank(node) && hasProperty(node, "id"); // partition an array based on a test function, e.g [a,b,b,b,a,b,b,a,b] should become [[a,b,b,b],[a,b,b],[a,b]] function partition(array: T[], test: (input: T) => boolean): T[][] { @@ -90,6 +96,7 @@ function partition(array: T[], test: (input: T) => boolean): T[][] { return [[current]]; } if (test(current)) { + // biome-ignore lint/performance/noAccumulatingSpread: TODO: Fix this lint return [...prev, [current]]; } diff --git a/api/src/bundler/plugins/rehype-inline-badges.ts b/api/src/bundler/plugins/rehype-inline-badges.ts index 11f910a2..892f15a6 100644 --- a/api/src/bundler/plugins/rehype-inline-badges.ts +++ b/api/src/bundler/plugins/rehype-inline-badges.ts @@ -3,10 +3,10 @@ * @typedef {import('mdast').Content} Content */ -import { isBadge } from 'is-badge'; +import { isBadge } from "is-badge"; -import { visit } from 'unist-util-visit'; -import type { Node } from 'hast-util-heading-rank/lib'; +import type { Node } from "hast-util-heading-rank/lib"; +import { visit } from "unist-util-visit"; /** * Provides a list of heading elements in the AST. @@ -16,8 +16,8 @@ import type { Node } from 'hast-util-heading-rank/lib'; export default function rehypeInlineBadges(): (ast: Node) => void { //@ts-ignore function visitor(node: NodeWithChildren) { - node.visited === 'true'; - node.children[0].properties.style = 'display: inline;'; + node.visited === "true"; + node.children[0].properties.style = "display: inline;"; } return (ast: Node): void => { //@ts-ignore @@ -25,8 +25,8 @@ export default function rehypeInlineBadges(): (ast: Node) => void { }; } //@ts-ignore -const containsBadge = node => - node.tagName === 'a' && - node.children[0].tagName === 'img' && +const containsBadge = (node) => + node.tagName === "a" && + node.children[0].tagName === "img" && isBadge(node?.children[0]?.properties.src) && - node.visited !== 'true'; + node.visited !== "true"; diff --git a/api/src/bundler/plugins/remark-component-check.ts b/api/src/bundler/plugins/remark-component-check.ts index 0dfba114..3e778585 100644 --- a/api/src/bundler/plugins/remark-component-check.ts +++ b/api/src/bundler/plugins/remark-component-check.ts @@ -1,25 +1,6 @@ +import type { Data, Node } from "unist"; /* eslint-disable @typescript-eslint/no-explicit-any */ -import { visit } from 'unist-util-visit'; -import { Node } from 'unist'; - -const components = [ - 'Accordion', - 'CodeGroup', - 'Icon', - 'Info', - 'Warning', - 'Error', - 'Success', - 'Heading', - 'Tweet', - 'Tabs', - 'TabItem', - 'Image', - 'YouTube', - 'Vimeo', - 'Video', - 'Zapp', -]; +import { visit } from "unist-util-visit"; /** * Converts undefined JSX components into plain text nodes @@ -31,47 +12,67 @@ interface DeclaredNode extends Node { } interface UnDeclaredNode extends Node { name: string; - data: any; - value: any; + data?: Data; + value?: string; + attributes?: { + type: string; + name: string; + value: string; + }[]; } -export default function remarkComponentCheck(): (ast: Node) => void { - const keywords = ['var', 'let', 'const', 'function']; - const withExport = keywords.map(k => new RegExp(`(export)[ \t]+${k}[ \t]`)); +export default function remarkComponentCheck( + components: Array, +): () => (ast: Node) => void { + return () => { + const keywords = ["var", "let", "const", "function"]; + const withExport = keywords.map( + (k) => new RegExp(`(export)[ \t]+${k}[ \t]`), + ); - const declared: string[] = []; + const declared: string[] = []; - function visitorForDeclared(node: DeclaredNode) { - // Get the kind of export. This is actually stored in the Node, but the following was quicker for typescript: - const exportKeyword = withExport.filter(re => re.test(node.value))[0]; + function visitorForDeclared(node: DeclaredNode) { + // Get the kind of export. This is actually stored in the Node, but the following was quicker for typescript: + const exportKeyword = withExport.filter((re) => re.test(node.value))[0]; - if (exportKeyword) { - declared.push( - node.value - .replace(exportKeyword, '') - .replace(/^[a-z0-9-_A-Z]*[ \t][a-z0-9-_A-Z]*[ \t]/, '') - .split(' ')[0], - ); + if (exportKeyword) { + declared.push( + node.value + .replace(exportKeyword, "") + .replace(/^[a-z0-9-_A-Z]*[ \t][a-z0-9-_A-Z]*[ \t]/, "") + .split(" ")[0], + ); + } } - } - function visitorForUndeclared(node: UnDeclaredNode) { - // HTML elements are not components (e.g.

) - if (!isUppercase(node.name.charAt(0))) { - return; - } + function visitorForUndeclared(node: UnDeclaredNode) { + // HTML elements are not components (e.g.
) + if (!isUppercase(node.name.charAt(0))) { + return; + } + + if (!declared.includes(node.name) && !components.includes(node.name)) { + // Override all props of the component with our own. + node.attributes = [ + { + type: "mdxJsxAttribute", + name: "name", + value: node.name, + }, + ]; - if (!declared.includes(node.name) && !components.includes(node.name)) { - node.type = 'text'; - node.data = undefined; - node.value = `\<${node.name}\ />`; + // Update the name of the component to the internal docs page component + // which renders a warning message. + node.name = "__InvalidComponent__"; + } } - } - return async (ast: Node): Promise => { - visit(ast, 'mdxjsEsm', visitorForDeclared); - visit(ast, 'mdxJsxFlowElement', visitorForUndeclared); - visit(ast, 'mdxJsxTextElement', visitorForUndeclared); + return async (ast: Node): Promise => { + visit(ast, "mdxjsEsm", visitorForDeclared); + visit(ast, "mdxJsxFlowElement", visitorForUndeclared); + visit(ast, "mdxJsxTextElement", visitorForUndeclared); + }; }; } diff --git a/api/src/bundler/plugins/remark-undeclared-variables.ts b/api/src/bundler/plugins/remark-undeclared-variables.ts index bef5eb25..6755d56c 100644 --- a/api/src/bundler/plugins/remark-undeclared-variables.ts +++ b/api/src/bundler/plugins/remark-undeclared-variables.ts @@ -1,7 +1,6 @@ +import type { Data, Node } from "unist"; /* eslint-disable @typescript-eslint/no-explicit-any */ -// @ts-ignore -import { visit } from 'unist-util-visit'; -import { Node } from 'unist'; +import { visit } from "unist-util-visit"; /** * Converts undeclared variables into plain text nodes @@ -13,40 +12,40 @@ interface DeclaredNode extends Node { } interface UnDeclaredNode extends Node { value: string; - data: any; + data?: Data; } export default function remarkUndeclaredVariables(): (ast: Node) => void { - const keywords = ['var', 'let', 'const', 'function']; - const withExport = keywords.map(k => new RegExp(`(export)[ \t]+${k}[ \t]`)); + const keywords = ["var", "let", "const", "function"]; + const withExport = keywords.map((k) => new RegExp(`(export)[ \t]+${k}[ \t]`)); const declared: string[] = []; function visitorForDeclared(node: DeclaredNode) { // Get the kind of export. This is actually stored in the Node, but the following was quicker for typescript: - const exportKeyword = withExport.filter(re => re.test(node.value))[0]; + const exportKeyword = withExport.filter((re) => re.test(node.value))[0]; if (exportKeyword) { declared.push( node.value - .replace(exportKeyword, '') - .replace(/^[a-z0-9-_A-Z]*[ \t][a-z0-9-_A-Z]*[ \t]/, '') - .split(' ')[0], + .replace(exportKeyword, "") + .replace(/^[a-z0-9-_A-Z]*[ \t][a-z0-9-_A-Z]*[ \t]/, "") + .split(" ")[0], ); } } function visitorForUndeclared(node: UnDeclaredNode) { if (node.value && !declared.includes(node.value)) { - node.type = 'text'; + node.type = "text"; node.data = undefined; node.value = `\{${node.value}\}`; } } return async (ast: Node): Promise => { - visit(ast, 'mdxjsEsm', visitorForDeclared); - visit(ast, 'mdxFlowExpression', visitorForUndeclared); - visit(ast, 'mdxJsxTextElement', visitorForUndeclared); + visit(ast, "mdxjsEsm", visitorForDeclared); + visit(ast, "mdxFlowExpression", visitorForUndeclared); + visit(ast, "mdxJsxTextElement", visitorForUndeclared); }; } diff --git a/api/src/config/index.ts b/api/src/config/index.ts new file mode 100644 index 00000000..3fd86b3d --- /dev/null +++ b/api/src/config/index.ts @@ -0,0 +1,28 @@ +import yaml from "js-yaml"; +import { type Config, ConfigSchema } from "./schema"; +import { V1ConfigSchema } from "./v1.schema"; + +export type { Config } from "./schema"; + +// Given a user config, merges the config with the default config. +export function parseConfig(configs: { json?: string; yaml?: string }): Config { + let parsedConfig: object = {}; + + if (configs.json) { + parsedConfig = JSON.parse(configs.json); + } else if (configs.yaml) { + parsedConfig = yaml.load(configs.yaml) as object; + } + + const isV1Schema = + ("logo" in parsedConfig && typeof parsedConfig.logo === "string") || + ("theme" in parsedConfig && typeof parsedConfig.theme === "string"); + + if (isV1Schema) { + return V1ConfigSchema.parse(parsedConfig); + } + + return ConfigSchema.parse(parsedConfig); +} + +export const defaultConfig = ConfigSchema.parse({}); diff --git a/api/src/config/models/anchors.ts b/api/src/config/models/anchors.ts new file mode 100644 index 00000000..c5ef67aa --- /dev/null +++ b/api/src/config/models/anchors.ts @@ -0,0 +1,19 @@ +import { z } from "zod"; + +const anchor = z.object({ + icon: z.string().min(1), + title: z.string().min(1), + href: z.string().min(1), + locale: z.string().optional().catch(undefined), + tab: z.string().optional().catch(undefined), +}); + +export default z + .array(anchor.optional().catch(undefined)) + .catch([]) + .transform((val) => { + // Remove any empty (invalid) objects + return val.filter((anchor) => Boolean(anchor)) as Array< + z.infer + >; + }); diff --git a/api/src/config/models/content.ts b/api/src/config/models/content.ts new file mode 100644 index 00000000..14f3975a --- /dev/null +++ b/api/src/config/models/content.ts @@ -0,0 +1,17 @@ +import { z } from "zod"; + +export default z + .object({ + headerDepth: z.number().catch(3), + zoomImages: z.boolean().catch(false), + automaticallyInferNextPrevious: z.boolean().catch(true), + showPageTitle: z.boolean().catch(true), + showPageImage: z.boolean().catch(true), + }) + .catch({ + headerDepth: 3, + zoomImages: false, + automaticallyInferNextPrevious: true, + showPageTitle: true, + showPageImage: true, + }); diff --git a/api/src/config/models/header.ts b/api/src/config/models/header.ts new file mode 100644 index 00000000..777a21ef --- /dev/null +++ b/api/src/config/models/header.ts @@ -0,0 +1,25 @@ +import { z } from "zod"; + +export default z + .object({ + showName: z.boolean().optional().catch(true), + showThemeToggle: z.boolean().optional().catch(true), + showGitHubCard: z.boolean().optional().catch(true), + links: z + .array( + z.object({ + title: z.string().min(1), + href: z.string().min(1), + cta: z.boolean().optional().catch(false), + locale: z.string().optional().catch(undefined), + }), + ) + .optional() + .catch([]), + }) + .catch({ + showName: true, + showThemeToggle: true, + showGitHubCard: true, + links: [], + }); diff --git a/api/src/config/models/logo.ts b/api/src/config/models/logo.ts new file mode 100644 index 00000000..578d5705 --- /dev/null +++ b/api/src/config/models/logo.ts @@ -0,0 +1,13 @@ +import { z } from "zod"; + +export default z + .object({ + href: z.string().optional(), + light: z.string().optional(), + dark: z.string().optional(), + }) + .catch({ + href: undefined, + light: undefined, + dark: undefined, + }); diff --git a/api/src/config/models/scripts.ts b/api/src/config/models/scripts.ts new file mode 100644 index 00000000..4746713c --- /dev/null +++ b/api/src/config/models/scripts.ts @@ -0,0 +1,16 @@ +import { z } from "zod"; + +export default z + .object({ + googleTagManager: z.string().min(1).optional().catch(undefined), + googleAnalytics: z.string().min(1).optional().catch(undefined), + plausible: z + .union([z.string().min(1), z.boolean()]) + .optional() + .catch(undefined), + }) + .catch({ + googleTagManager: undefined, + googleAnalytics: undefined, + plausible: undefined, + }); diff --git a/api/src/config/models/search.ts b/api/src/config/models/search.ts new file mode 100644 index 00000000..c02a5f19 --- /dev/null +++ b/api/src/config/models/search.ts @@ -0,0 +1,16 @@ +import { z } from "zod"; + +export default z + .object({ + docsearch: z + .object({ + appId: z.string().catch(""), + apiKey: z.string().catch(""), + indexName: z.string().catch(""), + }) + .optional() + .catch(undefined), + }) + .catch({ + docsearch: undefined, + }); diff --git a/api/src/config/models/seo.ts b/api/src/config/models/seo.ts new file mode 100644 index 00000000..b98cebb4 --- /dev/null +++ b/api/src/config/models/seo.ts @@ -0,0 +1,9 @@ +import { z } from "zod"; + +export default z + .object({ + noindex: z.boolean().catch(false), + }) + .catch({ + noindex: false, + }); diff --git a/api/src/config/models/sidebar.ts b/api/src/config/models/sidebar.ts new file mode 100644 index 00000000..b22e18db --- /dev/null +++ b/api/src/config/models/sidebar.ts @@ -0,0 +1,43 @@ +import { z } from "zod"; + +const optionalString = z + .string() + .optional() + .transform((val) => val || undefined); + +// Represents a single page in the sidebar +const SidebarPageItemSchema = z.object({ + title: z.string().min(1), + href: z.string().min(1), + icon: z + .string() + .min(1) + .optional() + .transform((val) => val || undefined), +}); + +// Represents a group of pages in the sidebar +export type SidebarGroup = { + group?: string; + tab?: string; + href?: string; + icon?: string; + pages: (z.infer | SidebarGroup)[]; +}; + +// The overall schema for the sidebar +const SidebarSchema: z.ZodType = z.lazy(() => + z.object({ + group: optionalString, + tab: optionalString, + href: optionalString, + icon: optionalString, + pages: z.array(z.union([SidebarPageItemSchema, SidebarSchema])), + }), +); + +export type Sidebar = z.infer; + +export default z + .union([z.record(z.array(SidebarSchema)), z.array(SidebarSchema)]) + .catch({}); diff --git a/api/src/config/models/social.ts b/api/src/config/models/social.ts new file mode 100644 index 00000000..ef38c44e --- /dev/null +++ b/api/src/config/models/social.ts @@ -0,0 +1,27 @@ +import { z } from "zod"; + +export default z + .object({ + preview: z.string().optional().catch(undefined), + website: z.string().optional().catch(undefined), + x: z.string().optional().catch(undefined), + youtube: z.string().optional().catch(undefined), + facebook: z.string().optional().catch(undefined), + instagram: z.string().optional().catch(undefined), + linkedin: z.string().optional().catch(undefined), + github: z.string().optional().catch(undefined), + slack: z.string().optional().catch(undefined), + discord: z.string().optional().catch(undefined), + }) + .catch({ + preview: undefined, + website: undefined, + x: undefined, + youtube: undefined, + facebook: undefined, + instagram: undefined, + linkedin: undefined, + github: undefined, + slack: undefined, + discord: undefined, + }); diff --git a/api/src/config/models/tabs.ts b/api/src/config/models/tabs.ts new file mode 100644 index 00000000..729aa68e --- /dev/null +++ b/api/src/config/models/tabs.ts @@ -0,0 +1,18 @@ +import { z } from "zod"; + +const tab = z.object({ + id: z.string().min(1), + title: z.string().min(1), + href: z.string().min(1), + locale: z.string().optional().catch(undefined), +}); + +export default z + .array(tab.optional().catch(undefined)) + .catch([]) + .transform((val) => { + // Remove any empty (invalid) objects + return val.filter((anchor) => Boolean(anchor)) as Array< + z.infer + >; + }); diff --git a/api/src/config/models/theme.ts b/api/src/config/models/theme.ts new file mode 100644 index 00000000..2b7d1b82 --- /dev/null +++ b/api/src/config/models/theme.ts @@ -0,0 +1,26 @@ +import { z } from "zod"; + +const hexColor = z + .string() + .optional() + .transform((val) => { + if (!val || !/^#?[0-9A-Fa-f]{6}$/.test(val)) { + return undefined; + } + + return val; + }); + +export default z + .object({ + defaultTheme: z + .union([z.literal("light"), z.literal("dark")]) + .optional() + .catch(undefined), + primary: hexColor, + primaryLight: hexColor, + primaryDark: hexColor, + backgroundLight: hexColor, + backgroundDark: hexColor, + }) + .catch({}); diff --git a/api/src/config/schema.ts b/api/src/config/schema.ts new file mode 100644 index 00000000..a3de169e --- /dev/null +++ b/api/src/config/schema.ts @@ -0,0 +1,65 @@ +import { z } from "zod"; + +import anchors from "./models/anchors"; +import content from "./models/content"; +import header from "./models/header"; +import logo from "./models/logo"; +import scripts from "./models/scripts"; +import search from "./models/search"; +import seo from "./models/seo"; +import sidebar from "./models/sidebar"; +import social from "./models/social"; +import tabs from "./models/tabs"; +import theme from "./models/theme"; + +export type { Sidebar } from "./models/sidebar"; + +export const ConfigSchema = z + .object({ + // The name of the project + name: z.string().min(1).optional().catch(undefined), + // The description of the project + description: z.string().min(1).optional().catch(undefined), + // The favicon of the project + favicon: z.string().min(1).optional().catch(undefined), + // The preview image used in social media - either a path or a URL, or false to disable + socialPreview: z + .union([z.string().min(1), z.literal(false)]) + .optional() + .catch(undefined), + // The logo of the project, used in the header + logo, + // Theme settings + theme, + // Configuration for the header + header, + // Anchors to display in the sidebar + anchors, + // Social links to display in the footer + social, + // SEO settings + seo, + // Variables to override in mustache templates + variables: z.record(z.any()).catch({}), + // Search settings + search, + // Scripts to include in the documentation + scripts, + // Settings to control content rendering + content, + // Tabs to display in the header + tabs, + // Sidebar configuration + sidebar, + }) + .transform((config) => { + return { + ...config, + // Extract locales from the sidebar configuration + locales: Array.isArray(config.sidebar) + ? [] + : Object.keys(config.sidebar).filter((key) => key !== "default"), + }; + }); + +export type Config = z.infer; diff --git a/api/src/config/v1.schema.ts b/api/src/config/v1.schema.ts new file mode 100644 index 00000000..f2cd52a9 --- /dev/null +++ b/api/src/config/v1.schema.ts @@ -0,0 +1,182 @@ +import { z } from "zod"; +import { ConfigSchema } from "./schema"; +import type { Config, Sidebar } from "./schema"; + +const V1SidebarItem = z.tuple([ + z.coerce.string(), + z + .union([ + // URL + z.string(), + // Nested children + z + .array( + z + .tuple([z.coerce.string(), z.coerce.string()]) + .optional() + .catch(undefined), + ) + // Remove any undefined items from the array. + .transform((items) => { + return items.filter(Boolean); + }), + ]) + // Fallback to empty array if something is wrong, so the entire sidebar doesn't break + .catch([]), +]); + +export const V1ConfigSchema = z + .object({ + name: z.string().catch(""), + description: z.string().catch(""), + logo: z.string().catch(""), + logoDark: z.string().catch(""), + favicon: z.string().catch(""), + socialPreview: z.string().catch(""), + twitter: z.string().catch(""), + noindex: z.boolean().catch(false), + theme: z.string().catch(""), + headerDepth: z.number().catch(3), + variables: z.record(z.any()).catch({}), + googleTagManager: z.string().catch(""), + googleAnalytics: z.string().catch(""), + zoomImages: z.boolean().catch(false), + experimentalCodehike: z.boolean().catch(false), + experimentalMath: z.boolean().catch(false), + automaticallyDisplayName: z.boolean().catch(true), + automaticallyInferNextPrevious: z.boolean().catch(true), + plausibleAnalytics: z.boolean().catch(false), + plausibleAnalyticsScript: z + .string() + .catch("https://plausible.io/js/script.js"), + anchors: z + .array( + z + .object({ + icon: z.string(), + title: z.string(), + link: z.string(), + }) + .optional() + .catch(undefined), + ) + .transform((items) => items.filter(Boolean)) + .catch([]), + docsearch: z + .object({ + appId: z.string().catch(""), + apiKey: z.string().catch(""), + indexName: z.string().catch(""), + }) + .optional() + .catch(undefined), + sidebar: z + .union([z.record(z.array(V1SidebarItem)), z.array(V1SidebarItem)]) + .catch([]), + }) + .transform((v1) => { + const config: Config = { + name: v1.name, + description: v1.description, + favicon: v1.favicon, + socialPreview: v1.socialPreview, + logo: { + href: "/", + light: v1.logo, + dark: v1.logoDark, + }, + header: { + showName: true, + showThemeToggle: true, + showGitHubCard: true, + }, + theme: { + primary: v1.theme, + }, + social: { + x: v1.twitter, + }, + anchors: v1.anchors.filter(Boolean).map((anchor) => ({ + title: anchor!.title, + href: anchor!.link, + icon: anchor!.icon, + })), + seo: { + noindex: v1.noindex, + }, + search: { + docsearch: v1.docsearch, + }, + variables: v1.variables, + scripts: { + googleTagManager: v1.googleTagManager, + googleAnalytics: v1.googleAnalytics, + plausible: + // If they have `true` for plausible + v1.plausibleAnalytics + ? // Check if they have a custom script + v1.plausibleAnalyticsScript + ? v1.plausibleAnalyticsScript + : true + : undefined, + }, + content: { + headerDepth: v1.headerDepth, + zoomImages: v1.zoomImages, + automaticallyInferNextPrevious: v1.automaticallyInferNextPrevious, + showPageTitle: false, + showPageImage: false, + }, + tabs: [], // V1 doesn't have tabs + sidebar: [], // This is transformed below + locales: [], // This is overridden in the v2 schema + }; + + // Utility function to transform a sidebar item from v1 to latest + function transformSidebarItem( + item: z.infer, + ): Sidebar { + const [title, hrefOrChildren] = item; + + if (typeof hrefOrChildren === "string") { + return { + group: "", + pages: [ + { + title, + href: hrefOrChildren, + }, + ], + }; + } + + if (Array.isArray(hrefOrChildren)) { + return { + group: title, + pages: hrefOrChildren.map((child) => { + const [childTitle, childHref] = child || ["", ""]; + return { + title: childTitle, + href: childHref, + }; + }), + }; + } + + return { group: "", pages: [] }; + } + + if (Array.isArray(v1.sidebar)) { + config.sidebar = v1.sidebar.map(transformSidebarItem); + } else { + const sidebar: Record = {}; + Object.entries(v1.sidebar).map((entry) => { + const locale = entry[0]; + const sidebarItems = entry[1]; + sidebar[locale] = sidebarItems.map(transformSidebarItem); + }); + config.sidebar = sidebar; + } + + return ConfigSchema.parse(config); + }); diff --git a/api/src/env.ts b/api/src/env.ts new file mode 100644 index 00000000..83ee79e3 --- /dev/null +++ b/api/src/env.ts @@ -0,0 +1,17 @@ +import { config } from "dotenv"; +import { z } from "zod"; + +config(); + +export const ENV = z + .object({ + PORT: z + .string() + .optional() + .transform((v) => Number.parseInt(v || "8080", 10)), + GITHUB_PAT: z.string().min(1), + GITHUB_APP_ID: z.string().min(1), + GITHUB_APP_PRIVATE_KEY: z.string().min(1), + GITHUB_APP_WEBHOOK_SECRET: z.string().min(1), + }) + .parse(process.env); diff --git a/api/src/events/installation.ts b/api/src/events/installation.ts new file mode 100644 index 00000000..04f34677 --- /dev/null +++ b/api/src/events/installation.ts @@ -0,0 +1,8 @@ +import type { EmitterWebhookEvent } from "@octokit/webhooks"; + +export async function onInstallation( + event: EmitterWebhookEvent<"installation">, +) { + // TODO: Send a new installation event to analytics + console.log("Installation event received", event.payload); +} diff --git a/api/src/events/pull_request.opened.ts b/api/src/events/pull_request.opened.ts new file mode 100644 index 00000000..a0173711 --- /dev/null +++ b/api/src/events/pull_request.opened.ts @@ -0,0 +1,53 @@ +import type { EmitterWebhookEvent } from "@octokit/webhooks"; +import { getDomains, getOctokitForInstallation } from "../octokit"; +import { createGitHubCheckRun } from "../utils/github"; + +export async function onPullRequestOpened( + event: EmitterWebhookEvent<"pull_request.opened">, +) { + const pull_request = event.payload.pull_request; + const { repository } = event.payload; + + if (!event.payload.installation) { + throw new Error("Installation not found."); + } + + // Get an Octokit instance for the installation event. + const octokit = await getOctokitForInstallation( + event.payload.installation.id, + ); + + // org/repo + const name = repository.full_name.toLowerCase(); + + // Fetch the domains file from the main repository + const domains = await getDomains(octokit); + + // Find a custom domain for the repository, if it exists + const domain = domains.find(([, repository]) => repository === name)?.[0]; + + // Build a domain URL for the comment + const url = domain + ? `${domain}/~${pull_request.number}` + : `docs.page/${name}~${pull_request.number}`; + + const comment = `To view this pull requests documentation preview, visit the following URL: + \n\n\ + [${url}](https://${url}) + \n\n\ + Documentation is deployed and generated using [docs.page](https://docs.page).`; + + await octokit.rest.issues.createComment({ + owner: repository.owner.login, + repo: repository.name, + issue_number: pull_request.number, + body: comment, + }); + + // await createGitHubCheckRun( + // octokit, + // repository.owner.login, + // repository.name, + // pull_request.head.sha + // ); +} diff --git a/api/src/events/pull_request.synchronize.ts b/api/src/events/pull_request.synchronize.ts new file mode 100644 index 00000000..37e182d0 --- /dev/null +++ b/api/src/events/pull_request.synchronize.ts @@ -0,0 +1,26 @@ +import type { EmitterWebhookEvent } from "@octokit/webhooks"; +import { getDomains, getOctokitForInstallation } from "../octokit"; +import { createGitHubCheckRun } from "../utils/github"; + +export async function onPullRequestSynchronize( + event: EmitterWebhookEvent<"pull_request.synchronize">, +) { + const pull_request = event.payload.pull_request; + const { repository } = event.payload; + + if (!event.payload.installation) { + throw new Error("Installation not found."); + } + + // Get an Octokit instance for the installation event. + const octokit = await getOctokitForInstallation( + event.payload.installation.id, + ); + + await createGitHubCheckRun( + octokit, + repository.owner.login, + repository.name, + pull_request.head.sha, + ); +} diff --git a/api/src/octokit.ts b/api/src/octokit.ts new file mode 100644 index 00000000..e0311303 --- /dev/null +++ b/api/src/octokit.ts @@ -0,0 +1,51 @@ +import { App, type Octokit } from "octokit"; +import { ENV } from "./env"; + +export const app = new App({ + appId: ENV.GITHUB_APP_ID, + privateKey: ENV.GITHUB_APP_PRIVATE_KEY, +}); + +export async function getOctokitForInstallation(installationId: number) { + return await app.getInstallationOctokit(installationId); +} + +export type OctokitInstallation = Awaited< + ReturnType +>; + +// Type for a getFile response - assumes the repository is available +type GetFileResponse = { + repository: { + file?: { + text: string; + }; + }; +}; + +// Queries a repository and extracts a file +export async function getDomains( + octokit: Octokit, +): Promise> { + const response = await octokit.graphql( + ` + query GetDomains($owner: String!, $repo: String!, $file: String!) { + repository(owner: $owner, name: $repo) { + file: object(expression: $file) { + ... on Blob { + text + } + } + } + } + `, + { + owner: "invertase", + repo: "docs.page", + file: "main:domains.json", + }, + ); + + const file = response.repository.file?.text || "[]"; + return JSON.parse(file) as Array<[string, string]>; +} diff --git a/api/src/probot.ts b/api/src/probot.ts deleted file mode 100644 index 1476251b..00000000 --- a/api/src/probot.ts +++ /dev/null @@ -1,72 +0,0 @@ -import { createNodeMiddleware, Probot, createProbot } from 'probot'; - -// Create a probot instance for the docs.page app -const probot = createProbot({ - overrides: { - appId: process.env.GITHUB_APP_ID, - privateKey: process.env.GITHUB_APP_PRIVATE_KEY, - }, -}); - -// Queries a repository and extracts a file -const getFile = ` - query GetDomains($owner: String!, $repo: String!, $file: String!) { - repository(owner: $owner, name: $repo) { - file: object(expression: $file) { - ... on Blob { - text - } - } - } - } -`; - -// Type for a getFile response - assumes the repository is available -type GetFileResponse = { - repository: { - file?: { - text: string; - }; - }; -}; - -const app = (app: Probot) => { - app.on('pull_request.opened', async context => { - app.log.info(context); - - const pull_request = context.payload.pull_request; - - const { repository } = context.payload; - - // e.g. org/repo - const name = repository.full_name.toLowerCase(); - - // Fetch the domains file from the main repository - const response = await context.octokit.graphql(getFile, { - owner: 'invertase', - repo: 'docs.page', - file: 'main:domains.json', - }); - - const file = response.repository.file?.text || '[]'; - - // Find and set a custom domain, if it exists - const domains = JSON.parse(file) as Array<[string, string]>; - const domain = domains.find(([, repository]) => repository === name)?.[0]; - - const url = domain - ? `${domain}/~${pull_request.number}` - : `docs.page/${name}~${pull_request.number}`; - - const comment = context.issue({ - body: `To view this pull requests documentation preview, visit the following URL:\n\n[${url}](https://${url})\n\nDocumentation is deployed and generated using [docs.page](https://docs.page).`, - }); - - await context.octokit.issues.createComment(comment); - }); -}; - -export default createNodeMiddleware(app, { - probot, - webhooksPath: '/webhooks/github', -}); diff --git a/api/src/res.ts b/api/src/res.ts index e16f52f5..85d87406 100644 --- a/api/src/res.ts +++ b/api/src/res.ts @@ -1,37 +1,15 @@ -import type { Response } from 'express'; -import { ZodError } from 'zod'; -import { fromZodError } from 'zod-validation-error'; +import type { Response } from "express"; +import type { ZodError } from "zod"; +import { fromZodError } from "zod-validation-error"; +import type { BundlerError } from "./bundler/error"; const status = { - 200: 'OK', - 400: 'BAD_REQUEST', - 404: 'NOT_FOUND', - 500: 'INTERNAL_SERVER_ERROR', + 200: "OK", + 400: "BAD_REQUEST", + 404: "NOT_FOUND", + 500: "INTERNAL_SERVER_ERROR", } as const; -export function response( - res: Response, - status: number, - code: string, - other: - | { - error: { - message: string; - cause?: string | unknown; - links?: { title: string; url: string }[]; - }; - } - | { - data: T; - }, -): Response { - res.status(status); - return res.json({ - code, - ...other, - }); -} - export function ok(res: Response, data: T): Response { res.status(200); return res.json({ @@ -40,13 +18,24 @@ export function ok(res: Response, data: T): Response { }); } +export function bundleError(res: Response, error: BundlerError): Response { + res.status(error.code); + return res.json({ + code: error.name, + error: { + message: error.message, + source: error.source, + }, + }); +} + export function badRequest(res: Response, message: string): Response; export function badRequest(res: Response, error: ZodError): Response; export function badRequest(res: Response, input: string | ZodError): Response { // Set the HTTP Status code res.status(400); - if (typeof input === 'string') { + if (typeof input === "string") { return res.json({ code: status[400], error: input, @@ -63,7 +52,7 @@ export function notFound(res: Response): Response { res.status(404); return res.json({ code: status[404], - error: 'Resource not found.', + error: "Resource not found.", }); } @@ -72,6 +61,6 @@ export function serverError(res: Response, error: unknown): Response { res.status(500); return res.json({ code: status[500], - error: 'Something went wrong.', + error: "Something went wrong.", }); } diff --git a/api/src/routes/bundle.ts b/api/src/routes/bundle.ts index 75d2538f..991d8b66 100644 --- a/api/src/routes/bundle.ts +++ b/api/src/routes/bundle.ts @@ -1,43 +1,60 @@ -import { Request, Response } from 'express'; -import { z } from 'zod'; -import { ok, badRequest, serverError, response } from '../res'; -import bundler, { BundlerError } from '../bundler/index'; +import type { Request, Response } from "express"; +import { z } from "zod"; +import { BundlerError } from "../bundler/error"; +import { Bundler, type BundlerOutput, type ErrorCodes } from "../bundler/index"; +import { badRequest, bundleError, ok, serverError } from "../res"; -const $input = z.object({ +const QuerySchema = z.object({ owner: z .string({ - required_error: 'Missing owner parameter.', - invalid_type_error: 'Owner parameter must be a string.', + required_error: "Missing owner parameter.", + invalid_type_error: "Owner parameter must be a string.", }) .min(1), repository: z .string({ - required_error: 'Missing repository parameter.', - invalid_type_error: 'Repository parameter must be a string.', + required_error: "Missing repository parameter.", + invalid_type_error: "Repository parameter must be a string.", }) .min(1), ref: z.string().optional(), - path: z.string().optional().default('index'), + path: z.string().optional().default("index"), + components: z.array(z.string()).optional(), }); -export default async function bundle(req: Request, res: Response): Promise { - const input = $input.safeParse(req.query); +export type BundleResponse = + | { + code: "OK"; + data: BundlerOutput; + } + | BundleErrorResponse; + +export type BundleErrorResponse = { + code: ErrorCodes | "NOT_FOUND" | "BAD_REQUEST" | "INTERNAL_SERVER_ERROR"; + error: + | string + | { + message: string; + source?: string; + }; +}; + +export default async function bundle( + req: Request, + res: Response, +): Promise { + const input = QuerySchema.safeParse(req.query); if (!input.success) { return badRequest(res, input.error); } try { - return ok(res, await bundler(input.data)); + const bundler = new Bundler(input.data); + return ok(res, await bundler.build()); } catch (e: unknown) { if (e instanceof BundlerError) { - return response(res, e.code, e.name, { - error: { - message: e.message, - cause: e.cause, - links: e.links, - }, - }); + return bundleError(res, e); } return serverError(res, e); } diff --git a/api/src/routes/mdx.ts b/api/src/routes/mdx.ts deleted file mode 100644 index 24971f70..00000000 --- a/api/src/routes/mdx.ts +++ /dev/null @@ -1,25 +0,0 @@ -import { Request, Response } from 'express'; -import { z } from 'zod'; -import { ok, badRequest, serverError } from '../res'; -import { bundle } from '../bundler/mdx'; - -const $input = z.object({ - markdown: z.string(), -}); - -export default async function mdx(req: Request, res: Response): Promise { - const input = $input.safeParse(req.body); - - if (!input.success) { - return badRequest(res, input.error); - } - - try { - const response = await bundle(input.data.markdown, { - headerDepth: 3, - }); - return ok(res, response); - } catch (e: unknown) { - return serverError(res, e); - } -} diff --git a/api/src/routes/preview.ts b/api/src/routes/preview.ts index 20afb629..99ae5dd6 100644 --- a/api/src/routes/preview.ts +++ b/api/src/routes/preview.ts @@ -1,41 +1,64 @@ -import { Request, Response } from 'express'; -import { z } from 'zod'; -import { ok, badRequest, serverError } from '../res'; -import { bundle } from '../bundler/mdx'; -import parseConfig from '../utils/config'; +import type { Request, Response } from "express"; +import { z } from "zod"; +import type { BundlerOutput } from "../bundler"; +import { parseMdx } from "../bundler/mdx"; +import { parseConfig } from "../config"; +import { badRequest, ok, serverError } from "../res"; -const $input = z.object({ - markdown: z.string(), +const PreviewSchema = z.object({ + markdown: z.string().nullable(), config: z.object({ - json: z.string().optional(), - yaml: z.string().optional(), + json: z.string().nullable(), + yaml: z.string().nullable(), }), + components: z.array(z.string()).optional(), }); -export default async function preview(req: Request, res: Response): Promise { - const input = $input.safeParse(JSON.parse(req.body)); +export default async function preview( + req: Request, + res: Response, +): Promise { + const input = PreviewSchema.safeParse(JSON.parse(req.body)); if (!input.success) { + console.error(input.error); return badRequest(res, input.error); } try { const config = parseConfig({ - json: input.data.config.json, - yaml: input.data.config.yaml, + json: input.data.config.json ?? undefined, + yaml: input.data.config.yaml ?? undefined, }); - const mdx = await bundle(input.data.markdown, { - headerDepth: config.headerDepth, + const mdx = await parseMdx(input.data.markdown ?? "", { + headerDepth: config.content?.headerDepth ?? 3, + components: input.data.components ?? [], }); - return ok(res, { + const output: BundlerOutput = { + source: { + type: "branch", + owner: "owner", + repository: "repository", + ref: "preview", + }, + private: false, + ref: "preview", + stars: 0, + forks: 0, + baseBranch: "preview", + path: "preview", config, + markdown: input.data.markdown ?? "", headings: mdx.headings, frontmatter: mdx.frontmatter, code: mdx.code, - }); + }; + + return ok(res, output); } catch (e: unknown) { + console.error(e); return serverError(res, e); } } diff --git a/api/src/routes/schema.ts b/api/src/routes/schema.ts new file mode 100644 index 00000000..6f22c8bd --- /dev/null +++ b/api/src/routes/schema.ts @@ -0,0 +1,11 @@ +import type { Request, Response } from "express"; +import { zodToJsonSchema } from "zod-to-json-schema"; +import { ConfigSchema } from "../config/schema"; + +export default async function schema( + req: Request, + res: Response, +): Promise { + res.status(200); + return res.json(zodToJsonSchema(ConfigSchema)); +} diff --git a/api/src/routes/webhooks.github.ts b/api/src/routes/webhooks.github.ts new file mode 100644 index 00000000..f697c790 --- /dev/null +++ b/api/src/routes/webhooks.github.ts @@ -0,0 +1,57 @@ +import { Webhooks } from "@octokit/webhooks"; +import type { Request, Response } from "express"; +import { badRequest, ok } from "../res"; + +import { onInstallation } from "../events/installation"; +import { onPullRequestOpened } from "../events/pull_request.opened"; +// import { onPullRequestSynchronize } from "../events/pull_request.synchronize"; + +export default async function githubWebhook( + req: Request, + res: Response, +): Promise { + // Webhooks are POST requests from GitHub + if (req.method.toUpperCase() !== "POST") { + return badRequest(res, "Invalid method."); + } + + // Get the body of the request (stringify since express converts it to JSON). + const body = req.body; + + // Create a new instance of the Webhooks class with the GitHub App secret. + const webhook = new Webhooks({ + secret: process.env.GITHUB_APP_WEBHOOK_SECRET!, + }); + + // Verify the signature of the request. + const verified = await webhook.verify( + JSON.stringify(body), + String(req.headers["x-hub-signature-256"]), + ); + + if (!verified) { + return badRequest(res, "Invalid signature."); + } + + webhook.on("installation", onInstallation); + webhook.on("pull_request.opened", onPullRequestOpened); + // webhook.on("pull_request.synchronize", onPullRequestSynchronize); + + try { + const id = String(req.headers["x-github-hook-id"]); + + // biome-ignore lint/suspicious/noExplicitAny: This will be a valid event name from GitHub. + const name = String(req.headers["x-github-event"]) as any; + + await webhook.receive({ + id, + name, + payload: body, + }); + + return ok(res, { message: "OK" }); + } catch (e) { + console.error(e); + return badRequest(res, "Webhook request failed."); + } +} diff --git a/api/src/types.ts b/api/src/types.ts new file mode 100644 index 00000000..3d78df42 --- /dev/null +++ b/api/src/types.ts @@ -0,0 +1,3 @@ +export type { BundlerOutput } from "./bundler/index"; +export type { BundleResponse, BundleErrorResponse } from "./routes/bundle"; +export type { SidebarGroup } from "./config/models/sidebar"; diff --git a/api/src/utils/config.ts b/api/src/utils/config.ts deleted file mode 100644 index cfb93c54..00000000 --- a/api/src/utils/config.ts +++ /dev/null @@ -1,93 +0,0 @@ -import { z } from 'zod'; -import yaml from 'js-yaml'; - -const $SidebarItem = z.tuple([ - z.coerce.string(), - z - .union([ - // URL - z.string(), - // Nested children - z - .array(z.tuple([z.coerce.string(), z.coerce.string()]).optional().catch(undefined)) - // Remove any undefined items from the array. - .transform(items => { - return items.filter(Boolean); - }), - ]) - // Fallback to empty array if something is wrong, so the entire sidebar doesn't break - .catch([]), -]); - -const $Config = z - .object({ - name: z.string().catch(''), - description: z.string().catch(''), - logo: z.string().catch(''), - logoDark: z.string().catch(''), - favicon: z.string().catch(''), - socialPreview: z.string().catch(''), - twitter: z.string().catch(''), - noindex: z.boolean().catch(false), - theme: z.string().catch(''), - headerDepth: z.number().catch(3), - variables: z.record(z.any()).catch({}), - googleTagManager: z.string().catch(''), - googleAnalytics: z.string().catch(''), - zoomImages: z.boolean().catch(false), - experimentalCodehike: z.boolean().catch(false), - experimentalMath: z.boolean().catch(false), - automaticallyDisplayName: z.boolean().catch(true), - automaticallyInferNextPrevious: z.boolean().catch(true), - plausibleAnalytics: z.boolean().catch(false), - plausibleAnalyticsScript: z.string().catch('https://plausible.io/js/script.js'), - anchors: z - .array( - z - .object({ - icon: z.string(), - title: z.string(), - link: z.string(), - }) - .optional() - .catch(undefined), - ) - .transform(items => items.filter(Boolean)) - .catch([]), - docsearch: z - .object({ - appId: z.string().catch(''), - apiKey: z.string().catch(''), - indexName: z.string().catch(''), - }) - .optional() - .catch(undefined), - sidebar: z.union([z.record(z.array($SidebarItem)), z.array($SidebarItem)]).catch([]), - }) - .transform(config => { - return { - ...config, - locales: Array.isArray(config.sidebar) - ? [] - : Object.keys(config.sidebar).filter(key => key !== 'default'), - }; - }); - -export type Config = z.infer; - -// The default config is used to fill in missing values. -export const defaultConfig = $Config.parse({}); - -// Given a user config, merges the config with the default config. -export default function parseConfig(configs: { json?: string; yaml?: string }): Config { - let parsedConfig: unknown; - - if (configs.json) { - parsedConfig = JSON.parse(configs.json); - } else if (configs.yaml) { - parsedConfig = yaml.load(configs.yaml); - } - - // return $Config.parse(JSON.parse(test)); - return $Config.parse(parsedConfig); -} diff --git a/api/src/utils/github.ts b/api/src/utils/github.ts index 70061575..f67aa27e 100644 --- a/api/src/utils/github.ts +++ b/api/src/utils/github.ts @@ -1,19 +1,21 @@ -import A2A from 'a2a'; -import { graphql } from '@octokit/graphql'; -import dotenv from 'dotenv'; -dotenv.config(); +import { type CheckResult, check } from "@docs.page/cli"; +import { graphql } from "@octokit/graphql"; +import A2A from "a2a"; +import JSZip from "jszip"; +import { ENV } from "../env"; +import type { OctokitInstallation } from "../octokit"; const getGitHubToken = (() => { let index = 0; - const tokens = process.env.GITHUB_PAT ? process.env.GITHUB_PAT.split(',') : []; + const tokens = ENV.GITHUB_PAT ? ENV.GITHUB_PAT.split(",") : []; if (!tokens.length) { throw new Error( - 'Environment variable GITHUB_PAT is not defined or has no tokens or an invalid token.', + "Environment variable GITHUB_PAT is not defined or has no tokens or an invalid token.", ); } - return function () { + return () => { if (index >= tokens.length) index = 0; return tokens[index++]; }; @@ -23,7 +25,7 @@ export function getGithubGQLClient(): typeof graphql { const token = getGitHubToken(); if (!token) { throw new Error( - 'Environment variable GITHUB_PAT is not defined or has no tokens or an invalid token.', + "Environment variable GITHUB_PAT is not defined or has no tokens or an invalid token.", ); } return graphql.defaults({ @@ -42,10 +44,13 @@ type MetaData = { type PageContentsQuery = { repository: { + stars: number; + forks: number; baseBranch: { name: string; }; isFork: boolean; + isPrivate: boolean; configJson?: { text: string; }; @@ -65,7 +70,10 @@ type PageContentsQuery = { }; export type Contents = { + stars: number; + forks: number; isFork: boolean; + isPrivate: boolean; baseBranch: string; config: { configJson?: string; @@ -81,21 +89,24 @@ export async function getGitHubContents( metadata: MetaData, noDir?: boolean, ): Promise { - const base = noDir ? '' : 'docs/'; + const base = noDir ? "" : "docs/"; const absolutePath = `${base}${metadata.path}`; const indexPath = `${base}${metadata.path}/index`; - const ref = metadata.ref || 'HEAD'; + const ref = metadata.ref || "HEAD"; const [error, response] = await A2A( getGithubGQLClient()({ query: ` query RepositoryConfig($owner: String!, $repository: String!, $configJson: String!, $configYaml: String!, $mdx: String!, $mdxIndex: String!) { repository(owner: $owner, name: $repository) { + stars: stargazerCount + forks: forkCount baseBranch: defaultBranchRef { name } isFork + isPrivate configJson: object(expression: $configJson) { ... on Blob { text @@ -134,9 +145,12 @@ export async function getGitHubContents( } return { + stars: response?.repository?.stars ?? 0, + forks: response?.repository?.forks ?? 0, repositoryFound: true, isFork: response?.repository?.isFork ?? false, - baseBranch: response?.repository.baseBranch.name ?? 'main', + isPrivate: response?.repository?.isPrivate ?? false, + baseBranch: response?.repository.baseBranch.name ?? "main", config: { configJson: response?.repository.configJson?.text, configYaml: response?.repository.configYaml?.text, @@ -194,7 +208,7 @@ export async function getPullRequestMetadata( `, owner: owner, repository: repository, - pullRequest: parseInt(pullRequest), + pullRequest: Number.parseInt(pullRequest), }), ); if (error || !response) { @@ -207,3 +221,102 @@ export async function getPullRequestMetadata( ref: response?.repository?.pullRequest?.ref?.name, }; } + +export async function createGitHubCheckRun( + octokit: OctokitInstallation, + owner: string, + repository: string, + sha: string, +) { + const checkRunResult = await octokit.rest.checks.create({ + owner, + repo: repository, + name: "docs.page check", + head_sha: sha, + status: "in_progress", + }); + + // Download the repository as a zip + const archive = await octokit.rest.repos + .downloadZipballArchive({ + owner: "invertase", + repo: "docs.page", + ref: "main", + }) + .then((response) => response.data as ArrayBuffer); + + // Extract the files from the tar + const zip = await new JSZip().loadAsync(archive); + + // The zip file contains a directory with the repository name, so we need to remove that + // and store the files in a map with the path as the key. + const files = Object.keys(zip.files).reduce>( + (acc, path) => { + acc[path.split("/").slice(1).join("/")] = path; + return acc; + }, + {}, + ); + + // Function to get a file from the zip by relative path. + async function getFileFn(relativePath: string) { + const file = zip.file(files[relativePath]); + return file ? await file.async("string") : ""; + } + + const results: CheckResult[] = []; + + let hasErrors = false; + + const ms = new Date().getTime(); + for await (const result of check(new Set(Object.keys(files)), getFileFn)) { + if (result.type === "error") { + hasErrors = true; + } + + results.push(result); + } + const timer = new Date().getTime() - ms; + + const errors = results.map((result) => { + const tag = result.type === "error" ? "[ERROR]" : "[WARN]"; + const path = result.filePath + ? ` - ${result.filePath}:${result.line}:${result.column}` + : ""; + + return ` - ${tag}: ${path ? `${path} ` : ""} ${result.message}`; + }); + + let text = "## Results\n\n"; + text += errors.join("\n\n"); + text += `\n\n
View raw output\n\n\`\`\`json\n${JSON.stringify( + results, + null, + 2, + )}\n\`\`\`\n\n
`; + + await octokit.rest.checks.update({ + owner, + repo: repository, + check_run_id: checkRunResult.data.id, + status: "completed", + conclusion: hasErrors ? "failure" : "success", + output: { + title: "Check Run Results", + summary: `Checked ${results.length} files in ${timer}ms`, + text, + annotations: results + .filter((result) => !!result.filePath) + .map((result) => ({ + path: result.filePath!, + annotation_level: result.type === "warning" ? "warning" : "failure", + message: result.message, + start_line: result.line || 0, + end_line: result.line || 0, + start_column: result.column || 0, + end_column: result.column || 0, + title: result.message, + })), + }, + }); +} diff --git a/api/src/utils/sanitize.ts b/api/src/utils/sanitize.ts index a5591b01..bcad84bb 100644 --- a/api/src/utils/sanitize.ts +++ b/api/src/utils/sanitize.ts @@ -1,8 +1,8 @@ export const escapeHtml = (text: string): string => { return text - .replace(/&/g, '&') - .replace(//g, '>') - .replace(/"/g, '"') - .replace(/'/g, '''); + .replace(/&/g, "&") + .replace(//g, ">") + .replace(/"/g, """) + .replace(/'/g, "'"); }; diff --git a/api/src/utils/variables.ts b/api/src/utils/variables.ts new file mode 100644 index 00000000..451623eb --- /dev/null +++ b/api/src/utils/variables.ts @@ -0,0 +1,22 @@ +import get from "lodash.get"; +const VARIABLE_REGEX = /{{\s([a-zA-Z0-9_.]*)\s}}/gm; + +// Replaces an object of variables with their moustache values in a string +export function replaceMoustacheVariables( + variables: Record, + value: string, +) { + let output = value; + let m: RegExpExecArray | null; + + // biome-ignore lint/suspicious/noAssignInExpressions: This is a false positive. + while ((m = VARIABLE_REGEX.exec(value)) !== null) { + // This is necessary to avoid infinite loops with zero-width matches + if (m.index === VARIABLE_REGEX.lastIndex) { + VARIABLE_REGEX.lastIndex++; + } + output = output.replace(m[0], get(variables, m[1], m[0])); + } + + return output; +} diff --git a/api/tsconfig.json b/api/tsconfig.json index f8000d1a..0b622c68 100644 --- a/api/tsconfig.json +++ b/api/tsconfig.json @@ -1,15 +1,19 @@ { "compilerOptions": { "resolveJsonModule": true, - "target": "ESNEXT" /* Specify ECMAScript target version: 'ES3' (default), 'ES5', 'ES2015', 'ES2016', 'ES2017', 'ES2018', 'ES2019', 'ES2020', 'ES2021', or 'ESNEXT'. */, - "module": "ESNext" /* Specify module code generation: 'none', 'commonjs', 'amd', 'system', 'umd', 'es2015', 'es2020', or 'ESNext'. */, - "outDir": "./dist" /* Redirect output structure to the directory. */, - "rootDir": "src" /* Specify the root directory of input files. Use to control the output directory structure with --outDir. */, - "strict": true /* Enable all strict type-checking options. */, - "moduleResolution": "node" /* Specify module resolution strategy: 'node' (Node.js) or 'classic' (TypeScript pre-1.6). */, - "esModuleInterop": true /* Enables emit interoperability between CommonJS and ES Modules via creation of namespace objects for all imports. Implies 'allowSyntheticDefaultImports'. */, - "skipLibCheck": true /* Skip type checking of declaration files. */, - "forceConsistentCasingInFileNames": true /* Disallow inconsistently-cased references to the same file. */, - "typeRoots": ["node_modules/@types"] + "target": "ESNEXT", + "module": "ESNext", + "outDir": "./dist", + "strict": true, + "moduleResolution": "node", + "esModuleInterop": true, + "skipLibCheck": true, + "forceConsistentCasingInFileNames": true, + "typeRoots": ["node_modules/@types"], + "verbatimModuleSyntax": true, + "baseUrl": ".", + "paths": { + "@docs.page/cli": ["../packages/cli/src/index.ts"] + } } } diff --git a/biome.json b/biome.json new file mode 100644 index 00000000..00de628f --- /dev/null +++ b/biome.json @@ -0,0 +1,39 @@ +{ + "$schema": "https://biomejs.dev/schemas/1.8.3/schema.json", + "files": { + "ignore": [ + "node_modules", + ".git", + ".vercel", + "dist/**", + "website/build/**", + "website/public/**" + ] + }, + "organizeImports": { + "enabled": true + }, + "formatter": { + "enabled": true, + "indentStyle": "space" + }, + "linter": { + "enabled": true, + "rules": { + "recommended": true, + "style": { + "noNonNullAssertion": "off" + }, + "suspicious": { + "noShadowRestrictedNames": "off", + "noArrayIndexKey": "off" + }, + "security": { + "noDangerouslySetInnerHtml": "off" + }, + "complexity": { + "noUselessFragments": "off" + } + } + } +} diff --git a/bun.lockb b/bun.lockb new file mode 100755 index 0000000000000000000000000000000000000000..e78480a636818603738396fe9262286c9e06557d GIT binary patch literal 503528 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 *%f;G_8l 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 + You can place assets where you wish - whether in a root `docs/assets` directory or co-located next to your markdown. + \ No newline at end of file diff --git a/docs/assets/github-bot-comment.png b/docs/assets/github-bot-comment.png new file mode 100644 index 0000000000000000000000000000000000000000..679fe6ca484c2142e5281b6930b314af1b87b074 GIT binary patch literal 34959 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 a@J=KjUosMk;uWIrKKvib*g&!X literal 0 HcmV?d00001 diff --git a/docs/assets/local-preview/step-1.png b/docs/assets/local-preview/step-1.png new file mode 100644 index 0000000000000000000000000000000000000000..3e20bb28e5e05ba608366bcd3e564bac707313e8 GIT binary patch literal 66587 zcmeFZWmF#9(k+Yx_uvpb!8N$M1lQp14gntAg1aQRI|O%!;O_439^7vy`@HAfXMf}S zb;r2B&JRWytI1m3)wQZ>%{i+>V^N9 z1q>K3%09k~$snE-nSWgIjh_4WAN@7IuNn1E z0UR0b^pSrU;-^5r)f~iLwo=-4lqV%6v^oX}v|Hridnx8lso)J}SD$=x?>OZdl z=EeK3c`5&|%!>(YG?0qMTC6HEkqs5YEdDuH<{Na#+h@q`;G(aK)uASEZ|=4(_sY-R z@83F~@pk7)@p0Jg;}G(CS{|{=Aqy*`@=Sb-N`)NXiC-^FfC_oOzsf4iw`AHNh+1ZEo-b- zFvc<-4Q`h68r)9u4NmlkmBVA9{=RbsaD7j;7xjhZ(eoRHD*+wwBN3Mf4A4tU~?!{-Y#g^g7m4E>p%bw9el+z8@OI7*xy-7btows%Og% zy(%uJAKEIMxMXZkT%t@$AhyV{zIN3heJ|h?s+;L5E?}_@}puukReOD>Ri_Y3)Nz=1Rg9?k6W9QU%B* zogErjWTjci;@=<4JINOgs?wuAyjl5ZQA2JpeSTKBK1cL36RO>A9YR>Y&@BSyZ|_?K z7rb(Gy@I4wK1a5ga*CYoy#W;RsZ&>~>yS{btbQS+et1LC`Q9^Bx1>7eONPh!j)D8r zL&}*!FW6=ul)?Tg*ALbZs^@YB{-+7IO_Vzx<(JioCZ|KQu{zVU)!-AP^oYN20W8?y z3BmH5g7p@+94K*nRroh>jwj1_D%5dEGnD#;5c;DZh1XvV(4X2@1xjjWgJY_&>gX+D zP|kEGiS2hc64X*x68uZRrD6`jl164#&b*Sx5f(x&oddwjs3 z^MuepeEMOvLHn;8IOoTbNcxy})&H{O{0kSh+ITE-no4PFcwq|dbJzQjZ$G^j9XZOi ze8Upx#pYdINuA)o(`h2NF{E#GbOjw+32;nvN$rNu?=)fsgv}{mXJ4ZC%5|r4*H=!^ z{R&vzw_6G6IV#uU@Og;f-kjJfz|tN zsQ)|FH{~rLUg-6}Q_yPGDLuk*H4^ znXTmKmF&FY_@eHzixT2CyG&6J@ zJ6&

+V;WbZ_^5?k%2Uuz$LYv3Ej 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 literal 0 HcmV?d00001 diff --git a/docs/assets/local-preview/step-3.png b/docs/assets/local-preview/step-3.png new file mode 100644 index 0000000000000000000000000000000000000000..6521762c69538979a8e4bb109c27e9450b8bc279 GIT binary patch literal 74495 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

  • @;c}|f?{)kyJr- zzHi6NbZco2ZVMgnzMwXrk2F4`OZP%k0pwC@01d`1&2;1Il?Z-aQ&?Z~D}C^5x(i`c zc6Ro;3J*?UgDRYjBZ^4W%M}>DB;${x22XMbLg1x@L}1_Gpz7FBvsoCfBqkZ{+D|0S zcih#~9n|ms`W)&o-yPstyS+hXoRyT6T%TzdA7`(|Ti@^9_^J>g|IPcV{q_nmYcR#R zi0J;34A%f7;GAQ(KbFl`G6QZ@ArOIOPdm{1#=65Hf;Y>s6FOJxM(Ouh=|(iBtmjSE zMv45w&CM;Zj*zWe#^GmUqpZD~o4+grYc~V_&z8DI!Owp0Uwl6Eew1}0Czu;u)9q%GNW{ZEFOS{B^AKDbu|tFXcb*sI!9;8z+m)7Z&OF7nw(s6O z>p_@gA>3A)MO1YJj2bGVTO8kT1e_1T!V)>!mxd|Qg}u8rdL!9w_TIas4tW%*Y|(ui zj>BX#Xz2>sczi(|p`9zItricOdf$Jtw}l=YGIie8(yS3=J8=hycWKrYH)G=+vq!0qT~6tx}>x1}1;lu4|bC+A<5&L-fpXIVXh3%7jKc~xm9 zFLnPiJc?1Bv97+kJp_;Luf+!Rqpu%_=}=hia1yord=>ETIx+)psXBiccLj$qMAH$M z4aW*%GlqVSD?T}ccTE>*miye3x`eO&x~%aDknD>V#8&wuljHEgithjP0xWmh=<*a@ z{HiHb-XQum8uh&YH%(Abkl;w#efqG0442i63OE3xsN}|pyDOB4QZZe)y`j1&yi;qd zWkPbgaQ4#;oMe@pn~~L^*yKkodksKWz`L(tdUL=fD zpWYytK84_-V3P4j0@DuP(Af$B+LM^AWd=cJqiH&bBDDgJ!s+}#(2{^}qi=@0+0zi< zOnP8s@XtEtBw)t!1u`x?O~kiUxJxmCj{q1@-Q|Dnq~2YO(oE^goJT0f|JRNZ7*QEO z=|f-aKUPdAmyN|@B-+(!9mtrdL1&1U85bc4(7_${>X+nH= zv!V!(rceF9^EF$kXv4_RMOxVkXI18DeD1Ey=XQ8g1iaB~%M7y3$Bpup_lbrQcnI;$_BE>AF?OBXG3!LGd=M3D z=V>cvp2Jm{xO5Z;O%j(yso3x`xKTY3x2@6jFcW#HAet`fy#?-6(d@^-;SyaQT}%kB z^k8h6pY0a`()t`*cB7uQpC+;nn|+1|gu(ulc!5gJc##<|K^?|9he0#Mq!QSyd%Whs zwRS5;qemj@xA^p0&(w=Ff{ONy$c6r{Sdz(JCGlC1mg+bArwZ1*vz#)|SI(wY$&(Ki zthFNx(1&7>u)Ciq-Fd_9QiM*if78lC(|t-yw+rQoMSAL#ArM*J| zi9mjk@s=8|W@H8vFcAXtn6ce>dH;Nl#wy?F(r_Xzq2N&b;Iz$ra&pp^?t9dB>vpVE zu0nv%to1tJ<%OyZqtthQlqj&Lf?kt7sHMd~2>~NzoVq-kmjA+pWIJ;JoEYDyohi`{ zcRyXvk{IME9N~DSyiCJC@3IqYt?iV5Bjk1UY`SPx4MDlhF~>YKP|u<0ICnD6=lf8+ z-3+LK8-Qn?rdPLVBE1B+paNsYe-Qr4paTm`psQwmVsJi~LNV?Q>!`NUM1BEA^+6|M zZEx|uRipnv9uR~Tu&~dYz-w32(6h{cM&;NuR6lnQQz$lQozYS#nz2!C5tB$3Ra7A7 zG!-iS(h5~)iYF_JURA2xW;36yp%M1J`P0Hm=_3_R66xu7Yy`|jXrG1yv*b7kSslCM zSjft~7c>wos2`1c71byoa)KtJ{@bLt{Z5~icBe8^r>U|yoNGKs^|3IQVosdTHXX9R z-+hS?Zf;CwX;?ov2+JANFuIxQ=X2VwDwmlEpas`WWSjE6?;>DRRtaS5Em48&K_iI+g_}L|QH1`$R5~Kzgpy7XQ0>axqKcQ8q(5iv^o`g2 zJxoOv30KS2%}^o3I#pf8B$M`Mo2bUAlHs5r*l4=p$U&lpuR_l3LGRhtc&WUsv0X`% zuM>==qu$9ZTvTz7fj0LX&{>rK>99d(e0`R~=Xk|7jmI#`>$7OC*W%33cAq<(5FYUA zf@Fox^U+>0h&wKIu`=^CdcLv{L5>6}e)n0EyXX3iPhRaP=!u z9R^8Qqnllk)%$0>H;24cmg8z*x47beAFQvW5uq={6*Gj6Q~1xzAqYlt0p~V%w(Bkb zJC*feU@?U}{By-a4iisqpJtbLr~s43n5#Y5fLYW-C~^U5i+T`0TpGDx(dW0FD=RD3 z)5B^7D#jgu7__SFh4ou+%Hrk3!o04?`7+qZ`RO!E7m4}Y>1pN3BY_(wN!Nx1=+s&e zZD!17Yf^Sa5{a}KafJI?`Rmo6eLcx|K+>bxVbQAlgc8S+%v*3gh|?OC-Ak-V;bC6^2I_v3DH}ViEU?&A4oROywct zV7RO$NHQJ$;-^Zdm=6MXM)AuM0)7MMaG_eoi6_3HRINF{YPOgoE&Bau6}e>gLDRA5 zugvHBJP)UWz;W_W$?)WlkO8cNmC(47h5TPku;AMXn$W2+t-)B0LzHHolBA-wOlY=5 z=!|qamAGFGua|)j>KksEsb?$cJl=7n1D3=M{B95L?z}hu{yUc;p_YtjPZg{!H>zhk z7{;@nsNx@pE%F19?AMj$C09*oY=+rYJ-fHTrr8ID13t^TqFpK^=Fbz~ez|4pUg~SL zScjlx{HrwU#fg7YczH83oV@p&l-nv(Vd(~k4HcqZsHR>NH&a#OhxKH>*Lt z^~F&bIkyHPWh6m3kcw^SQDPgD;p6we_+Q7+Wo?#2fm!uVNP`)4;`KdYslh;0HQb*W z)~YsbX1~H`)5lE(Q1c%5e@2az@pnype0EFh8hSHgzJLXhkc& zhXEGGg#(KdZlhb90M4r(!)Ma4X4a~DalG8p-RtWqBG2}_giF}#1o}fX5!-G3%At}2 z#-!FhxY!$I{4ZaNmv1vwNIz>D5C>N@a&v!u6YPsZ{<*Gwu|CTCPKp;e;|CxIIR_ z5!q1MTFYsTVM=licfa9uRS%d?;SJ|HowT2C1V#5ecTu<#9t+#=3gfP@0-qK+?8HXK z<|1gl!x{Roq-x6|kkmCwXl*=^6io zZpVc@G2(mrxd)N(t$1}*<}VS=q6nn>o38^?Bnbj0$gFyG8PIi1GGVmNAk6MVT?0=n zW^AdEeuIp+-+WSbl{gvlKDLYPEaln#@`QhDNyP9@=Cp!pyL`+4Rxn{Qyd9R9_O?^d zMBfM)bW3&K`QWyV5kV#OYZn1M#WoGF~()Yy-o-wUXn(uTg%L5Ec24-9EL zIh^-k5~N^wu6-sG^1K)-mQsYQxLQ97yqLDvLWe-t@)z8!RhWxCWK=@>yB5@GMqsp!3-JO$5wZG|CvdO^|(cSxG z&fXiPIlJ33f@1|FG^LNaKtQ$uYm=hTXK*4}i7E<959o2D;?+BDs!@sir``C~fAjF8 z@{U{UU*_+Rrt95g;GEj?&;2e6y-_dHryk3oqgS5;dj&GS5B>on!TT=z9xUsG| zG5X2Cj&(Xz%2@yAbhddxVArlvN(HP-5+me}DjD89N{q3HpjCjNNmM z6CKq^wZTlTB7y@62UN)8Jjtet70G?gNK>!DeVotPX{av5{q7_)$;^`PTkxMB(@TwR z1#8U{lFgo%s-YQuO&Xp-nfDE@M_*F{%pl<}nwvb%3zj+U?CcOM7DTAl9C~WY4hY%! z^rC_rvI|XS?FtM5*P~*nl5Aue`B^9)$w;HmlCP7Q{4q^Y@dYIxeVe_7=V;rpDu9xL z`;ajpZ|YsHt%2xRi~=@{%GrK}aV0=*d-lhHai^bZa4Vi(oivn)t*iSSHuY*UjD)jr z8Ur&_h|e)%QB#8_g~#Qrm5j?w638~9giHoL2Bg7VrP+d*-@iK###l33|5IQ&GP})^ zd~&^ErdFs&;<7i@xug6T_SvT6bC(gudK zsCP)SWnWY?IlOPeh(DNr;IUiG*U*c(*5uGr(ddg=b6Y0`L*#~%Ta~;GAmbB%J{N84 zZw<#&0=M#)4F2aKnpUxUGH>*Q+lU;2KMgbBmhn>s+&YiRX4XzJ11v|9;mn^?F}^E7 z$W6W{1951raW-s!i@{nBuu)ae^ZalcSE zUm#S*%u21xoZqb@8P)@!s&b=lj>T3t&Ee#jwfKonmgYo`W95!Uj90O@(uy{D5r;9~ ztzY==_h4qHzG$XIBj`z-%v1k(esLidp46HTsxCK{Du`7DmgoD(m&PI#mv5&4;5pB< zUAmD@WF&}V)3wBasIZYJuv|XgZJ{qNt*ovGqW4^f;by$Tc2(A8W7g-Q#HJKhE1Dh{ z{at*-pzGa7g@`Qyb#*)IqCTj82F&*DJG2iw5?vZwoXUR4l1RD${QZ@)DI3Qc{u!@_ zG$76E3$jZ2I*r=#?-#iLoUE4`xcQtojU$6}tHT`cJ`e`$KQl)=CV-6imO;cXQ({)^47#4wM`; zjW2m>JSeyjJU>4VtaRdfFa2w*xOONCR;^AqdE5UpmPMyV447|!0$3rz%{Q!g<}*Vr z1~p{It@Oh6^E^d9pF7IwY--unN1a+w$~%6fD8GBp%hiBLY+M?JO{Fm=jV8YNn!{je zg{YIWZgh;D6)E+iZv_?k>Xk2l=Sk-bAkGo0ozF0xs^1ge&HPE!(ffp@J>z?x8_xJ` zfaCEyN^{MjK!$T-h2==@t}t|iR!;JFSI96V53ngK7cASc=!QW~F6$}c@$6ouBct2x zVXNx<@4LbfNB!m-%&C?L$93R-{<@zcPgh#-z5g|+@0(chO@hnJ46$7NrIFD0XdY{q zVK|AKOxOpmd^{0KG`hCe@IsT-K&5%@oQPHVc0)e-%!N%H6>@e?E!qggFUzQy*|L?d zliMQp@Rbt!&4vpK!6F;(KjEA4Z;CX^J|(J{*dL^4GwytTW;2zKDih0EvV1EY{3D^< zs6d1%o{jUUo*o=?DBvtMLe3u>Xf1xWwRPXTJFVzSC^$T;}J%mM3idTRodvf+mAK9)vAyDT+NQ zPDmET?*?5K)}0+ZJ11aL@5zs1?cw)uv~3p)9MAStgzx<_wlfr?kCWO~&C7o+){q{h-^NZdjc1Lf3X^K2y9z9uOpD$^=A>KGm# zw)}_7_03K^v6Faiu{2|RC&Gp0NzZX3#At^bx+CIKusa>A9>u^SOnR*H(x?iDiXM`<9%g7a3&K9T8rvU70NwC}Sy&NLy+YL-1?yJ>jeqMu7Iw z*Ns5r0?YhWDnoiat1pq7m&0VFc*NPst#fxW&;D+1`~yX9AM{2T1+dag9w*+RP>fQ4 z3?dfg3j7L_;fSi;$&KttY<(f$2x_SZ6(?j5;AZhN{9K+=bdsmUjQ%6=W}g1`4CP(I zvjF`UR!YKH|My>k4*;Ki{{O*ezZ$$%&iZt9cg-mT2CuS;oW=Gor< zFsrhjCIxu2?!a@Hn3l?%0Vqzv@YI>zxaSk#$n0+~O8(Y;scV(es__MwmeaE>S$7YQ zmwU7#im;K?&TA*L&So~s|6WHNu$DTO70duusztV#%n`3NWr{JZ)7 z`ceX@l+qlr39}eI`Z8B;oSYrme*UyhUPQosu1Ij6Q!$))qd$dJ3IUh)&R5ufPa`n_ z;tOQd6BeOYf8MsRKt`uX{#fe2JUVUlR=MMoR=tsS2AkyQvbO`g&oD*Un^6x1tUGFU z=mF#!p%^3+0CO3-au?L4b1$aDAhj?*e*42@Y%rFIC{4%%85C0L3q7zWr4{)abT z$2RtXyZK~}L`O#_mn0;Q&<`g8BOA1MmESZOUL#%TUhW`v{*l=&HgbzKjgHs2PEpZ|(CO6A6_EiNt*EB}YtVKH zn80OojZk_r@=D0Z{@*5Jj3 z0Xdn+_Cuq>HiLS>8D53yVD2_fD&K>mpP});3KOa7J?l8MtoA!O%AVf(YD&_HFUH+Aj+* zA3NFiw7*>bk|OMadwY4v4ISMX&(3yPxadn`d9~gh8B_}bNp_0x6!!v9=6O|i)t75D z0)QRF>WZKsE7Nc8NL%tL#dgBE@LbgF$tgIsHZ_!g`>6;c}u4Y-O8YI}yvg9q)&A7Kfkr3}4)4XFVd z)_~7>C*!nIVcFSJy(V-E@#0swoN@;YWZ;075$PE9?W!**y7Vth4WM zUo(Y`6N8{%?@VO4EGEc-2WSVV<7s{pPSYMg(Ex|tbrf!9_<8)ObSxt#aG0R5#f}vI z%`hReQ?k&>hUEnwlLm7g1{o4|WbItFlVHj_!OVlmttbX#(=cLT{4#@9l`U3-@|Uu4 z%v|W9|7BbSoFBaAlonfD@HogzpXhivK*uAVBdV=thajVyK8YMAlC4Mqe+};i7F)dW zmX|5*kC(p?z^fc9tbaXmH-IISo40!b{5{InfcmFY2;%Rzapb%6QFemgzIWy1q`Vf; z=eHMY2lbp+Ye5~qun`+Q5i00~TAnSp*r2znJ#swhz0S6|LIz6^#OcwYuJu9<3Q+0! z2o!G$F27C>Y|T}|6x9!fy>E*?>@|EtT?8*Gwfcx}4jSNOOJb-WN0gP7{oDBbH;LCb z3eDp7^0+&Gw59JiH1AvqcgGlj@BB_QnocF^f5o%V@FggsFOEA1EeycRenaXpej-CAf7w4qP>7(8 zC}$fX_S8?{UXj0PWHP18jqDwNe&gKXpMZ)(u{2xXYS(=&O&kwPbOJiseXN%%{#`j4 z30x}pAdOX9VH4~qqzZ++{~Y~M%%sWvbc!3w54l*5dVP-#qKtTok|9r<=+%Fl2)-|Z zqx?<^5Dv;dc-d^qqGL1@X2Iui_TzL>IlFi5`rIsm(=+!*=MgDjT8x%js*ZRx3Ol)5 zHiirOxjqj7&S4as6MHA(;$wo2S8t&WVQuF`qwG#MYRTdRz9p*I+*S|%t~R>sKu*8c zf=e#>zldy7kq?5n@XdK3q;1S2tQhO&1pW{??pDMm2)l3q1f7kLyjY-yLfj>Ys|zJv z*r#jrGu~9~A6~1AlxsfM1G{4VYL$EMwGNuOTDx?#8Q@gbn4!Jr{mb+1VGVwKqb@@538?Rh42Wk|xR8NOQ=`T>#;X(`4?HZ+R?i7#Rt7_?{ zC9yawV(698QX8BD*Zxs>OTB}OK)m>#Aj>0=9-XQ`;g+g4zwhF!$H$SV8@(@XQlQv_ z6*pOibs2hNSrS%%Mt>mzER^!>Xja%a2R zxbNiv+FXX(YNmK+vN5P35aO0x%hlqWds%I&oFk)N-ElCKIEm!zyRplnThp_}6kiUM zVfPq{G_q;utFMpa(H)I?6~6pp^Yuv<9n~k3A!$d2;I7626gIfi!vy5*n9p=uP=} zsLcu17Tz4pVsjh`vrru(WM>B}`lk(f%Kml-<1>8l7;xSgljmpq1BP%^vHwxXb!x}JRxejE39cOqiCGJq&{b`a z)5f3_{)EZRqTlph!0iw^TV_ynVheF^@r}$Be_6;D$h9+FwDQbmp{nW{)W<8}w)=9I zWT9dgyUx=+L#LWlI)cH|5+JP6`EzGujjlBqBau2wB2J zanC2RS)iW>L$Jn9wS8gS?Z>0SQ%t)8yS1Ziw@s;mkU{<;>hnRopNQ#hQu6VweV znSLQ3kY=bgcR{fbMk&cMs0w3t?FOpV)9Vy7Sf~(=OIfJGz~9a#-=i){GM`#)-bB2e zqoWA^O4Ec?VC))@hlT=`&%!did@gd*AjA zX+Ca^q`tB}I;wMjAP0C^Xb?7K;iQSe!r!&*A+e%rM=?_P0XTh86*5OFm-3Td`CXBO z`v2x|E!~)&)oUOdY%z*tYLpl_T%AxAYaLl~?qHH0_AH_jmO6>H!9Z?4n%V2r0tPfQ$XLicVXa%;NfcWzNSkHrK=&Oi*RGkaXy zywZTC=z5idpo2(tZO*>0)%NJ!|LFzzH7ODL zWm=2_7f$Xi)w1D>d%Xi-P`CF02BqNUp^Qad$@VK2;CEeovDobN3aAoQ@?(!gWzhMs z0#U!-2%4EPBPSI`9snCnBY}l!rx`a8%ho#*ObtNsdLny(cA{dQC}#R-Iz|0zf!y79 zlmRa>yNRMRBPvZtRYO~gb*ekG6k^kTBqvRWhyBy0j>ofu{-5^VGAydEZ6B7D4k=MO zq(xegK@bT+Qt2+~?x8_K8bLZmI;CqsK)OM?MY>_=dKY-#&vW0;*Z*<6pMHEA_RQ?H z_u4D2>%7kM9MuLBpFWjWLaP6Pj2>1vlr^}nu&ND}%-@4=4Pk3*ry^`Taa3>kv+2v2 z-Fm_*S8?nfE)qV7bW>gIU;=EJ@zLaDE(!&yitYU%5qkvX*93KGMhEHMIZ^V3R7g+7lx#w|#{j7h; z9!`Enal`h93t*u0Y4`l*PR3W<^)cL?5kZ6|x+`>LyEDU2^byc0a#y^%0;Sbt21^sa z(L(sk&Y(H{vwIf-j?dlK(h~>b1YI${$)ycF3yuwx+ieQlY#lNUU9(ahAH z-;iE1A+tjFTC)<-sA`LUFhkUsr=+JsqC^G+&R&;9k$v5>Qw}7FI9Bil~?hUOmEDS727i=O$*?&V^pmIT-iG z<11u}b3J9%-#jC8rI1J~QCNCnhLDPManjPUnmJYc`*&7IyEb2sadfSrTKV!1kgWa^ z><6{}{1eI4cf<`*t?F0pa`B0Kj@Po?Vy4cKAcUCpMNj4e(K=5jrnH-* zcw@fsZ;o0Ax!QjyNc$AS^e*3$dN@nEgt+EA5!~!bQG-p2+wGWD^SPIDQPpGy_~Dr4 zAmrDr`AOjov}OEPMUVLqS+x&mua-LR1Mq^T0>BC%t+a*60FHqdnKdc>h1m~)cRvjov=_iO-ny~8)sQ>hGM}wuQ_Ox_w31U>U!O;1TK6iq7k_iK zAY$re-~7BBwwHre8QyH&Njpf*!$kS$7mnA*DbWe&eyp-LuFaMgj8X@-1(QfjSCK1S z=`_0dAY5IT>=>Sha<0lK#}H-?qzTd3{b7`hq@vb_d4BS_x_IQqMQ=#NqK(MuCG#p| ztGe21_7RzYi!hP#-zV#rid>xCr{2=qO77{|X!b=ZZ*#~%0uk#?j6jxTl%nM>)gk9{ z98$kRitW;hqvKA23cC`lXjBerXM{jF>5Lmivv`mdVm3PTL?%&y5N@H?`C`0Sl;KZr z6u~W`so~TBJ$t}q{PtbbX{6{>rpHD21_|i{`0jjDAk6Lh^~egF1xVee zHS?3%-j*K4!yW}HWCj#Kmaqa(yYxAGV(WjeMYVpYj!Ttox|yfDD#F$`aB0 zt#tzY@&iJxZbr-65R3tOv}H9jJvc1QOHG1{?mR4N<~os|CKys(9cLR+pI+rxR27@f zdVv6SbItSrSV%sMdayHf-nf{UUX_7d{PPn*L7QWt+5}X*)sd5L*skeSkGTbm_P|k2 zZa}wbMC54o>^3fH^atx#wfrgsl)<0j$Md^UJb3c<;ggf!GQRAC-)xaOO9j_awx_Z( zCj*_;!t8ctP*kfui_~X6j3yp6H$|bUNNE|R{T$F~L|()0j-n+&#dTD$-!TkdsV*)+ zjo7roU(CWDNagp-dp8-fYSVh~8YCi`0KxR%TrpT?x&>gc5J(UB3_G7C3%Y7>FBE2G@_>@{1-T!H|4o`P*M2xHS!T*6gD+s{x z{?GKcAQ*W3|31$k7zU|N6Meq?$FbX&=_%m2Q!MMJ|N3;g_frtVISgSHBLB}B{(f;A z9Iq%heDj~@2Jbjf|47dX`JhYx@Am%Hj0pocoVJe>3~kzsQsN;jRubkVo<2{$yt5jCia)a&UnvTB%%c2uHCy@{JGT%z+^Ht&kiJ0 z1^K_e{$y5Jc75&XvbP}gRI4rsRK3pjvO@_Ww17(KG0UTX$X0~XISHu@tGJ%r_ zXjc3|8v$noZ`KAtsq8a@ba59ft;r=^gU`BUU_dVVKot!I{uJE)39 z+uv*U*qW(@^lq%1z~JuMGd25>{N~Dr{qg8|ia7z%?+igwh<$OqEe29ODoggjxHu9) zSc80?qLE=wEE0e)Tnof_evwVIrW4w}_l zegrQU?;RaE=JrM=$54sT{3=w!1nMtzWscO;)QLt*OhD{@P`K#_RS1q@qF&iw>W~Os zaj|+^)&B2@@)drK1$Ery5&lf~X0IdQ$f;EuFsKxEIu3k-&rVMPn_&C&avhW6 zrRPKB+4MAKm~+@;K9RCNOunAqyNKrIv{hkdD048(*;==@U?Pc6pRr#EZuwj}>250dKEcEH(;l~iENqcs3sDL!EHoqec<${CSKc?&R@My!^kpJL zUdx%FIQF#r*w2HErEQqi@S?YVGfpu+7e7dd%Uh zo^)Ba{Y%oZVl8qrSmZtdop1Ux8fW`T%Pov^h%g0Zz6yJKA z&o_AmW=Rw0QFIRq01e1TK|l-{EgH@l@D^~~yuVq61#Q+}5?g!^v?9s8WCb#JgGYoQ zC`hElw47KnkvjqZ_fE<*-~o6)dSC*TEYT@nDcbV&0GtXhi&OG}RR10MSETuq-%Po9 zektIPde+&saURX@|8A22nDE}tl}1f%?c!n1K%|%msH6prmuN5T%ua6zj-)esy>!u~ z1X@z_6H-6>S3Za+Ky#F}pt-Tflc99ui-MVAPRq!U`rH$%Bb*$&n_fgnvUead2an9~ z1{1#}t0!)6?;28BDh?P*d*5poli}_u8Bb9pF{h4ZxIOy>9it) zd*YhzF)J5ZG_-H`nb*`kMOP#ZPX)ee^ncjp2Zu)d9OnR5Y`frne7ya_L40fCyPpz+ z8;Pr{D-cDwW>f`dnGQzlyt0^s-v@R1Pv9}4)V zP5-chiQ2WS$UF{%6;d;GOjV8%8$=Na`;9~!Gp32iZ7S=#LV@&P#D25X>hA)caC?DA z8+;#ozjP;XRX+*&xHSpG1fs~{-WhcfK<-g#-Fd6xrCHmebo2{(xwI<22OPBFBqZj^ zn@`6Fyk+xh=>6l}wzd!w`MtnbjOrB+ze+^tojhtqZ$_^_#wa-$8R$%T5dj-{1;2Vc zUZU3#Zb{ADI@XpgB3I=QNhGx#>6|O>(lJYgHjqrp4V;7Wi?3HfOMD_1g# zM$9`68*DnJ%*6Tcz>=84i&gM^`HWP?}tM{85Sygo)RsX@7n|}TCF;` za`lHue}|RcR8nTl#duU0gB*py?9^yJl+(CeY17H&>im|^oZtB5P#!3h@O3LEG;8gb za?g3?*KI);k(Isze;n0 zuBN2<3rk$-#eh~bY-VwjRmBH>c-RVPrhcQe@AKcQ0kT%F%Pyc0>2JpN;f%Kp5r{s3 ze>++4up^4(2=xQ=>P%s%ogIPIPpxWeQUL~K;|d3=q2KLco9!iC!~}q8T{%@iqVBeV z!n5{f*L42@{r+O>eZYD`rF`l6{-{K~QUC~d+R|6oFb584LT}3_rcy#^cb$v;1W&;) zRj?fXdATc^Z%|Ba3r4;s0@$tmtC#}*Dj7ntq1W;hre-+t;5%& z0j;eBZ+xiioznlh^ru|2-uUnDA#X`O zG3jJ{O&npk?*`|#enOmU00ureA5MYz-EuyK{`yxs3D~f2g|~egpZiAq>;*l}kpcMt zqd!ZeQCu103;m4@Zh{wmftA#5YG%i{%|VD7?#LX(>o;I2h7&LDxpE>a2E3Yjfh8gr z5F<74nc88ZUbgY(bYHYkhos_*1QH8h>6ce*NVa{6O;plj79ZNWE+LcsKWtQwQxj9& zH&?I$yQwXz18bOH1RYvdeY-z~Ehp_ro2cXXX-6h{GX#Pl6J|5#T_|+d>(Br8I;=9o zIXv%PS$u$nGLUuetkF{o4GbRAXuNbkJ3#qv(9wK#;cR<(`qJh6&ztn+9vX(Mo){l2 z8E&oGcTX|;H&Vg{Lo=sYI)k%-&Ri744CG8>TVzGmDki_y_`bdUGGzv#lh8Cu|o$qMFTm`H}R+;8h;OBL}XiftSulUL)@OcO=?ozf550##%@2zZrG(LS)lBQ3`(m@lOs6@&>+J_(#bL^E6qtS_JzIX!HLu#-VZ4F-a1#1D24~(@>$RW_L8B6o}?ugui{T?gNH}2i}jG|Ynbt6(&zOnAT z0A+!T{zu6X(msQP6I>9UGUep^InQrUAUY>Yr|xRLsRRqV#@8V(H#eRfUW>%fO!i4; zJW!GK5@k(HLxe zuF_z%UcB{uBes0eQ=p^?>y*I-VXYZ82|Ig|Fg1qe3W) zdG|b}ko!HguJ_^Z^G2w|f@3zCY9EG-75zMb-zKH2V|ufUc>Ty0s4(dp?AeNQNzPeu z=*c}7FJ$PzervNm5F!?yIqJ*?5yO!M!DefwoqAbP>1v)GcCaxj-6=jfUaXBhyb+r* zTl!L^#D{FsK5bw((rylHxT>6nIh)tJKi4{>BcwC zsDU`-&se6O&8TdcL1S1{5Kz1r4Uc))+2t;;PV_WuFL_M-+d;QfFoU3rKsremKZiTyIx%>P}7yKQ;J+p>t|-$*=#XGiq(-Y?DHpb2p&l zgcdK#Py4k=TRexsSIHrLGna+zu*Z8pyLmB-)T@<3s>xoQ^QA)Ei18_2^rneG=`&x4 ze+}S8U5?ai8Gg*<_B3FWx(ONZXbaBi1Bg3-{%G{cp2%d0LdZoK7KS?un4H%10~d-^ zh!|U`WCWy&Vn~e*Hz(`K-X?k9O_q?}YFi5tO3F$`p`9AI5YmOSdtI=vb z>z;?i-uFw5OajCDWtw>Z{ul`*%nYk?37l=LdkLswBQ2}F37Nj%$i|LaIIkMl9Ruu_F9K@)vgfUT z(tB9*{gcDIB;HT|k!84ZdHxFk4xu7P$wgdtOG9H@j zU^HO+c!q?2cq!&<^sD{|EmvqwIx>q*G!>bbpVco}kArwb_k(NkB~0oI^9FQe!EjS> z#Ga0>iyEO{8_b_?m35CcOt-IN2aIYWj5?$3*wW^wYGd_OyQ{I1M6B>qG{Nc=9iYo| zm&;MTy`97#6ZkTIoKWK>r!#O~Jr)!1Nkc+~xea)youfe35(3CZBK1i<>4f?1imCAu zjvEtj3Sv01yynY|BQV})BPjUh6zQdBQ;#TXVH=@1d5K!5gWJVntHk=MXsxlV?iRau z`GjlDe|5}Y_V&TcQ{{puFG92g$P(T%J`2bY1_oXErA`xd`h~&1f)k%9Q9lZ}1qw-C z4Ru4Om-L|hAI(-g*;e_%A5})BSkVF65RJoaUwbceh(-3YWGUCL(K3diit2Zb#;(Pt zOOFEl9u>A+6bz)3%xOd(-DTK5>3~RpA{Md=$dW!7$PB>I0X5W;fK(|21q&KDfV7>B z%(j+*N^0)YX$MGxzOhEuX|y78-WGjf<;2HWC)Fw{XP&wze8{Rjd&DvF4^@}MKSJ)4 z!cTD@-c1X4x!bY)&iqh~39tKhEayEyVnG!b+4zRQ!snGlnQe)7evA>YXDHx4EMI3d zh-u;Sb^XLpfmn3V&Y?eXrboLZp4PE)OQC{f4)JlgDZj%=nS|W6)pJ87h1PjXYzX$U ziqyz&QaJarq2Avd7lfgZ6h6EH37hw-fWNZEs1jllGT+D-2-^UUmeH?4u5Kkhzw7ILjK3@b5JNtM!v`@6kx*!Y zguT;OaZg*(L!8f1C!RsHS^*z2Uwwi%k#0S=cTM& z&&Y9pPjnar{2R z*g&0tczNb)w08Uyyl<6v-_9jF|X|{0#Y#qb73De+EO=tLPJSC ziYdB!twtoxI+h!h*PpQH!tc|CVj9XlMjy%~?RQ3`@gUD$U&Upe+KEU=a^I(SnO@7Y zvtSF=UmN92ab8(#5D<+>F&&6El8awXbq^>de)-hK3|5{$T`Ms=++wfSm=*dMn6S%HLUkOO<-hkqXQbCJ5z4*lXLWjlzg- zyhLZl3ytkMUHZIM7sTukFPEEA_TZJ28)2uu7cemBabI*c#DgE^g zgN-qOh7sY2Sj z(QZNymXI%WJsI~<@Cwt7e><%*4Z6*dXkN&^N)?2vB13vqxV~a{Ilv_%L(4_ew3gF+abNntRI`=xBo*S&EHM;B+M+c&3nn?~MkyY`&$2H}_T9&p> zB`cG8{hBOxJ&3?Bl~zhH@UH7|iD!-%x1yJN~7|^npEro59HE@0|L-`RIR; zjD&B%3_rJ~9gDoX2JTxb(7hzO&-_KL0=ubXQ=)4u-YN%AffKDb63mBf@LjV%*=+quX8+fZUOmbw> ztYO?3D+v7gDf$PfOIYn#0inzjiuh9=^SKA0M?^uiv=3i@2Uy_2AgRgYB(I&bIlT1( z`jg8sQSXd9R-$20DGNx_t-;GZHs|m+^`04yuRxgspC_LSn5dDfSC^_;=?=_iTe`gt zp&+;a(1)fB`%}Bpuk#UDFD;yv8#8kY99T`(Pv#CS?Tu&nf!{qygS|WRz;GwHjh2Wk-Qb4+u;oE!d;ikkc0mLVfY;HK3^-vT~PftCWf*l6RR3L}Gcfx1A zH8&rXu2L$m_nuJ)A^J&pwVL(;A=6-?DW=6-8F~bTkZ|_f1pF7WWP+Y>G}l8S;Y9Ad z?>5bX1>U7VEU_IYdMngK48~r_yNq3Mm>0~=Yn+1Zt?@9t>&vn zcidtD&O&D-?g%IgeC=na?0}^d2=q7jOJG8Y&P3D6hO(%X=+8IK*0`@f@H8JLl$DM84k`@>5CG`}167dj zA2gCtY36`0%t|5$hFvzR$Cg0gg3PYtNq)|_y}NRZ`iX#E90)FLH^*dv^bC=RMY;Vx zrM3I%f}g$dP0m~bFwX;aOi;-b0Up8mrjAMbo7UaUanitaUXwwzGt6smpp|Ie?t5%8 z*Dz^9tV+&`fP@KE)Isk(@C@#gkHc53w!%*2wG2PqUs^gY(un6VM`c#IMmOsD;+IxJ z2|$E^FfR-FZT4|VH=M@;U~rO@o>`$N>#Q?bP38j;Gy6TAmoLc#N-1mYR-5M~aLOeH zcH~IpPL*#XAgR=oyZWlnGom0g5jm(oF}qec=}6A+mNR?ht3SyIegO-!)6UHACGVL7 zM?Y{^Ve2E=x#qW0g3oQzpyyx{O{2a~>ej4g@7W$oEajVCs!<7lO@i;}GN zYNfCIdQk z6}^93(s>47gFsL53Y3fF5sE$(>AWW;pQ=`%>@^4Gl3*luT)LJk*|-6T_~c>t-e`88 z#;v-*3n#B%IGG<`ysRzHRoYbf)186|tou}&C8l1g zgloFMPop+qZYMkBLSEM&Qy~`%82|p-xgwU)J=p1)jMbBw;LzS=9$XkyYQiN;Xl=DKmi+4ch=Z6~uT(yxC4Z~zWvpn}2G3BAoZQhB zBB;e#PCGFh{tUtwJ!*erJpi=1VdEt1+AR-nW!(NieD~G9!>Qey*JuN4YpPb%gOS%= zHI2*s2@oq~cSj0HmB`LFLPiCd(ZhhEw}RiHT)5e{Gm-wq81S8JnE_a<(q4ri@a`*W zk<$(AU3~OXk5e=5X*;l7c)vSTwp=ijGceAt6_9COO<{IDl{i|^8(iL?-N>X9P0<0& zSqc^_L2|G;R@e@3|6X@g_^uzYDbQcpa#h`_dp)WW&SAi?(7D+39*qb$Zxul88*UF8 zNZ7Okh5+Hc&Fl`rWS@oYLsEU{*+H8ya8z~YPZ+5&+<(Q>P-zqO^&yv;i#LkR z)+qHi5$hFr-gC!|P4{+?DrUO&jIE7k7JMHsQ`z-2Gua6yDhB?7&=*B84WH2y5Mij+ zbP|OSvp?&*i+w_e}&?%AeV92RuFT=OHO!^*pWc)8)6i~o8GQ}q} zMM{B5MXoX|+qO6%V?PIY3ObrAFaGHw*zoh5d2ZVW{Xy632n?CoG`M|cjE`qffR2a^ zm~?&$PpMn*JGswuIe<5OezF|~3QV_Nn=y2%y$KK`E`3@bbRqvo!;3u2H`|il03y~{;R;TeYKX7v}!%ulyr@x#S{^v|8hSeXw&PkTV}#(;+{Dvg zjm%$%Jpvuy@65Oc)>%>14w`uvoZ$8EOS0RflQr!oLZp2@@W^ zZ>r1N1ObBjn;AVUyjbyD15Oq(9CCrqEe*~li`DS$+iLhI?zvjohj;c3Qx#^#0a8_# z<05^t8kKhZzd1rCS&X_Ys!ueKiQe%aNE(Sw#u6m<{{)Xd(WC|-6$Vs zG)N$^j(-F{_&FbVqeu;V-8F1xQndbTl13~f|15z?G5ZHRk8|cI5o(NBAPUrq>%m3& ze6_L=1Kf%ja!_$n^|-YO#;29Y6ulVxfY}249Z21dxAX=_4k*oHvjA%%H9MI#^e*m) zGvg`vYR45rA_ZOTh-?bCyPiPoK|NhK2WLC9Sqy4K%&u0v65JJNbC#aQA^HT1oO5tO zvn<$fnOTXW^k#f9`N3tKxb@4gRK_Z22J3{)P(XC{qu@Ev*w5V7Fz5_jEWWUYA`P2eqW$c`@QHF z7|&(=!P^+aY%m&;&ctG-LIDK^BtXA^?l0xf0DHUKA1tjbMdZAGbLkm1c1Hj+U<$-q z-kzv^40YNqT-hh>jy+3_J)~BuF&laWj4G5YKa}9a9${E;5S!b>UlGC!8^H3S0{yni zuK5vIG3VBPvXh+nQk!2^gIBFGxY=}GNa9B^f0ug@o<2pUks6E^V-OF0bnAqxw;E2~ zp5Xy}SKduybaKK87-ZUjIq!G9R)NvYUlnThx74Fs3tJy)q30@$I_TveWI*Y$V-!zN ztx_>StyrUe>Qv}$GB?VtEy7}ptHpKG@ecjZ4d!s9Q;xp3Goj&hOb+ilrwrK&{KX@* zaAhz#)d`7)T2o`EXtsO|7YBpn*=RqlA&d%9F1$hu8JwxLdD1N0-K7#v+QilST-Le0 z7COvze&+Xhb#DG@cAz%%q=)~;zVW&&E1jf=y1xD-dwaS%hXB?w0+8GTRt?QebSMYQ z@!oKj>Ez)6mRqL_oZM&YVz;sHxG!TB3nz6y^c<6fP1e37Dd|yp z3B=MMcH)iw{^vl{oy8CiYwlthEiJc0x5rP{+OC}O-DwAZ61}i$Y}8k3tmgV~sJ{YV zR*B6af8p6HvYRMQd)4UWrOo>|t-OQ6i$*5V!AO06GRpaoEHChbi1m_j+RD_G3Y6i#H{Q1tm~%_A4}t-LegL2B`31ZhN^X- z*>$+N9Y&Gie@^qTQcH9m>ErKh;~=q3{&B=N6AAp5QYN;!oL+~`YSH3Z10U;!xxOf< z2{C*syDH^)95_|K-ED-`xePwuDd$ma`i}LS6?n~jfy%+N)10;>37)1!dY+vbi}%)T}yCe$^63g^vVOSD&VkIqEJb^>pTUt$dc|i z#x%aJy|Flu-!vHQ^VO9yeXHch0~0tN8Om-Cl`>H%xMz&bzj-d5&}#-<%MzJLpd+@S zAj5ut!*~GhL^uqQ#C-6@>0=PtIfvC$ovS6x||rAmC-H?G42vAAq-zt@0!DAci zIB@2;eD8E;vp)tBefx1?(qKiu9_XMBXRBErn?CTcZQ7Y~or1U(xjX5j>t=Gi(1MtM z*f=|kAk?_f*cl5>?*O;9FoTQ?vp+nvKtx8vdq|7uJNJ;3(emz|@exEy&@ySjanJ*x zG4LW+LU^#inAPFczy7~{!-odZR~uhk>_0w6B_H9Pt}>vy_VMr6{(fH!v_umc{J&?T z5>BT8ZKQr5M87-xznTdK9VGUUi2C1+g2TcP&<4aHgW&ce{`E05LVP@U@H6KBx)vyC z1KR$I;Xgix$4Eo9Mx^)tzpmv7v~d*bFZ;h|!=sXaEj-B5l6%|9|8sZ)w6Q^oneso4 zf*0vQ;O0Im;Qz + The path to the directory to check for issues. This should be the path to the root of the project. + + Defaults to the current directory. + + ``` + @docs.page/cli check my-project + ``` + \ No newline at end of file diff --git a/docs/cli/index.mdx b/docs/cli/index.mdx new file mode 100644 index 00000000..2c40304d --- /dev/null +++ b/docs/cli/index.mdx @@ -0,0 +1,24 @@ +--- +title: CLI +description: The CLI is a command-line interface for interacting with docs.page. +--- + +The docs.page CLI is a command-line interface for interacting with docs.page. It allows you to initialize a new project and check for issues with your documentation, +such as broken links. + +The CLI is published as an NPM package and can be installed globally using the following command: + +```bash +npm install -g @docs.page/cli +``` + +Alternatively, you can use `npx` to run the CLI without installing it globally: + +```bash +npx @docs.page/cli +``` + +## Commands + +- [`init`](/cli/init): Initialize a new project. +- [`check`](/cli/check): Check for issues with your documentation. \ No newline at end of file diff --git a/docs/cli/init.mdx b/docs/cli/init.mdx new file mode 100644 index 00000000..071ce3b8 --- /dev/null +++ b/docs/cli/init.mdx @@ -0,0 +1,25 @@ +--- +title: init +description: The `init` command initializes a new project. It creates a new directory with a basic project structure and configuration file. +--- + + +## Usage + +```bash +@docs.page/cli init [path] +``` + +The init command will fail if a `docs.json` file already exists in the specified directory. + +If the `docs/` directory exists, the command will not output example `.mdx` files. + +## Arguments + + + The path to the directory to initialize the project in. Defaults to the current directory. + + ``` + @docs.page/cli init my-project + ``` + \ No newline at end of file diff --git a/docs/components/accordion.mdx b/docs/components/accordion.mdx index e8be3bd6..fd321f7c 100644 --- a/docs/components/accordion.mdx +++ b/docs/components/accordion.mdx @@ -3,31 +3,56 @@ title: Accordion description: Display an accordion component with collapsible content panels. --- -# Accordion - -An accordion can be used to render collapsible content, useful for information which might not +Use the `` component to collapsible content, useful for information which might not be relevant to all users. -## Usage +## Example -Use the `` component to render an accordion, providing a `title` property. +This is collapsible content! ```jsx This is collapsible content! ``` -This is collapsible content! +## Props + + + The title of the accordion. + + +--- -### Default value + + Whether or not the accordion should be open by default. Defaults to `false`. + -Pass the `defaultOpen` prop to have the accordion open by default. +--- + + + The icon to display next to the accordion title. + + +## Accordion Groups + +To group accordions into a single display unit, use the `` component, with each +`` component as a child: + + + + This is collapsible content! + + + This is collapsible content! + + ```jsx - - This is collapsible content! - + + + This is collapsible content! + + + This is collapsible content! + + ``` - - - This is collapsible content! - diff --git a/docs/components/callouts.mdx b/docs/components/callouts.mdx index bcc34454..ffa9ccc3 100644 --- a/docs/components/callouts.mdx +++ b/docs/components/callouts.mdx @@ -3,11 +3,11 @@ title: Callouts description: Add callout boxes to your pages to display important information. --- -# Callouts +Use one of the callout components to draw attention to important information on your page, such as a success, warning, information or error message. -Callouts help break up the page flow by providing colorful boxes with text information to notifiy the user about something important on the page. +## Examples -## Info Callout +### Info Callout Displays a soft blue box with an info icon, useful for information based information. @@ -17,7 +17,7 @@ Displays a soft blue box with an info icon, useful for information based informa This draws attention to useful page information. ``` -## Warning Callout +### Warning Callout Displays a yellow box with a warning icon, useful for warning the user about something. @@ -27,7 +27,7 @@ Displays a yellow box with a warning icon, useful for warning the user about som This draws attention to a warning they should take notice of. ``` -## Error Callout +### Error Callout Displays a red box with an error icon, useful for loud pieces of information. @@ -37,7 +37,7 @@ Displays a red box with an error icon, useful for loud pieces of information. This draws attention to an error the user might run into if they don't pay attenion. ``` -## Success Callout +### Success Callout Displays a green box with a check icon, useful for showing the user they did something right. @@ -46,3 +46,4 @@ Displays a green box with a check icon, useful for showing the user they did som ```jsx This draws attention to a successful action the user has taken. ``` + diff --git a/docs/components/cards.mdx b/docs/components/cards.mdx new file mode 100644 index 00000000..8767aab7 --- /dev/null +++ b/docs/components/cards.mdx @@ -0,0 +1,94 @@ +--- +title: Cards +description: Display important content in a card, with an optional link. +--- + +Use the `` component to display data within a card. You can also use the `CardGroup` component to display multiple cards in a row. + +## Example + + + Install this package using npm or yarn. + + ```bash + npm install @myorg/my-package + ``` + + +````jsx + + Install this package using npm or yarn. + + ```bash + npm install @myorg/my-package + ``` + +```` + +Optionally, add a `href` prop to the `Card` component to make the card clickable. + + + Click here to learn more about this package. + + +````jsx + + Click here to learn more about this package. + +```` + +## Props + + + The title of the card. + + +--- + + + Whether this card should be clickable, and where it should link to. + + +--- + + + The icon to display next to the card title. + + + +## Card Groups + +To group cards into columns, use the `` component. + + + + Install this package using npm or yarn. + + + Read the documentation. + + + + +````jsx + + + Install this package using npm or yarn. + + ```bash + npm install @myorg/my-package + ``` + + + Click here to learn more about this package. + + +```` + +### Props + + + The number of columns to display the cards in. Defaults to `2`. + + + diff --git a/docs/components/code-blocks.mdx b/docs/components/code-blocks.mdx index 563888fc..dec3453c 100644 --- a/docs/components/code-blocks.mdx +++ b/docs/components/code-blocks.mdx @@ -3,36 +3,14 @@ title: Code Blocks description: Display code blocks with syntax highlighting. --- -# Code Blocks +Code Blocks are a great way to display code snippets in your documentation. Use the standard markdown syntax of three backticks +(```) to create a code block, or use the `` component. -Render code blocks inline or as a code snippet with syntax highlighting by enclosing them in backticks (`). +You can also specify the language of the code block to enable syntax highlighting, and other features such as a title. -## Inline Code +## Example -Code can be rendereed inline by enclosing it in single backticks (`). - -For example: `print("Hello World")`. - -This can be created by adding the following to your markdown: - -``` -For example: `print("Hello World")`. -``` - -## Code Snippets - -A fully syntax highlighted code block can be generated by using fenced code blocks, which are blocks -of code surrounded by three backticks on the lines above and below the code block. - -All code blocks provide a copy button in the top right corner of the code block when hovering, for example: - -```bash -echo "Hello World" -``` - -Following the backticks, you can optionally specify a language identifier to enable syntax highlighting: - -```javascript +```js export async function apiRequest(options) { const response = await fetch(options.url); const data = await response.json(); @@ -40,81 +18,122 @@ export async function apiRequest(options) { } ``` -The above code block was created with the following snippet: - -````text -```javascript -export async function apiRequest(options) { - // ... ```` - -Syntax highlighting is generated using [Shiki](https://github.com/shikijs/shiki). You can find a list of -[supported languages here](https://github.com/shikijs/shiki/blob/main/docs/languages.md#all-languages). - -### Adding a Title - -You can add a title to code blocks by adding an attribute to the opening backticks: - -```javascript title="Sending a request" +```js export async function apiRequest(options) { const response = await fetch(options.url); const data = await response.json(); return data; } ``` - -The above code block was created with the following snippet: - -````text -```javascript title="Sending a request" -export async function apiRequest(options) { - // ... ```` -## Code Groups +## Props -You can group multiple code blocks together by using the `` component. This is useful for showing -variations of the "same" code in a different language + + The title of the code block. - - ```javascript + ```` + ```js title="Logging: Hello World" console.log("Hello World"); ``` + ```` + + +## Advanced + +Code Blocks also support a number of other useful features, such as diffing, line highlighting and more. -```python -print('Hello World!') +### Diffing + +Diffing codeblocks enables you to visually compare the difference between code in a single code block. For example: + +```js +console.log('hewwo') // [!code --] +console.log('hello') // [!code ++] +console.log('goodbye') ``` -```dart -void main() { - print('Hello World!'); -} +To enable diffing, add the `// [!code --]` and `// [!code ++]` annotations to the end of each line: + +```` +```js +console.log('hewwo') // [\!code --] +console.log('hello') // [\!code ++] +console.log('goodbye') ``` +```` + +### Line Highlighting - +You can highlight specific lines in a code block, useful for calling out important lines of code. For example: -Specify each of the code blocks and their language as children of the component. +```js +console.log('hello') // [!code highlight] +console.log('world') +``` + +To highlight a line, add the `// [!code highlight]` annotation to the end of the line: ```` - - ```javascript - console.log("Hello World"); - ``` +```ts +console.log('hello') // [\!code highlight] +console.log('world') +``` +```` - ```python - print('Hello World!') - ``` +### Focused Lines - ```dart - void main() { - print('Hello World!'); - } - ``` - +You can focus on specific lines in a code block, blurring out the rest of the code. For example: + +```js +console.log('Not focused'); +console.log('Focused') // [!code focus] +console.log('Not focused'); +``` + + +To focus on a line, add the `// [!code focus]` annotation to the end of the line: + +```` +```js +console.log('Not focused'); +console.log('Focused') // [\!code focus] +console.log('Not focused'); +``` ```` -You can also specify the default language using the `defaultLanguage` property: +### Typescript Support -```jsx - +Out of the box, all code blocks will automatically be enhanced with rich type information when the code area is hovered. + +```ts +type APIResponse = { + data: T; + status: number; +}; + +export async function apiRequest(options: { url: string }) { + const response = await fetch(options.url); + const data = await response.json() as APIResponse<{ hello: 'world' }>; + return data; +} ``` + +To enable this, ensure that the code block is tagged with the `typescript` (or `ts`) language: + +```` +```ts +type APIResponse = { + data: T; + status: number; +}; + +export async function apiRequest(options: { url: string }) { + const response = await fetch(options.url); + const data = await response.json() as APIResponse<{ hello: 'world' }>; + return data; +} +``` +```` + diff --git a/docs/components/code-group.mdx b/docs/components/code-group.mdx new file mode 100644 index 00000000..a9323fec --- /dev/null +++ b/docs/components/code-group.mdx @@ -0,0 +1,85 @@ +--- +title: Code Groups +description: Display groups of code blocks with syntax highlighting. +--- + +Use the `` component to display multiple code blocks together, useful for showing variations of the "same" code in a different language. + +## Example + + + ```javascript + console.log("Hello World"); + ``` + + ```python + print('Hello World!') + ``` + + ```dart + void main() { + print('Hello World!'); + } + ``` + + +````jsx + + ```javascript + console.log("Hello World"); + ``` + + ```python + print('Hello World!') + ``` + + ```dart + void main() { + print('Hello World!'); + } + ``` + +```` + +## Synchronizing languages + +In some scenarios, you may wish to synchronize the language selection across multiple code groups. You can do this by setting the `synchronize` prop on each `` component. For example, +the following code groups will synchronize their language selection: + + + ```javascript + console.log("Hello World"); + ``` + + ```dart + print('Hello World!'); + ``` + + + + ```javascript + process.exit(0); + ``` + + ```dart + exit(0); + ``` + + +## Props + + + The title of the code block. + + +--- + + + The default language to display code blocks in. Defaults to the first language in the group. + + +--- + + + If `true`, synchronizes the language selection across multiple code groups with the same language defined. + \ No newline at end of file diff --git a/docs/components/custom.mdx b/docs/components/custom.mdx index d43390b0..0ca30a90 100644 --- a/docs/components/custom.mdx +++ b/docs/components/custom.mdx @@ -3,8 +3,6 @@ title: Custom Components description: Use page level custom components in your documentation --- -# Custom Components - Those familar with [MDX](https://mdxjs.com/) may be familiar with the concept of custom components. With MDX, you can create your own components and use them in your markdown files. diff --git a/docs/components/headings.mdx b/docs/components/headings.mdx index 2b785fc6..6b3887c8 100644 --- a/docs/components/headings.mdx +++ b/docs/components/headings.mdx @@ -3,11 +3,11 @@ title: Headings description: Use headings in your documentation --- -# Headings - All markdown headings will be rendered in a size ordered format. You can render headings using the `#` symbol, with the number of hashes indicating the heading type. +## Example + ``` # Heading 1 ## Heading 2 diff --git a/docs/components/icons.mdx b/docs/components/icons.mdx new file mode 100644 index 00000000..f54b26d5 --- /dev/null +++ b/docs/components/icons.mdx @@ -0,0 +1,23 @@ +--- +title: Icons +description: Display icons from Font Awesome. +--- + +You can use icons from [Font Awesome](https://fontawesome.com/icons) using the `` component. + +The component takes a `name` property which represents the name of the icon on the Font Awesome website. + +## Example + +```jsx + +``` + + + +## Props + +- `name` (string): The name of the icon on the Font Awesome website. +- `size` (number): The optional size of the icon in pixels. Defaults to the parent's font size. + +The other props are passed to the underlying `` element. \ No newline at end of file diff --git a/docs/components/images.mdx b/docs/components/images.mdx index a0172c90..bf88da1a 100644 --- a/docs/components/images.mdx +++ b/docs/components/images.mdx @@ -3,12 +3,12 @@ title: Images description: Add images to your documentation --- -# Images - Images can be displayed from remote, or local sources using either standard Markdown syntax, or the `` component. -To display images using Markdown syntax, use the following syntax: `![alt text](image url)` +## Example + +To display images using Markdown syntax, use the following syntax: `![alt text](image url)`: ![Orange Car](https://images.unsplash.com/photo-1671483579112-0872cb05978f?ixlib=rb-4.0.3&ixid=MnwxMjA3fDB8MHxwaG90by1wYWdlfHx8fGVufDB8fHx8&auto=format&fit=crop&w=1469&q=80) @@ -24,7 +24,7 @@ that reference. For example, if your repository contains a file at `/docs/assets/my-image.png`, pass `/assets/my-image.png` as the source of the image. -## Image Component +## Image Attributes The `` component can be used to enhance images within your documentation. The component accepts all of the standard `HTMLImageElement` attributes: @@ -33,7 +33,7 @@ all of the standard `HTMLImageElement` attributes: Pretty picture ``` -### Zooming +## Zooming The `` component also supports zooming of images. To enable zooming, pass the `zoom` prop to the image: @@ -64,3 +64,14 @@ To add a caption below the image, use the `caption` prop: caption="An abstract image" src="https://images.unsplash.com/photo-1671519821564-ced7e41ee7ae?ixlib=rb-4.0.3&ixid=MnwxMjA3fDB8MHxwaG90by1wYWdlfHx8fGVufDB8fHx8&auto=format&fit=crop&w=1364&q=80" /> + +## Theme + +By default, images will be displayed on both the light and dark theme. To display an image only a specific +theme, use the `theme` with either `light` or `dark`: + +```jsx + + + +``` \ No newline at end of file diff --git a/docs/components/index.mdx b/docs/components/index.mdx new file mode 100644 index 00000000..20652a83 --- /dev/null +++ b/docs/components/index.mdx @@ -0,0 +1,3 @@ +--- +redirect: /components/accordion +--- \ No newline at end of file diff --git a/docs/components/property.mdx b/docs/components/property.mdx new file mode 100644 index 00000000..a38297b1 --- /dev/null +++ b/docs/components/property.mdx @@ -0,0 +1,94 @@ +--- +title: Property +description: Display the signature details of a property. +--- + +Use the `` component to display the signature of a property, such as the name, type and description. + +The description can be provided as children to the component, allowing for rich formatting using Markdown syntax. + +## Example + + + Defines the theming properties for your application. + + ```json + { + "color": "#ff0000", + "font": "Arial" + } + ``` + + The `Theme` object should contain the following properties: + + + + The theme colour of your brand. + + + --- + + + The font family to use for your application. Defaults to `Comic Sans`. + + + + +## Usage + +````jsx + + Defines the theming properties for your application. + + ```json + { + "color": "#ff0000", + "font": "Arial" + } + ``` + + The `Theme` object should contain the following properties: + + + + The theme colour of your brand. + + + --- + + + The font family to use for your application. Defaults to `Comic Sans`. + + + +```` + +## Props + + + The name of the property + + +--- + + + The type of the property, such as `string`, `boolean` etc. + + +--- + + + Whether to mark this property as required. + + +--- + + + Whether to mark this property as optional. + + +--- + + + The children to render as the properties description. + \ No newline at end of file diff --git a/docs/components/steps.mdx b/docs/components/steps.mdx new file mode 100644 index 00000000..7bbfc6a9 --- /dev/null +++ b/docs/components/steps.mdx @@ -0,0 +1,80 @@ +--- +title: Steps +description: Steps allow users to navigate through a series of steps in a sequenced order. +--- + +Use the `` & `` component to display data in a sequential order to your users, useful for onboarding or guiding users through a process. + +## Example + + + + Install via npm: + + ```js + npm install newpackage + ``` + + The `newpackage` executable will be available in your terminal. + + + Configure the package + + ```js + newpackage configure --init + ``` + + + Start your development server. + + ```js + newpackage dev --port 3000 + ``` + + + + +````jsx + + + Install via npm: + + ```js + npm install newpackage + ``` + + The `newpackage` executable will be available in your terminal. + + + Configure the package + + ```js + newpackage configure --init + ``` + + + Start your development server. + + ```js + newpackage dev + ``` + + +```` + +This example will render the following: + + + +## Props + + + The title of the Step. + + +--- + + + An optional [Font Awesome Icon](/components/icons) to display instead of the current step index. + + diff --git a/docs/components/tabs.mdx b/docs/components/tabs.mdx index ece546ba..e1114ccb 100644 --- a/docs/components/tabs.mdx +++ b/docs/components/tabs.mdx @@ -1,55 +1,45 @@ --- -title: Display content within different tabs +title: Tabs description: Learn how to display content within different tabs --- -# Tabs +Use the `` component to display content within different tabs. -Tabs are a great way to display content within different tabs. Tabs can be displayed using the `` component, -providing a label and value. +## Example -## Basic Usage + + 👋 This is the content for the first tab. + ...and this is the content for the second tab! + -To display tabs, provide the `` component with a list of values: +To display tabs, provide the `` component with child `` components: ```jsx - - 👋 This is the content for the first tab. - ...and this is the content for the second tab! + + 👋 This is the content for the first tab. + ...and this is the content for the second tab! ``` - - 👋 This is the content for the first tab. - ...and this is the content for the second tab! - +## `Tabs` Props -## Default Value + + The default tab to display. Needs to match a `TabItem`'s `value` prop. + + Defaults to the first tab. + -By default, the first tab will be displayed. To display the second tab, provide a `defaultValue` prop. +## `TabItem` Props -```jsx - - 👋 This is the content for the first tab. - ...and this is the content for the second tab! - -``` + + The label to display for the tab. + + +--- + + + The value of the tab. Use this to identify the tab for the `defaultValue` property. + ## Synchronizing Tabs @@ -64,10 +54,6 @@ don't have to keep selecting it everywhere. ```jsx ``` @@ -77,14 +63,8 @@ The below examples shows how to perform a network request to our API. First, import the package: - - + + Import the `axios` package: ```bash @@ -98,7 +78,7 @@ First, import the package: ```` - + Add the `dio` package: ```bash @@ -116,20 +96,14 @@ First, import the package: Next, perform a network request to 'https://example.com': - - + + ```js const response = await axios.get('https://example.com'); console.log(response.data); ``` - + ```dart var dio = Dio(); final response = await dio.get('https://example.com'); diff --git a/docs/components/tweet.mdx b/docs/components/tweet.mdx index e783e21a..c23f353f 100644 --- a/docs/components/tweet.mdx +++ b/docs/components/tweet.mdx @@ -1,19 +1,19 @@ --- -title: Embed Tweets +title: Tweets description: Embed Tweets in your documentation. --- -# Tweets +Use the `` component to embed tweets in your documentation, using the Tweet ID. -To imbed a tweet into the documentation, use the `` component and provide the ID of the tweet. +## Example -```jsx -``` +```jsx +``` -## Cards +### Cards To display tweet preview cards alongside the tweet, provide the `cards` prop. @@ -23,7 +23,7 @@ To display tweet preview cards alongside the tweet, provide the `cards` prop. -## Conversation +### Conversation To display conversation information about the tweet, provide the `conversation` prop. @@ -33,7 +33,7 @@ To display conversation information about the tweet, provide the `conversation` -## Cards & Conversation +### Cards & Conversation Both card and conversational data can be displayed simultaneously. @@ -42,3 +42,21 @@ Both card and conversational data can be displayed simultaneously. ``` + +## Props + + + The ID of the tweet to display. + + +--- + + + Whether or not to display tweet preview cards. Defaults to `false`. + + +--- + + + Whether or not to display conversation information. Defaults to `false`. + diff --git a/docs/components/video.mdx b/docs/components/video.mdx index b1c3e441..b9e1a120 100644 --- a/docs/components/video.mdx +++ b/docs/components/video.mdx @@ -1,14 +1,15 @@ --- -title: Add videos to your documentation +title: Videos description: Learn how to add videos to your documentation. --- -# Video +Use the `
  • - ), +
    + )} +
    Powered by docs.page
    + , { width: 1200, height: 630, fonts: [ { - name: 'Inter', + name: "Inter", data: fontData[0], weight: 400, - style: 'normal', + style: "normal", }, { - name: 'Inter', + name: "Inter", data: fontData[1], weight: 700, - style: 'normal', + style: "normal", }, ], }, ); - } catch (e: any) { - console.log(`${e.message}`); - return new Response(`Failed to generate the image`, { + } catch (e: unknown) { + console.log(e); + return new Response("Failed to generate the image", { status: 500, }); } diff --git a/package-lock.json b/package-lock.json deleted file mode 100644 index e979c6a8..00000000 --- a/package-lock.json +++ /dev/null @@ -1,3171 +0,0 @@ -{ - "name": "docs.page", - "lockfileVersion": 3, - "requires": true, - "packages": { - "": { - "dependencies": { - "typescript": "^4.5.4" - }, - "devDependencies": { - "@typescript-eslint/eslint-plugin": "^5.9.1", - "@typescript-eslint/parser": "^5.9.1", - "concurrently": "^7.0.0", - "eslint": "^8.6.0", - "eslint-config-prettier": "^8.3.0", - "eslint-plugin-prettier": "^4.0.0", - "eslint-plugin-react": "^7.28.0", - "prettier": "2.7.1", - "prettier-plugin-astro": "^0.7.0", - "prettier-plugin-tailwindcss": "^0.1.3" - } - }, - "node_modules/@aashutoshrathi/word-wrap": { - "version": "1.2.6", - "dev": true, - "license": "MIT", - "engines": { - "node": ">=0.10.0" - } - }, - "node_modules/@astrojs/compiler": { - "version": "0.31.4", - "dev": true, - "license": "MIT" - }, - "node_modules/@babel/runtime": { - "version": "7.24.0", - "dev": true, - "license": "MIT", - "dependencies": { - "regenerator-runtime": "^0.14.0" - }, - "engines": { - "node": ">=6.9.0" - } - }, - "node_modules/@eslint-community/eslint-utils": { - "version": "4.4.0", - "dev": true, - "license": "MIT", - "dependencies": { - "eslint-visitor-keys": "^3.3.0" - }, - "engines": { - "node": "^12.22.0 || ^14.17.0 || >=16.0.0" - }, - "peerDependencies": { - "eslint": "^6.0.0 || ^7.0.0 || >=8.0.0" - } - }, - "node_modules/@eslint-community/regexpp": { - "version": "4.10.0", - "dev": true, - "license": "MIT", - "engines": { - "node": "^12.0.0 || ^14.0.0 || >=16.0.0" - } - }, - "node_modules/@eslint/eslintrc": { - "version": "2.1.4", - "dev": true, - "license": "MIT", - "dependencies": { - "ajv": "^6.12.4", - "debug": "^4.3.2", - "espree": "^9.6.0", - "globals": "^13.19.0", - "ignore": "^5.2.0", - "import-fresh": "^3.2.1", - "js-yaml": "^4.1.0", - "minimatch": "^3.1.2", - "strip-json-comments": "^3.1.1" - }, - "engines": { - "node": "^12.22.0 || ^14.17.0 || >=16.0.0" - }, - "funding": { - "url": "https://opencollective.com/eslint" - } - }, - "node_modules/@eslint/js": { - "version": "8.57.0", - "dev": true, - "license": "MIT", - "engines": { - "node": "^12.22.0 || ^14.17.0 || >=16.0.0" - } - }, - "node_modules/@humanwhocodes/config-array": { - "version": "0.11.14", - "dev": true, - "license": "Apache-2.0", - "dependencies": { - "@humanwhocodes/object-schema": "^2.0.2", - "debug": "^4.3.1", - "minimatch": "^3.0.5" - }, - "engines": { - "node": ">=10.10.0" - } - }, - "node_modules/@humanwhocodes/module-importer": { - "version": "1.0.1", - "dev": true, - "license": "Apache-2.0", - "engines": { - "node": ">=12.22" - }, - "funding": { - "type": "github", - "url": "https://github.com/sponsors/nzakas" - } - }, - "node_modules/@humanwhocodes/object-schema": { - "version": "2.0.2", - "dev": true, - "license": "BSD-3-Clause" - }, - "node_modules/@nodelib/fs.scandir": { - "version": "2.1.5", - "dev": true, - "license": "MIT", - "dependencies": { - "@nodelib/fs.stat": "2.0.5", - "run-parallel": "^1.1.9" - }, - "engines": { - "node": ">= 8" - } - }, - "node_modules/@nodelib/fs.stat": { - "version": "2.0.5", - "dev": true, - "license": "MIT", - "engines": { - "node": ">= 8" - } - }, - "node_modules/@nodelib/fs.walk": { - "version": "1.2.8", - "dev": true, - "license": "MIT", - "dependencies": { - "@nodelib/fs.scandir": "2.1.5", - "fastq": "^1.6.0" - }, - "engines": { - "node": ">= 8" - } - }, - "node_modules/@pkgr/core": { - "version": "0.1.1", - "dev": true, - "license": "MIT", - "engines": { - "node": "^12.20.0 || ^14.18.0 || >=16.0.0" - }, - "funding": { - "url": "https://opencollective.com/unts" - } - }, - "node_modules/@types/json-schema": { - "version": "7.0.15", - "dev": true, - "license": "MIT" - }, - "node_modules/@types/semver": { - "version": "7.5.8", - "dev": true, - "license": "MIT" - }, - "node_modules/@typescript-eslint/eslint-plugin": { - "version": "5.62.0", - "dev": true, - "license": "MIT", - "dependencies": { - "@eslint-community/regexpp": "^4.4.0", - "@typescript-eslint/scope-manager": "5.62.0", - "@typescript-eslint/type-utils": "5.62.0", - "@typescript-eslint/utils": "5.62.0", - "debug": "^4.3.4", - "graphemer": "^1.4.0", - "ignore": "^5.2.0", - "natural-compare-lite": "^1.4.0", - "semver": "^7.3.7", - "tsutils": "^3.21.0" - }, - "engines": { - "node": "^12.22.0 || ^14.17.0 || >=16.0.0" - }, - "funding": { - "type": "opencollective", - "url": "https://opencollective.com/typescript-eslint" - }, - "peerDependencies": { - "@typescript-eslint/parser": "^5.0.0", - "eslint": "^6.0.0 || ^7.0.0 || ^8.0.0" - }, - "peerDependenciesMeta": { - "typescript": { - "optional": true - } - } - }, - "node_modules/@typescript-eslint/parser": { - "version": "5.62.0", - "dev": true, - "license": "BSD-2-Clause", - "dependencies": { - "@typescript-eslint/scope-manager": "5.62.0", - "@typescript-eslint/types": "5.62.0", - "@typescript-eslint/typescript-estree": "5.62.0", - "debug": "^4.3.4" - }, - "engines": { - "node": "^12.22.0 || ^14.17.0 || >=16.0.0" - }, - "funding": { - "type": "opencollective", - "url": "https://opencollective.com/typescript-eslint" - }, - "peerDependencies": { - "eslint": "^6.0.0 || ^7.0.0 || ^8.0.0" - }, - "peerDependenciesMeta": { - "typescript": { - "optional": true - } - } - }, - "node_modules/@typescript-eslint/scope-manager": { - "version": "5.62.0", - "dev": true, - "license": "MIT", - "dependencies": { - "@typescript-eslint/types": "5.62.0", - "@typescript-eslint/visitor-keys": "5.62.0" - }, - "engines": { - "node": "^12.22.0 || ^14.17.0 || >=16.0.0" - }, - "funding": { - "type": "opencollective", - "url": "https://opencollective.com/typescript-eslint" - } - }, - "node_modules/@typescript-eslint/type-utils": { - "version": "5.62.0", - "dev": true, - "license": "MIT", - "dependencies": { - "@typescript-eslint/typescript-estree": "5.62.0", - "@typescript-eslint/utils": "5.62.0", - "debug": "^4.3.4", - "tsutils": "^3.21.0" - }, - "engines": { - "node": "^12.22.0 || ^14.17.0 || >=16.0.0" - }, - "funding": { - "type": "opencollective", - "url": "https://opencollective.com/typescript-eslint" - }, - "peerDependencies": { - "eslint": "*" - }, - "peerDependenciesMeta": { - "typescript": { - "optional": true - } - } - }, - "node_modules/@typescript-eslint/types": { - "version": "5.62.0", - "dev": true, - "license": "MIT", - "engines": { - "node": "^12.22.0 || ^14.17.0 || >=16.0.0" - }, - "funding": { - "type": "opencollective", - "url": "https://opencollective.com/typescript-eslint" - } - }, - "node_modules/@typescript-eslint/typescript-estree": { - "version": "5.62.0", - "dev": true, - "license": "BSD-2-Clause", - "dependencies": { - "@typescript-eslint/types": "5.62.0", - "@typescript-eslint/visitor-keys": "5.62.0", - "debug": "^4.3.4", - "globby": "^11.1.0", - "is-glob": "^4.0.3", - "semver": "^7.3.7", - "tsutils": "^3.21.0" - }, - "engines": { - "node": "^12.22.0 || ^14.17.0 || >=16.0.0" - }, - "funding": { - "type": "opencollective", - "url": "https://opencollective.com/typescript-eslint" - }, - "peerDependenciesMeta": { - "typescript": { - "optional": true - } - } - }, - "node_modules/@typescript-eslint/utils": { - "version": "5.62.0", - "dev": true, - "license": "MIT", - "dependencies": { - "@eslint-community/eslint-utils": "^4.2.0", - "@types/json-schema": "^7.0.9", - "@types/semver": "^7.3.12", - "@typescript-eslint/scope-manager": "5.62.0", - "@typescript-eslint/types": "5.62.0", - "@typescript-eslint/typescript-estree": "5.62.0", - "eslint-scope": "^5.1.1", - "semver": "^7.3.7" - }, - "engines": { - "node": "^12.22.0 || ^14.17.0 || >=16.0.0" - }, - "funding": { - "type": "opencollective", - "url": "https://opencollective.com/typescript-eslint" - }, - "peerDependencies": { - "eslint": "^6.0.0 || ^7.0.0 || ^8.0.0" - } - }, - "node_modules/@typescript-eslint/utils/node_modules/eslint-scope": { - "version": "5.1.1", - "dev": true, - "license": "BSD-2-Clause", - "dependencies": { - "esrecurse": "^4.3.0", - "estraverse": "^4.1.1" - }, - "engines": { - "node": ">=8.0.0" - } - }, - "node_modules/@typescript-eslint/utils/node_modules/estraverse": { - "version": "4.3.0", - "dev": true, - "license": "BSD-2-Clause", - "engines": { - "node": ">=4.0" - } - }, - "node_modules/@typescript-eslint/visitor-keys": { - "version": "5.62.0", - "dev": true, - "license": "MIT", - "dependencies": { - "@typescript-eslint/types": "5.62.0", - "eslint-visitor-keys": "^3.3.0" - }, - "engines": { - "node": "^12.22.0 || ^14.17.0 || >=16.0.0" - }, - "funding": { - "type": "opencollective", - "url": "https://opencollective.com/typescript-eslint" - } - }, - "node_modules/@ungap/structured-clone": { - "version": "1.2.0", - "dev": true, - "license": "ISC" - }, - "node_modules/acorn": { - "version": "8.11.3", - "dev": true, - "license": "MIT", - "bin": { - "acorn": "bin/acorn" - }, - "engines": { - "node": ">=0.4.0" - } - }, - "node_modules/acorn-jsx": { - "version": "5.3.2", - "dev": true, - "license": "MIT", - "peerDependencies": { - "acorn": "^6.0.0 || ^7.0.0 || ^8.0.0" - } - }, - "node_modules/ajv": { - "version": "6.12.6", - "dev": true, - "license": "MIT", - "dependencies": { - "fast-deep-equal": "^3.1.1", - "fast-json-stable-stringify": "^2.0.0", - "json-schema-traverse": "^0.4.1", - "uri-js": "^4.2.2" - }, - "funding": { - "type": "github", - "url": "https://github.com/sponsors/epoberezkin" - } - }, - "node_modules/ansi-regex": { - "version": "5.0.1", - "dev": true, - "license": "MIT", - "engines": { - "node": ">=8" - } - }, - "node_modules/ansi-styles": { - "version": "4.3.0", - "dev": true, - "license": "MIT", - "dependencies": { - "color-convert": "^2.0.1" - }, - "engines": { - "node": ">=8" - }, - "funding": { - "url": "https://github.com/chalk/ansi-styles?sponsor=1" - } - }, - "node_modules/argparse": { - "version": "2.0.1", - "dev": true, - "license": "Python-2.0" - }, - "node_modules/array-buffer-byte-length": { - "version": "1.0.1", - "dev": true, - "license": "MIT", - "dependencies": { - "call-bind": "^1.0.5", - "is-array-buffer": "^3.0.4" - }, - "engines": { - "node": ">= 0.4" - }, - "funding": { - "url": "https://github.com/sponsors/ljharb" - } - }, - "node_modules/array-includes": { - "version": "3.1.7", - "dev": true, - "license": "MIT", - "dependencies": { - "call-bind": "^1.0.2", - "define-properties": "^1.2.0", - "es-abstract": "^1.22.1", - "get-intrinsic": "^1.2.1", - "is-string": "^1.0.7" - }, - "engines": { - "node": ">= 0.4" - }, - "funding": { - "url": "https://github.com/sponsors/ljharb" - } - }, - "node_modules/array-union": { - "version": "2.1.0", - "dev": true, - "license": "MIT", - "engines": { - "node": ">=8" - } - }, - "node_modules/array.prototype.flat": { - "version": "1.3.2", - "dev": true, - "license": "MIT", - "dependencies": { - "call-bind": "^1.0.2", - "define-properties": "^1.2.0", - "es-abstract": "^1.22.1", - "es-shim-unscopables": "^1.0.0" - }, - "engines": { - "node": ">= 0.4" - }, - "funding": { - "url": "https://github.com/sponsors/ljharb" - } - }, - "node_modules/array.prototype.flatmap": { - "version": "1.3.2", - "dev": true, - "license": "MIT", - "dependencies": { - "call-bind": "^1.0.2", - "define-properties": "^1.2.0", - "es-abstract": "^1.22.1", - "es-shim-unscopables": "^1.0.0" - }, - "engines": { - "node": ">= 0.4" - }, - "funding": { - "url": "https://github.com/sponsors/ljharb" - } - }, - "node_modules/array.prototype.tosorted": { - "version": "1.1.3", - "dev": true, - "license": "MIT", - "dependencies": { - "call-bind": "^1.0.5", - "define-properties": "^1.2.1", - "es-abstract": "^1.22.3", - "es-errors": "^1.1.0", - "es-shim-unscopables": "^1.0.2" - } - }, - "node_modules/arraybuffer.prototype.slice": { - "version": "1.0.3", - "dev": true, - "license": "MIT", - "dependencies": { - "array-buffer-byte-length": "^1.0.1", - "call-bind": "^1.0.5", - "define-properties": "^1.2.1", - "es-abstract": "^1.22.3", - "es-errors": "^1.2.1", - "get-intrinsic": "^1.2.3", - "is-array-buffer": "^3.0.4", - "is-shared-array-buffer": "^1.0.2" - }, - "engines": { - "node": ">= 0.4" - }, - "funding": { - "url": "https://github.com/sponsors/ljharb" - } - }, - "node_modules/asynciterator.prototype": { - "version": "1.0.0", - "dev": true, - "license": "MIT", - "dependencies": { - "has-symbols": "^1.0.3" - } - }, - "node_modules/available-typed-arrays": { - "version": "1.0.7", - "dev": true, - "license": "MIT", - "dependencies": { - "possible-typed-array-names": "^1.0.0" - }, - "engines": { - "node": ">= 0.4" - }, - "funding": { - "url": "https://github.com/sponsors/ljharb" - } - }, - "node_modules/balanced-match": { - "version": "1.0.2", - "dev": true, - "license": "MIT" - }, - "node_modules/brace-expansion": { - "version": "1.1.11", - "dev": true, - "license": "MIT", - "dependencies": { - "balanced-match": "^1.0.0", - "concat-map": "0.0.1" - } - }, - "node_modules/braces": { - "version": "3.0.2", - "dev": true, - "license": "MIT", - "dependencies": { - "fill-range": "^7.0.1" - }, - "engines": { - "node": ">=8" - } - }, - "node_modules/call-bind": { - "version": "1.0.7", - "dev": true, - "license": "MIT", - "dependencies": { - "es-define-property": "^1.0.0", - "es-errors": "^1.3.0", - "function-bind": "^1.1.2", - "get-intrinsic": "^1.2.4", - "set-function-length": "^1.2.1" - }, - "engines": { - "node": ">= 0.4" - }, - "funding": { - "url": "https://github.com/sponsors/ljharb" - } - }, - "node_modules/callsites": { - "version": "3.1.0", - "dev": true, - "license": "MIT", - "engines": { - "node": ">=6" - } - }, - "node_modules/chalk": { - "version": "4.1.2", - "dev": true, - "license": "MIT", - "dependencies": { - "ansi-styles": "^4.1.0", - "supports-color": "^7.1.0" - }, - "engines": { - "node": ">=10" - }, - "funding": { - "url": "https://github.com/chalk/chalk?sponsor=1" - } - }, - "node_modules/chalk/node_modules/supports-color": { - "version": "7.2.0", - "dev": true, - "license": "MIT", - "dependencies": { - "has-flag": "^4.0.0" - }, - "engines": { - "node": ">=8" - } - }, - "node_modules/cliui": { - "version": "8.0.1", - "dev": true, - "license": "ISC", - "dependencies": { - "string-width": "^4.2.0", - "strip-ansi": "^6.0.1", - "wrap-ansi": "^7.0.0" - }, - "engines": { - "node": ">=12" - } - }, - "node_modules/color-convert": { - "version": "2.0.1", - "dev": true, - "license": "MIT", - "dependencies": { - "color-name": "~1.1.4" - }, - "engines": { - "node": ">=7.0.0" - } - }, - "node_modules/color-name": { - "version": "1.1.4", - "dev": true, - "license": "MIT" - }, - "node_modules/concat-map": { - "version": "0.0.1", - "dev": true, - "license": "MIT" - }, - "node_modules/concurrently": { - "version": "7.6.0", - "dev": true, - "license": "MIT", - "dependencies": { - "chalk": "^4.1.0", - "date-fns": "^2.29.1", - "lodash": "^4.17.21", - "rxjs": "^7.0.0", - "shell-quote": "^1.7.3", - "spawn-command": "^0.0.2-1", - "supports-color": "^8.1.0", - "tree-kill": "^1.2.2", - "yargs": "^17.3.1" - }, - "bin": { - "conc": "dist/bin/concurrently.js", - "concurrently": "dist/bin/concurrently.js" - }, - "engines": { - "node": "^12.20.0 || ^14.13.0 || >=16.0.0" - }, - "funding": { - "url": "https://github.com/open-cli-tools/concurrently?sponsor=1" - } - }, - "node_modules/cross-spawn": { - "version": "7.0.3", - "dev": true, - "license": "MIT", - "dependencies": { - "path-key": "^3.1.0", - "shebang-command": "^2.0.0", - "which": "^2.0.1" - }, - "engines": { - "node": ">= 8" - } - }, - "node_modules/date-fns": { - "version": "2.30.0", - "dev": true, - "license": "MIT", - "dependencies": { - "@babel/runtime": "^7.21.0" - }, - "engines": { - "node": ">=0.11" - }, - "funding": { - "type": "opencollective", - "url": "https://opencollective.com/date-fns" - } - }, - "node_modules/debug": { - "version": "4.3.4", - "dev": true, - "license": "MIT", - "dependencies": { - "ms": "2.1.2" - }, - "engines": { - "node": ">=6.0" - }, - "peerDependenciesMeta": { - "supports-color": { - "optional": true - } - } - }, - "node_modules/deep-is": { - "version": "0.1.4", - "dev": true, - "license": "MIT" - }, - "node_modules/define-data-property": { - "version": "1.1.4", - "dev": true, - "license": "MIT", - "dependencies": { - "es-define-property": "^1.0.0", - "es-errors": "^1.3.0", - "gopd": "^1.0.1" - }, - "engines": { - "node": ">= 0.4" - }, - "funding": { - "url": "https://github.com/sponsors/ljharb" - } - }, - "node_modules/define-properties": { - "version": "1.2.1", - "dev": true, - "license": "MIT", - "dependencies": { - "define-data-property": "^1.0.1", - "has-property-descriptors": "^1.0.0", - "object-keys": "^1.1.1" - }, - "engines": { - "node": ">= 0.4" - }, - "funding": { - "url": "https://github.com/sponsors/ljharb" - } - }, - "node_modules/dir-glob": { - "version": "3.0.1", - "dev": true, - "license": "MIT", - "dependencies": { - "path-type": "^4.0.0" - }, - "engines": { - "node": ">=8" - } - }, - "node_modules/doctrine": { - "version": "2.1.0", - "dev": true, - "license": "Apache-2.0", - "dependencies": { - "esutils": "^2.0.2" - }, - "engines": { - "node": ">=0.10.0" - } - }, - "node_modules/emoji-regex": { - "version": "8.0.0", - "dev": true, - "license": "MIT" - }, - "node_modules/es-abstract": { - "version": "1.22.5", - "dev": true, - "license": "MIT", - "dependencies": { - "array-buffer-byte-length": "^1.0.1", - "arraybuffer.prototype.slice": "^1.0.3", - "available-typed-arrays": "^1.0.7", - "call-bind": "^1.0.7", - "es-define-property": "^1.0.0", - "es-errors": "^1.3.0", - "es-set-tostringtag": "^2.0.3", - "es-to-primitive": "^1.2.1", - "function.prototype.name": "^1.1.6", - "get-intrinsic": "^1.2.4", - "get-symbol-description": "^1.0.2", - "globalthis": "^1.0.3", - "gopd": "^1.0.1", - "has-property-descriptors": "^1.0.2", - "has-proto": "^1.0.3", - "has-symbols": "^1.0.3", - "hasown": "^2.0.1", - "internal-slot": "^1.0.7", - "is-array-buffer": "^3.0.4", - "is-callable": "^1.2.7", - "is-negative-zero": "^2.0.3", - "is-regex": "^1.1.4", - "is-shared-array-buffer": "^1.0.3", - "is-string": "^1.0.7", - "is-typed-array": "^1.1.13", - "is-weakref": "^1.0.2", - "object-inspect": "^1.13.1", - "object-keys": "^1.1.1", - "object.assign": "^4.1.5", - "regexp.prototype.flags": "^1.5.2", - "safe-array-concat": "^1.1.0", - "safe-regex-test": "^1.0.3", - "string.prototype.trim": "^1.2.8", - "string.prototype.trimend": "^1.0.7", - "string.prototype.trimstart": "^1.0.7", - "typed-array-buffer": "^1.0.2", - "typed-array-byte-length": "^1.0.1", - "typed-array-byte-offset": "^1.0.2", - "typed-array-length": "^1.0.5", - "unbox-primitive": "^1.0.2", - "which-typed-array": "^1.1.14" - }, - "engines": { - "node": ">= 0.4" - }, - "funding": { - "url": "https://github.com/sponsors/ljharb" - } - }, - "node_modules/es-define-property": { - "version": "1.0.0", - "dev": true, - "license": "MIT", - "dependencies": { - "get-intrinsic": "^1.2.4" - }, - "engines": { - "node": ">= 0.4" - } - }, - "node_modules/es-errors": { - "version": "1.3.0", - "dev": true, - "license": "MIT", - "engines": { - "node": ">= 0.4" - } - }, - "node_modules/es-iterator-helpers": { - "version": "1.0.17", - "dev": true, - "license": "MIT", - "dependencies": { - "asynciterator.prototype": "^1.0.0", - "call-bind": "^1.0.7", - "define-properties": "^1.2.1", - "es-abstract": "^1.22.4", - "es-errors": "^1.3.0", - "es-set-tostringtag": "^2.0.2", - "function-bind": "^1.1.2", - "get-intrinsic": "^1.2.4", - "globalthis": "^1.0.3", - "has-property-descriptors": "^1.0.2", - "has-proto": "^1.0.1", - "has-symbols": "^1.0.3", - "internal-slot": "^1.0.7", - "iterator.prototype": "^1.1.2", - "safe-array-concat": "^1.1.0" - }, - "engines": { - "node": ">= 0.4" - } - }, - "node_modules/es-set-tostringtag": { - "version": "2.0.3", - "dev": true, - "license": "MIT", - "dependencies": { - "get-intrinsic": "^1.2.4", - "has-tostringtag": "^1.0.2", - "hasown": "^2.0.1" - }, - "engines": { - "node": ">= 0.4" - } - }, - "node_modules/es-shim-unscopables": { - "version": "1.0.2", - "dev": true, - "license": "MIT", - "dependencies": { - "hasown": "^2.0.0" - } - }, - "node_modules/es-to-primitive": { - "version": "1.2.1", - "dev": true, - "license": "MIT", - "dependencies": { - "is-callable": "^1.1.4", - "is-date-object": "^1.0.1", - "is-symbol": "^1.0.2" - }, - "engines": { - "node": ">= 0.4" - }, - "funding": { - "url": "https://github.com/sponsors/ljharb" - } - }, - "node_modules/escalade": { - "version": "3.1.2", - "dev": true, - "license": "MIT", - "engines": { - "node": ">=6" - } - }, - "node_modules/escape-string-regexp": { - "version": "4.0.0", - "dev": true, - "license": "MIT", - "engines": { - "node": ">=10" - }, - "funding": { - "url": "https://github.com/sponsors/sindresorhus" - } - }, - "node_modules/eslint": { - "version": "8.57.0", - "dev": true, - "license": "MIT", - "dependencies": { - "@eslint-community/eslint-utils": "^4.2.0", - "@eslint-community/regexpp": "^4.6.1", - "@eslint/eslintrc": "^2.1.4", - "@eslint/js": "8.57.0", - "@humanwhocodes/config-array": "^0.11.14", - "@humanwhocodes/module-importer": "^1.0.1", - "@nodelib/fs.walk": "^1.2.8", - "@ungap/structured-clone": "^1.2.0", - "ajv": "^6.12.4", - "chalk": "^4.0.0", - "cross-spawn": "^7.0.2", - "debug": "^4.3.2", - "doctrine": "^3.0.0", - "escape-string-regexp": "^4.0.0", - "eslint-scope": "^7.2.2", - "eslint-visitor-keys": "^3.4.3", - "espree": "^9.6.1", - "esquery": "^1.4.2", - "esutils": "^2.0.2", - "fast-deep-equal": "^3.1.3", - "file-entry-cache": "^6.0.1", - "find-up": "^5.0.0", - "glob-parent": "^6.0.2", - "globals": "^13.19.0", - "graphemer": "^1.4.0", - "ignore": "^5.2.0", - "imurmurhash": "^0.1.4", - "is-glob": "^4.0.0", - "is-path-inside": "^3.0.3", - "js-yaml": "^4.1.0", - "json-stable-stringify-without-jsonify": "^1.0.1", - "levn": "^0.4.1", - "lodash.merge": "^4.6.2", - "minimatch": "^3.1.2", - "natural-compare": "^1.4.0", - "optionator": "^0.9.3", - "strip-ansi": "^6.0.1", - "text-table": "^0.2.0" - }, - "bin": { - "eslint": "bin/eslint.js" - }, - "engines": { - "node": "^12.22.0 || ^14.17.0 || >=16.0.0" - }, - "funding": { - "url": "https://opencollective.com/eslint" - } - }, - "node_modules/eslint-config-prettier": { - "version": "8.10.0", - "dev": true, - "license": "MIT", - "bin": { - "eslint-config-prettier": "bin/cli.js" - }, - "peerDependencies": { - "eslint": ">=7.0.0" - } - }, - "node_modules/eslint-plugin-prettier": { - "version": "4.2.1", - "dev": true, - "license": "MIT", - "dependencies": { - "prettier-linter-helpers": "^1.0.0" - }, - "engines": { - "node": ">=12.0.0" - }, - "peerDependencies": { - "eslint": ">=7.28.0", - "prettier": ">=2.0.0" - }, - "peerDependenciesMeta": { - "eslint-config-prettier": { - "optional": true - } - } - }, - "node_modules/eslint-plugin-react": { - "version": "7.33.2", - "dev": true, - "license": "MIT", - "dependencies": { - "array-includes": "^3.1.6", - "array.prototype.flatmap": "^1.3.1", - "array.prototype.tosorted": "^1.1.1", - "doctrine": "^2.1.0", - "es-iterator-helpers": "^1.0.12", - "estraverse": "^5.3.0", - "jsx-ast-utils": "^2.4.1 || ^3.0.0", - "minimatch": "^3.1.2", - "object.entries": "^1.1.6", - "object.fromentries": "^2.0.6", - "object.hasown": "^1.1.2", - "object.values": "^1.1.6", - "prop-types": "^15.8.1", - "resolve": "^2.0.0-next.4", - "semver": "^6.3.1", - "string.prototype.matchall": "^4.0.8" - }, - "engines": { - "node": ">=4" - }, - "peerDependencies": { - "eslint": "^3 || ^4 || ^5 || ^6 || ^7 || ^8" - } - }, - "node_modules/eslint-plugin-react/node_modules/semver": { - "version": "6.3.1", - "dev": true, - "license": "ISC", - "bin": { - "semver": "bin/semver.js" - } - }, - "node_modules/eslint-scope": { - "version": "7.2.2", - "dev": true, - "license": "BSD-2-Clause", - "dependencies": { - "esrecurse": "^4.3.0", - "estraverse": "^5.2.0" - }, - "engines": { - "node": "^12.22.0 || ^14.17.0 || >=16.0.0" - }, - "funding": { - "url": "https://opencollective.com/eslint" - } - }, - "node_modules/eslint-visitor-keys": { - "version": "3.4.3", - "dev": true, - "license": "Apache-2.0", - "engines": { - "node": "^12.22.0 || ^14.17.0 || >=16.0.0" - }, - "funding": { - "url": "https://opencollective.com/eslint" - } - }, - "node_modules/eslint/node_modules/doctrine": { - "version": "3.0.0", - "dev": true, - "license": "Apache-2.0", - "dependencies": { - "esutils": "^2.0.2" - }, - "engines": { - "node": ">=6.0.0" - } - }, - "node_modules/espree": { - "version": "9.6.1", - "dev": true, - "license": "BSD-2-Clause", - "dependencies": { - "acorn": "^8.9.0", - "acorn-jsx": "^5.3.2", - "eslint-visitor-keys": "^3.4.1" - }, - "engines": { - "node": "^12.22.0 || ^14.17.0 || >=16.0.0" - }, - "funding": { - "url": "https://opencollective.com/eslint" - } - }, - "node_modules/esquery": { - "version": "1.5.0", - "dev": true, - "license": "BSD-3-Clause", - "dependencies": { - "estraverse": "^5.1.0" - }, - "engines": { - "node": ">=0.10" - } - }, - "node_modules/esrecurse": { - "version": "4.3.0", - "dev": true, - "license": "BSD-2-Clause", - "dependencies": { - "estraverse": "^5.2.0" - }, - "engines": { - "node": ">=4.0" - } - }, - "node_modules/estraverse": { - "version": "5.3.0", - "dev": true, - "license": "BSD-2-Clause", - "engines": { - "node": ">=4.0" - } - }, - "node_modules/esutils": { - "version": "2.0.3", - "dev": true, - "license": "BSD-2-Clause", - "engines": { - "node": ">=0.10.0" - } - }, - "node_modules/fast-deep-equal": { - "version": "3.1.3", - "dev": true, - "license": "MIT" - }, - "node_modules/fast-diff": { - "version": "1.3.0", - "dev": true, - "license": "Apache-2.0" - }, - "node_modules/fast-glob": { - "version": "3.3.2", - "dev": true, - "license": "MIT", - "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/fast-glob/node_modules/glob-parent": { - "version": "5.1.2", - "dev": true, - "license": "ISC", - "dependencies": { - "is-glob": "^4.0.1" - }, - "engines": { - "node": ">= 6" - } - }, - "node_modules/fast-json-stable-stringify": { - "version": "2.1.0", - "dev": true, - "license": "MIT" - }, - "node_modules/fast-levenshtein": { - "version": "2.0.6", - "dev": true, - "license": "MIT" - }, - "node_modules/fastq": { - "version": "1.17.1", - "dev": true, - "license": "ISC", - "dependencies": { - "reusify": "^1.0.4" - } - }, - "node_modules/file-entry-cache": { - "version": "6.0.1", - "dev": true, - "license": "MIT", - "dependencies": { - "flat-cache": "^3.0.4" - }, - "engines": { - "node": "^10.12.0 || >=12.0.0" - } - }, - "node_modules/fill-range": { - "version": "7.0.1", - "dev": true, - "license": "MIT", - "dependencies": { - "to-regex-range": "^5.0.1" - }, - "engines": { - "node": ">=8" - } - }, - "node_modules/find-up": { - "version": "5.0.0", - "dev": true, - "license": "MIT", - "dependencies": { - "locate-path": "^6.0.0", - "path-exists": "^4.0.0" - }, - "engines": { - "node": ">=10" - }, - "funding": { - "url": "https://github.com/sponsors/sindresorhus" - } - }, - "node_modules/flat-cache": { - "version": "3.2.0", - "dev": true, - "license": "MIT", - "dependencies": { - "flatted": "^3.2.9", - "keyv": "^4.5.3", - "rimraf": "^3.0.2" - }, - "engines": { - "node": "^10.12.0 || >=12.0.0" - } - }, - "node_modules/flatted": { - "version": "3.3.1", - "dev": true, - "license": "ISC" - }, - "node_modules/for-each": { - "version": "0.3.3", - "dev": true, - "license": "MIT", - "dependencies": { - "is-callable": "^1.1.3" - } - }, - "node_modules/fs.realpath": { - "version": "1.0.0", - "dev": true, - "license": "ISC" - }, - "node_modules/function-bind": { - "version": "1.1.2", - "dev": true, - "license": "MIT", - "funding": { - "url": "https://github.com/sponsors/ljharb" - } - }, - "node_modules/function.prototype.name": { - "version": "1.1.6", - "dev": true, - "license": "MIT", - "dependencies": { - "call-bind": "^1.0.2", - "define-properties": "^1.2.0", - "es-abstract": "^1.22.1", - "functions-have-names": "^1.2.3" - }, - "engines": { - "node": ">= 0.4" - }, - "funding": { - "url": "https://github.com/sponsors/ljharb" - } - }, - "node_modules/functions-have-names": { - "version": "1.2.3", - "dev": true, - "license": "MIT", - "funding": { - "url": "https://github.com/sponsors/ljharb" - } - }, - "node_modules/get-caller-file": { - "version": "2.0.5", - "dev": true, - "license": "ISC", - "engines": { - "node": "6.* || 8.* || >= 10.*" - } - }, - "node_modules/get-intrinsic": { - "version": "1.2.4", - "dev": true, - "license": "MIT", - "dependencies": { - "es-errors": "^1.3.0", - "function-bind": "^1.1.2", - "has-proto": "^1.0.1", - "has-symbols": "^1.0.3", - "hasown": "^2.0.0" - }, - "engines": { - "node": ">= 0.4" - }, - "funding": { - "url": "https://github.com/sponsors/ljharb" - } - }, - "node_modules/get-symbol-description": { - "version": "1.0.2", - "dev": true, - "license": "MIT", - "dependencies": { - "call-bind": "^1.0.5", - "es-errors": "^1.3.0", - "get-intrinsic": "^1.2.4" - }, - "engines": { - "node": ">= 0.4" - }, - "funding": { - "url": "https://github.com/sponsors/ljharb" - } - }, - "node_modules/glob": { - "version": "7.2.3", - "dev": true, - "license": "ISC", - "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": "6.0.2", - "dev": true, - "license": "ISC", - "dependencies": { - "is-glob": "^4.0.3" - }, - "engines": { - "node": ">=10.13.0" - } - }, - "node_modules/globals": { - "version": "13.24.0", - "dev": true, - "license": "MIT", - "dependencies": { - "type-fest": "^0.20.2" - }, - "engines": { - "node": ">=8" - }, - "funding": { - "url": "https://github.com/sponsors/sindresorhus" - } - }, - "node_modules/globalthis": { - "version": "1.0.3", - "dev": true, - "license": "MIT", - "dependencies": { - "define-properties": "^1.1.3" - }, - "engines": { - "node": ">= 0.4" - }, - "funding": { - "url": "https://github.com/sponsors/ljharb" - } - }, - "node_modules/globby": { - "version": "11.1.0", - "dev": true, - "license": "MIT", - "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/gopd": { - "version": "1.0.1", - "dev": true, - "license": "MIT", - "dependencies": { - "get-intrinsic": "^1.1.3" - }, - "funding": { - "url": "https://github.com/sponsors/ljharb" - } - }, - "node_modules/graphemer": { - "version": "1.4.0", - "dev": true, - "license": "MIT" - }, - "node_modules/has-bigints": { - "version": "1.0.2", - "dev": true, - "license": "MIT", - "funding": { - "url": "https://github.com/sponsors/ljharb" - } - }, - "node_modules/has-flag": { - "version": "4.0.0", - "dev": true, - "license": "MIT", - "engines": { - "node": ">=8" - } - }, - "node_modules/has-property-descriptors": { - "version": "1.0.2", - "dev": true, - "license": "MIT", - "dependencies": { - "es-define-property": "^1.0.0" - }, - "funding": { - "url": "https://github.com/sponsors/ljharb" - } - }, - "node_modules/has-proto": { - "version": "1.0.3", - "dev": true, - "license": "MIT", - "engines": { - "node": ">= 0.4" - }, - "funding": { - "url": "https://github.com/sponsors/ljharb" - } - }, - "node_modules/has-symbols": { - "version": "1.0.3", - "dev": true, - "license": "MIT", - "engines": { - "node": ">= 0.4" - }, - "funding": { - "url": "https://github.com/sponsors/ljharb" - } - }, - "node_modules/has-tostringtag": { - "version": "1.0.2", - "dev": true, - "license": "MIT", - "dependencies": { - "has-symbols": "^1.0.3" - }, - "engines": { - "node": ">= 0.4" - }, - "funding": { - "url": "https://github.com/sponsors/ljharb" - } - }, - "node_modules/hasown": { - "version": "2.0.1", - "dev": true, - "license": "MIT", - "dependencies": { - "function-bind": "^1.1.2" - }, - "engines": { - "node": ">= 0.4" - } - }, - "node_modules/ignore": { - "version": "5.3.1", - "dev": true, - "license": "MIT", - "engines": { - "node": ">= 4" - } - }, - "node_modules/import-fresh": { - "version": "3.3.0", - "dev": true, - "license": "MIT", - "dependencies": { - "parent-module": "^1.0.0", - "resolve-from": "^4.0.0" - }, - "engines": { - "node": ">=6" - }, - "funding": { - "url": "https://github.com/sponsors/sindresorhus" - } - }, - "node_modules/imurmurhash": { - "version": "0.1.4", - "dev": true, - "license": "MIT", - "engines": { - "node": ">=0.8.19" - } - }, - "node_modules/inflight": { - "version": "1.0.6", - "dev": true, - "license": "ISC", - "dependencies": { - "once": "^1.3.0", - "wrappy": "1" - } - }, - "node_modules/inherits": { - "version": "2.0.4", - "dev": true, - "license": "ISC" - }, - "node_modules/internal-slot": { - "version": "1.0.7", - "dev": true, - "license": "MIT", - "dependencies": { - "es-errors": "^1.3.0", - "hasown": "^2.0.0", - "side-channel": "^1.0.4" - }, - "engines": { - "node": ">= 0.4" - } - }, - "node_modules/is-array-buffer": { - "version": "3.0.4", - "dev": true, - "license": "MIT", - "dependencies": { - "call-bind": "^1.0.2", - "get-intrinsic": "^1.2.1" - }, - "engines": { - "node": ">= 0.4" - }, - "funding": { - "url": "https://github.com/sponsors/ljharb" - } - }, - "node_modules/is-async-function": { - "version": "2.0.0", - "dev": true, - "license": "MIT", - "dependencies": { - "has-tostringtag": "^1.0.0" - }, - "engines": { - "node": ">= 0.4" - }, - "funding": { - "url": "https://github.com/sponsors/ljharb" - } - }, - "node_modules/is-bigint": { - "version": "1.0.4", - "dev": true, - "license": "MIT", - "dependencies": { - "has-bigints": "^1.0.1" - }, - "funding": { - "url": "https://github.com/sponsors/ljharb" - } - }, - "node_modules/is-boolean-object": { - "version": "1.1.2", - "dev": true, - "license": "MIT", - "dependencies": { - "call-bind": "^1.0.2", - "has-tostringtag": "^1.0.0" - }, - "engines": { - "node": ">= 0.4" - }, - "funding": { - "url": "https://github.com/sponsors/ljharb" - } - }, - "node_modules/is-callable": { - "version": "1.2.7", - "dev": true, - "license": "MIT", - "engines": { - "node": ">= 0.4" - }, - "funding": { - "url": "https://github.com/sponsors/ljharb" - } - }, - "node_modules/is-core-module": { - "version": "2.13.1", - "dev": true, - "license": "MIT", - "dependencies": { - "hasown": "^2.0.0" - }, - "funding": { - "url": "https://github.com/sponsors/ljharb" - } - }, - "node_modules/is-date-object": { - "version": "1.0.5", - "dev": true, - "license": "MIT", - "dependencies": { - "has-tostringtag": "^1.0.0" - }, - "engines": { - "node": ">= 0.4" - }, - "funding": { - "url": "https://github.com/sponsors/ljharb" - } - }, - "node_modules/is-extglob": { - "version": "2.1.1", - "dev": true, - "license": "MIT", - "engines": { - "node": ">=0.10.0" - } - }, - "node_modules/is-finalizationregistry": { - "version": "1.0.2", - "dev": true, - "license": "MIT", - "dependencies": { - "call-bind": "^1.0.2" - }, - "funding": { - "url": "https://github.com/sponsors/ljharb" - } - }, - "node_modules/is-fullwidth-code-point": { - "version": "3.0.0", - "dev": true, - "license": "MIT", - "engines": { - "node": ">=8" - } - }, - "node_modules/is-generator-function": { - "version": "1.0.10", - "dev": true, - "license": "MIT", - "dependencies": { - "has-tostringtag": "^1.0.0" - }, - "engines": { - "node": ">= 0.4" - }, - "funding": { - "url": "https://github.com/sponsors/ljharb" - } - }, - "node_modules/is-glob": { - "version": "4.0.3", - "dev": true, - "license": "MIT", - "dependencies": { - "is-extglob": "^2.1.1" - }, - "engines": { - "node": ">=0.10.0" - } - }, - "node_modules/is-map": { - "version": "2.0.2", - "dev": true, - "license": "MIT", - "funding": { - "url": "https://github.com/sponsors/ljharb" - } - }, - "node_modules/is-negative-zero": { - "version": "2.0.3", - "dev": true, - "license": "MIT", - "engines": { - "node": ">= 0.4" - }, - "funding": { - "url": "https://github.com/sponsors/ljharb" - } - }, - "node_modules/is-number": { - "version": "7.0.0", - "dev": true, - "license": "MIT", - "engines": { - "node": ">=0.12.0" - } - }, - "node_modules/is-number-object": { - "version": "1.0.7", - "dev": true, - "license": "MIT", - "dependencies": { - "has-tostringtag": "^1.0.0" - }, - "engines": { - "node": ">= 0.4" - }, - "funding": { - "url": "https://github.com/sponsors/ljharb" - } - }, - "node_modules/is-path-inside": { - "version": "3.0.3", - "dev": true, - "license": "MIT", - "engines": { - "node": ">=8" - } - }, - "node_modules/is-regex": { - "version": "1.1.4", - "dev": true, - "license": "MIT", - "dependencies": { - "call-bind": "^1.0.2", - "has-tostringtag": "^1.0.0" - }, - "engines": { - "node": ">= 0.4" - }, - "funding": { - "url": "https://github.com/sponsors/ljharb" - } - }, - "node_modules/is-set": { - "version": "2.0.2", - "dev": true, - "license": "MIT", - "funding": { - "url": "https://github.com/sponsors/ljharb" - } - }, - "node_modules/is-shared-array-buffer": { - "version": "1.0.3", - "dev": true, - "license": "MIT", - "dependencies": { - "call-bind": "^1.0.7" - }, - "engines": { - "node": ">= 0.4" - }, - "funding": { - "url": "https://github.com/sponsors/ljharb" - } - }, - "node_modules/is-string": { - "version": "1.0.7", - "dev": true, - "license": "MIT", - "dependencies": { - "has-tostringtag": "^1.0.0" - }, - "engines": { - "node": ">= 0.4" - }, - "funding": { - "url": "https://github.com/sponsors/ljharb" - } - }, - "node_modules/is-symbol": { - "version": "1.0.4", - "dev": true, - "license": "MIT", - "dependencies": { - "has-symbols": "^1.0.2" - }, - "engines": { - "node": ">= 0.4" - }, - "funding": { - "url": "https://github.com/sponsors/ljharb" - } - }, - "node_modules/is-typed-array": { - "version": "1.1.13", - "dev": true, - "license": "MIT", - "dependencies": { - "which-typed-array": "^1.1.14" - }, - "engines": { - "node": ">= 0.4" - }, - "funding": { - "url": "https://github.com/sponsors/ljharb" - } - }, - "node_modules/is-weakmap": { - "version": "2.0.1", - "dev": true, - "license": "MIT", - "funding": { - "url": "https://github.com/sponsors/ljharb" - } - }, - "node_modules/is-weakref": { - "version": "1.0.2", - "dev": true, - "license": "MIT", - "dependencies": { - "call-bind": "^1.0.2" - }, - "funding": { - "url": "https://github.com/sponsors/ljharb" - } - }, - "node_modules/is-weakset": { - "version": "2.0.2", - "dev": true, - "license": "MIT", - "dependencies": { - "call-bind": "^1.0.2", - "get-intrinsic": "^1.1.1" - }, - "funding": { - "url": "https://github.com/sponsors/ljharb" - } - }, - "node_modules/isarray": { - "version": "2.0.5", - "dev": true, - "license": "MIT" - }, - "node_modules/isexe": { - "version": "2.0.0", - "dev": true, - "license": "ISC" - }, - "node_modules/iterator.prototype": { - "version": "1.1.2", - "dev": true, - "license": "MIT", - "dependencies": { - "define-properties": "^1.2.1", - "get-intrinsic": "^1.2.1", - "has-symbols": "^1.0.3", - "reflect.getprototypeof": "^1.0.4", - "set-function-name": "^2.0.1" - } - }, - "node_modules/js-tokens": { - "version": "4.0.0", - "dev": true, - "license": "MIT" - }, - "node_modules/js-yaml": { - "version": "4.1.0", - "dev": true, - "license": "MIT", - "dependencies": { - "argparse": "^2.0.1" - }, - "bin": { - "js-yaml": "bin/js-yaml.js" - } - }, - "node_modules/json-buffer": { - "version": "3.0.1", - "dev": true, - "license": "MIT" - }, - "node_modules/json-schema-traverse": { - "version": "0.4.1", - "dev": true, - "license": "MIT" - }, - "node_modules/json-stable-stringify-without-jsonify": { - "version": "1.0.1", - "dev": true, - "license": "MIT" - }, - "node_modules/jsx-ast-utils": { - "version": "3.3.5", - "dev": true, - "license": "MIT", - "dependencies": { - "array-includes": "^3.1.6", - "array.prototype.flat": "^1.3.1", - "object.assign": "^4.1.4", - "object.values": "^1.1.6" - }, - "engines": { - "node": ">=4.0" - } - }, - "node_modules/keyv": { - "version": "4.5.4", - "dev": true, - "license": "MIT", - "dependencies": { - "json-buffer": "3.0.1" - } - }, - "node_modules/levn": { - "version": "0.4.1", - "dev": true, - "license": "MIT", - "dependencies": { - "prelude-ls": "^1.2.1", - "type-check": "~0.4.0" - }, - "engines": { - "node": ">= 0.8.0" - } - }, - "node_modules/locate-path": { - "version": "6.0.0", - "dev": true, - "license": "MIT", - "dependencies": { - "p-locate": "^5.0.0" - }, - "engines": { - "node": ">=10" - }, - "funding": { - "url": "https://github.com/sponsors/sindresorhus" - } - }, - "node_modules/lodash": { - "version": "4.17.21", - "dev": true, - "license": "MIT" - }, - "node_modules/lodash.merge": { - "version": "4.6.2", - "dev": true, - "license": "MIT" - }, - "node_modules/loose-envify": { - "version": "1.4.0", - "dev": true, - "license": "MIT", - "dependencies": { - "js-tokens": "^3.0.0 || ^4.0.0" - }, - "bin": { - "loose-envify": "cli.js" - } - }, - "node_modules/lru-cache": { - "version": "6.0.0", - "dev": true, - "license": "ISC", - "dependencies": { - "yallist": "^4.0.0" - }, - "engines": { - "node": ">=10" - } - }, - "node_modules/merge2": { - "version": "1.4.1", - "dev": true, - "license": "MIT", - "engines": { - "node": ">= 8" - } - }, - "node_modules/micromatch": { - "version": "4.0.5", - "dev": true, - "license": "MIT", - "dependencies": { - "braces": "^3.0.2", - "picomatch": "^2.3.1" - }, - "engines": { - "node": ">=8.6" - } - }, - "node_modules/minimatch": { - "version": "3.1.2", - "dev": true, - "license": "ISC", - "dependencies": { - "brace-expansion": "^1.1.7" - }, - "engines": { - "node": "*" - } - }, - "node_modules/ms": { - "version": "2.1.2", - "dev": true, - "license": "MIT" - }, - "node_modules/natural-compare": { - "version": "1.4.0", - "dev": true, - "license": "MIT" - }, - "node_modules/natural-compare-lite": { - "version": "1.4.0", - "dev": true, - "license": "MIT" - }, - "node_modules/object-assign": { - "version": "4.1.1", - "dev": true, - "license": "MIT", - "engines": { - "node": ">=0.10.0" - } - }, - "node_modules/object-inspect": { - "version": "1.13.1", - "dev": true, - "license": "MIT", - "funding": { - "url": "https://github.com/sponsors/ljharb" - } - }, - "node_modules/object-keys": { - "version": "1.1.1", - "dev": true, - "license": "MIT", - "engines": { - "node": ">= 0.4" - } - }, - "node_modules/object.assign": { - "version": "4.1.5", - "dev": true, - "license": "MIT", - "dependencies": { - "call-bind": "^1.0.5", - "define-properties": "^1.2.1", - "has-symbols": "^1.0.3", - "object-keys": "^1.1.1" - }, - "engines": { - "node": ">= 0.4" - }, - "funding": { - "url": "https://github.com/sponsors/ljharb" - } - }, - "node_modules/object.entries": { - "version": "1.1.7", - "dev": true, - "license": "MIT", - "dependencies": { - "call-bind": "^1.0.2", - "define-properties": "^1.2.0", - "es-abstract": "^1.22.1" - }, - "engines": { - "node": ">= 0.4" - } - }, - "node_modules/object.fromentries": { - "version": "2.0.7", - "dev": true, - "license": "MIT", - "dependencies": { - "call-bind": "^1.0.2", - "define-properties": "^1.2.0", - "es-abstract": "^1.22.1" - }, - "engines": { - "node": ">= 0.4" - }, - "funding": { - "url": "https://github.com/sponsors/ljharb" - } - }, - "node_modules/object.hasown": { - "version": "1.1.3", - "dev": true, - "license": "MIT", - "dependencies": { - "define-properties": "^1.2.0", - "es-abstract": "^1.22.1" - }, - "funding": { - "url": "https://github.com/sponsors/ljharb" - } - }, - "node_modules/object.values": { - "version": "1.1.7", - "dev": true, - "license": "MIT", - "dependencies": { - "call-bind": "^1.0.2", - "define-properties": "^1.2.0", - "es-abstract": "^1.22.1" - }, - "engines": { - "node": ">= 0.4" - }, - "funding": { - "url": "https://github.com/sponsors/ljharb" - } - }, - "node_modules/once": { - "version": "1.4.0", - "dev": true, - "license": "ISC", - "dependencies": { - "wrappy": "1" - } - }, - "node_modules/optionator": { - "version": "0.9.3", - "dev": true, - "license": "MIT", - "dependencies": { - "@aashutoshrathi/word-wrap": "^1.2.3", - "deep-is": "^0.1.3", - "fast-levenshtein": "^2.0.6", - "levn": "^0.4.1", - "prelude-ls": "^1.2.1", - "type-check": "^0.4.0" - }, - "engines": { - "node": ">= 0.8.0" - } - }, - "node_modules/p-limit": { - "version": "3.1.0", - "dev": true, - "license": "MIT", - "dependencies": { - "yocto-queue": "^0.1.0" - }, - "engines": { - "node": ">=10" - }, - "funding": { - "url": "https://github.com/sponsors/sindresorhus" - } - }, - "node_modules/p-locate": { - "version": "5.0.0", - "dev": true, - "license": "MIT", - "dependencies": { - "p-limit": "^3.0.2" - }, - "engines": { - "node": ">=10" - }, - "funding": { - "url": "https://github.com/sponsors/sindresorhus" - } - }, - "node_modules/parent-module": { - "version": "1.0.1", - "dev": true, - "license": "MIT", - "dependencies": { - "callsites": "^3.0.0" - }, - "engines": { - "node": ">=6" - } - }, - "node_modules/path-exists": { - "version": "4.0.0", - "dev": true, - "license": "MIT", - "engines": { - "node": ">=8" - } - }, - "node_modules/path-is-absolute": { - "version": "1.0.1", - "dev": true, - "license": "MIT", - "engines": { - "node": ">=0.10.0" - } - }, - "node_modules/path-key": { - "version": "3.1.1", - "dev": true, - "license": "MIT", - "engines": { - "node": ">=8" - } - }, - "node_modules/path-parse": { - "version": "1.0.7", - "dev": true, - "license": "MIT" - }, - "node_modules/path-type": { - "version": "4.0.0", - "dev": true, - "license": "MIT", - "engines": { - "node": ">=8" - } - }, - "node_modules/picomatch": { - "version": "2.3.1", - "dev": true, - "license": "MIT", - "engines": { - "node": ">=8.6" - }, - "funding": { - "url": "https://github.com/sponsors/jonschlinkert" - } - }, - "node_modules/possible-typed-array-names": { - "version": "1.0.0", - "dev": true, - "license": "MIT", - "engines": { - "node": ">= 0.4" - } - }, - "node_modules/prelude-ls": { - "version": "1.2.1", - "dev": true, - "license": "MIT", - "engines": { - "node": ">= 0.8.0" - } - }, - "node_modules/prettier": { - "version": "2.7.1", - "dev": true, - "license": "MIT", - "bin": { - "prettier": "bin-prettier.js" - }, - "engines": { - "node": ">=10.13.0" - }, - "funding": { - "url": "https://github.com/prettier/prettier?sponsor=1" - } - }, - "node_modules/prettier-linter-helpers": { - "version": "1.0.0", - "dev": true, - "license": "MIT", - "dependencies": { - "fast-diff": "^1.1.2" - }, - "engines": { - "node": ">=6.0.0" - } - }, - "node_modules/prettier-plugin-astro": { - "version": "0.7.2", - "dev": true, - "license": "MIT", - "dependencies": { - "@astrojs/compiler": "^0.31.3", - "prettier": "^2.7.1", - "sass-formatter": "^0.7.5", - "synckit": "^0.8.4" - }, - "engines": { - "node": "^14.15.0 || >=16.0.0", - "pnpm": ">=7.14.0" - } - }, - "node_modules/prettier-plugin-astro/node_modules/prettier": { - "version": "2.8.8", - "dev": true, - "license": "MIT", - "bin": { - "prettier": "bin-prettier.js" - }, - "engines": { - "node": ">=10.13.0" - }, - "funding": { - "url": "https://github.com/prettier/prettier?sponsor=1" - } - }, - "node_modules/prettier-plugin-tailwindcss": { - "version": "0.1.13", - "dev": true, - "engines": { - "node": ">=12.17.0" - }, - "peerDependencies": { - "prettier": ">=2.2.0" - } - }, - "node_modules/prop-types": { - "version": "15.8.1", - "dev": true, - "license": "MIT", - "dependencies": { - "loose-envify": "^1.4.0", - "object-assign": "^4.1.1", - "react-is": "^16.13.1" - } - }, - "node_modules/punycode": { - "version": "2.3.1", - "dev": true, - "license": "MIT", - "engines": { - "node": ">=6" - } - }, - "node_modules/queue-microtask": { - "version": "1.2.3", - "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" - } - ], - "license": "MIT" - }, - "node_modules/react-is": { - "version": "16.13.1", - "dev": true, - "license": "MIT" - }, - "node_modules/reflect.getprototypeof": { - "version": "1.0.5", - "dev": true, - "license": "MIT", - "dependencies": { - "call-bind": "^1.0.5", - "define-properties": "^1.2.1", - "es-abstract": "^1.22.3", - "es-errors": "^1.0.0", - "get-intrinsic": "^1.2.3", - "globalthis": "^1.0.3", - "which-builtin-type": "^1.1.3" - }, - "engines": { - "node": ">= 0.4" - }, - "funding": { - "url": "https://github.com/sponsors/ljharb" - } - }, - "node_modules/regenerator-runtime": { - "version": "0.14.1", - "dev": true, - "license": "MIT" - }, - "node_modules/regexp.prototype.flags": { - "version": "1.5.2", - "dev": true, - "license": "MIT", - "dependencies": { - "call-bind": "^1.0.6", - "define-properties": "^1.2.1", - "es-errors": "^1.3.0", - "set-function-name": "^2.0.1" - }, - "engines": { - "node": ">= 0.4" - }, - "funding": { - "url": "https://github.com/sponsors/ljharb" - } - }, - "node_modules/require-directory": { - "version": "2.1.1", - "dev": true, - "license": "MIT", - "engines": { - "node": ">=0.10.0" - } - }, - "node_modules/resolve": { - "version": "2.0.0-next.5", - "dev": true, - "license": "MIT", - "dependencies": { - "is-core-module": "^2.13.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/resolve-from": { - "version": "4.0.0", - "dev": true, - "license": "MIT", - "engines": { - "node": ">=4" - } - }, - "node_modules/reusify": { - "version": "1.0.4", - "dev": true, - "license": "MIT", - "engines": { - "iojs": ">=1.0.0", - "node": ">=0.10.0" - } - }, - "node_modules/rimraf": { - "version": "3.0.2", - "dev": true, - "license": "ISC", - "dependencies": { - "glob": "^7.1.3" - }, - "bin": { - "rimraf": "bin.js" - }, - "funding": { - "url": "https://github.com/sponsors/isaacs" - } - }, - "node_modules/run-parallel": { - "version": "1.2.0", - "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" - } - ], - "license": "MIT", - "dependencies": { - "queue-microtask": "^1.2.2" - } - }, - "node_modules/rxjs": { - "version": "7.8.1", - "dev": true, - "license": "Apache-2.0", - "dependencies": { - "tslib": "^2.1.0" - } - }, - "node_modules/s.color": { - "version": "0.0.15", - "dev": true, - "license": "MIT" - }, - "node_modules/safe-array-concat": { - "version": "1.1.0", - "dev": true, - "license": "MIT", - "dependencies": { - "call-bind": "^1.0.5", - "get-intrinsic": "^1.2.2", - "has-symbols": "^1.0.3", - "isarray": "^2.0.5" - }, - "engines": { - "node": ">=0.4" - }, - "funding": { - "url": "https://github.com/sponsors/ljharb" - } - }, - "node_modules/safe-regex-test": { - "version": "1.0.3", - "dev": true, - "license": "MIT", - "dependencies": { - "call-bind": "^1.0.6", - "es-errors": "^1.3.0", - "is-regex": "^1.1.4" - }, - "engines": { - "node": ">= 0.4" - }, - "funding": { - "url": "https://github.com/sponsors/ljharb" - } - }, - "node_modules/sass-formatter": { - "version": "0.7.9", - "dev": true, - "license": "MIT", - "dependencies": { - "suf-log": "^2.5.3" - } - }, - "node_modules/semver": { - "version": "7.6.0", - "dev": true, - "license": "ISC", - "dependencies": { - "lru-cache": "^6.0.0" - }, - "bin": { - "semver": "bin/semver.js" - }, - "engines": { - "node": ">=10" - } - }, - "node_modules/set-function-length": { - "version": "1.2.1", - "dev": true, - "license": "MIT", - "dependencies": { - "define-data-property": "^1.1.2", - "es-errors": "^1.3.0", - "function-bind": "^1.1.2", - "get-intrinsic": "^1.2.3", - "gopd": "^1.0.1", - "has-property-descriptors": "^1.0.1" - }, - "engines": { - "node": ">= 0.4" - } - }, - "node_modules/set-function-name": { - "version": "2.0.2", - "dev": true, - "license": "MIT", - "dependencies": { - "define-data-property": "^1.1.4", - "es-errors": "^1.3.0", - "functions-have-names": "^1.2.3", - "has-property-descriptors": "^1.0.2" - }, - "engines": { - "node": ">= 0.4" - } - }, - "node_modules/shebang-command": { - "version": "2.0.0", - "dev": true, - "license": "MIT", - "dependencies": { - "shebang-regex": "^3.0.0" - }, - "engines": { - "node": ">=8" - } - }, - "node_modules/shebang-regex": { - "version": "3.0.0", - "dev": true, - "license": "MIT", - "engines": { - "node": ">=8" - } - }, - "node_modules/shell-quote": { - "version": "1.8.1", - "dev": true, - "license": "MIT", - "funding": { - "url": "https://github.com/sponsors/ljharb" - } - }, - "node_modules/side-channel": { - "version": "1.0.5", - "dev": true, - "license": "MIT", - "dependencies": { - "call-bind": "^1.0.6", - "es-errors": "^1.3.0", - "get-intrinsic": "^1.2.4", - "object-inspect": "^1.13.1" - }, - "engines": { - "node": ">= 0.4" - }, - "funding": { - "url": "https://github.com/sponsors/ljharb" - } - }, - "node_modules/slash": { - "version": "3.0.0", - "dev": true, - "license": "MIT", - "engines": { - "node": ">=8" - } - }, - "node_modules/spawn-command": { - "version": "0.0.2-1", - "dev": true, - "license": "MIT" - }, - "node_modules/string-width": { - "version": "4.2.3", - "dev": true, - "license": "MIT", - "dependencies": { - "emoji-regex": "^8.0.0", - "is-fullwidth-code-point": "^3.0.0", - "strip-ansi": "^6.0.1" - }, - "engines": { - "node": ">=8" - } - }, - "node_modules/string.prototype.matchall": { - "version": "4.0.10", - "dev": true, - "license": "MIT", - "dependencies": { - "call-bind": "^1.0.2", - "define-properties": "^1.2.0", - "es-abstract": "^1.22.1", - "get-intrinsic": "^1.2.1", - "has-symbols": "^1.0.3", - "internal-slot": "^1.0.5", - "regexp.prototype.flags": "^1.5.0", - "set-function-name": "^2.0.0", - "side-channel": "^1.0.4" - }, - "funding": { - "url": "https://github.com/sponsors/ljharb" - } - }, - "node_modules/string.prototype.trim": { - "version": "1.2.8", - "dev": true, - "license": "MIT", - "dependencies": { - "call-bind": "^1.0.2", - "define-properties": "^1.2.0", - "es-abstract": "^1.22.1" - }, - "engines": { - "node": ">= 0.4" - }, - "funding": { - "url": "https://github.com/sponsors/ljharb" - } - }, - "node_modules/string.prototype.trimend": { - "version": "1.0.7", - "dev": true, - "license": "MIT", - "dependencies": { - "call-bind": "^1.0.2", - "define-properties": "^1.2.0", - "es-abstract": "^1.22.1" - }, - "funding": { - "url": "https://github.com/sponsors/ljharb" - } - }, - "node_modules/string.prototype.trimstart": { - "version": "1.0.7", - "dev": true, - "license": "MIT", - "dependencies": { - "call-bind": "^1.0.2", - "define-properties": "^1.2.0", - "es-abstract": "^1.22.1" - }, - "funding": { - "url": "https://github.com/sponsors/ljharb" - } - }, - "node_modules/strip-ansi": { - "version": "6.0.1", - "dev": true, - "license": "MIT", - "dependencies": { - "ansi-regex": "^5.0.1" - }, - "engines": { - "node": ">=8" - } - }, - "node_modules/strip-json-comments": { - "version": "3.1.1", - "dev": true, - "license": "MIT", - "engines": { - "node": ">=8" - }, - "funding": { - "url": "https://github.com/sponsors/sindresorhus" - } - }, - "node_modules/suf-log": { - "version": "2.5.3", - "dev": true, - "license": "MIT", - "dependencies": { - "s.color": "0.0.15" - } - }, - "node_modules/supports-color": { - "version": "8.1.1", - "dev": true, - "license": "MIT", - "dependencies": { - "has-flag": "^4.0.0" - }, - "engines": { - "node": ">=10" - }, - "funding": { - "url": "https://github.com/chalk/supports-color?sponsor=1" - } - }, - "node_modules/supports-preserve-symlinks-flag": { - "version": "1.0.0", - "dev": true, - "license": "MIT", - "engines": { - "node": ">= 0.4" - }, - "funding": { - "url": "https://github.com/sponsors/ljharb" - } - }, - "node_modules/synckit": { - "version": "0.8.8", - "dev": true, - "license": "MIT", - "dependencies": { - "@pkgr/core": "^0.1.0", - "tslib": "^2.6.2" - }, - "engines": { - "node": "^14.18.0 || >=16.0.0" - }, - "funding": { - "url": "https://opencollective.com/unts" - } - }, - "node_modules/text-table": { - "version": "0.2.0", - "dev": true, - "license": "MIT" - }, - "node_modules/to-regex-range": { - "version": "5.0.1", - "dev": true, - "license": "MIT", - "dependencies": { - "is-number": "^7.0.0" - }, - "engines": { - "node": ">=8.0" - } - }, - "node_modules/tree-kill": { - "version": "1.2.2", - "dev": true, - "license": "MIT", - "bin": { - "tree-kill": "cli.js" - } - }, - "node_modules/tslib": { - "version": "2.6.2", - "dev": true, - "license": "0BSD" - }, - "node_modules/tsutils": { - "version": "3.21.0", - "dev": true, - "license": "MIT", - "dependencies": { - "tslib": "^1.8.1" - }, - "engines": { - "node": ">= 6" - }, - "peerDependencies": { - "typescript": ">=2.8.0 || >= 3.2.0-dev || >= 3.3.0-dev || >= 3.4.0-dev || >= 3.5.0-dev || >= 3.6.0-dev || >= 3.6.0-beta || >= 3.7.0-dev || >= 3.7.0-beta" - } - }, - "node_modules/tsutils/node_modules/tslib": { - "version": "1.14.1", - "dev": true, - "license": "0BSD" - }, - "node_modules/type-check": { - "version": "0.4.0", - "dev": true, - "license": "MIT", - "dependencies": { - "prelude-ls": "^1.2.1" - }, - "engines": { - "node": ">= 0.8.0" - } - }, - "node_modules/type-fest": { - "version": "0.20.2", - "dev": true, - "license": "(MIT OR CC0-1.0)", - "engines": { - "node": ">=10" - }, - "funding": { - "url": "https://github.com/sponsors/sindresorhus" - } - }, - "node_modules/typed-array-buffer": { - "version": "1.0.2", - "dev": true, - "license": "MIT", - "dependencies": { - "call-bind": "^1.0.7", - "es-errors": "^1.3.0", - "is-typed-array": "^1.1.13" - }, - "engines": { - "node": ">= 0.4" - } - }, - "node_modules/typed-array-byte-length": { - "version": "1.0.1", - "dev": true, - "license": "MIT", - "dependencies": { - "call-bind": "^1.0.7", - "for-each": "^0.3.3", - "gopd": "^1.0.1", - "has-proto": "^1.0.3", - "is-typed-array": "^1.1.13" - }, - "engines": { - "node": ">= 0.4" - }, - "funding": { - "url": "https://github.com/sponsors/ljharb" - } - }, - "node_modules/typed-array-byte-offset": { - "version": "1.0.2", - "dev": true, - "license": "MIT", - "dependencies": { - "available-typed-arrays": "^1.0.7", - "call-bind": "^1.0.7", - "for-each": "^0.3.3", - "gopd": "^1.0.1", - "has-proto": "^1.0.3", - "is-typed-array": "^1.1.13" - }, - "engines": { - "node": ">= 0.4" - }, - "funding": { - "url": "https://github.com/sponsors/ljharb" - } - }, - "node_modules/typed-array-length": { - "version": "1.0.5", - "dev": true, - "license": "MIT", - "dependencies": { - "call-bind": "^1.0.7", - "for-each": "^0.3.3", - "gopd": "^1.0.1", - "has-proto": "^1.0.3", - "is-typed-array": "^1.1.13", - "possible-typed-array-names": "^1.0.0" - }, - "engines": { - "node": ">= 0.4" - }, - "funding": { - "url": "https://github.com/sponsors/ljharb" - } - }, - "node_modules/typescript": { - "version": "4.9.5", - "license": "Apache-2.0", - "bin": { - "tsc": "bin/tsc", - "tsserver": "bin/tsserver" - }, - "engines": { - "node": ">=4.2.0" - } - }, - "node_modules/unbox-primitive": { - "version": "1.0.2", - "dev": true, - "license": "MIT", - "dependencies": { - "call-bind": "^1.0.2", - "has-bigints": "^1.0.2", - "has-symbols": "^1.0.3", - "which-boxed-primitive": "^1.0.2" - }, - "funding": { - "url": "https://github.com/sponsors/ljharb" - } - }, - "node_modules/uri-js": { - "version": "4.4.1", - "dev": true, - "license": "BSD-2-Clause", - "dependencies": { - "punycode": "^2.1.0" - } - }, - "node_modules/which": { - "version": "2.0.2", - "dev": true, - "license": "ISC", - "dependencies": { - "isexe": "^2.0.0" - }, - "bin": { - "node-which": "bin/node-which" - }, - "engines": { - "node": ">= 8" - } - }, - "node_modules/which-boxed-primitive": { - "version": "1.0.2", - "dev": true, - "license": "MIT", - "dependencies": { - "is-bigint": "^1.0.1", - "is-boolean-object": "^1.1.0", - "is-number-object": "^1.0.4", - "is-string": "^1.0.5", - "is-symbol": "^1.0.3" - }, - "funding": { - "url": "https://github.com/sponsors/ljharb" - } - }, - "node_modules/which-builtin-type": { - "version": "1.1.3", - "dev": true, - "license": "MIT", - "dependencies": { - "function.prototype.name": "^1.1.5", - "has-tostringtag": "^1.0.0", - "is-async-function": "^2.0.0", - "is-date-object": "^1.0.5", - "is-finalizationregistry": "^1.0.2", - "is-generator-function": "^1.0.10", - "is-regex": "^1.1.4", - "is-weakref": "^1.0.2", - "isarray": "^2.0.5", - "which-boxed-primitive": "^1.0.2", - "which-collection": "^1.0.1", - "which-typed-array": "^1.1.9" - }, - "engines": { - "node": ">= 0.4" - }, - "funding": { - "url": "https://github.com/sponsors/ljharb" - } - }, - "node_modules/which-collection": { - "version": "1.0.1", - "dev": true, - "license": "MIT", - "dependencies": { - "is-map": "^2.0.1", - "is-set": "^2.0.1", - "is-weakmap": "^2.0.1", - "is-weakset": "^2.0.1" - }, - "funding": { - "url": "https://github.com/sponsors/ljharb" - } - }, - "node_modules/which-typed-array": { - "version": "1.1.14", - "dev": true, - "license": "MIT", - "dependencies": { - "available-typed-arrays": "^1.0.6", - "call-bind": "^1.0.5", - "for-each": "^0.3.3", - "gopd": "^1.0.1", - "has-tostringtag": "^1.0.1" - }, - "engines": { - "node": ">= 0.4" - }, - "funding": { - "url": "https://github.com/sponsors/ljharb" - } - }, - "node_modules/wrap-ansi": { - "version": "7.0.0", - "dev": true, - "license": "MIT", - "dependencies": { - "ansi-styles": "^4.0.0", - "string-width": "^4.1.0", - "strip-ansi": "^6.0.0" - }, - "engines": { - "node": ">=10" - }, - "funding": { - "url": "https://github.com/chalk/wrap-ansi?sponsor=1" - } - }, - "node_modules/wrappy": { - "version": "1.0.2", - "dev": true, - "license": "ISC" - }, - "node_modules/y18n": { - "version": "5.0.8", - "dev": true, - "license": "ISC", - "engines": { - "node": ">=10" - } - }, - "node_modules/yallist": { - "version": "4.0.0", - "dev": true, - "license": "ISC" - }, - "node_modules/yargs": { - "version": "17.7.2", - "dev": true, - "license": "MIT", - "dependencies": { - "cliui": "^8.0.1", - "escalade": "^3.1.1", - "get-caller-file": "^2.0.5", - "require-directory": "^2.1.1", - "string-width": "^4.2.3", - "y18n": "^5.0.5", - "yargs-parser": "^21.1.1" - }, - "engines": { - "node": ">=12" - } - }, - "node_modules/yargs-parser": { - "version": "21.1.1", - "dev": true, - "license": "ISC", - "engines": { - "node": ">=12" - } - }, - "node_modules/yocto-queue": { - "version": "0.1.0", - "dev": true, - "license": "MIT", - "engines": { - "node": ">=10" - }, - "funding": { - "url": "https://github.com/sponsors/sindresorhus" - } - } - } -} diff --git a/package.json b/package.json index 2218d8ea..f7895291 100644 --- a/package.json +++ b/package.json @@ -1,26 +1,22 @@ { "private": true, "scripts": { - "dev": "concurrently \"yarn dev:api\" \"yarn dev:website\"", - "dev:website": "cd website && yarn dev", - "dev:api": "cd api && yarn dev", - "format": "prettier --write \"**/*.{js,jsx,ts,tsx,json,md,mdx}\"", - "check:linting": "eslint . --max-warnings=0", - "check:formatting": "prettier --check \"**/*.{js,jsx,ts,tsx,json,md,mdx}\"" + "dev": "concurrently \"npm run dev:api\" \"npm run dev:website\"", + "dev:api": "cd api && bun dev", + "dev:website": "cd website && npm run dev", + "check": "npx @biomejs/biome check --write ." }, "dependencies": { - "typescript": "^4.5.4" + "typescript": "^5.5.3" }, "devDependencies": { - "@typescript-eslint/eslint-plugin": "^5.9.1", - "@typescript-eslint/parser": "^5.9.1", - "concurrently": "^7.0.0", - "eslint": "^8.6.0", - "eslint-config-prettier": "^8.3.0", - "eslint-plugin-prettier": "^4.0.0", - "eslint-plugin-react": "^7.28.0", - "prettier": "2.7.1", - "prettier-plugin-astro": "^0.7.0", - "prettier-plugin-tailwindcss": "^0.1.3" - } + "@biomejs/biome": "1.8.3", + "concurrently": "^7.0.0" + }, + "workspaces": [ + "api", + "website", + "og", + "packages/*" + ] } diff --git a/packages/client/.gitignore b/packages/cli/.gitignore similarity index 100% rename from packages/client/.gitignore rename to packages/cli/.gitignore diff --git a/packages/client/.npmignore b/packages/cli/.npmignore similarity index 100% rename from packages/client/.npmignore rename to packages/cli/.npmignore diff --git a/packages/cli/CHANGELOG.md b/packages/cli/CHANGELOG.md new file mode 100644 index 00000000..50be2096 --- /dev/null +++ b/packages/cli/CHANGELOG.md @@ -0,0 +1,9 @@ +## 1.0.4 + +- Fixed issues with the `init` command failing to run. +- Added prompts to confirm installation directory. + +## 1.0.0 + +- `init` command now creates a `docs.json` and `docs` folder in the root of the project. +- `check` command outputs issues with the documentation, such as invalid links. \ No newline at end of file diff --git a/packages/client/LICENSE b/packages/cli/LICENSE similarity index 100% rename from packages/client/LICENSE rename to packages/cli/LICENSE diff --git a/packages/cli/README.md b/packages/cli/README.md new file mode 100644 index 00000000..655734e4 --- /dev/null +++ b/packages/cli/README.md @@ -0,0 +1,23 @@ +# @docs.page/cli + +The docs.page CLI provides useful commands for managing your documentation via [https://docs.page](https://docs.page). + +To learn more, view the [documentation](https://use.docs.page/cli). + +## Commands + +### `init` + +Initializes a new documentation project in the current directory. This command creates a `docs.json` file and a `docs` folder in the root of the project. + +```sh +npx @docs.page/cli init new-project +``` + +### `check` + +Checks the documentation for issues, such as invalid links. + +```sh +npx @docs.page/cli check +``` \ No newline at end of file diff --git a/packages/cli/package.json b/packages/cli/package.json new file mode 100644 index 00000000..eb355497 --- /dev/null +++ b/packages/cli/package.json @@ -0,0 +1,34 @@ +{ + "name": "@docs.page/cli", + "version": "1.0.4", + "author": "Invertase (http://invertase.io)", + "license": "Apache-2.0", + "type": "module", + "bin": { + "@docs.page/cli": "dist/cli.js" + }, + "keywords": ["docs.page", "documentation", "docs"], + "exports": { + ".": { + "import": "./dist/index.js", + "types": "./dist/index.d.ts" + } + }, + "scripts": { + "build": "rimraf dist && npx tsup src/index.ts src/cli.ts --format esm --dts", + "watch": "npx tsup src/index.ts src/cli.ts --format esm --dts --watch", + "prepublishOnly": "npm run build" + }, + "files": ["dist", "LICENSE", "README.md"], + "dependencies": { + "@inquirer/prompts": "^5.3.8", + "chalk": "^5.3.0", + "commander": "^12.1.0", + "rimraf": "^6.0.1" + }, + "devDependencies": { + "@types/node": "^22.0.0", + "tsup": "^8.2.4", + "typescript": "^5.5.4" + } +} diff --git a/packages/cli/src/check/configuration.ts b/packages/cli/src/check/configuration.ts new file mode 100644 index 00000000..42466ecb --- /dev/null +++ b/packages/cli/src/check/configuration.ts @@ -0,0 +1,8 @@ +import type { CheckResult, Routes } from "./types"; + +export function* checkConfiguration( + routes: Routes, + configuration: unknown, +): Generator { + // +} diff --git a/packages/cli/src/check/index.ts b/packages/cli/src/check/index.ts new file mode 100644 index 00000000..f411f672 --- /dev/null +++ b/packages/cli/src/check/index.ts @@ -0,0 +1,84 @@ +import { checkConfiguration } from "./configuration"; +import { checkRelativeLinks } from "./relative-links"; +import type { CheckResult, Route } from "./types"; +export type * from "./types"; + +export async function* check( + // A set of files in the directory to check. + files: Set, + // Callback to get the content of a file (e.g. from fs, or a virtual file system). + getFile: (path: string) => Promise, +): AsyncGenerator { + // There must be a docs.json (or deprecated docs.yaml) file in the directory. + if (!files.has("docs.json") && !files.has("docs.yaml")) { + yield { + type: "error", + message: + "Directory is missing a configuration file. Expected a `docs.json` file in the root of the directory.", + }; + } + + const routes = new Map(); + + // Extract the routes from the files + for (const filePath of files) { + // We only care about files within the /docs/** directory + if (!filePath.startsWith("docs/")) { + continue; + } + + // Remove the docs/ prefix from the file path + let normalizedFilePath = filePath.replace(/^docs\//, ""); + + // File paths can either be /hello/world.mdx, so convert it to /hello/world + normalizedFilePath = normalizedFilePath.replace(/\.(mdx)$/i, ""); + + // If ending with index + normalizedFilePath = normalizedFilePath.replace(/\/index$/i, ""); + + // If the normalized path is index, it means the file is the index file. + if (normalizedFilePath === "index") { + normalizedFilePath = ""; + } + + // If the normalized path is empty, it means the file is the index file. + normalizedFilePath = normalizedFilePath ? `/${normalizedFilePath}` : "/"; + + // If there is a clash of routes (e.g. /hello/world.mdx and /hello/world/index.mdx), + // throw an error. + if (routes.has(normalizedFilePath)) { + yield { + type: "error", + message: `There are multiple files which resolve to the same route "${normalizedFilePath}".`, + filePath, + line: 0, + column: 0, + }; + } + + // Store the file as a route. + routes.set(normalizedFilePath, { + filePath, + // Don't bother reading none .mdx files, since we don't care about their content. + content: filePath.endsWith(".mdx") ? await getFile(filePath) : "", + }); + } + + try { + const configFile = await getFile( + files.has("docs.json") ? "docs.json" : "docs.yaml", + ); + + yield* checkConfiguration(routes, JSON.parse(configFile!)); + } catch { + yield { + type: "error", + message: "Failed to parse the configuration file.", + filePath: files.has("docs.json") ? "docs.json" : "docs.yaml", + line: 0, + column: 0, + }; + } + + yield* checkRelativeLinks(routes); +} diff --git a/packages/cli/src/check/relative-links.ts b/packages/cli/src/check/relative-links.ts new file mode 100644 index 00000000..43ae7d8c --- /dev/null +++ b/packages/cli/src/check/relative-links.ts @@ -0,0 +1,93 @@ +import type { CheckResult, Route, Routes } from "./types"; + +const CODE_BLOCK = /```[\s\S]*?```/g; + +const IDENTIFIERS = { + // Matches all markdown links (e.g. [text](href)) + MD_LINK: /\[.*?\]\((.*?)\)/g, + // Matches all markdown images (e.g. ![alt](src)) + MDX_IMAGE: /!\[.*?\]\((.*?)\)/g, + // Matches all anchor html tags (e.g.
    ) + ANCHOR_HREF: /]*?\s+)?href="(.*?)"/g, + // Matches all image html tags (e.g. ) + IMAGE_SRC: /]*?\s+)?src="(.*?)"/g, + // Matches all MDX Image components (e.g. ) + MDX_IMAGE_SRC: /]*?\s+)?src="(.*?)"/g, + // Matches all video html tags (e.g. + ); +} diff --git a/website/app/components/Button.tsx b/website/app/components/Button.tsx new file mode 100644 index 00000000..ee507f1f --- /dev/null +++ b/website/app/components/Button.tsx @@ -0,0 +1,55 @@ +import { ChevronRightIcon } from "lucide-react"; +import { type ComponentProps, cloneElement, createElement } from "react"; +import { cn } from "~/utils"; + +type Props = + | ({ + as: "a"; + href: string; + children: string; + cta?: boolean; + } & ComponentProps<"a">) + | ({ + as: "button"; + children: string; + cta?: boolean; + } & ComponentProps<"button">); + +export function Button({ className, cta, ...props }: Props) { + let el: React.ReactNode; + + if (props.as === "button") { + el =