From a39ee4150cab290efa235c9164641d9eb6896cc2 Mon Sep 17 00:00:00 2001 From: Nikolai Dorofeev Date: Wed, 22 Nov 2023 14:35:10 +0400 Subject: [PATCH] D contracts (#7) * Init contracts project * Only one contracts repository * Init new contracts * Copy draft nft contracts * Move NFT functionality to the traits * Fix build errors * Restructure contracts, becuase upward import doesn't work https://github.com/tact-lang/tact/issues/73 * Update node and fix lock file * Build contracts before test * Lint and test in single job * Temporary hide tests * Add build script * Leave only one test * Implement accounting trait * Implement royalty extention * Extraxt logic from transfer reciever * Move get functions to the top * Add custom function to get individual content for NFT item. * Add getNftCollectionContent function to NftCollection trait * Refactor accounting functions to use more descriptive names * Add virtual function to calculate NFT item initial balance. * Add requireEnoughTonForMinting function to NftCollection trait * Fix semicolon in calculateNftItemInitalBalance() function * Refactor DSocialNetworkAccount and NftCollection to use owner instead of owner_address * Master contract draft * Fix build errors * Handle NFT custom internal content * Handle account initialization * Fix account registration * Group NFT messages * Try to store metadata on chain * Use emptyMap() for map initialization * Test accounts registration * Create tests specifically for the account * Change account parameters * Create post * Deploy test post to test how it looks like on getgems * Add master contract address to account info * Update social links to be stored as a JSON string * Update metadata arrays to use empty cells instead of JSON strings * Refactor metadata arrays to use empty cells * Store metadata in JSON string * Don't convert metadata to cell * Reuse similar messages * v0.0.1-metadata-as-struct-no-convertation-to-cell * v0.0.1-metadata-as-cells * v0.0.1-no-maps-in-metadata * Test parser for onchain metadata * Correctly serialize metadata with native functions * Correctly serialize dict fields * Serialize nft content in collection * Serialize nft collection metadata * Prevent NFT serialiozation from other collections * Add index validation in serializeNftContent function * Return standard metadata in 1 cell * Update version and remove content_url * Init d entities models * Serialize post metadata to description * Rework tests * Refactor serialization of individual content in NftItem trait * Refactor serializeIndividualContent function to remove unnecessary map initialization * Comment test affected by library https://github.com/ton-org/ton-core/issues/16 * Resolve BitBuilder overflow issue https://github.com/ton-org/ton-core/issues/16 * Slightly refactor test * Refactor DPost content field to contentMd * Init d.d0rich.me * Move models to frontend * lintfix * Refactor ignore-build.mjs files * Add build task for d.d0rich.me * Patch contracts wrappers imports * Add eslint-disable to new-imports.ts * Update DPostModel import in test-fixtures.ts * Rename account to blog * Update function name to get_blog_info() * Refactor blog initialization to use blog metadata * Add static covers images * Add manifest file and update favicon.ico * Fix sending amount calculation in contracts * Fix initialization and editing of blog and post metadata * Include additional fees for actions * Add StorageController trait to contracts * Update version to v1 --- .editorconfig | 5 +- .github/workflows/lint.yaml | 25 - .github/workflows/release.yaml | 4 +- .github/workflows/test.yaml | 10 +- .gitignore | 3 + .prettierignore | 3 +- .prettierrc | 12 +- .vscode/extensions.json | 4 +- apps/d.d0rich.me/.gitignore | 28 + apps/d.d0rich.me/README.md | 46 + apps/d.d0rich.me/env.d.ts | 1 + apps/d.d0rich.me/ignore-build.mjs | 3 + apps/d.d0rich.me/index.html | 14 + apps/d.d0rich.me/package.json | 33 + .../public/android-chrome-192x192.png | Bin 0 -> 11052 bytes .../public/android-chrome-512x512.png | Bin 0 -> 32985 bytes apps/d.d0rich.me/public/app.webmanifest | 20 + apps/d.d0rich.me/public/apple-touch-icon.png | Bin 0 -> 9932 bytes apps/d.d0rich.me/public/favicon-16x16.png | Bin 0 -> 696 bytes apps/d.d0rich.me/public/favicon-32x32.png | Bin 0 -> 1461 bytes apps/d.d0rich.me/public/favicon.ico | Bin 0 -> 15406 bytes apps/d.d0rich.me/public/favicon.svg | 1 + .../public/metadata/covers/blog.jpg | Bin 0 -> 128994 bytes .../public/metadata/covers/post.jpg | Bin 0 -> 124569 bytes apps/d.d0rich.me/public/og/image.jpg | Bin 0 -> 185301 bytes apps/d.d0rich.me/src/App.vue | 91 + apps/d.d0rich.me/src/assets/base.css | 74 + apps/d.d0rich.me/src/assets/logo.svg | 1 + apps/d.d0rich.me/src/assets/main.css | 35 + .../d.d0rich.me/src/components/HelloWorld.vue | 42 + .../d.d0rich.me/src/components/TheWelcome.vue | 121 + .../src/components/WelcomeItem.vue | 87 + .../components/__tests__/HelloWorld.spec.ts | 11 + .../src/components/icons/IconCommunity.vue | 12 + .../components/icons/IconDocumentation.vue | 12 + .../src/components/icons/IconEcosystem.vue | 12 + .../src/components/icons/IconSupport.vue | 12 + .../src/components/icons/IconTooling.vue | 19 + .../src/entities/blog/model/DBlog.ts | 6 + .../src/entities/master/model/DMaster.ts | 6 + .../src/entities/post/model/DPost.ts | 61 + apps/d.d0rich.me/src/main.ts | 14 + apps/d.d0rich.me/src/router/index.ts | 23 + apps/d.d0rich.me/src/stores/counter.ts | 12 + apps/d.d0rich.me/src/views/AboutView.vue | 15 + apps/d.d0rich.me/src/views/HomeView.vue | 9 + apps/d.d0rich.me/tsconfig.app.json | 12 + apps/d.d0rich.me/tsconfig.json | 14 + apps/d.d0rich.me/tsconfig.node.json | 16 + apps/d.d0rich.me/tsconfig.vitest.json | 9 + apps/d.d0rich.me/vite.config.ts | 14 + apps/d.d0rich.me/vitest.config.ts | 14 + apps/d0rich.me/ignore-build.mjs | 28 +- apps/d0xigen.d0rich.me/ignore-build.mjs | 28 +- apps/design.d0rich.me/ignore-build.mjs | 23 +- contracts/.gitignore | 3 + contracts/.prettierignore | 1 + contracts/README.md | 26 + contracts/build-scripts/new-imports.ts | 22 + .../build-scripts/patch-wrappers-imports.mjs | 26 + .../contracts/d_social_network_blog.tact | 102 + .../contracts/d_social_network_master.tact | 65 + .../contracts/d_social_network_post.tact | 45 + contracts/contracts/imports/stdlib.fc | 625 ++ contracts/contracts/lib/messages_nft.tact | 93 + contracts/contracts/lib/native_dict.tact | 37 + .../contracts/lib/tep64_serialization.tact | 31 + contracts/contracts/lib/trait_accounting.tact | 40 + .../contracts/lib/trait_nft_collection.tact | 91 + ...rait_nft_collection_royalty_extention.tact | 42 + contracts/contracts/lib/trait_nft_item.tact | 102 + .../contracts/lib/trait_personal_fees.tact | 23 + .../lib/trait_storage_controller.tact | 46 + contracts/contracts/messages_d.tact | 43 + contracts/jest.config.ts | 10 + contracts/package.json | 22 + .../scripts/deployDSocialNetworkMaster.ts | 24 + contracts/scripts/deployTestSocialNetwork.ts | 63 + contracts/tests/DSocialNetworkBlog.spec.ts | 149 + contracts/tests/DSocialNetworkMaster.spec.ts | 69 + contracts/tests/DSocialNetworkPost.spec.ts | 180 + contracts/tsconfig.json | 12 + .../utils/onchain-metadata-parser/dict.ts | 38 + .../onchain-metadata-parser/nftContent.ts | 100 + .../utils/onchain-metadata-parser/parse.ts | 45 + contracts/utils/stub-post-serialization.ts | 60 + contracts/utils/test-fixtures.ts | 35 + .../wrappers/DSocialNetworkBlog.compile.ts | 6 + contracts/wrappers/DSocialNetworkBlog.ts | 1 + .../wrappers/DSocialNetworkMaster.compile.ts | 6 + contracts/wrappers/DSocialNetworkMaster.ts | 1 + .../wrappers/DSocialNetworkPost.compile.ts | 6 + contracts/wrappers/DSocialNetworkPost.ts | 1 + ignore-builds-master.mjs | 56 + package-lock.json | 8467 ++++++++++++++++- package.json | 7 +- turbo.json | 14 + 97 files changed, 11359 insertions(+), 521 deletions(-) delete mode 100644 .github/workflows/lint.yaml create mode 100644 apps/d.d0rich.me/.gitignore create mode 100644 apps/d.d0rich.me/README.md create mode 100644 apps/d.d0rich.me/env.d.ts create mode 100644 apps/d.d0rich.me/ignore-build.mjs create mode 100644 apps/d.d0rich.me/index.html create mode 100644 apps/d.d0rich.me/package.json create mode 100644 apps/d.d0rich.me/public/android-chrome-192x192.png create mode 100644 apps/d.d0rich.me/public/android-chrome-512x512.png create mode 100644 apps/d.d0rich.me/public/app.webmanifest create mode 100644 apps/d.d0rich.me/public/apple-touch-icon.png create mode 100644 apps/d.d0rich.me/public/favicon-16x16.png create mode 100644 apps/d.d0rich.me/public/favicon-32x32.png create mode 100644 apps/d.d0rich.me/public/favicon.ico create mode 100644 apps/d.d0rich.me/public/favicon.svg create mode 100644 apps/d.d0rich.me/public/metadata/covers/blog.jpg create mode 100644 apps/d.d0rich.me/public/metadata/covers/post.jpg create mode 100644 apps/d.d0rich.me/public/og/image.jpg create mode 100644 apps/d.d0rich.me/src/App.vue create mode 100644 apps/d.d0rich.me/src/assets/base.css create mode 100644 apps/d.d0rich.me/src/assets/logo.svg create mode 100644 apps/d.d0rich.me/src/assets/main.css create mode 100644 apps/d.d0rich.me/src/components/HelloWorld.vue create mode 100644 apps/d.d0rich.me/src/components/TheWelcome.vue create mode 100644 apps/d.d0rich.me/src/components/WelcomeItem.vue create mode 100644 apps/d.d0rich.me/src/components/__tests__/HelloWorld.spec.ts create mode 100644 apps/d.d0rich.me/src/components/icons/IconCommunity.vue create mode 100644 apps/d.d0rich.me/src/components/icons/IconDocumentation.vue create mode 100644 apps/d.d0rich.me/src/components/icons/IconEcosystem.vue create mode 100644 apps/d.d0rich.me/src/components/icons/IconSupport.vue create mode 100644 apps/d.d0rich.me/src/components/icons/IconTooling.vue create mode 100644 apps/d.d0rich.me/src/entities/blog/model/DBlog.ts create mode 100644 apps/d.d0rich.me/src/entities/master/model/DMaster.ts create mode 100644 apps/d.d0rich.me/src/entities/post/model/DPost.ts create mode 100644 apps/d.d0rich.me/src/main.ts create mode 100644 apps/d.d0rich.me/src/router/index.ts create mode 100644 apps/d.d0rich.me/src/stores/counter.ts create mode 100644 apps/d.d0rich.me/src/views/AboutView.vue create mode 100644 apps/d.d0rich.me/src/views/HomeView.vue create mode 100644 apps/d.d0rich.me/tsconfig.app.json create mode 100644 apps/d.d0rich.me/tsconfig.json create mode 100644 apps/d.d0rich.me/tsconfig.node.json create mode 100644 apps/d.d0rich.me/tsconfig.vitest.json create mode 100644 apps/d.d0rich.me/vite.config.ts create mode 100644 apps/d.d0rich.me/vitest.config.ts create mode 100644 contracts/.gitignore create mode 100644 contracts/.prettierignore create mode 100644 contracts/README.md create mode 100644 contracts/build-scripts/new-imports.ts create mode 100644 contracts/build-scripts/patch-wrappers-imports.mjs create mode 100644 contracts/contracts/d_social_network_blog.tact create mode 100644 contracts/contracts/d_social_network_master.tact create mode 100644 contracts/contracts/d_social_network_post.tact create mode 100644 contracts/contracts/imports/stdlib.fc create mode 100644 contracts/contracts/lib/messages_nft.tact create mode 100644 contracts/contracts/lib/native_dict.tact create mode 100644 contracts/contracts/lib/tep64_serialization.tact create mode 100644 contracts/contracts/lib/trait_accounting.tact create mode 100644 contracts/contracts/lib/trait_nft_collection.tact create mode 100644 contracts/contracts/lib/trait_nft_collection_royalty_extention.tact create mode 100644 contracts/contracts/lib/trait_nft_item.tact create mode 100644 contracts/contracts/lib/trait_personal_fees.tact create mode 100644 contracts/contracts/lib/trait_storage_controller.tact create mode 100644 contracts/contracts/messages_d.tact create mode 100644 contracts/jest.config.ts create mode 100644 contracts/package.json create mode 100644 contracts/scripts/deployDSocialNetworkMaster.ts create mode 100644 contracts/scripts/deployTestSocialNetwork.ts create mode 100644 contracts/tests/DSocialNetworkBlog.spec.ts create mode 100644 contracts/tests/DSocialNetworkMaster.spec.ts create mode 100644 contracts/tests/DSocialNetworkPost.spec.ts create mode 100644 contracts/tsconfig.json create mode 100644 contracts/utils/onchain-metadata-parser/dict.ts create mode 100644 contracts/utils/onchain-metadata-parser/nftContent.ts create mode 100644 contracts/utils/onchain-metadata-parser/parse.ts create mode 100644 contracts/utils/stub-post-serialization.ts create mode 100644 contracts/utils/test-fixtures.ts create mode 100644 contracts/wrappers/DSocialNetworkBlog.compile.ts create mode 100644 contracts/wrappers/DSocialNetworkBlog.ts create mode 100644 contracts/wrappers/DSocialNetworkMaster.compile.ts create mode 100644 contracts/wrappers/DSocialNetworkMaster.ts create mode 100644 contracts/wrappers/DSocialNetworkPost.compile.ts create mode 100644 contracts/wrappers/DSocialNetworkPost.ts create mode 100644 ignore-builds-master.mjs diff --git a/.editorconfig b/.editorconfig index e76ee29e..bb45edd0 100644 --- a/.editorconfig +++ b/.editorconfig @@ -10,6 +10,9 @@ end_of_line = lf insert_final_newline = true trim_trailing_whitespace = true +[*.tact] +indent_size = 4 + [*.md] insert_final_newline = false -trim_trailing_whitespace = false \ No newline at end of file +trim_trailing_whitespace = false diff --git a/.github/workflows/lint.yaml b/.github/workflows/lint.yaml deleted file mode 100644 index ade41a72..00000000 --- a/.github/workflows/lint.yaml +++ /dev/null @@ -1,25 +0,0 @@ -name: Lint - -on: - push: - branches: - - '*' - - '!main' - -jobs: - test: - runs-on: ubuntu-latest - - steps: - - uses: actions/checkout@v3 - - - name: Use Node.js 16 - uses: actions/setup-node@v3 - with: - node-version: 16 - - - name: Installing packages - run: npm ci - - - name: Lint - run: npm run lint diff --git a/.github/workflows/release.yaml b/.github/workflows/release.yaml index fa6c8083..b5f685d2 100644 --- a/.github/workflows/release.yaml +++ b/.github/workflows/release.yaml @@ -15,10 +15,10 @@ jobs: - name: Checkout Repo uses: actions/checkout@v3 - - name: Setup Node.js 16.x + - name: Setup Node.js 20.x uses: actions/setup-node@v3 with: - node-version: 16.x + node-version: 20.x - name: Install Dependencies run: npm ci diff --git a/.github/workflows/test.yaml b/.github/workflows/test.yaml index 096a4dab..7f9bd8af 100644 --- a/.github/workflows/test.yaml +++ b/.github/workflows/test.yaml @@ -14,13 +14,19 @@ jobs: steps: - uses: actions/checkout@v3 - - name: Use Node.js 16 + - name: Use Node.js 20 uses: actions/setup-node@v3 with: - node-version: 16 + node-version: 20 - name: Installing packages run: npm ci + - name: Build + run: npm run build + + - name: Lint + run: npm run lint + - name: Tests run: npx turbo run test diff --git a/.gitignore b/.gitignore index 9d46ca8b..30033203 100644 --- a/.gitignore +++ b/.gitignore @@ -37,3 +37,6 @@ yarn-error.log* # vercel .vercel + +# build output +build diff --git a/.prettierignore b/.prettierignore index a4a413ce..418f830f 100644 --- a/.prettierignore +++ b/.prettierignore @@ -6,4 +6,5 @@ node_modules .output .env dist -*.md \ No newline at end of file +build +*.md diff --git a/.prettierrc b/.prettierrc index 047e7a58..7ddd5892 100644 --- a/.prettierrc +++ b/.prettierrc @@ -2,5 +2,15 @@ "semi": false, "trailingComma": "none", "singleQuote": true, - "endOfLine": "auto" + "endOfLine": "auto", + "overrides": [ + { + "files": "*.tact", + "options": { + "parser": "typescript", + "semi": true, + "singleQuote": false + } + } + ] } diff --git a/.vscode/extensions.json b/.vscode/extensions.json index ca40ae86..b46b0730 100644 --- a/.vscode/extensions.json +++ b/.vscode/extensions.json @@ -4,6 +4,8 @@ "vue.volar", "nuxt.mdc", "bradlc.vscode-tailwindcss", - "antfu.iconify" + "antfu.iconify", + "tonwhales.func-vscode", + "ton-community.tact-vscode" ] } diff --git a/apps/d.d0rich.me/.gitignore b/apps/d.d0rich.me/.gitignore new file mode 100644 index 00000000..38adffa6 --- /dev/null +++ b/apps/d.d0rich.me/.gitignore @@ -0,0 +1,28 @@ +# Logs +logs +*.log +npm-debug.log* +yarn-debug.log* +yarn-error.log* +pnpm-debug.log* +lerna-debug.log* + +node_modules +.DS_Store +dist +dist-ssr +coverage +*.local + +/cypress/videos/ +/cypress/screenshots/ + +# Editor directories and files +.vscode/* +!.vscode/extensions.json +.idea +*.suo +*.ntvs* +*.njsproj +*.sln +*.sw? diff --git a/apps/d.d0rich.me/README.md b/apps/d.d0rich.me/README.md new file mode 100644 index 00000000..b8c50c5e --- /dev/null +++ b/apps/d.d0rich.me/README.md @@ -0,0 +1,46 @@ +# d.d0rich.me + +This template should help get you started developing with Vue 3 in Vite. + +## Recommended IDE Setup + +[VSCode](https://code.visualstudio.com/) + [Volar](https://marketplace.visualstudio.com/items?itemName=Vue.volar) (and disable Vetur) + [TypeScript Vue Plugin (Volar)](https://marketplace.visualstudio.com/items?itemName=Vue.vscode-typescript-vue-plugin). + +## Type Support for `.vue` Imports in TS + +TypeScript cannot handle type information for `.vue` imports by default, so we replace the `tsc` CLI with `vue-tsc` for type checking. In editors, we need [TypeScript Vue Plugin (Volar)](https://marketplace.visualstudio.com/items?itemName=Vue.vscode-typescript-vue-plugin) to make the TypeScript language service aware of `.vue` types. + +If the standalone TypeScript plugin doesn't feel fast enough to you, Volar has also implemented a [Take Over Mode](https://github.com/johnsoncodehk/volar/discussions/471#discussioncomment-1361669) that is more performant. You can enable it by the following steps: + +1. Disable the built-in TypeScript Extension + 1) Run `Extensions: Show Built-in Extensions` from VSCode's command palette + 2) Find `TypeScript and JavaScript Language Features`, right click and select `Disable (Workspace)` +2. Reload the VSCode window by running `Developer: Reload Window` from the command palette. + +## Customize configuration + +See [Vite Configuration Reference](https://vitejs.dev/config/). + +## Project Setup + +```sh +npm install +``` + +### Compile and Hot-Reload for Development + +```sh +npm run dev +``` + +### Type-Check, Compile and Minify for Production + +```sh +npm run build +``` + +### Run Unit Tests with [Vitest](https://vitest.dev/) + +```sh +npm run test:unit +``` diff --git a/apps/d.d0rich.me/env.d.ts b/apps/d.d0rich.me/env.d.ts new file mode 100644 index 00000000..11f02fe2 --- /dev/null +++ b/apps/d.d0rich.me/env.d.ts @@ -0,0 +1 @@ +/// diff --git a/apps/d.d0rich.me/ignore-build.mjs b/apps/d.d0rich.me/ignore-build.mjs new file mode 100644 index 00000000..96264552 --- /dev/null +++ b/apps/d.d0rich.me/ignore-build.mjs @@ -0,0 +1,3 @@ +import { ignoreDD0richMeBuild } from '../../ignore-builds-master.mjs' + +process.exit(ignoreDD0richMeBuild ? 0 : 1) diff --git a/apps/d.d0rich.me/index.html b/apps/d.d0rich.me/index.html new file mode 100644 index 00000000..62a22ed0 --- /dev/null +++ b/apps/d.d0rich.me/index.html @@ -0,0 +1,14 @@ + + + + + + + + Vite App + + +
+ + + diff --git a/apps/d.d0rich.me/package.json b/apps/d.d0rich.me/package.json new file mode 100644 index 00000000..b8b898cc --- /dev/null +++ b/apps/d.d0rich.me/package.json @@ -0,0 +1,33 @@ +{ + "name": "d.d0rich.me", + "version": "0.0.0", + "private": true, + "scripts": { + "dev": "vite", + "build": "run-p type-check \"build-only {@}\" --", + "preview": "vite preview", + "test:unit": "vitest", + "build-only": "vite build", + "type-check": "vue-tsc --noEmit -p tsconfig.vitest.json --composite false" + }, + "dependencies": { + "@d0rich/contracts": "*", + "pinia": "^2.1.7", + "vue": "^3.3.4", + "vue-router": "^4.2.5" + }, + "devDependencies": { + "@tsconfig/node18": "^18.2.2", + "@types/jsdom": "^21.1.3", + "@types/node": "^18.18.5", + "@vitejs/plugin-vue": "^4.4.0", + "@vue/test-utils": "^2.4.1", + "@vue/tsconfig": "^0.4.0", + "jsdom": "^22.1.0", + "npm-run-all2": "^6.1.1", + "typescript": "~5.2.0", + "vite": "^4.4.11", + "vitest": "^0.34.6", + "vue-tsc": "^1.8.19" + } +} diff --git a/apps/d.d0rich.me/public/android-chrome-192x192.png b/apps/d.d0rich.me/public/android-chrome-192x192.png new file mode 100644 index 0000000000000000000000000000000000000000..26b835f1fa8e2f3e80b8185bca6be3f0f5086a6c GIT binary patch literal 11052 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 MLq%7)QV|jMKd8{H@c;k- literal 0 HcmV?d00001 diff --git a/apps/d.d0rich.me/public/android-chrome-512x512.png b/apps/d.d0rich.me/public/android-chrome-512x512.png new file mode 100644 index 0000000000000000000000000000000000000000..99f4088b4799fb58fdaa4d64669a5973c7f1327d GIT binary patch literal 32985 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 literal 0 HcmV?d00001 diff --git a/apps/d.d0rich.me/public/app.webmanifest b/apps/d.d0rich.me/public/app.webmanifest new file mode 100644 index 00000000..9d9bbff1 --- /dev/null +++ b/apps/d.d0rich.me/public/app.webmanifest @@ -0,0 +1,20 @@ +{ + "name": "D", + "short_name": "D", + "description": "Blogs on TON Blockchain", + "icons": [ + { + "src": "/android-chrome-192x192.png", + "sizes": "192x192", + "type": "image/png" + }, + { + "src": "/android-chrome-512x512.png", + "sizes": "512x512", + "type": "image/png" + } + ], + "theme_color": "#ffffff", + "background_color": "#ffffff", + "display": "standalone" +} diff --git a/apps/d.d0rich.me/public/apple-touch-icon.png b/apps/d.d0rich.me/public/apple-touch-icon.png new file mode 100644 index 0000000000000000000000000000000000000000..d51754fdf9edfd0c1c613110ff5d759c073e0fba GIT binary patch literal 9932 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 KMNUMnLSTZVIS$?c literal 0 HcmV?d00001 diff --git a/apps/d.d0rich.me/public/favicon-16x16.png b/apps/d.d0rich.me/public/favicon-16x16.png new file mode 100644 index 0000000000000000000000000000000000000000..7fbb14de6cd747efc21e5897c799c4f7ef0229e5 GIT binary patch literal 696 zcmV;p0!RIcP)Px%a!Eu%R5(wSlTk=oVHC&zDe4j(QbIvuAbSZMNf1IC1cFW|85H>t8?=yHgVlyy zHqpJvhH%ATQyhwHK5X@{1V;}^J(LggCGb8*P|ODgtW@C=?2~-EO4QX_!nV+6+mOo^ZfNkH<5+wzkGLSu7S* zDwVe59UL5lEX$ampQkn+aKO9C$;s!rTn>#!gY`}t7#Kh-7Q^oDE`q@z&d$!5zq7N0 zXf%pkE_as$-b_zVzg}Km2DL#)B?*GSj!YUG8^ikgI?MC|1Hb1mII#7&CPvCrBaxfm|$NZmCI!e4GrPs zi_)oPU$777K{_tMhR)z_U)CpI@X z(bd&eYBrnqIpCovir++0L~n0z+v$_p+1ZIwsRXOl3bk5I_v|HrgKjPu3}!|~Mle1; z-WFi9*^o>oK{dz6$LQ(lc@N+P0j2Px)Z%IT!R9HvFmwiapXB5XjW_hiqL|QGgVNuCsWh|4ipjUbWvyx=gqBo)3j9w@s z%F5FI(5PmRf}>?`AlV|rg+&d@P}p^>fsjQ>1v<>KT7OuZ*7!c%d;8tr@A?+R4*a;k z-+9h+p6_#>?>XnWLHy4W^pV#O20j78fiT-6U0ommAze%e^OcfOUZD zV??EY|NaaaGK7eT2p&FsNNa1WmPxS!_yO41lf^?qLWqov^n2vkuCsm*7@%OhlWEhY zapT4fy?$i{kOO2%J89A+=FFL65X*_(d01E&K|vo*pYh|zQ&(4~r9QKI*#_iEo0XMC zPLA+=9EpyOrm?Z{4G?Mt@EuU7CHL*y$F5zw{8n#kYvaU;6P+UJ+qW;_;o-!@#4usP z1VTeYJGIquw6(Q01D{#}EC)_$R(^gynVFe>4yvoGnKETck3u5CB_$=XW5*6APMql2 zh=&h<0AE@GBm?ELK79Bvn>KCon|S2N5jJk@5l4OVf`fxOaNq!&H*faonwpvzF=B+i ze*u!L0A>KcYNV*Bi1hSyKL9IMtl-os6QEwpnKNftwrrW1C-RAez>mOMD}c$sZyGsv z>=B=FXi0}CY~8xm;q>Cgi!4|mKkr2;yl2lIhwZ9Wt2loA zIEM}$V#}5-8czUzw*u$`{0sD{tgJMl^~%zvODQcabvPBHhYug_rho^gez1)YO5*#6;X~ zw?b!f(H;R+!Ws4T^=2oM)YMeYojd0M(A?b2(4j+p`uq3qGi%l?bJ?(qe4IUd)~G#v zDgwR_1VG4=8yXrIHENWZpkGxntEky*+otY~DMEMd+@YePLLJVrxD?*->s@z?*49?F z+T1_@P6OYH-C}u5ON-ww1A6a9xp?tn&YwSTtW-(+_3NkKG~lN|02G?^Cr_Rjq^bw@ zbM6g@F=NJ1Q&VGZRg!1Vo|%jSM4n13096iE8r_I8U%Yr>E*H7ExsHoTPXUN*+PSCo znrY&RKmocW{AmTC7^%{z5aqmn{Tf|7)ieU-dRHLSHI?saX=&(|WR=?5S|(3c(?#rU zu>vRq)P001UT39Cr|tzhj_zdOz=4b$InrEaM~@!esktXj|M65oQ`x*}sPKOyh0EpY zw54_jq`PrXpHQC0cx}A^l%%QJiMn2Pc6N8Z9OH_bQc}O|?d|5#xA)Qa$&)A9xpQX? z@U<0yDB9q1xx!LXQp~w2{SOXv-gTFcJQ<3xQ&S-kT2$YCR71m0Q!Hp zR=_+q`je@4?S1Uu_A&3c{M+BvD720bz~_Ld8KDa?AnJ;xO}##c518;DgGKXq!Ut#% P00000NkvXXu0mjfcPP~p literal 0 HcmV?d00001 diff --git a/apps/d.d0rich.me/public/favicon.ico b/apps/d.d0rich.me/public/favicon.ico new file mode 100644 index 0000000000000000000000000000000000000000..9b78a37a6c097c4cb247182c3222c24f6ad28dba GIT binary patch literal 15406 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 literal 0 HcmV?d00001 diff --git a/apps/d.d0rich.me/public/favicon.svg b/apps/d.d0rich.me/public/favicon.svg new file mode 100644 index 00000000..8573d2fa --- /dev/null +++ b/apps/d.d0rich.me/public/favicon.svg @@ -0,0 +1 @@ + \ No newline at end of file diff --git a/apps/d.d0rich.me/public/metadata/covers/blog.jpg b/apps/d.d0rich.me/public/metadata/covers/blog.jpg new file mode 100644 index 0000000000000000000000000000000000000000..d9a1155f021e6f39f80556bf9dab2b291089693a GIT binary patch literal 128994 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%0D6C-MM@c%7R6YPcg2_uXQoZAE^Gt7>U@?u9=P*-~ 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

E} zqJQ$kx2^0_?2rLQO}f~$kMWr~Y@UEU(O!@V6~ZA9nK6aZ-0USMPHzW3B&3uy!uc`d zLFZ0ZKM^3v177!;{NaHAwSl$B!Bt>WCbO0tTZ2g+zG((?4QGi6^;xv^ooKx2JnR{9 z3KWaEF?#Bgy#+3At(o$%2dWbrCqD811J=L1EUwd=5y${DStan+Xi-3UibRGquZRcA zVj(a&Z2ixYxh@7o`D*Hf5yFwmgfp(My#W;8<)&2M+a7bHl4H!fO3qXv)`QE}{nqVj zPU?KNJd&3tclaEWz>|;x^;SvEC63SfeVMbmv4xXMoL~+^Kk%j@G>S!>>gB&2YLV1_ zBEU`U@^j`QkCpxsd+y{m#amlW7c(j1DU&`*a*v$)x|G>_eI=`dgoti+|B`q%>-@i! z=Qe0^h>9F}FhNh`wVg&ZZD&s7Kh_AOSFMro>7?1lceys`)Xj*o>m(Jabj8#JY=FLR zI((nuGcE!5X2T7#qk)+V9X`MT|Mxv*V*C)XWA;U=G{9B8bg0=j8K;wHC;J{5^ z&xHxCD#@jv2+?c%2vf-L1b+%hfIUrqdo$}<4acLrgP5(cm1@lrX_{rO3NHEeW6?N# z8cF_7q#Zb$4(#ggPu(cau%li8DHaJF8!G&0-~9>hUqqOzA2V{UCN)XeFXeccIYiH! z5M^ARr8BQ|eMt2L9cjFYR?i4i>R5oe193)a6eorKZw9xZCt_`4Ro?@ApGp6hlHy-x zfm}c$CCp|5`4%ct|sF`8MFmzjx^Md-0#loD63H)qTD=zqCY6^;@aP zZWKsne`!UH?R&=UtKT|EE}gUIM9 zj5vUq?^h6eb`xuA3zzD4VB?S>xrPaPArJl47xLW4%B2$Y#RaV>VJ$);?1jHrMHJjW z;HpSvlyySk$hFWCT>>n|Py_^ViAB+NOXZ`EVtI{E0wuT#F1|f_(^*JT)yV=3qPv<_ z6N`#6vbJX5BH%@#@=Zg&?t9>Cp3S1;DdNB#)l`Snfx{<8n>gr~V4SZ`pilXp8( z+21~9uSyXj;-58Dx|msskGKJ+5*9vwQwmdPk4gG1FnWe>JyCs{EctV@JtHZYQiLGq z30y)sEK-n#<%pd84DZ#y$_?Ya2gFdw8B>#gl>yUfaAR_i-Ua1oz)y)6Jj_8KzciEj z^n7PnUx!%gTrU2Z`1U>4Ls$c5J*}wUxg$+3Rafy-y2`+~^kjKwVP)>(LX(Ch11QgN3t{iQd;p%j*>by%xdqVjb&Uo#2fNiT*L6DKzMt&{ze$U52?+q_FF7Xcu zm2{mFor09|+bjH_8|G^K;y>_aX{CQ{4(>}KzE`|s8mm;LVVAQkS~`|Lp)9(mcs^xM z#iQu?Bib(NJ;@}O!QNX|lv{mg!Jwk|^T6xk=2Es_;UFkxE_l1=?n>pO zM*?l(ud_erINzzj*Y0x8>_iOT_)#>^%9!*vulSJzg z{Y+T?MH@124Ah5FaVcP=&5%WQSfZ;|HD5cAu#GmRB6YueItnZfWpuZU?>!RyvQi+%nF>MJJwzc>F{# z`av>PzxnYe!b^)w&(C5_p5^<5+{vsw;S(9HsUv%?r5a1A*oLF_i!5AB&S(6;k@9&w zBSziQ*BEO5?jkK(!9OS~7W|2uOmzG=(@G6=QW7axa&lnlw1mtAjj7~IxJi|Yejg5~ ze!|ron}W4w=gyJW{h`N_5fp40!iAE-mjurKiE{XwCZljYDLfhqgRf8D{GnQYzr^_N zj(;Z6uzdV&(xXuZMpvJHC0e!(lr;~lVd@!eV9-ov9_6-4u>&S0T_ZHl^DzMy5 zURn~rd&_qJ$OBtqzv4I0lKEY0GQoAzco?62wu&Vo1Ns(2qcEIl+Pw=nh{d2Vn4A(z z7dSq^d?{E%ta!z;VMp*t#%}BG$pOVyyF3RA!IsGa z(e0X1CBaXx(ztu?vZegAZrQM4|FKhJElh1{Jiqen%7zf-R&d+-8i6D6S62Ug^l8do zEAAcIDKT(03we9oH(F%UUzyTRjwY{hsvY(b^syB6Yh*elCu56Rssoxd_TbV9HZd7B zX;nIg^^bpsLf}MmVN-v;>T~>YavP!$}VY#pL z_7bUos7!3WAVPw(4nH3^LJ~677pFo5Tddux%Y`K0Kg0NmV5huEGh)zDEyDVf6DR+RGat)8FqX3D(4S1cXx>h z4I9jufdtPRxn@tDR2Gy|ty5JEnsRVH6^|HSP~QlV4BMVMq8f}P74KtfVyFpEInxf~ zrLvZx!2kq!;ryE6{{r_8I>R!LShnAKl+#_U!clV7mgt9tFr9FqijC5-Xd&LG=D^2Y zvARmk!`@7hkO)dXEGz_Q={*zyF8?!g$vA?C6TRP;&RGuKCv=v&twx%&zO}NI0JGcN zqC2|5EQecMc}Ev?!Fv(5U0>TAIuG@Rnix|*()3_B6mhP?Eoh6cLdqT*biyJ3w~GdJ zG5g$nEx*A$gDn0w(IPH`4FA(7t_1xwDB?$0HC9s|mjMzjGCSNRaVM?Ev<{}M%?f-P z$1<}uGK->bRJmp0Sw76a!F+tpSd3G9t{Vn+T zJnHlNeBbw-Kkk{?&(3wu%-%b5-*e7fM?1|%yy?J^C{DrXXtjLfE=i0^e}99)(s+nT z7*KhBkCPR!F#7g5)~1t=au=UcOuRvKp^@sv?@&B}jvwdg8&X?#$B#FQQN!oTKl*3W zQZ9^5YRVW?7uP>$6c=n@F$PnxNU39)awaZPRXyUVfS{~^4gbjv!_*C zrCaySk;VmfYbVV;I!Sx<%rguVAfK(Vxwp{SbP7*~W7M zx4!20P&ynAKh$S~>I)^@S2S&fU`f$y$hCzI1lIOnyOJsCy~Ri@)b`tQHw9B&RU91o z`D})m)0)ae<%e?Mj@CF2N!&A%;yf&i%4N(W`kK!8l$yb!9erkhni+irHz$hQROvIw zW<=}WFj4VZD=4}8IHQUfyw;PbQ6mAF<&stsEy<1@S6G)VUq^2*D9tYPpMU(QqI93( z={7K}xjelnNsWb};$^t|&p!N}L(G!n^0$rP;oYSA)U09*LdX;) zgxxEeZ@L>Ldx-JXBQu^*gUbM?^-<-%Ti72;8U9B3SK;pL$lo4u6-00bCn1w$>hwGy zKMJj+_+Y94`3-}URqZu{lYyG^BAme~w}7mJn)aH(skS1<@NWhu=Tmr;t!RuNOB~XB zvs5&Xw&rT#_uUJ&9VD^ZDeKzi=kewl3&MjuCcG9c&eDAcx1&2);fJr^-qxY?ReeXp zQ)Zt+F@)W}ZcCn!e}8g!y-Fo}DWoy#trX#GtL*GT(%vIt6g)F%DIIl3Lg<4EU{Qh4vww4JyH01ok=b3dxnEd|=+c zE`n|f9Js?_7@!QNB(RKie0B1eN%$Is7DM>HnAb4YheZ3syxMhLXXh)z`(h0k#3TYI z&f=7`9ciy(Zo~@QImUWGHHE}4cGM- zojNSgX@(f+*p7^8p%PS3LLa!b+B|$t$cFS6C{&!o>Xon*_?#!};wk>BwxRnR024yfueH zNf7Z+*UM$Z!6`sTUg5<&T02D~$k~ZJEpmYe|MdOKski+?-Ldo1-WSo2F&{Udohp3l z2qEjunE6GWnWI_s445Ne&fNTJKgNxttAX#Qf!RV@!dYOsxyH4v#X@Rx@3f}!0)cbp1`sfNAn;j$l|Q0}pw-C< zT_v!!TY1k(0yx+eK{gmw9e$F0sPDapbGWKT4+~Ruw5rj(%q=ss=8*}>F#6ckc5pO# z8v7jqn=V!T4IJ-(o$4QuuL%lYi4-$_84=U(KriuEp0YOqWZ=%utC{kI)h`3ZVP)QQ z@h&a9O(x|TkMtsAz!L-`?-!FarAarUc#I#D^LMjbfuQ-GjCbOKt~(?F>w6qFV-r2l z3ctT?->cNN%`b1ZJb|3JP1d?k+`s^RE zgj{oVUq>@0f=b**(&Cgwk9!_gI~Q4@r4BB`k2FB~!>Q?(4zV}Di!aHBZYanYf(FR~ zd`BpckDu#Omyr|dVOM?Hx{Lp)mPBLH z(o46*Z}(y3{iqeh*;a|yY++$HY+=ITEUXL2VLuv^q>;%oqFqnj5-+i|4{1duB&D`u zVlWXVSBo~Nrr5^}dP~<{@^U>P9%aKo3lHXGi3nU(p_QSi38!F>>ji^YPbKAJqxJ$@ zWULZwWMi`vteDm@WCt+b#mqvxvkm)1p7&Oh1(?I7{f~Du#@ml?)NIoihEBXO#aOPc zI>ct0ygzR0M`lqTj1@mN3PHYYdXOzWX3CEDQNd}FiuU%WhN-@d9Q?j%$i!iibF>fXo53;U;!i?vBuG-SxZg6neuDt7H!yAY3~Nn=O>XpkSoxQrS~Wa zr5eA2N3hNWHVo5eT9Uk}(TP*3+{ywKP?lmF{ECJ+S4JcEY*TBXYhAJoJ@~QAhc#KU zu$ihv9=#@oH(GP2TEf*l<5kAIKKK@XLnUc#>MCBi=vHl%FW4-%eL!m39Tg6hE?G<3 z#ha}@YhW2Kks>fS&WWs*qVsTrgpqoT+@ze9kj_>hO2jyPEQPV@sfG+gWdE%p_g}TR zE}LcaZsc(-`LA4=`#4)0IKt_P)U_$Lb|b>x*#K7U;GXi$w4U`2{0<9uDEeCL);P(Kr0Fw?M*I=xucixa_ExlGa=l`seDhLG+=(Jtr zuDySS8~(efQ3wcCe2C*q>87`alHPu{jX*cL>NH*&rtg6IdXJ2s<7BZKse=7xC8X~$ z*_JMwl~TRX7v4cVTS@%5y5*rO@u?AXFTLF)qOOC6Dx+WzPX_ZUMEChqG0;7AumvcU zD*9muaOX9Rro)I(%2W@7TF;;zk7uk?=d+37(z(`Po|;b50cUVVMaBHoy0gXZ@`ota zD5W0%6c-cK)d{saIsBooHhs_fr`Lh{ZTM>D<>2yR9hT5k$$%ZaC*|fLpW(elAvvSj zKG8A(EPWH$O5mU5A#tk^W;Nn<+q<|zATWIa|H>apP;S6!L^Q`*N0;Dza9QP%VK#nT zJ_IfKJ@srE^mV!^Vo=^uH{3J4!?7ZYn!MkOj5a$qDv!Dpt4Zrmx*fDu{-7hTt2Zuq z07WUXdd4z>d-Wqyb{FLO3JrkxR(NpwHcbWRZtXnJ$+@9+8&QLE^H;mJ=|(Sw{#w3& zs>U9BW)x=(lCvAD$m>#W0x}xRACSv3+Rs1h?}Ncg$uFxX=((&O3M=UGeKf4LP#7nM zduR;Gq$Oxj4;bHOd+`(JXKqHeniCE-97ugrWr5#tE?3;0_bsPkwWHGo<4ZOhuO}6$7HjO3ZWeJmT7N6U?x@HRP_%sV!=m-S87lb7(V(YG zPz~ykTP;j`ITUR6c}k5IOJwOiTWz_9^u>4dY;2$U%LGOjod;C3Y|Xgq*O=9Dz0c&6 zq8X9E+|%$p64yn}b!loN<&>oQRKS2aE8uv>DZz7}IcE^-LR8ywj-}%T%Lg5uTToQ> zua)xjpihNxTPmrj0p-)MaXFB*XaEsfaT8;j-&2z`DinBdUc@fM5lt1b>a0>|v{oNu z4s=*jj__D432(Fja(BVGbS=Q+_`~yfX`^W)KB-4M{KKL7joWLH0X z8@r>PJ`|P5=wWKPb~IIyz%+1bV^SH_n%h|-GQD;=uq3QQ?R;U!-#7;O8gg)dlrdJJ z9MUdw{etmJx|`Zm#51|i)KX}yjg?z$45LVE-W^}Sqq5qzq~|O>d>ER#Cz<|QI=E5# z!grG58Npnsj`XUvhM0A#m__UBpb#Ve*qLf05n_71E(6*^P3;2QTp*7GWrTFa{X9>$ zF)B(=EX6MtpYMZz5en}z34bhqcn;HQQ3`k7{o4+Y@dav7)#6Y(<&H&M$ueVYG9y(y zn>@Yn$hFn9K9rtQLwlEXWn;T7CQRPu{@5}61rK>sHdwBPBJEgagos}yA$&9a<7GA= ze6A>l`E#cXWM*#TDpj>K?qlnH zex{m5c98vh!OE>=+qiAA*bfjWks zk|koD;j{^DfTWS+cZBVb+Yx7EpMVWq>ILBxn$6Z3#wI+*w#58H%2p;LszS!%xwbbd z{$s^c7jOv@xr)|AgP-DnF%>xeO}QC$WA5bv0v}8UzXKJmX@J)6K%RQYXt4CZ^M!q6 zYx&r@omsWFCwO{_Q0@Fcmms8PxN*qy5?PhklWUWAN!MD!gnr($N+D9Zy?@y#Ht4Rj za3UJL!XrIVJj8z2SVyOz+HPpJo}$eyE1;BLN}kDu6W+^!BCYUvpb*41AwaT5B_@i2 z(<{#Gi*-N*s^9$Ud{%Fzwv^^fy64sJ)0=Q2%XUG@pH9dXE}rC-dsWwSSuBPp*l6ap zWQiKQ{pJoIz5bT!c;P~#9#e|DlDus1xM#DY=kVt%8cmZpYu&vALnckgJj>l|_~(uv z0NrfiVIYIi4@^v_G6F0shm;yWqQ-uP+a8}BsA}z;Eo>YTUaCVZWn8WRHMt>hGh6b4)S>p)ajz&rvit8yVgvo*%>&*x{TNf266LzHYt*nrc%BtXQTr=PEILF6TSK zuDf2~A7A{ZdYhDw!x`=x^kxh>KKz8YP1A;%5l~YbIgR9@FiboB%|F&k!05J{y4=(H zO61BnHx02w50rNv>0hd3S}IdCt3<7+6dL56S{i2$*XPItiwUTQi#lg6x#37kSS^2P zYwl600{R}oUJkrnozNw>2X84C&M2wC#V^`V|81$FVg))`!~;1>L3hL~Vv@23Dzrslqmg$+ zDRH~RDZ`wRNqA||tLl@Vh;>_p`g zOb^;C<-(ji$hvPv2LUldH(QymXe(XgA`5Wwcyt;tpX572h;4I(UluhwoJ@6euKRqw?E4=XWZVhipx9a!NX&&`_4lfjPanU7SvDZNY8`C^^Ad~1Qy z>ljtRBCwIT9Rf<++L3XQr8jInzc+=~rtkEZ5JvbOw60DB$-LA^k}KNGZYnaNHUMwP zCs(rMK8#RMNT*^|I#WoMlo1v-h>Y10bp8A-NB5M#HuoL{;q~gWr3vI61 zjbp_kLiaFO6*cr=66Uclj|txjtPJo^%8@q8;gdhhKSGb+o-POgfqL>|F3>zu9;Dv@ zUT-1a)sJN}BucSYM9Qg2LJT4o z#pOrPMtv}v21Mc4I3;wk!=#F+V<}GJdZv<7fBv)a-*piG!IeCd(#qS7YBufu>tr~}3&i7P)JT}jY#H#74+dA&N)2A60yJb4(W>^rvEwX;B!WVh3VTP>^cD|1-b^KqQ@8BG}m%aB1Y ze#a7>?{Di;Yvrcdx)nBp<+a9?wz-ZT7=?#fdqAYue0WDDHObMR|Nc2tWO=k7HYtjv z@aL-+hLqRbFjtSR->foG{csnHI)i#aWn|j97-?yM;)5#MQ%SkpPEfeqSC&2IX9PRh z^b`t%Ljyu`dfc%q%3<#O$U4jBdP+vuYX= zp|tsNn{q9}7GiRK=Uc@w(aS+%0!93+R1%w~Y2jD3x0T&*S{j=k2p8!XSg#H<F z_?9z(DNv}1~+W`0-e>&is- zSek8Bxmi&*aV5BT)|Qnno|(g{u?O+H@H5ry76q+r*h;zd98>`+skRz#N03Ozpc=nA9`UD3MWduz$a^>!S(su9-xw(*zTHS;Z&(p#hyi4BdnC3G~A7II<@u>_@yA(+qXr9_!ROzB5STTfJs9)~)jk`Fw|p==di3Ky zPq@(cO$Zj8e>5nVyH^srib-Pp-lo2cNyBGP-M^`)!1GfV@*e3QIKNc!Kh{01^-}xk z1C=%Ymk(5IQ28psW9i*3IUi@+#V@YyH!e^+H!YF-lSJ(>LISOwC(23~9@(*8WN28S z7;R88T0R*@Z9@^-atUj|M)ThX@k`I=C0Uq@X!yo&4b6S!ljk3U=oGOnekkJw<||(< zDqTHxYK`)}M*SaWL{RI&m)(qa+aboMAIkN*w+7*7R_#KlYT(Yg&~ff>0@x;aada#v z_GxaIzcBLlbhn)ZC>xbvcIQ`Jh=-y`zJgCo)_nNO&ctOk#5%lI5W`K^=V@FQt^ybV zZL^4#pKdz*>jgPPI}?B7XvxukTSqgBD~|5s+_JiY87~G;v>exCQ2)q&31Pz2u2L2X zz?KVX+3imeTI#4CCwSRE{<8VSuSf_81_FI&z1|fV!}RYsrN`Sg)}ANm8mi?hcyed< zrL6D^*yWn*6l=JVRbpt*vg340dpzAINg%FjG+&~EAX$n34u$~t{)wwEZmXGWZMVL~ zdziNg=tC17isL@uY`7BzBDT`<8|FQ`cR>+p@;-hWHLA0#&92rDt&_r>^xzL9ByQp$ zgM_*)K4Sof`YQ+%F)IW}o$|U;d>e?w?UbtS2UhKNhIN$U9BT2ZsJLC8($PIwWC%o_ zbN>VAmny#c+4|Bt?Ci4*D%|miR(T8bs?ZyjxHV`rcrfEiBCrQ)dmPMP5&SI=(Xa5P z9f7^$^O?ZaHpwZ!`LKzdv6zZl4t6mJG4oQiA9rY$z^$uw6_qSaNO-NORC|loSkI!X zQfuCp56C?Os;6h=RkCQV(9?5)6M7zN1BLV_HE zw;ubnkTW^+s&|U#^0L!Ui%dlylZJHYFmxskS^VW^mjyH4a4}|E4JgVsfk|SeymN<( zjVll%+D6JFZW)0Qo%w~8oU|q^q3)hIogh};JPP~}_v3meZF^n|vz#x?bi&-Aj9MiG zzW=a4?g^Mvw^b1l^w8>ReZ#WWO=~I={KCH-b2yb;s$YZk7@^PcR}gslmI1MsiWjkd zgG>i#qr78$3Vp)z`BNi+gmwWKBx~`?zbeZac0fgeI}ksI>nXA20JtyDNUQ(e9H93H z62c(sswk)fl%&?(CE~j-*SF%O9rvD{pqp>r(q0=^!vf5gX3`V6OBPP0I_9 z&dMip4GVMg52R}kReDM4CB9c>tctj(5UJD}1sF8jv63Yyd|9nL@tsl;mL^_A$$OnH zZOP7$)H&0FNh_YB1i~-=0Q#l+etb>jI)onTHx(12euwxryYtYm{qPWaQN&``-aF?Q zQ=?Jc3UK;!N%8P-a&pqgudiDpt#nGdEJeeA7f$c6jvcL@r=f{*Gnz4$Z#cwEaPROj zk9&_=_x743CTuQ?6e=1IjK1fUk}1kY5=>o};fHOqU78U(-;q&FP?n8_+H}?w$@X{0 za)R>)x>G2U&6^(gUJLmj*IRE4sE|Jwhv*Sk998{-ZfsQUNoTMHJnk&2E>ejg-UW)G zXA-2jU*{RbGbvBgKE+0EEoJPhE0j17XEGz<5p4EFq|CKt61De?SAkC_7rw0oBc{%8 z4>`Wn#pqC<-#JE@{MRYFTkNi2(OMc&M-JdLBmS7Os)p|n8fo8s4}F(#=(8oc)2xLZ zjhP_r0s)Nv^RsiLnb1r{;^1_wG}1_X@aOAZ{*sJ)4(LnC>}9`H;1+;!Oqz;EOxo!Q zauVOm8l1MC?+Pq{4BMTRzyuCpMN`&TH+S{IPx32Fl_e zD8E!MxaW<_=X>%POZy+s=QDIXH7TVWEXx!7LPaZqA8EKCENXxx2(<~9?6Pw1WR3?Z zP3F+GTT1xbC1ENQFfOUJbMVxwI@Hh_)H|P7EqC3Gy2eJ_Vr#>Q%Ty1`IKi>h)V!Dg zv=nhlfRY|A>ZyhTpKNUIQ(=eq>*+6PTI~>D+quXM73pXvlx3bbDa*@N`I=4|K}U_s z)lAS>I^P>X<0Poi%Eu+{nV>MCz=K-C-Q3`Z!7v@}`#7InOPlY25aVNQWW>FV;vV2< z&8B37=vXj5^Qz2$=;5%K46X_EGvgePSZsS3f&Sup=VrI z9mRaG-&^a)cwDDivmqKeD6%vtwMjN?1gkXMk?3fhDb?Rq%sjp3KuscdDLu?8hkJKw zB;c-w2v1ZEp;^s2MZ>WS2tM5oQCX)M*woyeTkke@YkkTb3%}(pjvWxI+W!*wcXk`; zlH=0Wrux!*6MP#Sqy2tNvw11p#Br8FE@)(bCKhqMFUMy_$*SheATR3VXa90<0tD2!M?AI6hX+dQG9>)FjJL;=yHmw)&Pt zE}v5M>&xDKR-jD;Sdl2t!I?#gwx^H76Z8*pnpjw9TlgV&Y}{!oJ^OF##iG6O?os)|UvI zm{`XmcBmYGeqhj3a`wz1T9zl8@p&Tx1_gQxVV)T#{!L=&cAJJBIL)wZs>(EF9(OqC z-N)8XY|Yb0Ubnn6M%hjB0T4n%FN`cG%b|Lrp`D)4Dg7mI`ILzfTi$)P%)r3UuaQA{ zF|Dw@_EPl^S`L}9n4#?~jaJkNTn@HR+-S|_a22U(8TBOcK#K!hhAiy0)!=S@eZ31> z`T2SWS66HQs>>pm9Jke|?Ni){?+B_W_YW8J8lb!$$EG8v=kx!+_y*Tq|B*234zh}{ zJF4ZU)v1Wq;DaW%H^jV1&#~gQX(Br2?o^c~wSd66PJT1X1?4e`C-Tb9Pia4M{MbuI z6C2QL$2On}1-ei_{n2Xb8BdCI?#R@mr5Yjn*G&H85e3vr$YoC|56 zf`D?ANs)R;&aQWT6j!G)yp67Szv}kB8HMur$hS#ijla%l1(Nj-vqVxXBs0GBY(zmh zrKQ}_7Jk8Zvt<9&A5QXc+tH+^#5;3>cXW};gIPwpHpH4c2(e1kOwg$Es9GxxdZ34y z;dfP*)05MtplR|fxpKh3r&|yI{}bTAjC8duIo~8B`Sm9xS$@2-(U|lt`(l4zh z7j^OYv9kJ%&%31*sW|8&ELa=WCoSOgj-X)9VueB6!hclyql83Ur@r@So`{LtPyJ*% zf3IA*%F$PDe`02A!BG%AUnXm{xD-JDI-8t=LLOp-hqs3$e)9^1fI4)>GaA7KdF>KE z+^*XiqGp#h2ApIIkHFbr7AeD}b3dyMsi^Krd8GHWwtoYB(O%mrbGfd3#<#K}2aoA8 zx{jFw%84_rP91qTK2EQ71B%pXP^t1fGrFamD0)z|rY(P-j%|fS!5Pm|5-4n^VB|T8pRyaraQb|zn+jwE0+$G0gNNdrzHL?cU0sj1SCyJ_nf+CDqm22*; z9j8;EOjeq4l)=cq6)R&kBLrs6QPS#URs@|%sL_-Bks^u9Jz8bh z#?GBnu%wO!)25?wfuXIh4f?vgaM$t2%K}?{eR0ZfiY;c~&oUX-FWiRCYOPnT5_u}# zrscY_hlvHX&F)rSkaGOXt^0~rIGp`y$MwpZj)zIcUNU*W!)o3Ocly>t;w;f z*`7vkNEzZ#uFk96)b6yXK_2$O)5hiCs5CzS zMn+GT><^-Lz*39Sbkt8{%(&HNoCP70dY{8`oMmh^NX5hni~>v9NN$<8dtkr$T>t{J z2Q+bFq^9mW!UjCD7Jc5k@l>V5b6KO3do1FEO|f=5Zn&g_8Cox2E&KacyUB-l0%Ry5 zwHPQMlLv~vXmhKQuOgFCDB;^0k_y6+aDGOt$h1oGn=}*9?(X*D4{`rg-wO3V?VpQ+UxkwRVtcwkB?cMa48$WEQJfA>OQ&HvJ5|CrdW~<|-I7l9N5&wbUyEQS zwMenJWSKC{Sqh8Phke+j*QAk6bfDQ$OXWSZWZ`$B?S@ORWKH_xoDU?;nyC-y&dJH=6I*7>aU257EWTU{ zT1&Vk`S`#fghAj8`bY# zr&g`6?xUdqbQkdF6GW1*+2veg(6?*)2b`Lk7wg|hWRw1hl){+ zTdNM0L}JOcbXw{|+yxu1eYkkx%}%0+ca=#;hb7wSc=f8L-hOd^B*CKFq_7a8 zlh~5LW%+UPvqh>6+KTpiVw8f(#1}x3o2H1*3xo;~4lloMeMe9VBD}o6VoK&t)hIW3 z6;iS?hSi(y%xl&)hU|H1=U%eEx#tJB4G9~?B*;S~_us7c9G;z&uVy5vxP1_qMd|;c z%e6z8wc0;ZiTuK>9C&NG`d7Vw(;Y^Eng5K?P3c~vqZafn#<;(KP;PUrdA&sUK!4+gDY{!;|DLe5R)KMu_ z7tAEFL|M1vy%SpWJ3hhgS!k6s@7g?)ZeiXa|HS)*Z3}@YSz3;^Y|JL zH=m42GVE%Eyn@WB=*4-oW8*l+=xyh;D>)c`5Drj;?hMdz>ksJRsO=kbTI3B)V{-fs z2>%O~2=$gv7%n*#PPtB&r7J!+tsp883F?1+bSz#xkca+BL`1QkEUgC5OrWa_fXU+Z zG^m|=t*cvH>Me`=pJ4ygF>w!iEjfUWDyxiyb}~%*8l(Ly3S*L$9CXtqZbN77? z2h7u0`AHorWU_b5uD*RZvbEI-kG~8=J&COuP_A|;(u6gjr1=KS++hBX`wLL~si4P( zDQ7i4St%}D+R=uieTDjyayVPGCMqWQu9fk$THZRua68Z9b8c!Xul5OfEnXfVU0~@l zHX2R;gb+(w>Db({SIpSKhGAKr94zZIu)IKhxjg_Xv6SUPDYcX0Nl z8SB&tEH9H)6sr)bclOObwDhdFLlE)vKOi?Hf@DY36(J3))jNfG{6|)YwvW%SMRM$l zsL7U=E8Oz;bIYJZRV!gS8aW-eK6lkV!)Ade>wr#5>%9*{V2dQ#A>e2ax#v~X~JNwd>NVHP!6 z7S9PJUr_8M#6je+=r~4Dz+Jx>t@Glyq4=$GPvFe-6jlOgDn{d?;Z)Jh=Z^WwRFnRb zspjjwtI|Yy7jrc8nVYr%VMod*5rZypEB` zqtylNGIa1iN}`wm&BqV^N#kPv(IJ{JsjN|T%SL5h&=4$zHYLeeQsEZMk7uy|aXlCC z7EWQy^pk*}wWSu;)6@SF7Iun<=YU5N7K%o8T81pe`Uy~uU~>P%`e(Q&Df8YGK{9(x7Pjltz=?Fo}R+ZXN{IqVuQTlspy|~crBNi zyNWwcgH-!S%3ey1#xB{Iom1O>u+%)6^u3k%{u7!so`yFf}Uzt-zUo zn*~wF9C>*}uDXKr;*=Wm==st;j8qhs=52`R1-5K=^RRbVs^9O&QRWQOZy#bl0nl(i z-|(4mumbCPFfH|j4K;i>%iJ=ig5gFmrNs{=M{v)g%dc~M@~Epp^gkX9|F>EFBwyP0 zDvK=AVtd=B6mD3R5JvK^afDuF8ESvqSZb9!lMO{WC)4k$h0}p6VH~Ek&%tT`4%pdWrWt^{%arjvGiKK z@P#|VpZK9upm#*kN#zycvl$R57PN<+XA4Oec8V*)y|Kb4OyIm7ev}4+xlR3=2OlP< zsl_6UX$;1I17(DOjZf=LS-qXJb!`TZSVMQ^bxU*$4oq;HH&e0LGutNKsC@YtBbl5Lf zHIlVQ*yBp`(jWw-xO^ah8Z1W}87Ij7=3j{ae1H$D187#Q*1ae%_z(xRD5^^sS@bnb z3irczNz2vDY3*_5g6^@-DoDfVAzoMF`{C+|{1{z6Ug(`P+PI_2a z9{f!Sp8m@@{aM7|U5&E)AzB(O&k|mCS*TB1p{KlSt-<}ul$ly%Ww3D$(d#zIwpQY! zwXs^$kW7*UdlP^PJLvddwm|Z^2bYJ~-IP?%`CfG5Tsi3?wrCdt=aZC%_{6M|+*~ap zn3K*_yzxXsqGt%%*T5M(hcco)lb4A)q0E=`NT@z&-GVT!<(BTfW3J8h)hri*@dW^jY!Gd;%i*3_lY1`L^BptWp%n7?WyIUY2 z2!2O!X1|{f4-_+-NA2PEx+Kn$f{9D!ax!O-ewz_MneWOQAf<7%vZp&#J7-b4X<;9I zRra-NNJfiZl>qYv0`6GwKJVqH3 z)6$+0liAz`Ipaw;)_k$;%fXln*HKFb?>p5hG~s=5>ZW_y1&P*D0LYY=aae z6vN5hBdHi&u6bd}YF{+Tvhw(KoWs!cZWr)l{NC#QGiitX%XvKw#WCT@3dwTk)Anpw ziNpJ_AfW8LZh8ybrt?WRx5^WPFsYXkIxo>HTds6*8X0CY*|*!9#_k2W|Dw!~;^Da4 zM}76w#JAk~9|y(TSzSari)yjalKtP)sye7>Sv??W%cdak7t$yHI^9SJkO4}fv_(v& z$WaT{O1+JfYd&Hx$*b8EKz-Vy@*W!V>Rq{tg>D%h9`(C&Ws@WW^x^>%GL{n5xlYoK z#fy)sx$2c-Fhcj5f9vs&V)!|i&o27nlX9|jSIpy`WNo`sqf?v3VD2iG`>5~`srw{& z{%J=S{eC*yx9DcB+wtcD1R3=r)XrF%m%5w!NlG;7L%H&T2eXgat(2^u>Uj|{QBY5)Z&LG%meRh8 zDIB=}6ax#Ti3?EJpJorVc#o#^`FAJ;fae*W~_sRP!5FKub#;;wJ@>PNq1ZD@isnR z36^Wm^S|zlUkBxu3cqiCOG7az^B|~QU-=G?bh(^=>Z|Yt@AFyd;lL@t z>z)WzPOn1fq-6@5^MF9$zFFzPgLo#tCdobucLMo;hUHh(zskV-2Pu0vdVJ=`(WN|d zO&OpUMJqH@Q?t-ilWH;Ij(on3o$b1Ot@Lw>SxFYskeTad_cM|!3C7d&)J33S6T8}j zMABc(O93JsxqHTm#nJsD+w!pnBq+@6P61tQQL;*1D}D*DdZu_BS5kwt*!H0m={1j( zczS;*@ZUY1?N_-95@0v)IYZy|PD+~*SJ#KndrO$0Dvn4L+DNg^_)$*U;O)82F6_u^ za@~vXj3T$rV%4v%!den{RLYp-*K`#2d9>e?+kPF}r;JhTizQHiY-Qg4hYkq75Y=jZ z6*CZ9qR}kZW3r6l4pkCai(PvqI)R$DBJry8c;`F8a2i3(6vGMD{)KXFmevtoAR}zj z-|fK@5640TLTGth5atngYtwQ^&nZND|C)4A3{qQumV6J78c@ z65GfwzNnt728E?d1kJZ7kk@bMv8AHMT-k@Dz}CMb^vms1L)|hzkt9;Al)!y`4k9ij zvXa)G-d*-RW4LO#gomxg0vewABc9Ij2MEBurX>WLV`HvT++F_w5THNsb7TN`F=|}( z>r#egc0A%voa+kM&@e;N2oQ*QDjDfIM}a6)P)8H&eR5uZJ7G^1=H!J(?IUO>=-PL5 zN^)!>>o4UlYIu;AWyJ0@@KwC)<3~en2(BpHRdVXn5SsB2PH_}%Z=)n`nun>4bJ>p4&Nbxm-c4hk5>BE2Ba8!M<3I`j#4% zTzxLtrDf!I1kbTJKi_fPv&QyluCVZe*Dv0Jtcat(Db{KG=}IKOPW0GR2kRntfpRsl zAz5cp_uwHbhQLx;C5$^!mL2624?@y+7RAgHT(E*#iq?_|6FSTkZO#p-(+9uGAaWRaByIwY6QnieoEsE>`A{?+ZmFSQB}c3x`NSbhT@A8c z?XP3+SdGgcad|DIK2fO}Z$w)dkja%`jPs>YuWEWX!qLcIEVXg+txpu<#CYd?wJ}@GzqAlmQ+U$}FIo zBv3~EWWHKR4eX{~y1&aN_Tka#DOh9&d#5hnx#~z^u^h23QLzeD}UnuJcD#cI`M z0+H}j8&%%qBk%{~-j%XA&cpUAMir4PD!%UsT^e`XDla(dKs4Dg@vmEKsxYbLXH=B2 zC#38c?7YVx{+}}N0gj=I@DPqKj|bw!u0uFZ9WAhwR>DI#hENP$)X%zPbcB&Yo=d!x zT1cmqkif)z_<->m5Ha3N>;cXh{W@-GYeLBUmz0aqy{zSlsWtdJ>ls1jJ}}L>W3xR% zI(U9Q1iNz)Uo;*bz_EZ>{x~)HZISh6(J-$@x_aISq=0&eOnu`o6|Xq}s~I2%ZK1B4 zVeoFX}6RHioQ)!IR3|wdM zsVdC!m`#Ojcp@gTVbacrHQMYTt7zV|#^ zBwPQ((27sL3;j+|4&7F(OTBO$l9#MxkQHa3dJ zK0_WudaDOAJ*{FfW&HqS+Hf%iT4&uuxY6ODWYjh3y^F^ys&!M~9J``L)gxSa#sDI< z4tn~rgb}Vn(q`?pg^qq-OCx7sb>~d z869T!EDwXRb(x5IlE@^{g8y%sPYqUBDUF85IWRMs_|`UOs_}9hB0~1t+yiwH+L;EA zc_GADZ(>guDmRxy@k!J9)>+cv88>^3b?przuE}QAmK1-7 zA!PxN!Ne2KpDV|IH?iGf||1^5QS1+W4kuWx6 zimB(}+@wZJM$cRQ7$>>$Cv=>)hPUW_jht0E!`SjBoX&ou+tKMm8$v=vUvNyGw0Dmj30XpLR zKla`_EXrx*K84gnT1>-Tgc$M~gtoGdGAK4gQ4Ny0;EOwFZ!hdN=NdXd#*Z5&~H38v=0 zP94#xuEVx#W2Y@ptYArB{%Va}Pcg`2luB2sVS8$5fXat%Dw9xI=-os{y;|>`qiW@G zQSHyS*w0s^Vt@9ldH>cd6ECZ)jFMBea^#dqO5ho>&12|`1w~ zy!&n`u(Phr&*~W}0o68}mw0eZ>r9fKCUQ_Ir} zuI^JbCg>TnNu*`$jPcA1ee9N{Sw!c5i%Fus%U|$oRMJlvD>=b-zB(xn@ghSS(YK5S zCqZQ`f|-wiUvexjZ=fY!y7cKHhRPp?z61PCQ6ZQ}#t9gbK-}_(wQ6%)Tmw@z3*$eV zffT!PN3fSXCCabUXogc2kwT+s(mh3cTh#Y6qc%0pAAx*%3JG1KlT}izm}6*{31Vp) zJNU!nVpqGP@W2_ie1u0b>+A*BbZ$|~`OrGm=p9m(5p~Fps_IkfF5zHad0ILO^5+7p zLp0Uj0g6cpOyEc1mXWjX>&k%>ixQPRYcN|bn%{f*A0K~UXCuu|ZVxH>6ZHw&HnA(b z-jYbA-UcdW+1yKg#YPjgrt1lemfYuY+(*m*HIsde z{_G4pM!~zAuYR@d---{^;m)owcJR)YxCLz_JDIcG@R3b((c@m#%G;XJOcey;w-ga0Fg_~)HrF(}qVToLcF!!7a~k3B9NvmM_V5BHbg z!G&$KPfz}6=SKk}lN~gzpFSa4by>ET&&3ujtyzE|h#+9%xyTXpeW#qRiMw)IM0cnY z=a|Z9^+K1;#n|m z_jLSZ>fLhmFvPCkOuzre*3(S4fPgMhuOaYdPfXBfT~%ABu|7<%H-BSQzRq4duictlYK=j(TxA>-;CRk;ilAp(%XZZ1sF@dBk=Hl_;?+Zgp90uHNj--l> zCT;bF^l+mn)-{?ERyKN4V)9=7X5_yUczwLMVHICiB3a>M1jY|`>f4~o&Afpida>Y` z<$1I{zN{%nn=0Y)5}<8lLY~C#)zxVi_Om}aLCam$t7dx3&@dat7{{d$s`Fa1Czg?i z;6a0gRB@XSC)h@Dd-kPF9Q{+2ryKm!6%DtOO z5y774%|drk@tMyU*B}3A163fm>u>QBQ?~JSpsiO|OQ?cwtqS_^;J4N?SJCynzQL^^ z2J35I;Rm2)-*F;o;d-qbJdx)0(OSauV!9NORpLwyS0Q2&hD!JEauFfBRc%~rgxkSP zR_%5$(%t7Lte}NHhWfv@_jhI7Fu(BN97GFUaG)#sJRO#ubzZy&gl^)9kELw!8dwrP zY*;d`|13Xwp2eEB)E$o<&}9KsT1Y6Xik$||*#K)P9ulPeT_b3C{t9<~Xjj?C4#8Z8 zSJhi0*n(MOH8EDy4Wc(^;R6f}Y^zf>!LkWN8TW*H>kpO#G(CP+irenX#7Xx$Jz4i& zwzXI>$w^jL!>y2(+<*u%j*$!D)}FxJkdRdKwgWkP$7LJYsJOKlb>~{m71YXahkyc` z_wCY0cBmCrR7J;q3#onoWuuf${lnIqO{%fh1w%?OW^yRASM=2Pvo((-7xl z6_dwColb_To;lQqqNw?wk$w{s{%1ctYH!i0*4?Ib9MS_Z;(Xh2x6TGqvmuy>!RCJc zCR;bV4KQjm=w`g9%f%Xvo~_--q@$P)$!{(n2pkBbkB5O(ZuOrgvPuGh}X9#gieVfcD>9}kad8hZB$qkJnsM?ob@L__~ zPMmC)iY7taEG=fZ$QTsJ4b8fV+Lu=AjEoCCRdw}s zRk5Q?h~nZ&1unq*W!?s%7D^6=Zu1*c1j9}BgYujI#zKCl6) z;7o~h?YviquAYr#ZYCm4DQUxn=j{0WQHl6#2t+P|U&Zq1K!@aGqK0RYW7gEa_wcaD}WmRyosKKgcaHQ_d!coEpm$-f2)Ir2^%FjRXIj9sQY7-qA zMl5p#%lG6p52HfdGpO`8EyS_s0K|oShhmW2ig?_nJEA}_93fzq`*8p*zn%?$`_O!;YUj3>UX{4XzLnnObB2?+%H1|X2}UAvL$><|3as!F_6f`kkneZQLhZ)JC> z{ad#3v^7>;8AqEHJF_9WVdAn%u}0j453&X<(v?;Szi8K2UQCdw@Si_n{qtscCv|{( zNvh1M6>2s5LM5Z8+D4n278ArUBO$^Lx1F`AK0k0xQsmA#qc!(OOCU&a8Te3i(ymCw zJL!G2UpgD%qK@ltjuKu(ZK#9Z4`dKAC4`u=Ij}0w9{})+Hc!Zs+?9ON;5=(_IXL^U#j_=;%%4d$f@Hscb$fCOU3Ex zPmE);>hN?G#(iNGd{fa7C~K~KL&L}DW$RRDvJ(1aHzaL0{rJm~kJTuAJt2xH(Dv|~ z=C_%3X$7fuck%`cM}7Ob<`9rqavP1h*80F)jNsE6!6pT)0U^aXi~HP%dv?cyws-L- z-y=us!?C>1iFgG#WdEAd{U_#Pv_>fk(O7GMMxq{wH;YJu8v0^RFeNXjwe_y=mxgSN z>|Wp2G9BeEr@AIzIy}2|=gp6bG+8SaZWm8Se1ePzWmF@$F}OpEsS>sG;LB5jQutG6R`@|FbQyYYd5U)R#ReIWCktKz z(vXwwi;%F9&4n;@_l0+#aj|o}UH$xf%K$^sFV%}A!NmeqKx9@ohf4_4D4`|c?$+Fq9DV!ktlE^d3T_RPS|DQ$5tg0Q zM&H-$GZLj`h!0L+`y0n+0AD11tAvYh$~OH?Tqyh1Glzu&?{OxkW#_>t{o6Z!{*Soi z*1iKm?))`2kFE>LpDyb+O@U6e&KULicC51nu6k8C5Z07t)mcD2tF&f#=bkfHxZ!Pb z>o?HO#p!vt^`%(T^t}#$O7@3ie^)>kAgA@h+@&whS67XG`BiC11S*v(nYg1WoRvN& z0%UQ&5~v|jmboZd-iTB)2Pbi>^+trLw2p-KRC+<^v2fqmJzXCf-nH~)uMUi0nWg}Y zV(T(QV=KEl(=oVRR283mjrP$opHh9fn4DdE8TCmsY*@0e!}6Z^ikvj26Rpq_APS!M zw;Q_lZa(~nBoxKip18{ZuRvAtRz;Zi`+_{NT?nAO^47h0%r^s#mGUMreSKw5pwf zY~v%6`cw$*CueI7$nHhbTx;NBkbFpZ-zZ7`@g=^&?Xt$f0O%)7t)LR?M_h~hFk{OD zxb-Lz<^339QGKwTNrqr!95}3iHqn78TMT}fK=6Ve{#Pn_3Prm#dn7>x`Ps-TUQ*&K> zx}VZiB63NUhEl6E4o1}Y*p^2nC4`l*pvjvNJl^T6iT2`M9KEW%rXH#e+fThNOW6o@ zol75%@}V1P%Fatz*k0O536!)vE46etggVCI4~WLL85{G?zSr_#(8-=0pRB-|*UlIB znE~~{vs4zHbPeC#pb2z6uF{fc%FoV!SJoK$p|UkGG5eu4BH1fRxx{*7GpjmeZ$VSD z-6|X(kXadxl+1ryc`j1+)IRmm}`N=6sgiyC9s;P7Hskl1;Vb7rOw`hOIKK} zk&rx>k5EEef6(+O(SZlclav!bGehhra=GbqVh1ra8a}$3wgQ<028b_NeSenOu3Tcm9cTGopYY-3Fbw?cg{T^f$zL`qd=BsSFXh{l zf|1&4>UbGZQF9v8St12(v1^4rJ_sGcUOl_E7t_il8u5kU0c*LatT<}>`w&t^`)C{^ zlftL2%;yIu7AeZ=_3xC4PH|OLo#| zC)EBINg=Gxgz)W@yRNG$eWmFJ&*QtP*m?5X=HzA95`BoA(hAC8IYxX9Fm`}G|o)io;}!|wo&;H$-tq?^?(yILb6LjLJKK16ul85y0K z<%VLx^>-TouoHkbWJXM`K_0%W?Yi~8Be$~s5k=?m+_2)1(^W43b|Z+SJ|v>K5z`)Z8!*%))a!iW!|b`+;_o~6QajyrdbcU8AJ z&Sf~xIr0$X{25E<&nEvx>6aT`=@D#SatWaMH{Oi8=4oXn$VcneQ|0AODbC#b*#2=m zT5Yy`QyXYUR`2`v6@lKzwW^h&F{G~Q+!{)>EDZG6BZFW2zorQ&Jn|jY)iB$f(?ggj z#AG#!@$O;{ZJdjeGP^ZV4JLkof(D7LmR^S}QSgWqMo@?Ck9IW}u)gBt7YWg|;X^kly?8Qw*aEx)C~< zt9D>qggaG$WF-hH0uv?cffx{|4GWx+eq7U{6uwLbE}Spt7&qy8Y(|;MMFfWLs}DZv z)LCtE-0Ek-LmLGE1UOdv%HsPF=T5Ks!z-PH>m8a%RPW&t6NGmgS-R%M5XUfL%Z7ws zU47P5ByMWydX?MmN>UJ`6x7yzEl#iJQwf}2i;J3#t}tN@x<3O7W&)RJV{h0`l?usp9$mLqQ8@8vo51*Ss_Lm!EUAtUu%Pf}gm7aDX%eTbg$ zJa)Bog!sz37r8$C>Ih8xY;hhhEtt!SQw|AQ;->t>g zFLJcL%DHPbTTZ|DeMp(23c?;Z`^?Ja&x-zO3C;P^drEY-&O}ti4^ay*6P$CRD{j%y zam_0lG}yZ$y}zZ0fRiJxR3hyCxEi zBb8xlY7UdOtdPL50RLplEL*c}SQ*=ul_F?(J?CJtI2?&_;}q9Z#|4oF zol14SGMTJa$8Tz2NMO-L@+w*`^lD-4Vr=iv9A`{M8@*$21UN4DWX>kaK)z z#m-}uiVR6cTn)QA+9LaFmBDvrr?g3Qdg$~RMiAz)T*|i+c$^tosO4M<*p_=dR*7P# zrKy0jU?90foe_5+aSZ-kqI`7#7qZ0^U3o%1Xn>J)ow#t04%@S&lY z&v+ig%{s*Ab|Phs>P@+qo?ma5*5-}KfIlLqfLEw%#RDB|;9IrGyk*uUw&00@?qe{U zejM@1Qupc*`E3UxGB~(oq!#w$rR?@!Udqt!qe6rF8J`=SENeqF`i+IJQL7b6CpgKt z_|_H>N+HXhlG)U?;0ICm-8b( zpr8bpJWw0$Se5s*G}bEdIW&1F=+%#_6$cT0;1O-wTMNm{jZr!K!(QJ_LWv4fda_;y-ih3+c^^VZ}b z9>a?Euyv$*n3+6nJf-sxab}FU9;xL!bp%l07Do?XL=#X*LwH9`JX&_^j`1L)wfd)PG9}U4j`3zlZ zP=zcnb*)h2g3EFzuHRg@b;eHvj9<1~c))51-yuSntsvx*a&yD}FVGR)y&w;SvE@yz zSw}{KZ((&jmLVmMAsOSkO-5+Ww~sTI@ArL{?lJkHke`q=XRvtQq@YukUn>v7YE?A@ zY4Jo-|IKeE380|d94u)dDe>qclroGxG(L}^JCu=e7^koADkLN<4uv=QAN-IEN!F3d zM|MTpHwH?KCkJ|Pnx@F5@V;x6t~tFzOC@&*@2DoRRjzk5;=wyAniw2>iU)u6!0jWK zozA%E9jW5}u6U$}IeVOG^PV4xffpA)9AgpOv%=gR(G{C>kz=LpS+`8gJAb3%F+O$B z4edVm6fmn52$KQ=X&Y5oN$S$u?q1*UDDVW>gm|`?l67B`IWvH3_Q5FgQoxa4}SnAFkfFLH`>u+ z1Bk+0WLV$W>5-eLK9M2_sxo#hVnS{s=G^HwTeK@Jsmt1~ z=fZ!XkBxS<$@k(rU|d(|tak@?-2m`&P08}#WKFv=b2qt}c_Sv+|Mk;x;=m2CsRFg) z`x#}L`8UH0xP?El{^WN+-IMzRRW9t;W>ufU%eMTdqwlO~Hxk`cPR(~|x`}OfqaT*e zVt)r{+wLNnnZi(#F>gPqcw=c(FL-xvfa$@;Qo=5QZP>$P883rF>w z39pu+k{x7Nr;Ce!e0@47PO%}}+y~NCSJi1gCCzoP_9Z@2CM2pm zJHF4ayQZk*SeKIgL?W}Y*{SG8l=X2LsMt{_As*oLFO&Aq>HDurqV~Tb(c~);v#yp&sVtlUsYG@r}< zbvYjAwb?<@SHd5EG=^#BVg)0TtctDB@%9U=QRV6W>f_60+Xmx&Uy>2EZVTUWgf)k2 zE?EdQSpLkhmm3u!77mfKWl&`W%D{w0a_ir1UPg&)m(+2^mtc-;zwXslrc&U!=SqiJ zq+fIri})C&6{qYO!}jG{_rc-0fq@UMrZ-BW;gfBykq{Vn^~8^yAvYZV_o`6*30~_~ zVJvYao+X7!#t9L|U&)Xw?wO@_P!tdrwAibThj*SK(xG3pEF@Z_trQ5#J(IH-EZ12U zkgwdi$f(SIQB=;Q)O_V&I~BtWuluY_Bm(>VjIXSgP&CS*nwc{?a#CRY9k?nU1eAq8 z9%Gd(Ni?@uE>O9gEe4+Q%Ew%WD7Fob7ISNE=Yu(`9B=4G*DLUfS9;c8?a8VF0DRS3 zOVVX_1lGgnYvZ+xS;GS7SH7H`vuk^&PQM^O|LMkmz4Wr>>#EEMv}%X`rJncL^cNR) zjYHa2>FEXP$De`NH6nv3RyY)(YzNqCdfJ+QuHv|j*KZxVf_m3ME#{n-m?})HmTm;c^?;IvhkKJ?8YB5RGz@8SOlw^< zB`78?L$GG;A2J>B?iiSVb{XcaA2+9{?Z*7kDOIIaPbr0%MjKlE@sLBja4BW{=AJyx zDB7<2b1Zs=(F4U(2F~@-0LGKmMOCSpD7;iIoXkSUcR+4V(H>PN0j!0VfhPQ=`cyH0 z69po$rT^CmvE221oP~NKx#_qNN3&%T#uDZEUE8nwt)3JFX^K{JOSEUBK`bqcrAl0>)s%QpbN{4LOTfX);~f9~O6 zshz3=`{ChPqjZSCkK2^%t3O@)ua`JC$EuzxvJWE*6N*|kc2MHTi3LI50qza~X0cW% z$d`J(^q=HbF*M=f=V-aVCX8-ViW>n-1u0p1gHXA6mQm0t*f(HUbL}9iDZ%sL7m?(7 zL5+#^8%nVKih&-p%mskfJY5hrSM`xRLS`+4(xS=yN8E16mKKF@+y^v2`NNz4e&Mm= zQFs;KN45{%XRSuY#gK}$4?lo%*3C*zUu+ikycIT3BuqvbFBX#EaC(0ks9{DXVT z>d0blgK8QaB?pf^)%@^ z)xfnp-yYu(j7P2L3g36e4YnD46->bW+TbS0csLh9PUZW&YUuAJbP+ zl&0NY)=kKx)ky->o2YG$^#JNZkxcXswW<=$YvE@X{O|0j->w_1Y$5dt-O&{xlV;*g6U(iC# zTkt9#%VB=$(uAR;oX+Fytl&us5;?@%!d%@#Qzwc`)JO2lQFkrq=1L>MtS;1{!UgCa8c#U~4ulDqw+n0;o>*ZeVc5XU-y~q> zhT5d<0L6+sCo3~@{+JQ}QzBlKI=Tk8YweWBgwIuV#GjWxKL z7mJ%QIvnPlA0c>j5(zawH-QG0x1&lSaoe@SSX!!q!ai}_0H^iGDqdPQSX4#U|Kpq136A=Tmik6e3K~=EGVQv zn8HVQRDGiu#TyyGPt>{u*((r4p4gLa&36_ruFyp?2m5zFBb3~ z{UA_cYSgr%C3E-I>vgX}Ekvu7U6?5@8OHUl_iSe`vrEy64^{TuL-sRAvB~iKiiB#~ zerF=vTbEF$v!vwsVziefK@vtk9Rlqus1LhBFQkQBThWZ|k?bmJlw?#Tw(P|B-4^mO zr{LEA&;Xe@Q?(|v|N6TZXx;dP8(HOsCFxZ+mn31=9QFU>MVCqOFT-wTk=M$kw0u#L zB1HKez%%r6X>Wy5RLVVWMQ0K?+}d+HY8<-6?kG4&-}Xjbv=Aa|w0@Gj7~%H3HN7s`l3CGSnBN&Dj?VBuhUHFfGVUL$4EB8qr>V z4ox)vxwGKf-pC*=IOT_ z4;4kw!su5mdPqEcP|(aEQIgIB&9gnu>4}C@4|T4YwOu!9jz@N*hVoU|zR^3Zb^F3G zNgwx2^;>8!n5A+!!re}iujV|DJL!_`KAE2ubrvy#h#Vn!xV09{)lMsAbPsB!(rU5s zC{678iF|rdA+Xh{yMkDI)igmk(TzVmb?dSc86N;5mXr#QyAVC^}aBYm$|0HxBf)^ zf{hoSt5YxiNULOsOTW2AnGtmNUgqx}{ihcL(59_c`B(G#>exW#Uh3^d^+$0gCwWZP zu&0&>q%{1XgZ&S_x$iu>2f;#7ai__mUe{Dj06;}qf!f^sdiy7xjyj}hOWMv0Q{J<+ z)~<3Hr%l;5WZ!qd;d=(y%Gyeg=N?zxG{eFAX%uV zmz2Pg%g6OzpTotiC|gbxU+Pe^C?91&8*&fO{p+Rjch~;AM_h~a6gHi!xy%%;FA5|4 zldA(Zm9m@CL?@wzR@v{gT6fj zke{%=*inr`CUv+E5ne@JWCudnvJ`p9r@ikUZ?_^XfjVD%muWk*=www?Oyj75XrAX8 ziv1l(3a-&;&e9!f8_{+cJ0wg%{))^ALu&TvS*qh)hxBS`R8N&lSpDsSRTAwY9ltu| zlvkeiY(c4X33RJLy$^3gr9et=jklcM(lV=rGB|OAb#T@04R&}E`1x|T`51)jX3LuA1SFjx>iaKeh3e^-CCsT^V;V$zDkJrIC9cdVT=ne+O2D>Y4wi4XwCt1osDirHMi`7!&5QW=A6MK~Ta6 zgtfH z#%6xW+Wyu&rI??(TE^8g+3-7yT`8V5)rXd@1^AYZbq^A1s~PH5G*F8(K){0^+~FVeKU3m%f?rv(dNdYiOR`V z3c2#f6++E)f$FZ|m@It(qBz0X3W01~pBq(y@!6tj<61i1Jo~4RfEbzWp zi}4stw5ZrCa&7C-2V%Icon*>yGsdduzL6Y})^I8O>51Wm1_tpx(&T{jrenQ%b`&*J zXzWaR#)Yc<9Zhz+9*fE&PYC%{qA53$o%gywEYz{!rKKYlZI38OMme|pdifR4@|2_( zZupss!2TkNBq61Hd2vWSz;o1H-QJ*t2rP^)k zFw?=ljC*HL_`A!sw(#y-{yzXwMUvo2&kZ?I_><>mM;DjP)8Z?SNh@mqEy!Z-0(>S`FwWp8MdZtL2>H%b*fJxALC3K)8A%B9`$Vt&c&zZppf zU1Rq@V}s*vaMhJYr&wQam7vGhWYu_kg~A_;Y%YW<^mnB-IDerQeYjN^eaX+m%J|$J z(8MC9>C*HPKd!Cj&VwF3O%x8Kyd-y$*P4nu?_$`e0HzXh6@6ts>dzPRrpzD*`{oYO zzT2nk=T8kn2U`5fyaq3~tl5v+7XHVg`y&1?PktL&G)>~KcE)k3A zVAqe4Uqo@FXTq-<9vCrR@<(H?>dCnQv#M?{fr^T-m6EWe%wQM z_)qF>aIpv`lToDk%$T>AWsb?RhXraS_qKTZg?;!Jbd?2$M6S*+?iz>l)r#GSHB zT3c*_C)5iy?=kAd{%bKkBJS2#@^e*P!LKYHCD0B8%9>S4CSzyy>It8(3OmBRurUi(;8751C{Y(O>+xFhO>dFZ82iHC#%%&cyPP1%U(gSmN znK6ylx@`PaFv5(+TKfSm1AOE5C)y%8jT86R);bZgVq4MUz!g~(Pzf7|VxB)gU<3I1 z|7U}QCR8r|V$(@*EOOWVb>nVXV}Hry6)BW)C`~xD=prj^ZLgT^>6ac9nOclK5lc&L zs3GGwO%nT|PnfkRV)Mr7O}b|8QhJ=8kc+ryqr#`w1&(rEjKA1SD$P#e|uGk zDTGVPU+f!ie~kY-3CU#%6e`x;W(BS$;UdHuQDF71y(`(eBtu^vR-Ctw3;GPe+O0Ve zF>xeen*xh8hJ}lrLF0fZG#FY{kM9CL3Zz%H=7U4T<9#_m8`Ff6{ZQicKfAT3G^klE zv3I-APDq*)>N*zxN?WffgohoeS({!bNyTD=K|7JnR}95Y!D<7h&{Hgqr-oNL(tlyZ zT9hElNp`8Pa)9|O@yOy-ZgE9uLR7_WOH{7C7x9!`J}Lz->-S{ZR1L-#w)B4or0rB# zO+~`$*aI0STHhG-WWkg^q>!<7k)L{IqB`su)NC9`$e%u}A~(6twL&vhBw?zQk&zy= z)cVF<{5v2^=k!L=8Wqcki8${{n!q}ZpC}(2)cy|mP14-`A4;1493?g`n+sgC@{2V6 z2)9p^ghhL0Ts9h^pkqN^1FB;>3aV|%gps@r!j&Fq>pDR*AMu-uXCRgQ{Mw+h#@O_S zUK`0F$~HEyByE!;uyE*t5X;P zl0Qp(M<7qq0WO&@=y<<>$Q3ZB_=zx1*zn~1$yolO_Ncw>XwdKb);zOK|)PivqHESugnjU>1ap^p8=$GhchR}EDfc6zo>ty zwl04%(Oe*Rgdb?5qjEHU5Z=h94bkYblcn~AYPDV&A_Yq9FOx%?1qQEP6eN4cr&dBn)I_eYE|+pEE0qYJObl3?c`|rEZ$gkp`v9GKKZx0 zXTMpk2qIp{y!z9re^BDKb$!ySJ>d0zH-k5FU3lEAX&bg;<;sL2{-OGn_-ALEo{o`` z>W6TggoMO1miiyH+}f&bl4*9f)Ah^o{Dh@o9%l7kI|R6J?fY1taZo30p^h$Pho!Yg zimA+D;@2G3>+0>-lU^QlEQrt*glYyd|b|rJ}G9sM62pP^;+w<_b z0bGmv`TG1K|Az6Vv}FUKSrm(N#&F>eX|_1@&{~N-zar11O8@0Mz{{>~zP?WVdQGX) zT`b6sRP6dC@!?M@RWI6$gp!mR{C;E zxR<25Ruwz4tLN%bt;}G$gS^i1egz`9!`wVu}HQ ztiU@dN_TB!S~q!S_Z(pF{f&Tnypiwd%sXA_5Ut2^a0k}f8fkWho5TJYojvns5B~j* zC8LP0h27>7FsJdU%Mo|l%5D1Cfwl`YF~IDwYT0gQWW+J{B({b_wQ@cFTFnq2h{s4L zCGm<+%0+noR#|2m@MNSMf>W@vAR?hQ4 z;Z}UHenhE2)e4kRR+CPygeEsUzgg49Cms&r&x>ui>xEcuXGF5ULHyg^clhw4nx*z3#XRl{BqCL>}?R zt?Zp*dCt$fA9amWB`t)6j1dbx@j?-5*`+}qt-1tcT+_Y&ggH8e=g)W!i2aJCT23Lh zN?zJps@Hwh>w5n)d)jUmX%tRaRFprN&)Pn_$KA>|-G&Mnm#24}%6D~)Vj8aa&f*NO zpAoP8XO{vD{R@}v_PDEg=erb=n=iTN9_F{KUC_wsRaKY`g1?Qa!4FUo%J@nUxKI?G z{mIX+=W+5<rO(f#3p5fBq`1}v)nh2071u==uW3OgQ%M!yUUGpy0?qHi+?8%I#(EMVb22% zlKHc#zu)1x95o+rx6rI($E?E%XryarY8%!m;y#W_KOBJ-lMDiNOxgn<&!*x3QhyZo20md)p(rRK5%>1MZ2^EdJj=5uq%zV zRPdUx52Mp!`XqAO^?mLr@r88Pnp(tYbzulIo=Dh*Je#s zH*7lXHwA!Pl87v?=^VIOi|){@+VEKSYe-~-)W}TTUEQ4`j3pg20Uk-C#>LtMmgsjX z5tux9ucclwYW?sUH-#dQ4&-VylH%miH?QReCYv*m1jekTs)kqYJkKHFFVXoHsuK0Z zT4*e$l+5Z@;(%n;U<^vqAqO)WFuJmCw>jbk8>fHyvEFGuPP=xSd>HqkX+*mkRb_%4 zmzIM%Zl!i+s`;P>c~R=FF}Yr2LS^d-5}1jHir%8dQbZxJTKbM(Oy)i*_vc zrtS2HQ6lnVw><@{vA!M$lsa0@Ph^qMAT2B?iLTX?O~`W@BSb*Ss}BMc^7b`4P2XmB z`k^6c<-4;3@cB`Cb|Do?B*(?B6Y})$neCa(GZ ze62dlnYEb0>yC7JRCFXA;E^UDwux{od{Do0+(*wGHVqS*tB@2a<3Br`hoMn1 zWCHJu=sf4D_w0x4Z+bb#!l>5PBY2aR%dpo(sY&Y3V=ea3(!c&(XO?aF@8ux%%qO`? z;D*PdO~f>)XYS(PpShV(&)odBB46?zxwC<*Hb;7(E^trk!B(5*x zkEpg#T#}?QzGUEQlkA``dTZ&kJbg)5x>_|9za=U9lYX}K_d8sV)|BzqOL5f`t{TLp z3%;Wsk!lT+CEKbCrB^mkUd(}mF<>k_W4l;WfC!^NJ9y{F%hfN@I^K_V>jA2EQc{t- z{TTL9_CljG9feW(2DzJTnAu}MLpvGE67B$8f39kEulV<;b%O2MPb&n*M{5(WY25te zD)gTagagnPUD@Ti*R=QKQ{;{vZg(6rD>@4{JZvz(pZaoqd9qbpol&IxMQvVP6w|FP zr5?+DZ54}tGNT~mxh0+ z6F7DjM!$c0%UWeTkC>KGR%R51^bQH>>kD~f3EQ|`E;sw=oX@#lrCKQYT7O0gx|+0n zqmn;}TitI@_+BD1HwLdA+JOhsy*rqYDifYOT64Z`A8&>uetNRHJ(b9!ao$03x~UljT7f@MBu5U@wV&M_Y@=Hu1t0*J|D8 zNQV%z6Rf`Vl8=17Sw*6@rVybBTbom@cHmP^-?^`X$OJQjRHEU-M@>rB_QM^nua(>i z)UVthWZT(wX_LG$lGYMo-Kp||&?+t>3UY+}!|hq6(PfUPF>6f`$_I&xiuF9DwTv`0 zO`vf)j#EfU2lY00V4=ZCO@o!ty_`m=cUYsSxd}kWOOv=*aM@djkPLtgjw3~-OJkno>)|%9Gb=ko zjgyu`!XSFHoh+V1jISS$%g2%jniWn=rV@wq2iwdhTZ`M=HMe&kQJ>?rVHz&6Cbb^2 z!-8o7oq49%^834aGQ{+a^&A_g`YZ6I(BBVFH4X+c*m*= z6n!zd$}Z;y^V2>yrWHJFEe~Dr;tb*2&5lk=i0fVEWWE0gI;WYU@5XrMwzlrz z>NDicZ(0}o%tZKyWMe}QfX|W4jt(hcb#DPw9 zN%j)~yvR{^^A5QLnX7P@0Z?!KIlooj`CM;l3B)`qu!`SSk% z_Y1@F3e{@&y|SztM9OH@Ga=<_hxAbomK-VHc*XSWNIzv-ey_;k@1Z^cdc8^X53{&-y$1~d_`*bOz)IOTLpZt!6Ifg z)tG}j-VsEG-2vbg3IQt-a2-5V!1PBK_4s1=WT0ogRgCbo5CeAxlQxzvG@43$t}p#x z1dn{K3ucifx#O#Ljr&z=rWVZqA{gcG&+{Ci(<@&pp^@QZ=2Dc2N{{qLIeh}ChAb-6 zxYg5OdYx+V4lxFiw|Y?xKr7M`OWjtQ?ul)yDa3PY>l^ocQv~5f$P0O-@bMT@niP(g z>-0a5{<2ox6oond&L=g^)@fRslciC)mMy<`mnuFU_dk%9IQf z&lFl1N9fbMi$W*e0@SkV89V0pXSfOAMWON=Ubzu3%7cL3Ef^wAh3xTluTbf>X^V*-jq*cpz9NO3eh#x7Ir<>e zMkNhvl9F+)w3LLM#mf`-hkUUw|5Da%rfmP;U1rl?m9@~Jq;aNU?lTyyR-~EPZ64xT z5l1aQ(mWOG+GDfowq-hqJO$Tx)WU6`nZ>B-E&=+{Z`bk8OZ)aE%WP(Im$QsyV`n-oH261jDcY-PC`qi534O8n#MRWjRWSQG^q#eI31;ml!pN zL8RT%={gRYQBhSg?WWioJTP-;Mo;ZX(M(<7#QoXbcR%o^-RMu8MQQx+jm0_|)R{sg z(hFnO{ExklT`%sj)3&Btt{G>PtCs?yJ>EyE3=iG8U#-yVkRp)d8IW69KL{v=Cdf+y zG0m=!W5D!o_j>)LZW%8-BSmps1#eP`e@)UEEsx;f9fo-BG@mI$5q*@Ns|=}DjFJE3 zo|1HP`rZC$!o-^n7ax}<3!f=KhqGt_YWTDcbZntJFb8p~5-~DqQ<8t4@#xlz!p0$c zuY}>YG67#Z>CG`4L?U80s;%ee(_J`bVu`yvAa4d<&(VPlbK}zA&d;oteCNn z7z6J&RNY``hncfGQ>RcP(&Sz-3G#Q*o22(llmm8>`-FSDZBBvrkpYj#0j*mBzO{&R zm6Lrkw7Dv6Y|~L;7uZHmIY|mFVqPwDJHm&u&H}WUWzVDEI|tpEGyRP9&)Y_4SZ|HB z2Ka=tm!wDsAmi(&BxxBd(}n2_tJDuBVN}o|uXR2T=6;SIh%n@0dtPqgd!?bz3n0 z5N2hl!;Lf6iR0u>2hOc%YcC4?$EpldleW_AS9Edj@$VdwAy1U##LS+Al5u~#_`rCN zDb_y3RDtYuw*F4&)P&Pe3-fxqu}dUwd&_;>t+gM8;4H%N<0U!raDn3?C@3W{y{ylK z|N5f2j?=IBlmSr}dSpxrn?kZ$Qt7Z#JfS1v8=a_jftnK8)YSOZ_`uQ8K)}%C;AL_H z6=fZpF~$^Q+~;W@oRsvXmoY{9{g%5dk6pix42x!{dB8a(ZX%xq-+6o?nw@EQJwJQ0 zI(cFdl~;wfz-=l!&{0B>nrO0C)3a2 zss={jsBrz`#EK8h&a#nEtJ=qZgC}2%3M96K%y(mXQQ~4~G)qBJrGf5-u1nhrOQuT+ zM#f{~T;|HRh;&XlB9cM7+I4}ijwds%9`k_@`?WGiLR6(7lTQq_+9a-?wkqN0W*uj- zhKG%V#rIkJYt2l~n}}~F6GPc&u=De#YDxAkU~BGayP6dsv zn2>YO6gpTjCAt#8FS_jvqK9;GC5F&?r@$ zhpGen5|;;~RT=T#683&jlz)lsJ?sBIKZyFo+=TgB`PMR8e-MrigA7>Ebxfvc`+S=N zf>!-}F#Wi?0$~^MtT&_w6plN8{W0?a!DEgqRlkfGCKbSM%Wqq?JFViKLbpwrz;GCm zF=Fu+lH^kag$?wI?wM_+osV zs~vNq9#X0M6nI zqI-R-+}E^^k`GYT6dlkLG$3b*EwCdXxN^0)>$P}IF)f*u z6}rcpq!SUcIzij}0JeN^R9;%+fm`ZELk(jCg@I4_o|V@)yN+lr;jw3{Re;>Ucd4L){`8&J# zqL6|H6lzdf$Q`js4D9^cGfmd(vQkUure%;OayIJidJ)mBCJ_3i?jk%@=U5(nk$E=U z^M}^EdvmgB@SXhwQlXawa}t|_GArIvGZ8nxZ80;`H>&Hfud%BK7q_zTVU+)y!eBqy z?IWuL`2gi^G!TU)>;X8M@f@JdwY+tXK<_`qy-}T26@MNod>nhy6kwax7~SKt-fkkn zopv=}N&B_jb0!nf#4mCcnPIVpiez?zt`E%=yW?;iSSV+}(u?SzAZf>vTu%7fa377Z;Sj$+*D~zxDx$5tfH1>|Qjk@oA*c_@IFd>dNcQz#T zt(FkDVCzTy#tLKcch_`Kb$+c^boUy&c|k{s4%Z&94}I9dkXsqN*a24?IG)XL*QEry z<6qTrbak{~OK~bXF)75D19owg(~DLKva)(4bF@B)zk5)PLdCv7hzD~8=`j@$Ph06; zWw{ut=QYbFU{>Be9p9wly$|O8$IAZB5bEw?D(&wUt0|%P)o`x^<$X0PH{8eYrU5%>@>rvP?6f-P|sCt_YDQAOGq6 z6PM4!j{kM#ux z)d2@li#xoEWRE+1iMJv_c_m@`=-uB1aOI~JZ;o@I38*#_NMQSk0)SC&$KS2HIg@B7 z>F(5bm4~l!4V@@x^s_NLfp2AgBOq-*sjfW}%8qFHR2(p_2)pwdfd>>lzBpWrEW23n z>{PZg2frgyjv<=Uq`m1|4FXC2b^D>y71M=xB*Xb0r?ej7S|D#do$LE~(IYJ7Y)Hk{ z`$k@1(tKfhwl)0pJq(fjY{_xI!9qEI-)>6$g<9WHL)==;=x`9dVqy~8xWh|9@>YwI zYGwC?j3r$rUyUP^az$!&z)EM8l~}WWExp_tgMKY1)hlka*z*h@ByecmR$h`%kbqFr zAF|COLPBZ%$&#?YICRVf8>cUV|m`^{Gm-1f0I>ceteH3l&VHOp32kMq?U9nEFosSs z@S(b=L*N^kziSE~4!D)2kM=$0zIq$ANXxfeH+kbl^i#2ER<1+ zq;XD%p@(ccP#T}8Oa1QP>HJBL5P42RblL`6j1Kh_K&>ZngGp_{K4jdOR%)ehYMpZI zu%9%+AuynTed&XL0X_f&Ef7gZnKr7nSU_$_|9Q2Ow9Z7e;OAiM>{)e88_cpW*1LnMAVO-$J};V z-K3c3dysUdx>{6Jt%ozhGy6hAN>lRG%+jsnb=OY!I(#SdtXQm-W9U9ydA*U97b32C zGj$^_)Jk2B4YaUg9Kc72UfI5aRpco<4DcR#xm;R`Tl-~9SMpT%$&1p|)=Bs8w41$6 zMccM8d}}8lpvB2bKmxRSn(&wiL4XnVYQsY8oQV`IQRIo9d0*k0>`TGX>t zZ7H*817Q?5i-wj2Va*qDj2iq)JX_@FTaT+XHA;7fW48EnPFBVS>#yGTT9wXEF!ZPw zCcBy_j8WGuR&)zK1X1hC(~6haO`aXQ=ZmjAQSb3U7iZ5!@U>}>DVc5J{U&O__;mV4 zw!O~|WJgrC;0zm0^~oLIiI5d(;PWn4(q%2ARH5EChE!4fMt=0FM?_bXD0P4?9B1Y+ zP7|25SpcgKj>uMxuD2%NA?yGCouA~_iL4(;EravfEcfqqIsWbbV+GM3P2AM77BP8< z)81nyH&)k-AdF$b%ogDq;+^c6mRf~%X|+w$&D{a@+HE_))bbo!&F{Wd-0MMT=osOj z5c?$2$!|wC+HYq);LrH*P80UWD%Sb<_gXA`dhIFweY2H$ zhDm^Rey|i_@oPcU+-DQ%1ZdjjVcH914!C4VjLr;*kw(##hmX1NaR1Uo)YoQSL%$js zPWO76Z=uPGA$LTSHuWfaA+umr^2rp)0KEPF)Mx zbb5@F*)%<=H@E|fb}_t2Z&E7rGZ9!%%X0(1oydM9QeWHvFXK`(8c?K(8r+9U+0<^t z#c&$Ct9&r?_uq0bX(mSEannPP5yFtusRH!eih8eD3b3Xp%ep}re86p0+k5<5y0E@g zhNmA#*X?L4NaiB~mEf{Av-FvWDLTZeE9 zM!7Z6l-Vci9hra|DWaH>39A?~bpe)JuRjtfo1qo^=E}A#3KCtV!Cu@8!zo?K{k%b* zWz}k8d-EI5tjw|EHQXTkjm}un>W{>hf4wB&q}y~}Ze44io4@!?e!t;`VU>|P+JA8! zplMN zu>EwvC9OWU{qrd-lM1!k+}XW~oU#Ih3(c{qg|p{tjM*V3LJULA6vJ4R8fBlgj6yUT zI{+`hVp+YmkrtA(%v7m6#q?alm+Iv9fFQ+Rv$fd|GaiheG;)Rt5MU0i+ zRgpxQ*jNj%=aa`{B&W%*?S|wu@p6oeu|LT@DxZdO8Zv>|g}=g=_yp;)w-#KAr0!-~ z$@IF`pi+CP_xyHfP4VMjFTz_`+{~Ux^|)Oz?cT;p#ihE`LK0h0Zo&7ao=R&=+bQI; z6tQX!Wg=jy`_CNWllXWkMtytaF;Fx;u4*zK@CfuwHJB@k-}hR=SMOg0RlNI$4q`WI z5^IdIUQ^W|3;!GQ)132}39GH(AJbk)^CR4OA?w4rMt6z2gDnvBvr+;XebbR?=xx5V z+C?K3?TOf2MP zAxa;w+}d7G@<&KE*`@``{VbGMnr)JON5cp28!Ab5lbhVRTgcF7T`~m@nTFDIdcYGy zEI&ovArk z(vKaXZXI%bc_4MXs1h%y+xAik0!(b+s%;!tgBz>nbtez=a=I*$w zRi$j zyiD{Oqv@n-&8xl@_-!5}l}f(916rQO`A|HKfSC8Bxz_rZj0x+~WzHnSN$uP@Azv_I!3qGg_Rt{|K5AS4EUf z;Qx^}@P=de-8)PFVYhDAVH-F3eE2uW-JbAZ+5vKDNHAI`MFAFoQ*RqCn%!`LacS7~ zx8SxFno%*5)I|6La$5DP_Lm8b!!>3!oel;qj_P5~z3bS34*imEOPi|lUgZXGSIsE+ z>jJxr=zAt#7fh2_dPJ$n5Cc1}-E?bff^;n8Fym%Vd3lzAH8ol6_=rE3V5+BPlP7~w zKmMJCfo_-^!RZte1C{T*N&zt}u40cCDOb<+;%8Acv1O(i9|RscfY^j~Wcdr@Ph<-l zR|Ho9E+G*w2+Ns1UYm;-7mEqI>?W3ih!yOf6A%cejja^m8OGZFR;>>=*%tXR!Y;zdP6dBi8)8{Mln(kxw6fu89y_y> zF0FnNDK`%*D~s^03;ZMrx+|h&>I-q!RWsxota-yoNV_xig4E`3905rNJ$! zll$8y&7>&S(P)r8c1*u4h{cR+KOh&KhhN^etu4bsH8pi$W;r7b<(1SEFJd*2pG0UQ zi}a~pn`UUh_n27Rv|7bh2Agp+iCIj!)h-;$+;J0$_I}#;eTnfv;pnp{abE%gobaPZ zu4N(nRDIhv<}0)8DoOWFUz~+sh$E(-E>s~Z(+Ao##yAz?ewz^U_V-wrKI!}6lsjLP zXt*hdYY_Q5vA#9oH2kYR1IQD7`6&5tYHK0iF7*q!KPYOF9UZMb9nP%k?DxLW!6BFO z3ZE$;5*X|Au^8HFgA@zZEcY3YC7Jv%)QlG}F4eVG8jT9vFmzs>N!P?LX?yBqd3`6} zWPA16=zCq2!qJb2QMm*J&#$+>J93&JwPOBJH=$iDy>w3B=!g80l%+7u+`TAm5WAHK zZ$tcB-UPoY@%KJ#{?8@fJr!qde1FJC4yuiwFj?Mf1TT5oTAP{_ok6qM1Kx4@N~U(a z_@hzL$4@jkjOR>j6*}{p7Ma*Wl4X87cix}$2cPJvkY5x6Zc%s>5FljNH|hMB3XTnQ zA3kwxG-X>{=4VD^mUdy4%Uz+oBI@bBOr}}b}LPS&FDN+KT0auv*F>U59}nG zpR3`9h$?A2-5uN9=)1`D>@IHSQx7V}J3nyzDZfl>UY?1SP*3`(7%uV6azoNNrrQv- zvTkMF!4lH7HlX*vXEIJg28Mn1#ZM|Q5C(WTT5**EIq}WR9eB9*`(mgG$Y$weWPRXFM{Yp_w6NS%L3E?l#Lz&k$$_| zyQ#zY8+$Y(+r(k=P}5r1j`ai>WvD>f0-ecQD{W!|``7lhVDmMcA;Ty?V)kRy@iF}! z&X0d58($=SD4&+S(L&TEcG2Qy;G82F++B6F^pa6k%B3I%6F9AXh?!YcV?Nv0hoGp7 z=cM)X4((dgH`*C6JX=P`<_mvU#-?$zKn9QnYv6*?Bl&n+|6_0(XJSHBk0v#d*j0pK zaqPy%#&0il3@`*;#^;0WxHt;0Ahs8LWJTbf=mU$}Rj)!(FthqDhr59tojNi&CC zz2$Pj4yc~DJjIcob2q!y%gT1fP0tAz1yt$-<{u;Vr_aObVqP&xL^ij&rTlKI8(F&b z{LMcd`i~Xuc!1c@TUFaO;wlJ^WoXl%q2Zk-&a;1_wDD5BaeX|0%I~x019GWEkM$gW<-6>p+rXH|IWyS42G4y2MD^C-*De6lqnsxONqay@ndjIyJDNOm0WFz)1 zX`xH{g+pOj6*(7IjiT-)zmh@NO3J0hPGUzv4>!P*E-g}+O}VV_^G(v1q_i|r_OSSD zn5u(H$CCt><6B?Pt?F$?EMbeLrvqC_y-iaAW)lI%NbBDBzSMOS<~#ppUDa6nY;zrEEfGlo2uBQT=BfPFpr+E_JCb`5`47~6bCzr)9mOM_M z$WkwuOsZ$-r0kd0pDw~%0WafH<@yct?INm9MUl!F8~?OA-0EjGa@j9%mS6YUJ`xb5 zSbcpLJyeg&DNh*^-LE@@B;ekMdy-k@7HJ`?Hv#(8F}%N4Ll!gG3vN8$NLRg8hz~Ij zkk~bKsDA0g`c*A%sc%>;$lw%wQ6lzM-BClZ`LQ%x_(RqmPI}84EjOBymc--@vL{~} z?^saddrAB=JDPHeN4#n5*rn9wg?wIChrZ4{A=I9dRLP<;<{Q1sV=0gyXg=;nHE|le zC*8y^S6$y4-H&x0?&)g=1@ozPm0G?;aM7$Rn{E>m0yZ#<8uq0 zPlMjdR85viq$g;U$s|r|sT9X`^iMIB57jGi_q#0EcZiWk%a9EvA!~Kvqj|bC$9+UD z_|X&HSNx!0hB_~99_rQv_vURTFLIq6HAW*c9^3hEWQfR#9(j*DYZeLZGWY)y{{rCF ze+O1w*0-B25I4YgYN z!pU8FFsg0?=*U*LJ9S#=i_W0JA|QxD;ySWrQJ=p4U=K^&!Aa5X_ktAD2T}eh9x=P?*1R_e1M=*uN@3w&MV_@oeV~m0h96g{; zC$5hqt+3(3t9MT97}0Yqyc%!rY>gGI6_v(NCaB;4`d5+cKY^qwTJUm>n8Q-dCNGM` z!DC`i0Mg?5IM|^-kh!XX8axu&Kq9;}w6mnCUn8cxBFqrt(z#K|%yMSpAOm<6gLW0{ zbg~aIQ8dHHhSZsn>5#i>5aej$*9Qt@AUGRdvM=oZ=sy#M4~B90N9@T@*!+2eM}Ki> zyNT|qW>D-=(LU-YD;Lr;a~!b9wxq~vmQqh7`$THVs<$qhBN+&TMM=lLB)IqSRJGb5 zx$ATu!P(R|dZ2NahKl3M-%}00V&wWdE9hzd^*t`P8Yzo>H0@R*abnbg#3f+39HCP~ ztc#ayr1O)dG?KY`4xwn@r^J4A-+!Bdhos1(w(0*oC42T?4*rLaTSZpm_omm+nWmTm zq`vb??36++tUjnXX*ukds|4jvcwfm&l}$)0t5+w*S*I9QO7{DIpRTZ~0c&$OMttjh zi#Jbm)SE3_a zClZP44}&W~N56y^{U9K4Haq#|eMj?zu6*Ggt0p*qWenEv>I7x(^~m_~t8hIk`MyHy%&&pG#|$U3P^7eS3QwrRExJY^;WOH*N>W1wmSik^TvzS1Y(eo}p5+ zB>&_>Rp-$)H%i(f;n}pp;>EDU8g>ZWfVpuDv{jN@c(iK_%4 zg!k2jwmhbAe6)S_7?@9#eyb%?{*|*iH_bF6fju9XTmNu&9XUp!{ap0>M|``p|03A5 z-DGX{L)#jhw)LqaYR-T20d6(*j{W&r>V2GVq*KPjK^IGcQhdH448nq4Gn*#{6Ido(gHPdsY5i19 zT9M@*fAm7yR#vhfh>#H69z8#Ay3$J7sq=bQ&}wE$61jP1pQ6|0cecW@BBWxQG(#yJ zIuCj}7nLEA6T5P#?>JI1E2<8h?9ddo{eE1_06U+Do-ab(UmTL{4f_kB6P$4@5<>7f1W8;NDWLwMKB!Lz!3A|gI0L+lR@{# zXNu+T8EH=`ULKGLgeZS@{03Kk$^V;xkj;N%pY@v1-)yhl)OpuHFURZ`NHkPE+uF6L zTRN?L`|57*F3;%ID0ckt!PJ@GO7x#F`#TirTf%r{@+CgeW_&jZFvOeoo2==+XbpWa zWRHl}tQ)7Nl;%L1noIqxq)WY*k{X^1O#H) z{;o|fX#dX;+j|mPx-~ByaL+)4VagW zDR%h_m=~YBDr)aSQBS1fjn&>SAb>hVN<*9J->oq-N`6p9PXG_%_ zTmaRR8$GO`rbw|;(xkaOGax$+wVfGII?W-mG}^4Z5urIi_7G6b+WSbBQCS`MAbQIn zVmGhW&qYAA`-(|XT{T}UU7dsK(+wiJ^~2^u#fOBM_Nz@c-Wk}$oZ-3T+;EW%^&pjN zbuGYoglC%>@d{OI@8Gk^-k8VAVJjGONw!)YlGhF1dcqA5t*89oIGz-xiSqSLDT)wp z8H7ZCm+W5sdF2-Jom0S53evF4EAimcMARA57)J}$(088swn94vp`HA!_&1~YpOQ-D>-uZ3`wLZL3TaB4pHBR z{eFNF_*YSOs`1eE!0 z5#E+~<_)L^y^beoVVYQax?mvCNQ#eR`I&uxZu5itJsWn>Chz9S%_Y?y$OjUe1t9i5#*1qyYSJv$@7W2R~0kE@N;mfYW5$Q*ciQ10*)#0ss&9V*61Q$=5?Jh%mYaFnooH0|wM^%VDBQT$TD z_jmS7cW`ceus^Gmx$&uLO@<7Wo^mByHPyu&;; zU92)_u&9U*^V4R~;zmp97S*g#Xj47y2!bMUvK*+e&UY{(5jxqVhMt zC(ryyMMEDT2NoSjE5Z}R*IcChaWiWgrZ&jSv|cdRqv@@}ZQOx&PV=2yu_?{2y6Kyq z-WKFX7o7^zU(F(6STigFYq45=o8LVJjOblts{}L-`otnu*?zci;8)14=DIxXkN+aD zl~CUe1uLE2S8*F&6#V@!0`4*>w`QtIa!rwT_1a-Et$wZk<}9O^J*^Ru>FaF{w6l1I z`^O)PMg1ns3)wBEjT%6GW4gi83csT()m1a6m>OWzczcImvx$q&Tugf^VVwuQH9Dv) zWx)J$M#dIv-di@8up=>6XHd2GeGu2Bc;Qr6N#nORG?Dm9OJ~&t7MwLKK_Z)BSK{gJ zbYyzQaERj&{-HKXaQ9)WkY(wN|F`chg~&KNgXvj|7^P@jAkJ<)P6dcvU6_PIeE+D&)8v&&4?i|E({XH+E6-X-wi{WG)o zje8sn$yiTJ2z&Zl@Rn$Lj-#--x4>L6OMM((H}S^CzSi+%^)^{9zD@CPf8HC*lTc{O zOSEjTbGDaym?rD_3{t+lAx?6Q~-n_4QUGkSlk+3O?sKv%*%|in@zZ)UhcSNqd6+S4i`61 zMy>a78(BD?>AVue_!kMiJS;&Rh4k?HioV?`kL0!a1W7R&9slxoJ_+2Ao8`GoGyUTk zHngfYicW6KkZq!2;pXfv_DvIHmEc*WLroDavAX%XaOT2ncqDrz$F&O^J}>YwA^wVy zz`63I)61|nuxg-pbV+hAb2nf0@KsoB4nf7L{p<>KWL=oAYxV5+c(|4M8zx_me`iV{2QqfQuOjnb?(dKWK z*@{*uZ4Z6(Wkr#))L2d^AUK69P_!tybEl$>8(LWTNFbc+hl-xQV45kkqzU&~rL9fxG!kR?5ShSU10bA1m?9g<|5<2Ap8hn;L{{7JmgSy z5r+8}frQnmG^ESX%H>gSjEeXZ^Cdvr0HXO7%d!&BN^QsG`k1f+H#an_?!rSR1N!d}U>X-Y;r%p(=dLLT<*X zs|QOQR;(3SQ#JqkGgrOG58{SD5gLC4RHEBhbI#>_s~!jJ!K82g$nQ4&e$Mt!0`%Wz z{*UDjAtPM-d-g|f`vutdS7b(}8DX{qIqO$JYs7^CWuQsATeYZ)_je0! z-sF}haU-W1GKi&r{I8a!l1`6zH-46t1qlz258F9kVK5gXS~=EoE`8A?kEx+?tKnYk zeNZH;s&xZnz{XRwn(0(xs$0%xb!}P;!B&3#eA8+YyH2Ut45)6%I;4RnP(Q$UV)n@E z{cw?8$*LyMmpsjLih|)R8dBCy`z3ka?|}yDftX1M}}xgX5ad#r4iCjdX)1M`9*kq{(;L!0)naxtFh9I$hoRT@qZCm zdZIe% z^rbLjP}e=1+CsiWOYL-+()vNl8Z@epGuTSti4{v1{LLu-M%==Dc zToZLzR1r#KiP160!qvCDSpIfyz_j=AM8P`(EQ_B6^Kns<)3ezpYO#4g8LerWG z_xqi0{pUJAa;)#mnyaRB{wiY#iW>OxbhO{oH9@q`U3jPW`FE7?VERm5;{2iJJbJh)2#XsLdS&yVW2XWRDN@^#b zdwH7kq(2JsjT^|N05UkhmIJvQ(f;x{p2$UfB1^50sqlyG^Gs!A-lBq=uG23sI z?|OF1V<=~QZB@+pU89?EdrHNA31bhU)91)7d7J|*k0xS+PSt4EGnXY#B*+|!iXBSb zJ3)4p5W@PuK@fTzN`}Xb=Q`ru!%6W|kvx-0(dr9_*_pwQY9c|u5v`Hl1Qd(jh zY>mUn-@aJLy17yqFiiNvM_3DPu}E_6{VP%&aTBt{Mpe>d#ZEfhI%6Q1ym2Dzpt8=} z&hP;9Cblyo42|K6VkcdBtI14Uz<2CH_kCV&85ESBq8B z1_d{xPYY2o!yhtrm&c35FrhDmgDA(gV&o7Rx)^IuMo|Q2LZP*`7D+4y2~aV2_-Z(* z5N>8c{N=2U>@g)>B$){J)l_N>8X}(a`Kj_>J+V8lUlo$aF)B?z@f&8|r)2<&K4A(v zYC4F>fM8xx_UEL@rt~8(*^iIjb4@6d{=qwTYhiifjD|!j=CywA9O8RxNpYns+(m+q zZ-=!b>s8?+4OEWv2xnd{YDjg2WRp#8-54ybU|OdQh+LhB2o) zR1=vsRZ25+Q|OIV9CdMZ+#x9yCxD-c2da9zTqol~3E zd+AyPvT<7iG`nx8uvFexCgBOXvKA#kb-m|pV77QR)c;Oo)bBHV9$ebIn;;XkW(+W2 zw4ao9gk+7$-RMiN(+NA%0>G;h(lTh*Ri;n$IgMbwi%lyvJ#4t*&a-~Wx* zAs+3F`)lEee6qo{7e#-m%)6VK*ty9w=!h?Zx1eixWh8r_E=KZr^&K6WJkNNV&e^$G zON4gWy83W$gl6%{)(ayU$!n71-9Os*T0Xu12q`(y$~kNnavJda7l9Wpxk2c>{Tj-? z_wQFz?!UeL5B2RQZ5bi04GKt$)ZKKpE#jd`V&@@PGKS63TuEEcX`MPs^^T!kFk5D< zFxG^E=do`%M2082pAGJRM?=je{C~B6OFT#A!`Ez!3flaSF!8xRJb1b`G_Sp#jKj}b zV5k1B)kJ!V;k;bA451B37jdo)F*PXSl=+5S>7qh+?@TZhcCB!=BlgTUG`KZi&MFB4I*5?V2Me*)*jzVrZY z4S`w3DC|X#A@;78;vkp65&{^5dLm7|@ZZCDOBWHVb}C|dD)C^flD5PBlujSU^gJli zT2fo+q2AsRQOmt_<46j)s3-~`o?<^^tmz{L(Q@_kNro>?D5?#m zh#Pbwg3hnccyIe%+fNNu;95vpKD+qbfqgL>h(bRx*6q(6xB5Czie@K@$(U1Ojy6ct zl{}(E8&N#Xg7PR5bI@u_d_@54W@6S(ja<@qWBc<*MBCZY47QzPRt%&Zb*MVmHi}9C1m?3^GH5!AcRWBB2dM$-@OBk>{{B&epHPKUrpZ% zKb7EoRQ&I)VOO#KpvSaDfs~hhht1GHO~3QX&?~8kNa^Lh3m*#D*Mq=+5s<@I5SPAx z0=<8)3;vC<{N@moD|%6t!rysJ-F>oA;=VcHW;5rP`Rr;>(& z5x@2G1epIf#~8AiJM5X)oU3MR3o;7O4vD$DDdgB6g-+)w0;d&~ zq-HS)6{iGJ8dhOjmCft*ja1CZ8T(_XQ}?^NG<}yoqPDTF*|=$zw(Oh2$@wqk8fFiH z`+@ji7~oQ%(M}mI!C)E{_oWbt?w|v{PAvG2r~UgoGz4Nd>jp%JIjwIj-+^#qS?rvNo=VJERn`Pv!9*#Tx|umSmn z-F};v-kWOq(Dhp!-~O@tpDNnAR-x7pztLAEwpTK@=S#h>ow04%%X&ByC<#Zo)P#wz zX}SOLO_8%RB!(#w+%G+FvCK!UO-9r$#>L|CKds-H1Gl9)i`O_Hq}>Y|8Ldm3gAxb1 zs24~-+4@|%8NCx6FU<5Wd&HGcu^|~U+F-$Tn8}f*6f5lnuCHX4{u9L*&R%y$eYPT9 zsmFnQ{4gGJFqCa*(VfOJGXr7@wXHVcmlanwK8^5zA9&YOoAhdio} zARa{lQqU3GH`qL(QxeNC_XLwJuQW>(N(Yzu*0MKhc01(j9P+-e>h7Hb!PUS*JQiZ* zP4b-CPqGP|0taec2B$guj`_0RA)7eN0-ykdXgHl?3o-q6&Yf-WeBX}$c`?`5qz+fT%D~jYwEAW0Ju^6w*e4C46`GCen z;mO4iMGR{q`2(plQ%HIh!#f&TJA3+6k>?Yu^^jIu%{le2CFMTvl;^~I>sxrS3+o8X zvF51=`THTvwd%9xiiou79Oni=r@NW@l>OV_*;lZE%#gH8K|4ASi!_ptc{r3BQ1R~> zzqjmK{pPwBM_M-K{Q-=Tg*yiVwH3Tr8zaVDJl@|f@>=ikWKbBY(3X=8N9Sh5t?<;Q zXAs%rxzO(gw3gQ08pVW<34A5|e3FbVs>RwAPPVSDpJ;VV?0N=%pQNG<;!BH{&^ieS z-zjpC3aVi*ionc6disvHYN+e_WVMlElp?W&@A0m@Ij%HPmVJ!dFBmo8hXf|MrD(gb z^^VQ^IFzhkcqDJ5Ezm=%L8O|4eTXAGd55}PI@It2hDh13S)?GVE;)KWY0_qy`L26w zs1ziMhFyuo|9T=T?&_*1Z6nhlZB|ml^5Tfx<)iamj+l^}&=o}5utDjCpX>`T=@|U~ zq3x}s+I-rsQCeE40WB0LUc9)wwZ*+S1Z#^12rh*nHQb65v{=yKt}Pz45IlI$1b6QV zzgO0CzW1#4oo}7z%pZ}J%-l2g$USpi``Y`RwmKl|C#O3WitiV`+@RnRqqF=%U&Jrj z3iAAf9UIO`o?qU}&w&(E*@`sPRMw$2O-MU`e9kEwNO4ZYu~It|-FvV7!t{bC((deCd#y_#O@p3G(RW(S29`mSe}L_L^9`V!F{m+)mKgSKVNmwu+`PDY;TB>!>w= z)r+-cWj{8z(8n>>Q>4%o}y%X-Ft7*v=P8bUVJr_i2Lvy!%@c57OC0fDu;`Vzdi z0}@Z-B3ZY{^UH|g&*n`bmMES4o<_kw$;1ZvQ?WR9`m1>p@Y$U&*d}AocVFnuhPbDN zm*z?vN6H$$<8Et|pnVBM0=cr6R4#a$!-0vOoDEAdIeI#ry{!h-P-1^I{O78X@(KZocIx%L{%rY9Esj~TPtl4qw zgfHcQ(FYWV?%83cNlztpP~UiMkJ%-kWAe?MfOJD5m*-Mri}lO|ARvT?^h|Y$b zLUF9=S-O5v`d=LC5ecM^Hv@~rK1H|JA0gJ;yMyx*(nz^7=4jxo_dxR_drh$}$J1Eu z$F*%jjUjP7d%9||afi9RU9h&<95~dYQ`AA%DzsA}{M16PFY9d(h@g}FpDX_aZx9vVI*g5o~dQ%?h)7a@jXIACK z`#5CmIH;>NxepJ6|F@dFxDhTdBB-b1oM0JUAVY-_=b|FmTSlXmP z+kU7IK10pSWd0PSb~}*=7n62JH!UE0dOnkn=gbG2>%-ojn54_5*ZSQLWSTZjGr{PW z@HYol1jewfh~O$$Jh=(;T~iuli%NqEikNUq<$m`M!4+xJJbER38qyc&*E~33M_8p4 z%|)#Dc_Tx@JU2P6r1mQ#tg-Ka{4lL?hjGV?YjPv!z0QvX3(j7Z*!&6NlIcthnwX=j zZc7xE0mjrBuI9=LgqTSxi!;-(4qgf;eLjPkihFZAgsh(VU9=^=|~1e)`hxhJP` z)|S$FM<1PdxLwX648HF)irDjuy3 z1bKO#g^^a4M}8cG82}Z{aM$CTG%iP|1gC|925h38Py8Cu?*|4X*mW-nht~VO3RS_n zoMNm1I?0OdiOLMC7h5Mnx+UyubeZ?XGj7}&wb<^z97}k1A8Y41e&I=!g66uC)X}VX zl7j`dtIL~5ewezh)eI0F>G77$&kYstR?csbn!jgta!M}g`kH^bZdh@lgnMNOszF-O zV%)I-vl51{q|A3Ie4F?clHbhAweoAcSW=ZG$#C?cHt{O+{p!MskhJ1Z$yqDzd-*3k z8~Te_sfXlaf?0>H`QP`6En7&CVN4cN#ZE61QO6B^O#00vBA`eW%Ci_3X%T3xvNf~z-#KJl#x2lYJBlN z!44W1(>@)??q7=o>G|W_HM6-%6?}k+Ipy5k+P^qKlkW`)-)tBhbyd}xprt;|uL%JT zTN&dc)-PD?X~iX!nkhGH0eGw5Uad4;meAFBCA@0Zm>+$u-y(b@?IZnu_!pS1Y__{H zn;}&Dqn&V_h#uLW@C+@%qj18}=}3Ak@b|pY694hnrQrbjG{3T=jj7UpwOo*s9hO$$ zRHaN^Euw?uH(K*u3CFuQw1^n2=S9GrjnlRf^6Ke?D+g$fHgn*CqozirYiwJWbCdHPwg^53ue z_@9J*OkeL5Gw>YU%B4zQ;As9A{^ZZt9*-H$?)pq-J|0d8kEHpF1JMu1u-KWf#sT%G zFybH-#kHNX7mUgf1y_vlq~BrVO{m|;mBtsodI z46(|M#kNSpHx_#w3<+s_n8{*oZEb;7h<58Q{uhbh@&AG! zld&lj@HA{)3NC&v)4x@&a%g)6S7#>^ZJ*Ir8?Ano7>5;y0stalBP*Slg-sXHncAsl zH7pyQuAhOVfO!aU~U+V$BYsausDXN&53OU#vCGOJ9>oMQRd!>3#@5k47#_izT8y2_pFCzcn`eF`B+vN7I(Iv} zuhcZ}bvC@j_6j{+n~L7MT}GGkv5WP5@w`Mlp^S zwoZyg8%1>X9NQJAOE@OvM218bwFZB?5mBNe%J4IAZ=C9x-zh?zn*$p=AWU%CRdX%Tu4*DQ&8pu^y;&a(HEMB2$E`PIcuT+jByL)?9YE>l zS}|C+!F(@?MkFmpHRl4Xdl~)eG9EquEvkGuUAuX(>(zwKnoaMc9-ZiS?}Qddv=F0J zGs=5K_VoHSGbYZNgj7%RtLwQRM@fd@JKt6v*Gv-%Dg_{NFN>$UJQMA13N~{&K&{p! zpse>4HwHnS)$v0){U0TZUz}~%*b7+l4ujQNmb0taaS2dinS8RpMRl-Sc* zLW_8@(b46LqR!*DMVq07V$!5vRz2dj8MD1p5rtdmQbSMO$D(dbL8_l|?DdY?8<d zLnqSNrZmE>o>rDQufl3YHN2fF8SxsT@X$3R`<&$W-%C9pLEC^R(Tty6xVLh!w z4t&#iT~GlVnmdo5Vj*JT&pHnzPdU4JO~kX!-XvK=NV!?V-~Cb{72jp--OAA!8GEZ5 z4ysYDtb&kHyTdwP&U@d>%abhl=A$uugqLa8q=(Evz6!-R%}U{dUYKb=wah6`4gQ$m zK2f_X8lS}tZ>R|uo-ywHPBIFW++=2I9eo^$b*H?oQ-m;T)DG6e-nby5<{xGO8X#N; z(gg7qlmS0X3rA(R395e!9l~9DUJAbH15a4?#vqXxqUKYepHtX!67o!<{?6?w=nnU; zEE216e^~dX(Ck^7nz4gzyE=kf8)7tHxR?}~8@*U%p-FdmAfQ|j9xL>qzVM>DJEdxz zt_bsiZRi?(R_ob}-pu?prTg+9YbehBSdWM9sYo*2=-tyZu>5KNODthR(%e$q74_%n zcejIx@b!-}H6rF~z7@JA&$i)({~>Y9{p0-2p(&$$jyO27 zZbg=NOBc-QE8|b959^Rm>8f2ET5LFCb$@)QqR(0w4_MBzZXL%svCH*QwnEI0 zw+Q@SVlU0pVL_uNQicc@_7a%UZ?K&4rX6xOYH+;6tZwOJka1B_8BN5G=&$bY;bJOf zlpeOb4*5}8RIkxIM{}(c^(mM5dH1#84fNQ(_MI!ugK0A@=la|*6YL z&k0&g&iccyKiGIpoF_t4Bz)Q!AgF_s3^iKTK;M{_iN_v-7bze+2l0n|A zXu2#r_ELiv)bmc#7CBm@`)B6j?d1$v%6>5v1Xux-dF_%-_N7BcsHE8?l(cT z42OnmH-~jo0@2bK$EgI9IL%nvqHiT4hCk}7uCg|?p zx{CN8!gr0ozrMznaW@vT;~L5HC*5wWj`rC4Xjj>TPRvzNs`V}(r})~nrkAfI(`3r| zndgBNR3JH0;904mX)(}o)mMe1I8|*}Rz(0K8{Leu-9x%ek|6`$2Xc^rh{3M{F3F3uzMhqGaUFM)*UI^7A+PmY_fvi%e{!gbjg^#Y zb(_1|#0Rn9s-sEc_;yNtJ{GMU>H*7Ix!~OQwQkfxrK&xh-?|*k^v0}bwK-NS`Ia;) ztnVX9jfX5STKR3%EiNtaUua%qR(sNf#)F!GaG56To?pYJ?SvI$n^Fm}{9|kMnL%-a zHf|dHr?rA<&xi&8D*&?J9H;&WE7PX;(cy#OTV2Sz1MnCgogX zi?MloSMrZy5bKcu?Y_9W&Bl7B!F)zp)oD|8(_3@Y%|d4TUBFB1efqZ~KBI|%{O{cP zQZhnuAYMNRxh|z0Ufzb(cG=f4fV$Q1N4f)6b!*L?nbrnYcXV!^B4uNHKm{e0||S|OJZyZs1#F9Cdxz0qYeST!;YxHctt-Ye4ZT(FFD zLR~r9P|r}gXMxtXHZU78`Fq^-}uhTF>DsfZpS=+ZGo zAdD+d8PE6+BBxh9)SHmM`wF{`s+7}$PQ8*`7=~XqN6D`#3lj||P_W>!2LPXCC!Y*& zY@T4liznGp=0#G^ryYQmqZUeARAuTBXoe}9D4fZ@vtF;$BczGYM$+vg?(i8&JS-df`Mf+iqi z6Bd?$9M?>B-9bJ~V&(_i<<}&58?qY*wsiX3nc^7O46HyrAs3KCZqDV7kUyMNZ^ZbB z*VhMST9A|T^ZOFd)o)qX&t8_Cuv1$XGj;65S%o(dOUsk7Tlb{AxJEN?OnIAfCJOm>jwwgYW1XQA8TXgOD60;OfMHO zUgWZ2tmWUR)_qdO4@jGZ$D}GTgwgp{Mmj+gQRw9jZtwZ77 zdd476n1Rdai4OIQxArvLByqApt|@pJW8BBurg=}3)kjQJj69huu_yxe5o({~!*Fsn zshPA;Dm}T|6X29_6zMV$M>p`Q=)hNd2OHkNLtpbj(_2+sDnT!vH9T>pJ^fjaMK92V z!b^C$Nk4(!go|BSHaQs*8UYpkFruR;gdo+@)l=6>7m`~iAz29h{=sMNm*`~<;vBAN zuTM!H?ZvURDmPR^kffQJmcvf`>FgQ#5bFo9$+_EB-oVyuKv8$@L2dV%_cR z)<8@vtBSgjqKwu8H%#cXVFc9Ba_jn}`}EM|^X-`Yx1{i06D;?xN@GTU#jN#0>3++j z`BYMnLS0K;xDcgP>As!)wMJ~6PD*|>fBQGK&;3s^974h=Max}+B|_>ke^#6q|FlHo zRfATyL_Gauj^8T8I`$~=x4eQ!!oz-6Rz`%LS-Y7&T&Z52$4wnCHRDUxr3-1#@K5Yh z3tR1Vr0KLn5_?j8uzmd>jS;9qD2}Y4sm7xEso-cqwEu$Vx&zcoeO94bM>8i2qPA=V zo)lbo6uataTBJD;flkul4il7QR|_%;w@K433ruzx-*g+L14^-0L-mP%zBo#~mhGnq zgXvACjfb84q!$t|@1c0}G_X?NXKPf3=P-9ssYezFgF=-|DFccpsT>%bzT2G#&Vz*u zgK6-KVR_SEI;~6e;$I2?1R?ZzrIKFD=vuLK-f8m56x#L}#_Eu>JpzBZZ~O#Gi?{iN zqb~RjO?(Y<@xIRXSVHu(*Ba+iln=IzD;dzGnqSz~#SR6G4JG78GF!!s1aE?;I4Vdk z0nPsr4eHs6NW`1nFKRHjOwc(qx}+p~eOu-ewqyBTKvDs~Dm-gcr#d+hh8RrB3_MbF zP6i$LF9Q&fUXa}HD;DraT^(X;W8|FLu>(kvY-3p;KZR*ib*qgH`pq=}^795p9_?;x6_;7Sa1 z9LqDj+QCAo{Y;ulTC5&)!dP?v>)Ym!*Gjdgp33qVqtX|RODbo z;xe&s68Gy5Ha$!W)HwCC=5CaCl2c!0jStYQubiAc-Ez$NGu50&&J=`k8mjb3L(PvU z?34UHWvageK&eCuC9ZV*=&avKa?@s%L~hl`owC&dw0~4y7Ha(Mq!nn=3>Uks8ZDbP z>c<852&1n1Sp2lO^gqITK8rB;hy$LUEHnyj#Zi|>bcjIKGG;J-olq*4Yv_Ex~8A6q2XHstn|KuvEuTljR!A}iH@`z!yRTz z4?&MgqFZ2OrL1|RYtaa`;1W`yK^8HR2JT=PcErmB`pL8(xpmOmnb=NSz69|ZdBAgM z>Vxj-@oDWT^}_nHR6ToRZZ#@OHM$F#9i zVS$yKxf?Ob(|)~v-Py=%bkn%kwYWFy2w#dd2@Uw6!B~1tLnh3wFumk#b6M{sr>izB zn}PJOuyjQ*$;0)CRZpZnHxhZG4JYSXdaq z(|*9dkJhXKZ6sJ3C3<~q$e)qe!f2JT&hS{>X3^mFjysWq#{OR%AeIM$=jH9B`S&DR zT7v+?SS3+?^b?r7OgUaV7B}|>^CYA z;Zd&@zq$K|4lBXB0YkleSNJ-$WieBdu6a#$YTIEY0JV&fY?o#c6a@p;1ec$Y z%RYb4(M`4S*3s4NJK$TZ--B+7m8PVi&BUMU8pOU$5h+cTh+Ig_;cqH9v$KMorsPvg z64{oA1oeyVAIYE<<+9NdR=kl%p^>#qqRvd$&)Q(MJrrX}U+B;DJt}8G zswOt?8*Pn0WP)Sg$F zp!`+GcS&dpX`bC{9=HtuQ76m2iA5@9Jyd!6JyttD1}oX5`aO@0`yre1vwxEFYnj*o zj0^^j%`8htJ@>LvabcS6|6p--S}G+e=^na97?hD)`i6X}&&;rpO-5RKla6(m)xguO$>bUv zYB@(Zc}D|*9~>#XTsdYU{@c=+<1MJL)o zA@n0WleI7IlV`sXIZd(A&;EEwGQjyZ)2(?*$)-@FSph~)v!r|mo@9&w(_DK`xd-KlkqeVYqiQj#rUW_|)6H74e*xK!TPk)G0Z z7&rRB7A1sc9Ch`~7N06HbRy4Y@>zAeNj7=89q-JSYhu?m?#rG52$%g-tN4 zJ3ME*m-ljIAhBO+B~Fm|vi{&sE32~m{5M6xVzr}S63d+B8H4;O>r|8)^Ftu#yZ2|S zj(lo;0Ob^87EBT9<&QYQpK&t^mao~dNT?@9yO%kvn$o$)wM08IZ-FUe@OM#M{w=`# z;`idncgqai&)Epqgvv7_lWTNnCUvw_3w6(11x!$3{z6o)5~fOT6bmx5@3%-b(%k%X zC}aN84B`lJ<0J_bqGchi=k%|61mQ&aJseD16DkNaefW%Cg!M_A6DOQgzs6v*^Eum- zA98hKzp5hn`gVEMl{zZZa7DUpTJ&N+oafyy<%#TOvWL|Gz-)|-?T4_%xsak7{8yiMU5PqBsRYSiQYB;bvvg150f-eUnGUp zs3jkb^v(J_DEBYU<1l5MjodZE@6vuw?A^=zyT_@0-J+K_oVk0rS#iZFIz*YqW7|^U zJ#7p4RHPQn`eg110op?Ph-Qc3T|FJ zb!V2DP%%J%zE*GRc~eYIbUSW;|AGemr5gs>HPg(!06lJL2QoQ|o*tsCdQp3y4`Y2I zj!uH%Y73r&3>4sN8@CIF9%}IUzT5Zxp1C_CZR5Dmcr!nn0{?Et{oVaj`=9DAr&sE) zl?Y+;#pzsA>)mMea_fQC8siQmoMV?bKu`lEQ!i&7z)M)OQ%b{Ww4RXzrUOTx(QZ_m zdC7pss@SM+2w%G&h<650h$g#)r zlgQm;(doJ9J+KT>+#EI%EW;m1a-a;Wt)6Wu?Q41kM4z2rl-`HMwJeAf0wbb!&zleT z?)*_Yf{4>}UqCPSyIlU_;E(wA_21a%@VK4fco6x#qj{XX-sZ-XJXei=zV0<}f*vsAx*MRQQ59 zG`Ze2Mc8Kc|00ai%(EFWit?4}v_2F)^{EX;r+`~eVW^mZq|daj=6N|Iu{=^K4aIJs z{^ESK4YKsT-Zhj9xWe%^%1A0xe9?SnEOm z6g~Wn#G~r$lvip_0n`ma&V_Y`|0xU;Z@#*S zkG)0E@KH#quhh#0-3*y#pl}FlW(!6lCi?o1b) zBl37pu&fyu21e*_X04-}!1JRwACtasL^xv6%Eg$@8<}`~bw&hWb0fn~2L!GKuN|kf zyb2#)*z;g;qVtLhxE;X=iz&3&u~fm1o#r5F3Rtay&1?OJBYO4D>Y9%uSj9e5d)j)* z>S|utDc?ox^2Sy45<3q%cJ8cN`#4MZD@tdTM_R<~ZXXX?wf{UkbX!~|qxPGZsK5Lv zIaa2@qZ%_@=#ClA^^1l%%F>2nuU+lwME9*8|LtF#eAcl1Oufy*A5w>(E~`o-ucT?` zm|d=ZiU<3N6<8e;CTp8q*Le>L+ysr&-Ibo-0b zj$0Ujh=5NH7rSp{MPrLfD2Mbc>>ZgAdF`?8VJH2CGu9vOr}`!Q1rg{Tz0E{UsyX~zEe0KagUHYVjcLr}!c2T_h9X&B~`$nhn$UTtTmVO%#D-R#RLc>s3lICm&#LNgy~NU;h(i58pkLIF`=Oh|>3?pyvt-Nlzj^fBN$u0Kry`?3t1l zmDv-p!LwtrH_%f9QFRN;Qh;8>W1t-z>ggFnGGv;1j5eZ#Pu0AeP(gj=`p3G}=A+G< z-XC-bmLW_C{SSBji{}_vj2QVNWcRCty}1d^0`j4s(VNj!#a)a1*5-VE&&7UUUG4Ai z@jRqD9twd9t&e3-_f_T)DN;5ixP45%vR!&u>H;BBM7=eh6)}W`eBghFUbLWulLH(G zxTs=Uj9&w}h4N}SpTO0#2_k06m~}$E+3j?yraxE87{8>t<-))wL+J5^?bf#fM^3|u zt&_{|Xv^Lo3HWrwDvZf%MIX6HS}PHsYV%N~`qo0uRB7r%0dx{J`{BSR)v0}|N}UCm z2f`jiM}k5~^{`!;&5@#t7F~%$!FESzP7b5@J#Q_t>J4u`#p`Tl1iT!8s>L36 zi0dAze|l9r#UwC#Qx&!z-LKhELy1#6zS@0%@&N-_b$o~ zaFYKqNMIZJMBWKiYOWrYHjl`e1c6K7LV)sF;NXLipe(d?S++4#f7I)y+|tV6=tVav z)00(2CmnuYHi4W>4{+>+E$B@MYm4A~LZsVtHuxy!)MzyQo~8_VLPYd87J`W*zV0Vv zmefpFY)g3cJb=g;;dduO@pMRfHGlsKe|7H+2W@^de&I|mU0i3n(sbxE!Iu-`eR+dd zp@BMo?e6L)H1{nhQwNEMX7cT#r~E*k*|xM+d3N&-yLdy#tH{oexqj|Q8_=nuECFsL znQdJW8Q7&T0kYWw3T*Y0weZ=0bwgWI=o9de_0YS{SWN!ZUwQxZwKvc|O*ky4Y0SsZ zE+V?(xW%V)$?eeVlem*i-JX~KQ(8~We7Y~JnYx>8Nv-BYMsuWsX4us-FpEU=hUD^> zxWToUkK7@8j(^+qyxDKDGa9>~O*8Fd7qmJ*v1}O@AM=!e4lf_6*?=>q?KjkaaVA-J zKVxW*R$!Ai>zftER43aLDyco!1g!>#SD(d!v}p>?t$qgi&{sW!7^<&zNw=$7Etc^J zcew9pQ7F>nBC5T5q^#l?_OZ_ryE~xP=8^gKnbyn(dfZ^;wsjr3VG$rwYNz0PN*C}e zkS=rOyt!pjvZPJD$GaH2=7DNoEm&Z@@rnjfyJupg0W#mJ@lz5ut9H+QFA~R2z;s)F zb}ZHX*dGDKk28PI;AX{amU%E6NEg?_qASgb3_Cs6H0c65CePCT;@rVOn;uPwXVHxb zpO+`zIFYN@JvzOh%CN{>xiitU3H8tb|HWC%=wie!*tnzD?wWMqNiRkj>@KTm?=!Zy z2OA4phOJW_c35xvp_D&-{dP?z*fRTU&R)A~`|;hBXdW)2E{y|+ujo{qCVS?On-4S( z4sZw6j(+>J^sbMuZx0bk@8T-}z;(Mm6K_u?{Sdsg`ZjrpiI1Anc-gjAE_6-ff>b2V z{d>bcK#HU}Zs|oL9*$8s#*{G=-&}AAUwT&$IUijX-GZ5_9`>4B!Ow`LsjLP~j;} zosB*1w2Zr$s6|#=i(d9yyfOB=`GaqGnv0set0*mex=oZB@GZN^J@AS)C)Y)(Z7s&{ z7Y%2$vLei()Yo)xb#om>hco&j;5RxMm)f5Y$9vj8#@y&U?JRX?9IpYpFVS5r|BLf& zyh5S=iW=wOQ2Z~>aa`(fz&oi=?-O=kdFt~1#rcf-QwzM@EiDk z=zTxFmYlY`j!#Os@kl1*Pprx0&`t~xkGGRq5)im^{?Ak8fA?|+b973UnYLc9K&qQW zYLm1&HP2_37@nj7I_?xNXr*{Y$FaZ4Sl2%<3F%{TS8xJC?TS(?f(pYd5^Y{Nq9SQR zVx~eVas?AT4C%ewXW7x<34>GU5;_4ArF?#h#4?yQ^Lm>V(Nrd0H;l z;YF#<080%(I`pGFKkCdXNyeY0Kb5e-gz2ID!Ovkaner&&KIBeZ|Jc7#TjY(i?c5k{TC4$u2e@42%O1 zpI5A3L!qJ_F_y<>6bLU=(K@ikLJ0%}R)z=uM{t5l>_1x%8okw3X#rJG%!;rx(AKsX zikzJ_g4@w}n3}qKF%M;m>-5QLEq6vBqFWEcu$an6+7TgN8KpKBAoC$nmwiRh6zd`= z8#EbGRG5~{AhKp{+UEZg%X@G^l5GxZWGVj{cnW*FU;7xKG@70d?uZ zIb7$VnJ|;n!{S%-SU!`8sv+y&K`Zx$S{_B>gZUN|R_pHbKlj#6VXo76-f)7^3{O~J zz*EM+WcC`){tsJ%fje1~ClvV;&-hTv9ODTyR6L*mb66OYZJwCdm~L-g&R8@KK19rc zItdCx%4~S^WRvO<6Hk1q`>9#^N?q|RzM8aAC1aX8oC>zDaCMkP+ObM$KU;(wEkLJv z84z@9G^lbxixoIufKi{Xu2U^Y@(_EH#@~MUypzwsMa^fXF(}HR*&6pngcru(N9o%2 zeJ%$>)2YJvUPDWh+sfcmI!t+#uTB~EN8Y{nV0a*1+n@%!qT+F+F16CHXn_eOps*D~UnC$EpsZ z|EZ=cPdoDyBsv9Ml*jX~lGSojV(apvuRp^6L5uC|aRgVc*b){^!*2pEvv8_{I|lmF75d8ngIVUzBq(W}J=$T?nPp zw9Jhaj8j|7qwD|T#O7POHD|)Phx87Vy2)8NJkEu{#Jus_6^1@wg#UzZs*l^T2<4;v ze@uM;Rkc$r0)_bcUlkt4{~r_{USp3b0)7S}Yd)baR<$6eTINO3)vv~51Bv&d00WhP z>3h{EUK5~cnT6rln)b@%SRMn4J}Q{8_8r^Lp_=sInt1uX9RC1ML4^#X-A{Fwm$MUn zs8f}E0_(DAgiLi2>nS>VDY`;!Z@(z=dFS}I3O1!)9`*T@)Fkw`dUn_YWG#QbQH1l> zF^>*6Ac0QvD2d2Nx$;IGV#43iInt=!I!^OkPN@aXT3w*K$IR96_`UGvQOBlV?R)~* zCpeq(p>`9;WfiP`g64g5C`~iUP~a7x*@vdoNeW|lQO{t06GXc9xT56Iy5~&zi`;g5tx7>-VE0$V zFq5hke-6!e(Tnf`D^m*!f;G#UYgZr6}78X;*W_wRL2r~+aL2oSlOLw9(C~cWidNe&h1xLIpA^p-`eu; z{9^rW1l=(;*x2qcRHS- zxD@g}nQyGLvyFF|e^bFq_57j7PA6rnGDjx;SJ@(degQ^o;^*gI?Cr;D$zJvLUa#Pu z;S!kY)UBnHc0+CP;!RV18j>c6T``SyX9@X+>8Z480&ID1xIAzMQAOPHK0hw1z6OUZ zwThk+5>_I6CkdZ6Pe??L+JSAPjs)^tjjdLPt{x!@*7KjKzc^MTXk?K<%$F7{?jkfN z<{?lm(Cw27n^p#{1_rLzZ1x36W;@vY*cw%KjEiZTyGQ3JVP-tgDa0}2xY&%Rm|6LE zbtYNj#i*vVdc)I7wTaDo1mlt@f$!9bH|N=?c>;GdSpoc@n_I zk6pJ9O$>-$kHehZ&e6bNNHGiv&9RBh7BQ15xeabqA%)Xc`<>(U;G9&RU642)2n zwOdvwd;=WQbToUtGQdLi$#pT*(&%!lI8ZCFtGyh}e=dy*}{nEvgol9FqnA$ka zOE-pGktZSP;^zRafTAQFMtYleaz@&+gB%efKy2{4KsKfiG2)kxE^W0Oit=Tv zN>lon-jP>2|jIDHte0{d=+iTt10q zO_OwSS?w*h;b>r96;mu=O5ztL`KnuEmAWqc>_@io@l=qMml*Wiqjv+yZgh|9;_HQN zM0N21K6EYcQ=dxiWR9~$Nce%YYV10(h zw5e*rde>_tmG-A&kNGhPpbY7$n&46yo*)v2dYGKN%Fj*yb*#=b@B`^+5^2(k-m>8H zno?zExM-_D6xSQz=YO4H|K86`6&tyW5mqg_l)V$vq9;ipl>VW_Tl3ptR}X`q5jys`PXF%aa~`?JSu@Kin#T$Y!!nf#*zGY_e4U{ zZ@Ift*UraD)->Y6NDsPxa$_S-lPzRBuDnC<*qAe8d6aZh0a6M2AtO z!j8+q+laY2%vWEqZ*9xkTnkiV=ct!-pYIYe(l1j)C_$k?JmC^QS0-Acwz)fQFrD89 zbXv0rGQ9qa!n){f3hq6P3dP8v+lq%bO&;zsEXCe$pd# zDYmsk+r7U(jP1$pzc^a0#S%iB9?-z_9XBmVc-(Az5~IeE`Lkn*x%Xq!eA@eze7;&b z^zq`>^HwhT)?$J)oZ_`wRp#vb!U%hN8@zHeSnCh6gT_LW>7~TPXj_f((W8T(U7V4SPj<7v6e*Y*6)nLKRbnQ+N+v;{+%TL_|bj zm;K&etYX0-BO?!1x4`8yEJd*a)U|Ox^%Ou_27u>?@awAjBUO$C1b%U*IoB_(YIHf; z<$c;jtw?Lc^>Qn7FbLd9On-h9-}uMYjWpp{Vz|%aQDRFc+Xc+7)0x0D#sOiiptV&w zu<)X0SQ*bG&*^plOI7ED{!0DapQ99?M`YBKyr&S`Rb`i|$WoY|BIto?ii_JVgUz7e zGq2M2(d9|~{R2PL${>2{?LE)tP$A6W3jbuTS;|faKRYxDhBTieOEiZi>2Gn~2iTW9 zf6|PwbB0JDO{$b(`r6NxtvL$1)LGEIt5{~r{19H`7zu)UZm6bc7b_W`F}f|QnQ0ON zvNL-Z22-2_Co^6A2z8OldN?PE7&DrLf%;3o$R}G0@kche`+OsoWplnKUt?e>WNs>8 zAE`2tt};|(^RANo-SwJN!L;7IRf4fN!V;lU-qOo5T$!*~9bXNXpjQUw=GDSqF(}^` zyPeE;(2(D5-h7Z$I>NrpVEXD7T4T}Urix6UxeA6Sn=-|t#?S6g9@7n;;rUz+32dG&;dhV@uS4@AB*c2K9EguUigEY?Gr7J|Qc+t`0oy4T@HxOK;^PQ3}FE$A9y{F-kI zCyimf!uuo}VX5*qIy!EdER|lF+uz`O6>8<5uoT4^2sSKb_x30B`60?7mMa(M2AhB== z`s8h_s%H3X>s_;laPaTq`D0=NXp=(2~`(vdrd5uG2oKRS+kuIvsS zDf)z2oC5Q^Xd8wK7a&$dS-Wo{9nd`m1J=_vb=9fXFQiaf#{!0Z#FVuIEOI*h%s^4dA+b&iO#f_`ffn`e7U-pYJ4i1*+ z^P2&lReD-)!g$RHlV*8&CVjH=`!_*-E2ShJf<(!z#tKg z!HD!|Od|-8ZXoRE`*IQtyTFu4#Eos08F`?z4(9a6u4dr2Pi&qgx3NscUg8+LCw?tzk#%Ub(cp@Dap5A`kq3pq^ z#J>g*BeVb{1g;pWPb=*E633^^hBdb8#E`8&w9^3P?H6k&5+82iPqUBNlUen4J5+!^u%CVr|zAxfWmu(S`!6E@Dg8Zx} zGB|A)gU!|wf!}7&W?a5ti|Xv;TRl9zERF!DZKm(wr>clnA6gVnHe}C;o{m?is?A+j z-Rnx)y-v^ya)WyG4-Q2!QwDg7r{N3YzolL8#u96KWd?-izi>UjydLZ6wGp>5NlkCV zR}{|3zcW{}J%V+^+meN~TskH!mIma@eW)!~!z869l;Jx;GRzV4isr|f=dQ>*PxvO#i2;B;Ov|if4|M@%c6BWRzizon4+zI4=@@Ox8?YR5`P(@ObdBy@1)uSv?o1DR zm+r@TWl9<;$Y$Sjv|HYW<h0S2ibjp7-A1RAAo0`<#+MN;dl8voXn`o z-A^+jLo;b4Qh=CxqwDfp8DdRvu~U->hph#SU~l%v8<6t77nsTJk_?GJ5ud3>r?p); zbYaaoY0Ry_zFm7tuHSfLVWF;!$P98)sYSP+Bo6l9ZkqRGrnqo`U}1PYvH-p&C)5cJ zA}H5By{9ZihWEeQ;g0IA$j~#GN;X>qye88P7sevAyrOo3W6|wn2bLo<0F5!=;+`tW zB96hR=1u_NS`oz6Ne}zDTtan7z$3SMG+M z_dFWAp&X@eEyT5gMo{s+)zXp9l9@~{fHK|XCtm4hEQ9jS9j3y#+6qkh!D^JG?x-d9 z4V{VO%0pzoJ|0b*n(>N z`dAtLrh+>CTOp%#-@1%cgt*mg(sNK@%O0bt`oZy}(B&x!GIOou;AA^=~*pT>Ikn4Ayisi|@ zw{g{<5&>Uixlood3wpP|=M@csh;vIu{SN1rpO3a`YG}H95)9A8McWno;E!Xrt>BA? ze2M4R1kENZ!zG26LboB;z8;fweHoT*(HrswZAdF`kwA2YJtO^@Xw(8Q0lyZXQxEY= zp4-L~rWl+5aOn3n;L>n8NcBQL)exQ>LGIL)1rWO@RctM-fzvz&yH$l?5He-d0s z(>|Z?dry>c|q+%PuY2) zxq_mN5n=k3P- zxicy;@8_PRnSv|PKj!9cGUW)pRn4^(nfFLy z;*vZI>qqwYc*@T43^q&vCRX}w9r@j^EbYI*bKDpJu0CcQ6TvKxDb0YXib>BZw-tZvXY;$mrIU606x1=C9=AS6^RN$<9jOy&i`m{7HD61TFXRLq zy!F%>d<-o)rvIbW44_rAz%Yoq*;$#_+&4I^pa0#$RV(FdF}4lzzjxjO#(T7%&k9NW zY!XZ_`LKPz3P^Y8l^1mb%F0)9yMFhN$uLuYUYL|$-E^isdFd$(*O=8^$Ka~vQk$B%>Jmr>h7KTPg!R^EXR8c%(1F~CVOsA{QvJEsT@+4S7= zf&VhM-duAf4j}-L2we_hY~`Gi4aiqBhi4+SfL=W`X<^3=w-VXfuOHQ}+=1gBC|uuw zo_gvSD|z&u&{jNhOH(&0_WQapA`3^I{a&orD=cIxD@+fe**&Twr}AMaO%J1 zTomDlZ$S1R+NIf8anChS_i&jb7_*B8-YHMB6Z{PbUm^MH4d`3@6!5wZ=!;ch%gDG7 z`_;!8$_C&JYn17Q`=hNJ5YSlrbp;l3m3%$xmE-g1RUPr5c=>#;|GxYE)QdAM<(KNT zvQ|4xC}s(bZnc_)qRBDCLLk>ofj(2VA7{K0f051iLH%1py7=?Bxt;NTzxWf)~+D= zYe{Q(^qvZQHHj?XzN_m-$E?8pHplCSzteYMVk&Mx#0S>hB;M{Dt;Is8Etd}~)>-kh zcsm!puQmMKMf~hWs9V6 zJl%Bh!~Q6y9o(be_TfD8yyXq|hTdQ1n`us(Kp+^Nfk;SS5(WNsgtpffQqD}&G~kX` z2WEYIsUj<}nqvI4L1psTYuuXi29!fK^!@qQK4P1EBpKAYR0gdm`fMg`;?7-UPZ!UP zb*cFY@Mq_`i?KyR^wiT543Rg^{(uD9)Y>S>cG={AvPLjc$ z-bN5Out{usH7;MOYL9>ehXOsLkIf(6vDWA+K~DtS3p=d$n7xh?ZKB(^YKzx$XEm!v zjsFNwQzr+WGvT`JDBzK_XrAP7D~ES;i8j&iN3s18cN~|)JBw!oHn$JbOsdD1pOC{E2G@iz4{*JWP4y$2^f*=j?x8<8vY@^wH@mX4~|{_!3ojl4_Pa3bC6cq=XEC zD{15HRko9mGM3&5xNDLwuuY>c+Wh#{)sQP!6HQy@Zf7n2;mEZ`F@}kh_5R^(m-&at zeT@l3LypVnu}6UL=9!0(N3!)#l%`NbIDq2F!^Aik(CBBhu zZl^Zhy<%ZI|2h!^?*2v+vR&1^JBovQ@Y#tPgD;SW%*ES+q#w#US;95V`b#-@6$j$t z6!~mK(35=6YBcD}4CVQhVygebjl%J6L*&b|d~ZjcLf?0>yB*gvo(e>226CV>+` zV~aE z=d4Bgb43c}eq zR=Wj07xdfgaxAEZN?9(6nw3xYKWdEjgBdTUn!%!pkw3}oV0Yy=dgd7yZzpa)&!-)w zz8mm`2iu@rLPwcGdg+s+P0T2Au=sU7Z(A;drRO?2-XS9FdQ^!~@pjU-eEwD)TX5+~ zlC|hXCilR!nh$bO^mRP9kAXZ03dC$hy3ZDNJJeB zY5%aCE&ewuFN9i+ABPsvvkpJKQzC)JwZuGcPd4L1ZEMBI*M~UGIH>dKs)ub%-`#6~ z(M(>(G34To29dN}j{P;JRRr^plB9+a`O^bvQ2Ne2)x`SkLYE{f!Q7SP+;1N_uOddJ zAN9l%1y3wj<|!hXZ$MPhp4S=~{0Hdmf+Usmx0C0|Bg>UWnjonoOf#vlZ}3iX;9ISBjk;T2?q{<-vLxp ze4eOTX=CjGyPr=E>v(a5l`Hd6y#Oc8NK{05u>8J0V*D6yP9#hM~(%yPth zr0FW1Tj71Cld=@7Gn1+UW8(aiDmp5c%*;J&B6UAE8>>qGj3w+X`|(Xc1@R4t+C%sw;&4ExpZaoz+Z4Kk zAq_^QkE!ZH#~dq421{UcA3O^e_M=Bw7q}AhzpTKh67rg}yH}pEy_aQBa<|l4FCDj8 z){;#&7#{1a?l-mCKGh+~6*eiGENBeN)%uVP_hn9*q*{UR7XzpOhR7=&4PSm+)MRnd zOu!9DN-QmCdVi}v&+7!zI0!-q(59~TI+v_&2&a~(9d@58Da?wUG){EbZhm0 znbw!`AZmiORotE*JegEAYt~k0y0Q!*OL8!+5iw~nK^?$~lEYUs@2!O=G!Uk~1RVx5)`FXT5#Q1haE6S)H$(=`DjH-e zUdyB(wk|e%9sKMvzYKZcew`<;?l{czzI?CLNlV#XKoJ#yFjR4M$g;8-<4w3P(<)cp zSF%e+&RI)nOOb!5kUgC=^qT`}GIkoQR3L>f!_7lyxazJvEyV5)>^452)Lnx)F>~g{NqX?$3 zoHFB>f0{HwAb@d{u_NjlsO8*3N*X-`^(n%YN5WeWa0O9fPo$c7t>CW$EMcG7 zr?J-dg+ApP=_aLk&6hDrf2^bN~>EEnRiDF_73$V@ll;J285%fs6M6gG0<-MoVqhPsclpy@@|3E=$>l9Zp#z zuy2b${j1YIl_WmJRA^p02sYo6Er%G6QY%_bo3xzfw$BMs{v>bf;|7-RO>MDfzsJ1b zQuy_E{t&?XMcA^tr zeF7%eogW`*ajMCH!r11|1i&b{vNb1)XPX7X(t3E-v@L}baJelKWu>s~=rTw%6{9-G zWlo~Gbaf+cqNu|VIjtdLTrA9`NBTRZ^N7rG@j^eFT}s#{A}?T!O^MowCFYXKIV|0d zTR3q-MkWsY8$wY72;X&;UzIUk{(}?_M9};GzI8-T-RY5)8d6l6=UGQse;imj;aO)b zp!fUgPW${xxvXTRV|hZ6 z?tMXyBiNJl;AV1?2X&i?qA?@i!g&+RyGP#B^Q_dX)*#YDO)I+@q?*HqMPY|t+Xp~^ zRfVoG-`CfI%#7?)O>P-m*#n1i;m!H*g5T-8GjTkkfr;n7(34}0>g5QHnbzKIo<^C( z-h7-oX|ZwksTDEFeNoe1W6Kl%xO*;$h1SgR&I@eCv;uH13C661*CmoPr&fGS$OP4+ zX6208eF;O#iO`(6LV-mjUy6IfU)ajI{d!=b{IIr7Qj?HQMOK4HTc-0sMa7o1pR|>O z)iHWxYReq;t*V;yj_z9<(%#!AX7xMTc3JYw5#tz#*AHK|jOwOp4qs)toZ!NTg)S-8 zoI=Lux1DAS&g)0A%WgnskIH_)b}b&*ie;{8-+;(~^?f!!x)~Ws!#V2v^eVJ7AkVKh zpmPgfts}H^%(!@2rYEFy?Eb>IxGgmw+d9xd*t1J`4!crD`T7vZpN&(^2t18DW^)S=VyQTThNm2OovK}y z?^6(4)=!s*typK!T)GtiPD$b|inge1^4RpRstm{nYHH9WBm0o-^in;x=ft zB%1J^0iygou^+U{UN$ zyy=@&{}73*kJw2GU;1E&NU$#{+1gps9{&`or)NMSet%|Wvs9|0B8WJbhvYGfOU$@; zEJNiCWi(|7#yT-31S9oJ979xnSii4Owoo=>%O6;&f36;fzTriUf(XlM*YqofchTeB zO4kBPZcWxfo3BcX?Lf&B65EjUA+4ZNOe))a>hik88RH*`5|0GyGTDu^6b7;o?5lJg3Y${1MaUo z&|KlsbTG5SW@{#CR#0g>cQ4;S)FfAbS)QqtkgJ+b0-{F!!&OE&tQOd0F&y&d2*J)b zRT!xFo4xuDBEhjYukNJ%AuR%?y^Jls)K^(g@&tliqhqZUO|9dfspd7L*0w>#B3}82 zjR#8TNDCxHC;7(j@X#BIX#%vE+5eREe=iVxsx2;QsYuZBF#2J>+%1rB2BYAz%f8Mx zo8YaP)eoEcM!m13Gqq!{?yBkUD)Yl^bz~YWhXd@3MOdCjrKHB-xta-8FdDH*uKL|J zdeR0IlB%s_6F!UAk_vB)GBw7i<#!`DTpapEy5^muJ1mS6M9A##uk=@izMhyW`!Nuz zT)(4nO{4I@rBBoh>hOc+5s^#>uT1X1wOFC&d2JGD_tgxeP~4Xz!gH=k8~!Nq!O@kV z2kw1>vZzx1d94{c!F_fan-uTX42cU#0CipS1L5f`<%P3?YhA~(h4)H<{&vT-~)RV5AA;L@Jj=4Wj`K5pGPAw+77Xs!sn zcvCf#dMRr7g_NqTxS0Cqr_$#1O5@&DF&NJ0@dEVFyW@4N-xHD!i2Wm=?=N?hZc#z6 z>UjK0w!x?|qYYXfz6&fQFUszYN6PouT8ePx+Yo;fvL3a|`?cJ#Kii!5DEZs^n2lcg zq~@1aV?7-$Sy8;IG8#o?$GKCLT9kk4p`$j#&~(<~XV=fmIp17$?&ry#Kc};_E31Rf zJSBw+Vob`fb;L%HzI^?xeZN%dWv#W`rYth5#JD1I1Xz_y(6js2=yW6;|*0?Ph)c%Jl&bB$|#7XF0LrZlHQOm4j$ZF!)=5(8P z;ZDuCfEl?;uk*41SgTNUaVzC5s3^)_1~_l zKWwipx7gc1H3%?d+?4?i8>t)cR!W&6A7LtTJI=j3x4qOockvAK z;Xc|02QmGdi;)jILPeR#@?__cI!qO7#BWi5*E4#d6dP%-?wB#B$}4+oES;2z^}2~- z)|U*JRjx25Of#mIlQ|)GkPSdl6LeQpR1^h0EH5S$?dv-q=y+#hMw$G}>&~d)Iyw&F z*qB-Gkz^PvERhmM#2=h@S4mUmrHpke^$7I{@x0rg^jUN79|JM8&fk6J0y~;CKDxvzcQWNT~POiPtsAZkB&dDXt zkG#iCUPB%6&ANw+NNx;U^ZMNJnWTWxUP^8UfWFVMxkUQoRWn!XeK zScKuGDyg&mv)q0}M@2LhuTEcY`6;U$9Sgv<2glkLCQDM(4hklu+6Yf@Qt?ff$n3xJ zG0|4qAFj6jB_v)@ncW9^6qaU}TV~J4l*Mc#Llp?$S(mp=^SFyi1n&@{=jLtQlJ!Ej z&ogL(A{^=ItnGZ83@206#mmk$nV4J z*Qob*J*eK%P^99+<2$(mKCU5*~Y~(~$ShYs)LJ~D(`5=~)hLx?jB6BqIq4@8GO#gL3`qLf#esOE{ zicrzcLD9O1P&i&WqHTuOt`phH4*RT09)BJe*7HeIJk%+bI)SshqBdT=K+(O?)y@J< z%t6Bq$*&9|=SMr+*u;y_`z@tA9M(&&?7(vY!p;0h!6Q?e3r%$E>zd+S{%r5A5Va$>=0cUYcI z&G5^1r*d*qr&%cRF$l0vG$X9!a`*@gNDx`9N}7s5ZXZN$SR5kOSy7SVM;RGoVv1Ob zSP=g0Uu5&o559*vj99hjiwB)KPF`HC`~}`TN=O1!rcWp%%5oI0t;g7DPSh0w2W=*( z=0qMPz(Axh2#ke+kxvpNd+cHuS7tDg@p9MVd4h$}Wx^EWd$3_Y1N`{qe=nq1*5HM>A}n^(s930MgI9 zFmOMmfBDZ@{#$`gPgH8|vm1Gu=GT?va;ad>Ix5}w<=KXsxvb)>>`D=lY>Ke}@uN@h zp+fk~L<4yP4G?G5^*7Go31FkK|0D2E&L)pC1^7Weg*^SY#(|=QBT>-mOmxDSxpx5Y za(;WaR^~lfJJa*|hCC(jo)L0FLCw{a>WrnrqZt=8^4{WSWy9OqjrgFgF3CqqstT#W z2_dTPiQxqm-&i>XQ?OiaeWRcK`DMz@p&DJ~(Uk959l_nk_ecNS>Hl=~9pru{8;4K+ z_GqrzY~$cB6njYuf28y_(7mclI%XdcWBY&#tVr0FLUwLlKPMuwK(`Ew2$Tdw34XgT zVVOAul~y{4Hiz9_W@LKe-O3>T78o6G_ZX?NnrgjMDLD_yrYd+zf9xaJv)F&sqW@Xk zB$Mp2Y;bBJtSNyVVW9e^Cn6dtb_0SyB%dXZZ2rf&Z9Ao$eh^E(c3T;rs_7nH?(m@r zq+28g|G6^3mJ6XYc-U36MV+`X#V5wNSH|#iQ}wKI8NJ?MVi?IO_mTF;g1r8i`W%_4 zQ2Ll1m|$J}TLm#FwRR5Xi}>yp1*0ic_Z3;LmEK@Za$OZlxm|kdqA|E>&Yqh@kJn;! z_G7qe!!zu3R40qe4+k&*-24A_|^#w4$LIIHR#x8zN$^QnIb@(E*e`SM$(o&WXW0}tTTK3rUa z^szHi)&bmcNu*2Yi4NN!Pvfh5M4h3O*&4Cb(LFx(vAwZg94KDy7bG9P;j9$p-xuHv5 z06P%-6R?&$3h#N%@Zy+D-e-bV-M&K+Kv~quI2pcn+=n|iptYUfR}Z_nWhw_A0kbA^ zdeyG0DtrSv$#2H-5v2XMZSo1I@dh+Bfo$S~r#Iay|M&3`q{C=&%7@W_$9nMwG#5nW WE#OyK^s?vQ>-^7Uf*yjK>Hi0>jvT81 literal 0 HcmV?d00001 diff --git a/apps/d.d0rich.me/public/metadata/covers/post.jpg b/apps/d.d0rich.me/public/metadata/covers/post.jpg new file mode 100644 index 0000000000000000000000000000000000000000..d329b893288877ef92f158309e05ff423d21fb9d GIT binary patch literal 124569 zcmeFYcUV*1wl5q&MG-`rNLPA~gx(eDRYI>3>AizM0Hr7$3B5*o2k9M@-jNb|5kd{U zcewF=@40)QbN4>a`+fU7_pd$kBx|f$#~f>}F~|7Lk=x1JUx3H*(sI%O3=9l_Ecyeu zUBWbxd;J>n2CO12rznLk001!6ZH#T5@4Ns2Z0%f}z%mlgv~_f!VXpxm0!RRl0Nel$ zBV%U=B{gYvz&}kV;{bF|0Kh26@4o(NwSQdj(8Sc)7y!Vyk1iH7c5re*(`a4+ita8B zzv&n>O>AsoWP+yi&@{Ufnn5%@_B;RGpY-}~+Wb%Y>NoAA4t|ZE+ha8S%>3`@cYjA4 zTR7RG>!4>2ptrSgMf31S`aKg|Q#%bc^pzIHC{t4ge2;6TlK+4zK{Y0NByFuIS!P(N{BczA5@+ z1Mv7Qe{?%^`kP#x&A35-WMSY+004LAZ*LD7008W00O0z|?d@gy?d^320Dv_M0DQOm zTYLMj0D!cK+R_W;OUfuk(1FM<6xnGG0n^XfP-8B z08a-1Ao>Xa;OPA+Gj!SSazN$;0HE%LepCYhKw=UAz=*DouYWs(mJxc*{Y&Y0C;w6h zzZ>6v2N2x9gK-A~3xfcFNq~VxfN|Rnpg}KIj5}E9^51j#BjI4*fAH|m-FsLVnCJ>F z=w)*c0}B%i>kiHXT)g`LQUC@f7P=VwKEVS*9HQsMT(3xIRgIp|fw(2q9Y4m5kb<3@ zqhiy`%Ab;v)2nG}>%5B|MKJKZ*7AeJCsh1s8ynX!Hi^r~%&O$$cWE7-WaO1`_1|M= zku-G+sH$$CSVWIXj^+mw>u)@v8N;}XdFLJ$x=e}y%`yh&eVlvu(LDaaIhrGaJ6x(@ z$EdPlLgMGIj6TBBf9%~QdY3V>NJ2};t!C`h3X*v3SH2XTx$lhRp}(C5;G(<7B)}p7 zhy#+nD%OZf2o&QamDz(rUeCh?ZUKEH+}zNELBX|@5-aPH^9zJAd^M#WB5t30w$(CX zcdZ5+3@GiVn?AgLML~YZ}w3Yc+#c zZjcS2Pc1~yTt7wVuwYyHaAwU%7JK)B_4Y#+8z#a}2al>8oq=}{x9 zL9OxRd?BLmnqhb1;Trp9^k+j?gZz0f=x&$k4eWF?@G#D`r>#_|WNcTo*&SJa3y||V zZawc4TK+eO|CZq&3-;gZ@ZWFBzqQT3_2Iwwls`A{f9u14>%)IdAJz`rZN!bAE*MuQ91yAV43qdGIpIaA{*x0AYpasI?EG+;bF@>9>gTsY?9M#7EgwWV@X-SCNF(nOUnbnAPDvz#{6Ft z)#{9a z@hvT)=ps^B^H_#=jHPqQr+a5vw$y0QD;?aq9Vi3nYci1!R3#^N$77nV(Q|C2s(ZyQc8(@UvR+x&slJy-8wRvI&J zcy$HWyb6~>PQ%TXfDf$RiyLebx{mtnV_&;4pfJjAmi~~w)<*Dfq$cenOz9cwdFIsN z7nHM`>4wj%XEWvlH6BF!{8`Mg>+{lWij;TAa_f{0z88lKc~YFL#r6h3+`^inK+;2U zMa!tk_(!h^mwGJmJEO_Q7b2g>gB5I7sV(Jg$5URxz96l@Pof#<`y-?1cK+(~_zU$g zSMRpv>FF(ayPtO40%SWRk*VBO{mO!)!Vs?CK*?W9+A?njbS^Q6r4|tf(8B9CarMLu z59LJ0dG9C1!@B9=jJC424*67^3n_?(oLItSg5g_0jqm#R7hnGD9>X~aqkc~LCmZt? zLR&P-h}Go={KJl+u|B(csYgXz5f!|~Y@@Qq0y27r6j?kJBOc3splH$6Gt0e_k%aWK z?xY{r2vmYNvr2l^lg+ESYajbX%{pvl@*#t_9D)@-^9I%tTFZeaUB+hyxM|D&(wzQU zr9W1D`fHe~=@DW|jN6iM)$f4YjaT!FK9jLxFkNi*63Kd2UelXRWd{5gD9yfs>P>42 zE2cOzPyP1alAZ~A`PT*lUdOghE7ku_VDlb<3>Knq!-A3fvmExcOU(k_TXN= zduT#0jeTv_tIvST@c_CH6=)>o&qSgpef;^wFz$Q}Z#yGLjdAUa<}s&GrRK86JrpTx z+CbJRgN;}W9CizMm*!8Ol=yVyQjUv={5nydby%i3Dk`|Vqs zZgILq@5hQA@q2R*vqQEcsM?TRSwqSTE;hN>1@>-LXT6cZoMP&!Lka4p7g6bV*o5R=}Lz@{j zOHSMvh4Y-~hXgnEb_zF#mA)4X;@6TG*Dka1*J~EHfa7N0iy*9vjXL1vAX*D-LeW`| z@wche$_X!4r#c0Wi%d2T&{+^)Eb?F%gP*;kqX?rIb4fzQbj1g z@;-b`rnSS%U~vN__`b5xbGW=qRmoXEqM%9=5uz=nlFJ&H)|pmX8qgA~MQ{xf`QVw? zr0OzYVmOmiH|Bf=G>wn!r@i{LH7RoAB#STiFuyaPxiZ6yt>BGU(@rWMkRirreX3vN z5SUpl6p4DaLOqDDDq7jc6Maf%YA$w|8m!_FeOVf<_0|Wz4D-)Z$MN3W_S*`bsxmB~ zJ^wZAs0tfSQrUExj-y}&9(+L!-)M;hwJ7JO`eh>Q@FnbKU-Kq)zF;%lBBncmuRtob%N3E-IJGkp&q1q4TEpnCeFv z&?aN};^gr1$RjLGMj-2T+uKIT%JZlZIBnl^z7#p9gj@r|Ln|iZ88LX0V_#F4RdbD8J3ls$OaViT;d1FQuJ zRY)JDlPsN*E(2GIciuS;CQf%p^qzh=flW${DoLenPMce@l^2XijHC9f$&?RrJ;YYL z!}~qV8t!i_7s7S7GPAza4YW`RU9C*?e{!4j4p!u5f1ZQhJwHF*#Q%nR(3xgB zKA==TTAa^j+s-1ZODr#!NcJ=ejaC1Jgc0~CN2pxOqnayA119J2qC2>|oN-21J=P@N z@vJ!PK(>Em+W@CmLToK&`4NMpnI8xj0=W4ZSYOFA@&p;d!E9SeKVDUACMWSYASz!0 z90rTY3L7(%lr(z_q7u$YtIfzL=q)(C_bnDwLfMC-?V$UDyS)Egxp0sVctr5!+P3eI+`Dv=9WS%D5I2lcD zdU6gD6Q1FGFaA|_^W`71@l+IMDr+t8w+7}rDoq)aR%v|;XH)YYVO_1@!efy;K1kz( z#>1f5wj36^>VYhbgx^b2sYjaeQl!qK*o`_;Nm`L>U2(1SpcZ9?HNGW{b*Sfu)&C^* zE^{^6G@p;gu=`C$R;gH>P|s*Pq+pB&sW>KY<1l<2hT-?@?;6lZr@DTAeE3M9Z-6;& zrkF#ic6tPwZJ~=B6G(q8CkFzFgI|ych3fOhlj$j>BMc;p6vQ3cq0N_*XV(S4N}Lw! zBM+#IEKX_c>0i0S1v)I#7Yx_dHT^}Uh4VHzA2FPWhEG0+dWAcMl&y(+!goyin@2q4K8v@dPlV{9@4w$_`XIR zk1I`ertj#IyNlYn3fQ2;n91Z%C3C8vR!-ApRvZJ*Pkuw`9_cJE4m~)Bf2rNl^Aa}e zJ(KiSD#?jD^vYa$!BI9ixa-bs`>af}SyawY{q%td6iLgI7})j3RA5jG?}xzwRsSgACl7H`RW)7~f9o@`a-4{Zn~_kM z&n`BL$qHSv0zD%hKh)zff4Y0gfEeKFYHWrM#dFVU=Jp{M7Pe1@F9ps{9ls|8r>Jsg zkU3bTs3Qv0E22L*WEqc&MhqSr0Pf_OC^@joMw zYoig~cP<(fdoQ``V&0w{UQ;O7vxb-9(7;@`HZVe1EUFjGU?Mr^J4$yb4>?pFcNYb6 zXk4tsGb!$|MLH#8<(Y!ko~K*AO&&z&Rw#+a$*2%llSuMKhTEs@iT z(V1n|D$z%rX7OSNN6YQ|UN%FX@ZfmDR$u&uinEw#y8SmU{^|0Fhw858Y};#P0;{2> zO+$`5^d#qRU|!Al_A4RPAfk?9CrQ_?z^zP-R;F{ya9)`}6ouo`^@g){RnC)?UEp*2 zM3{c=NGhw*BgY+{tCo^6I|7<>+pHVd^LUcVK1J7|00rhF?`GE&%YsrI2F0C5;|5%# zhnoB~c!+7{pn>XL>!VT{-DW?X2`kPw)3`UHB?3}=+>h8GqUzSEKYK-~tcMKXS~$Ko z%*wBkuZPzQb>1c8jTKfBz~dVI^~=KEjzh4(Y?ZqlTWctA|0jL0$7Z;i*o#3?3N6th z=@2tt7ZxRWxR`T$rJ4&WSU+PqIm*0Vt3(b`#oHEIb3rFF9y16LzxySP_D5Bead=<_%v>~*lb$hRldHHC(&?d(lPrSbS~t)LFy{v z>TxUpZEKd2*0wzNeUbYoP_h0z1~1Z{K->7ZUa&wj=Y2qKa&X}C=sfo&3G5)4LsduC z;hL-NQC>8rLda6^@%ba>{MlCs=^=69PV4R-NqM=bs3KKB_jkJtv#Qqb8d%2oAfFDi7Gl~=q;sitDdfmw zB#lUB54ozx*oT-0cAr>R_1bN5X2*NReIntLn6sl`RV9eAU{7{f%JgGIz8HBxFGu_A z;4Sc>alO(d%jTfS)_UiS;KwMliBFX*iUQke+a$Pm^TLvO6&jt0`XUw+Wk2Hl5Dk?e z{VrPzz)tPq!d2t)tDmhQ``WWP9xa~^8GBh1{^J6UI}~w22;DQuieh1$8dF`H=#gPpDT$K>XDWr&kh#DrPl>{71F*w> ziw}cYsd`e-@+&zv@0#Xi->A*2&xVfDHI!~t?6P(&*4(@-X0>axzb) zW)8FRR^Q+q)kUB4GOkFv#t-*oGkTYhGD`YlVmLq5Ja%Ua@Df&arEYuf*D6QDw5pn6 zvhH!W%gUgv%+fu3rt40QZITxCr%cZKQgeo`9=)7v*r-sK-b|S>Z%}dC0#$jjL!TT; zX>O!*IM@K1F^bY!e6~wV7tKrGUHdW(B9h#(WqEUYvXXbFk7JGF9iIwAg-|0(sH~&9 z2H($S+feUpGlH<$GCMR^10^jrZDKUbSwg(7sj8D~0AfD_6DqvZXTg&Xxxk;THhED) z?#Q$Uev)zV-RXmCwH66+|D{q#v8|%h@}N}A`Zpa;(OZCR%%<$o+12h#;?QTa<1=ME zwT-zBp3lRdmp~EA=pM*gtkj%uh~wy2PW zdiBofVR>)-8#8&cE|(-KyaQDq4A70!OaVkJAmHn``MMnU5t-+on+H6~nWq+bh z(Z0UzsH*F64ZHhxHEFVav|3DkZp3mP2p7V@gvYHhI_u3;(O12HqU=H##! zAF15xw|(Qa`?yBB(bih()478n&Z|V`bq6K0-Y-zEOUjO;>BX9d>wIGw;vW+dzE#1O z)9Qj|*fa06nqR0*@N`b6D{PA>i9UUnZdE$xnj?|r+~?|vSIcb84fK3dl&t7@5YXFVhxWV>MoRIpl<&Ryt+pL-Yo83=w;b-hnKKEM>HCpwA^rt}GLT zAL$6yNCKT=2uY6PcqKjYp^9j>R*SJB#|lJjG(3HAxOjFCy4ZrXr&wQ`e%+7 zHBU;l{FC>$0F_y{#5Q0;a(MfcNuJ!5@Wew|E?)Lflx?$*-y@c|(YafIr73lIgqLM1 zvB72bYbO;lx4o=<-**&pGX@}0Xhjdl@oPp^?|bD%J^LW>BADe>7HFyRa6&WhygX7y z=Wtp}h&Ev_mcD%dvnyxve2^!wyw@!T}iZiL07C#+p+! zcIY3|zA0G|NO}mLrXxvK{B%>w!Giq7gwR=4D`2u_{!v7Cq3$~BGc#5_n*UifxxJV) z`D9*WMq#ZkIkkV2w}O&JB%58^%!y1wRAu$~1C=o*#MG+lRIW2n&G>0iQ42EDDRj9Z zW479SUdL{cw}wF>Z{M>V$W`YKVGdJQBWDTk6%<-s z8s4?6s46dunzcGyQ;y}>L7o;4eAx`$5f46f0+}G|gsi&{<`P-Puje9UT`iF7+u;6| zFWAI?Q@7Y*p5)WboRceknB<#pU4C zH=X&vMm2O;5)q`;G$EfsfPb{DKf{Q(4d12n&l?uis`?c+RXloC|6^BKr7ABWbu3q9 zFS07+!7kg_RsH9Qp6}dYx_mC{9hq^`h5;Y`#@0Wha4n8m5%97mf%K939>!3mmuZ^( zvbNF+_D{MNERQPJtYBFrscYY&rM+wpzmA9IL~ zLrk7{*RA*YR)4pET(h#s-2$qQF0j_t21VYr{HJMluBlB)h7+`=pOSG(=a0+MNA1rB zC8WI#Jb(}~^x51*ychQcyg&!vp;7wWZ`~HGg6EnCX%&%b=Msa&oDVm|Exnt?1sG|~ zi51sF=P^eOUHBs5amUH>EN5%*SYD#XrN~HMu?dGEN~i~!6p1pcRVo4ZuU__TCX!U= zjHKKjOANdCmJSUe(ra!v3Mx%;RsJf=-AA{8;Y^c9-QtgMF2l8;YShE>dN4S5M@CUGdPuCzslixG+(LsZC;9Wnx-0|Pl^_wy)|qvzFVu+W zn)PC7yTDz%p!)k}xLj1N?gXCLE#U1BUhvPzQ`X`i+3Ap&7}MjhCaDs0Z?0;ceG#U; zCKR2m3Y`(+7GSgo%a%q6H#pHQH>-@!&Se8nnQO8Nb;xc3aWU7>2TLb)Wi)ftgbCjr zQo6%=M;AdkC#iOB28P+hveR8|a%+Jazp9iNeCy7w+4HnY+v->@+B@+q1b_tkiZ?n7qMJZ>3!rb`*Hc9CBKC6E zH*GFCT(9u&+E3KT8Xq1o`dcxi-{AL>aSAJ=P3JP|IXUs!bo7jBi}jB?^HcjXhY^R< zs^qlhPVoNCTfhTGQ%IGL3TYju;`k?HGH)C{?U5eI(%I;Z>&dh~HMoWOk)59X#Vuf- zT5PDa#AHd`WyYz~sBof;&ttndL}7hLUEik&ah&*E{EG^4*!kAglsAQnXt6;;iQ<9=Qfkf zJ#m}Hfcd(Hri54`?YK`GiI=f@!KQ07=fxG9@3^m;;i?aosy(bHR9bsQX^i4VTo5XO zFLJBr%uajWTAfhV+)I}`oYtuKi0lS?T#z^+@@Z%ufqfx#oE)aG{LMLM=I;*gZ*+5& z)E1pv`%qIY=VlqAZjx?@T`R`K4T?LEIuC*8eJU%8e&R(cq~-mm1@nEuZx=rAPD52l ztjAiQpL_ zm^)0($(eJVQcQH`iq8GU8!NP2g_-nn%$CY2Pg(1D4|jLYrN>nmj=h>GaZAFY3dp30 zJ6SEm2?)xG*Jg6g3w>u8Ja#;bcP-opAUm_WyIO19ggu9zlEL@nzg!L_dWElPZp1J1 z=1ad6d-k8y$A7)yj5bkMUQYfo!=Yw-o-b-Q8v204?Ud*Xi&MyEAu)TccvZn&D9m~N zRo*%9ee1YgMd=ZOd}%F$fL~j8Xazy#OhmB2vWk-{^pBN103&H2a+kQ`9vhFd`nLFG zQP`-%UVnzyf-qB9udq&L)fZH=+iR*y*t0%I>4s`T#l~#iYGs{H4hrEiOEO8q|H|(F zbuW(FLvN)TML>|42)`p~m}6$XE-8gF^Z7-PJZD%$UAFnjG^R6ZoA`z4b=Xply!`Yf zb-G@evE17cGeeD{%w!kC97_#Y^w0y^XEiTL#HD$b+=@{Vq`BXq?blIrU6Dr5OS~4r zoeWBiY0>CIFoyy?K~}Y-QciUX zeR=R*4wx)Vmbs`>j+T~lg!AEtk18+GjpW-Dn04EZ8dSI{K$eZp_c{s;^g`(O>Zb*` z;Eo73KL(D@IAn;}!#a8Km#e!ghy7w&Nk6g@x_qZN^DW0kR}NR9b;(FxF^K(~`=xh^ z&%BuEtm8hB%OG=12d^@#nTupz_{j|)TS&3(^5w|1nE+DSWC>V9mN~X*GrG%=)5aB% zMF#Z>syz$-r6rJG;9Kp^9m=NDVQMMFTmU8RoG7>jC|U&+I|+TX*)e(+HmNXP7yBvgK75_N1li=y1im(X5-*AY}+E$V&th4}Du z>%hY4)EJoHwz6lct&YrZCjhCW z@m`hH+!;wR`A`;IHqc-<(xdP6X?LSCo(3HGOF?KrwfCq0sq=Kr{pNc{9oB0F;m-AB zGMUA7n-!>}+>_Q%CO+KP1R>dR3}v=zO>$)C*4@0xL>-qm{yY< zJM+<2d|}#n!m#2{7z=NF_^UPHVU^L;+O%5$r$!tq)_7=m0h4py>hk?5+!j`M>STEM z8-ZH81YPiR)Li@SvWmmb2Knz?XlncP9@!Pk48;}2t2$dR*BrTLlspo!+usY*m=h5Jn<$Vbd!umUB{Ui$P3 zvG+W5^ka%2Wx8_jAS1k*6t5-G&O_CZ{(A}I;S(}jCMDHHMfN^}M#)t0=|jx&LjG}F z^1G&@{^PDc9gE3FE%0QLj$EbGa<;?oR@Pi<>;4Ro{en`PwfZ&o+ndm-5Hf>unm>Jn zN7KWdQ{Tw=B$d11-c})aY@<#~49X$kF`Z)G&IJdUVD-ZgmS_{y)3Tuiy;`K|P-+Ju-Q|g|OtB1s$?xq)W zl=6vsR`lg#cZsR=2sy?n2JF^$*H+qL3W^Er9*MoD=DUj1IQETs&+E|BaIf-aa>9VC zjMqpv9U%WfUnoE;bQbcZB|)t&xJ$^~`sgtLaPjSOIL%DaJT;P5xVX7(OQ1TD+&#Gs(ZB zdw?9fO#Onijla8z`bwO3>6q-*0bV)?cONdY#Un^AXdb(wP30i)8tBkAl%XepDoOta z_<5C?6Nd@=J{sB@B+h13U&~y)M{er5&m2yLvxO(ZW~%3&1ZfFG13kzY*4T?;_qLH~ z-U7>}sLd30t*O-hYo*Gi@~T@vL{qP+2jVn)P$aNU+*erV%Z!Ox_Au&(A^K}~GqWMD zkxjh9`oRG7x7l6H&5Gcv;_{yvIS7cpk%ie&E``MPjg2K9^HqcdcMWk-K#$79i2gV+ z;OU%_Ni)~N``Af$;%ygYQhC_ta5SSnC8qF8S!Xe}pAE%RZ+U?}EYM%@Ox?=FL_mdCQ3K2#{VYZ2VqsuJ0VrvBPb1hBL* zPCAQuda=}GkKXdIA>L8ENmKp<6nT0_b358Uk)QX+q|c{DxN|yBT+B%v0(%5v%Q6ah z9@y1T%#378n2?i-XpVA_uPq+di2on(=6xb|SfnYz<0@le!`Z6opvXSECCwycAtX1Q zeQ8CI$TsmZGO!kXc0lx$1A456fS$buW)=%>GoRK-1Q@;_aXAqh*Pc*m9GoiWK0tWX zPAhs?0Y4T$=CNmz$L*V!a~u?HH{T_CN`E*(rM`f~Mf*=fwgefWw*VKG@S1QS9V`$U zI64hW^=X2$*(v+T`d#1|c4Z`_!$&MR#r(9|Rfzj6cWwcd<&n}|qLs%wbC)ZUAPCu~ zZIgV{&)fKRl^e$g2-vbvJS?xp%38``m06~%9ag?`M(%Oc7cvUh%rm8qs938kagpL` zl4WmvXCQBSnsM**RzZHO^E6V|w-~m@f8^H0?eIuKOic8+VEOEnl-{|+=CJS&!yc`{ zHHy$!4hx^m(jcnADIOTcMj)^Scb<%}TAyx)^Le&gN1lryz{Fp#EK!1XhZ>)Mlw z<6q&10aELrr4yYB@j0!4Hsap^a=~HSvnvsb5!qh7H6y4ojPc0m9_KvkS*$y{1Yf)=wIK$8n zmTY}YInuU>dxiyQot>(+ZTgfq;9YrUNkVE(qe;`eUH$i%#LI+T_0?5g4Gjb3Wr>3GyT0y;ENfbG zLtSaoiaS9aqyko{ycP!&An*(_k^@W)7Pt^rGD{OH0XV+=@6^;^Ei)5OU%}G6Y;P=g zEC=t~KJDk6bm)WG_Gq2?@MUG)JQ5hVY=kOR3hymj8$sM@O8C@=j{@e52vRK--8IA> zIE3G2##F~#9HVVCT)GOpYEAt!81Cx_^uOTvsyn?!1K6z4F@r^$rd&eJP^Oe{PU7y8 z?DdgMu@M*&_zm?Ksr+0ri-SG`1j2w{r`nCT7+B1-J8clWwJIhC3EEtj2$Q)&U9wr5 z3N0GmBo@bGJL~p1w1u2Z<|#6%kMSp;w;Vy9{l{$aMP1{T5~h_ro+w4WNoSbNo-@!y zWJO;Zt8cIqkdB*w{}T@hB6} zY%L9=HEFUc1(p4U8Z*#CW7CdrXyezjWIEkljP6kwF`F)vy)T)!EH|ByE#vGHX@BHN zgz>b3#Z2H4g_SDJ_kL3phxs{^0U9Kc#ts-d$}K6Nvz0e@UUFNX&<+$dsMC*Ul$RY~ zP)e^K#C4Ql_dTW%#E^kd?sDJyrm~kjuZD1p z^h{^^%aQRU&XiN4<)40EFG3K|?9gKPvpVq9Sar4>I(Je~_+Os4*d${l2oj;7=tvMu1 zr1a>JwWzwJ&&C_CTL78Z*>bUYsI9#f&p;wPF8RpnM81-=t;uydGB_K(7P70)FYYV8 zt#n4Huh)w(q<9MTrHzcZI2gC8H;;B=kInZyl=Nns>UaRppv)Y#)l$m?ek|PjtPgsk z*^+e?^Ys>BA@ROAP4~E~6`r}pUF?aW5bQiZ zW6+T=CniIWpG}jSpOEmQs40I`xWxSFJ$zXHsQQ_Hrlt?0a@7-gEwkMvO;EE}=D6*t z%~r1e6>*QROx7fS*AJzBiJRDjzR)Q%FND2m`#1Zx(`_*Zwr=Q4@3-aZ9Ng|r`7e|P zz2YO)-fH*u!F|oUpT;`rUNlx_*6h9i6>t&C-aR2aCH=s^>nMLSDc2@XYC&r-KM`}h z?pnhALu;Iw6{`|-%*OO?&w+P1(jB2x4SB^E6GfWtAmOc%W-657R{l4@g+X!qBJ3Ee z`%RXK-qKvBL~Io71~O|{Vvuj*bF(sSIx=43Ba+vC(IC<*%vBeoJtfV?CNM0;^((!O zvDrH3U3MwQc(_*2z#w#}9Pf2s$pcBB1D;8}ZWZi(PJxS0`cHev(_>U6-{qj4C>g(m zIwR4ELA8n;K?aEH^By3_vF9NQ6=z42pLkI?&k((Qln)X(3C3@kITdpr6z*Ey1=n7E z7yA#r^FMv1zx$J)OfpqwmeF)(c7>DZGg9=*dxK1LJG|6h9A8vBk{&{1F8C=Yh~1Mq~ENyWaMGaSf10Qma|=Tsd`={;!)+2X5UtRCyi~VzAiB##kAch{ zTj#qJ=cYCyKG_a7$Ta_O_O3+=Y(=a<)2nQvhOkvA$>i_Go-M(uWNm8)3k zMSb|Se^sTNgxX607m5?w>nfNO6P_lrRL2hCjaz)0wHTYC`9WyO6H;%V`+b51ZP5jz zjgquuz0vkP`_@ymb-_HZFkxPprmny;vptSFDotBPYPvp6zqlFhcSIvkC$SnF%}MLQ!^%>EEr(XH41Bca_HfP z8yj!Mz8P%3+LKwPtC`Xi7y_V9mNaXT$qEIH#P~<4lvFEVK?-qdPI7%U=;47mtRv8xCz8MK4ZL|IT-;Mvr zDIWNG)_dAJ#XzTVDt9Yaw?a5!Qx&?>9vo?;eQ-bQ8d}+#m0$^UcbZl8o=TipR6B`6 zD_-bONc;$qccZjzD%S+J`c{G&yLIJD!ms~VsO$Cr4hj+7NknNHWF^K*I|u4;)}yi) z)C=nzioVubp7bVb_vqr7nw*R%^+aSd$bsw>-Jd2>^L%2Sx+X%aZ*CzE?s zUYcBYWi0U3vAu!s)2g}>psXn9pc`gC(fnrDL`{YMdEM~%ISX!IIEdZ5pXdTUa~YQw z4sVXUalWz8!|V9^|46i0uzo?4VdyZ6uyPy z@arCA&2XpA$sTPV5($GrOCNS=R>rsuHaF+G96iYhG#81yiw#I+8mL(*`RrS5g#@?? zLhN^&qKuXh{|uq|LoPp<3_Zco=|UVnCcazB1=^Z~&6IOX70YfkZLy3|^1#S`F)@+t zw-v{zu*!u3W6!SP(UZ8SxX@z_ieW2?K8OEN;bKqa9nh0SRaV>y(#vKbK0971kAX7qR&lT8OZzOzNkwcV!pB~+ z4&0ll;fQs+4%^<;+wFn6al+**3ZEe6PDKO>gU4vZ@l!YVFtkwhcCI+h@)}ZQ#j|s; zGaeGLxhkt+g|)fKproS4Mo`?y6nsm+uaBV&+(Uc5~lgEi9~4_q@aUEWsU(w zG4m8Rm8ZdS?UT*kPba$W*Y#C4f0P>fA>*Drkxc{fjPC0CK!S-MI8@?-l#eP`?=;nS zxZ3WtRVE`9uMRt@WpsLfb}C7Cb@PFh7Z|Ws99Zy0t@<+OY?v)V%eB^)%$wtIU&px4 z^&&DdGA{O7|3gt_+M}BiK1-QiJKIc3aP1Bo$J=-=j>Ah+@H@>O`s8o7B&|D?we?G({IC275KBGfI&H z#gm*6mw2hcx{Kwy6%gM$C&y|PtH7rO@8vG)B+f2y@9KZuleBeWGFon!pYW<8r8ZLE=)4Esr@1>{uQ&HBTlJdJ@7qXNI5YQ| zJ3}k*>vyk^-Md5b@8#vQt?ykFpZyvOz9`GUdk&HFEz`3rb_lx36{Nl5^nR%!M1#E` zQ}6t0uw=ILjU^HuUsd%f7)rC4OWDSC1Q$cn$}2=VKE~-%T~u1n*Nw?Bn?2P35Z%RO zUy@YW8-JPobA>pB(}&St2Js!=1H1M7XD3FsY1ueKy}r}(cH2(1Dtq5j-k>$SjC4E> z`J8EAB@ZW7W^s5uKavIK<2O-G=nRPGswM_Ct{9D+n@@>;vkhBo7)xOwxbj&3uBmGn zY{0;El+HUR=GK~(=_hY|Uo?|PSiGLV4?k)hsc3k>*X ziCpZW1Qfm70|kFoj`Jp=!sp`B5wBS7BO^UQ0>C zfSl#2`oR5NRk8!<0c)|(LCb`eOTXYOt$j^3yuXB3gX>p4fq(lywZzfGVBv{6ZITL` zCsbB4!K12>xM`@MCUD=GTZRS=)1`*ENf*7(r;JyZ-Jb>@odd449yHFrK;|# ziQR{VAOHOSp)Rp5ZEL7hpXZD(Mb5^J{5IB}(}$t`Yit&cI2IMp!qsfCn-xiD^cCX* zO)u8Qy|noO6NIfnxc?{btl6g^(;~zWRn{kRNBzT%F3JPU+@IUK5K!!Mfx#fF6Ny}b zEml#!{$j7XQ@0dyt?s_fQ?!1%7OC0%lFgbvWryMnhPshxenf@)#Sb-9aXEfg&lLYi zK=$Eu&r``&zMSV0UupZK+ZO63D?M`jD}xOlVg|%g)F2&KAtP=4uCA*bbZuZi7Vu+Z zsKE>m>ULF=nW)JFTRTB@FKRHf6wUJN@Bg}Mp0&4e{I!{$(jdqxfDS^*xU+_l&U3h@ zGqdt@#2*;x6dD->mSkjfbnI3CF z?M(GzPKSko-zGs>L>?KdZwGvtCNEY6{g~$-f`&?iA&73AuGhb=QP&nRRK=Qej?r3_ zIeofx%6#WH>n<*Q!Q8;eI6KmxW|;X}XTbWrNe0H9Vw<#>p$Iki0`jIqpEPCvS5Ac7 zwAZEd<{LxQUqw40e!h8!y()cPiBk-oDiMc;y}Z+lzcnIIg1HBx#VR8%2Phn)z8^j! zA}f;X<#|^htq?kXAY1F5pz!`$W+w{vnwn|Nnleb&yrkYkIkOMa&^W;WfN zhJMGgvHh^^hQqO=?b~#A-XoiM>R$&S^C1msqBSf%>VD#eVoqVr(a1425*feH+)EZY zh@G?B6KQ?-k_^pQFbhP*QgQU^BlFr~uU6MM*8HnI9hYxmmihy>3$7teo3;bspFzVh zzJ&60w)u6;a@W`#=tDU6yYiWPu1A6S;78EZag+9FPBo8Wb#{h9v4@uwqfl?Dp{_nK z8V=R8f;_kdNcF~~gN~R~%Q00buc}If!eW7uGX+WWsfH~?@-W|5UvNHSx32vhWU@+| z652{rxvbpouuB)YLGj?(`rkRf1)v~#wZNAoILU49!>qxw>Qn)5fl0Vw%{pVEPTeC= zpEw=f2uZyy;_Po zQY9C}4k}ium}UlQ6iO2zY0*1O6JM;-)T}m_OAVJirWBlO!+H$n+RdafM_&HXmp8e* z`lh8$(wp4Jv3X4!a(Thh5FJuRETj2UWPTg^T;^{3mnohw$fHijF&@L!Q8~GLWgPKi zeqnOJygB~} zT~5#S7g)?_jhQuMRmXS_>Fj6IvjWU&z>i-YkmEv62Kp! zQ;nhz>mTx?+iMAqWd?8yz=)M$gLk<2VA_mnz${QU1fV_uPs-Op@=W-1*z+K6(kU zU2%CkY=dK8O1HX=wD;~c&VTtxf}8(-E(*RAY&Cl3p)VydU34r zAQ><|0}894x`$JwHS=eY3^lK}Xb3z{N01KwnZ-G>=&o7Lp7Iu0=#AE8!5m3h6sczc zawD8J_9)3aleke{tOQ&RjC{sQNpsg-p}IlKsFY$eVbOck(Us}duXe3l0LUh52>#J-?6)A|G3rZtg}}4z$8A)EDqAUf>M4q zKN8S0f~V8%C9u59+r`H#*wxacfv*lP?fN!+?0}i`a<9roAVltDAX%vn{C=_LGH7=8 zH8(IM>UEKNQQ@XsrG@zPhf`NEa-Sfc0{QeUeuDSIU3YB@^@5t^_AgBgQO6-#$FLs# ztCyPO)c)SoWf`wDTrOwU`jLS;$dmX!G12*VyZ?*2uMCK5$+jj&1Pc%#cyNc{4iN%0 z?k>R^8fXX*+!8E!<1Pu%K;!Nb+_llh65QP_UqkN9n|J5Vy!YeHkFS25KDw&TsXC{3 z)n0p*6?4qam=%NDrSl!tT$fjedAU*w19JIsGEz=wm9BQfbs=;eTRkt@ExQH^k%Vr@ z3*k0v8IMF{hOl#2OBbl*La}PC+@J=dJlQrp=u_EmJ27V@Q52!Z5tT)ZSe{`&Ob;Cy zHj7D6feN|SN}+O+1VO%#*zDd>W#k%=-MgL(`*`u__R|=wv<-@%x z8iqFjdH@XrB{h^9ASGGfDyD;t?e?f1#pBbz{AT>C13xF^L)7&J`Yn8V1y*fMdz|%_ z)5T0|$v<3Ya3MxK6;TGYBQ*PJItvRdWkwCa_8?PXDMgqBkK4+U6gT~q3h*MAQ}I0h z{L|X2+bmRMDcS~jM%_7E0+3-LCYr|-5F+8_lB&kfcO)rKVIa5Rh|~D+M>$Shqx_Vn zDthhJKZcMD?Hqft9)tJUb}vvKE1j8LZ;$VaUi%i-haQ1Y@e9RR2>O-_2*Nla563rWwddW`6#>9tw93`WF7sP#f zi*fhhBU+Z)Wu^R=>rQPO1nN9@DT-jg#4nV|_9T#;e&kOiRcVZpGe(u%xV+q2=`vj} zAe?}Qyy9$6nZ{Sd2RD0>b=mvtLrs$4FdG3+i`Hj_p`-ev%0^!{Ez*5Z2MEf6|JUq4b%bB@`I&!lNe^7PoMP3{%{*rkARe5T(2FuKp-#I%A~2Pq&!ku z`})oLJdpw z#ai6_+!cUujY?l%jP2+M!()8tm7DnnKnJeE*pt$7T3Jjwd9xm`c?pnAt?XF=&>hko z=3W+&?PoQm4jWbjRC+g@PZm@7-&GWW(i!we($fYJso4$>YMa}JP>Gb{FC?oQC>J7&r!jy2Wbmv} z7>!Jrb!pPJ50Oy#5uJmJ8CN@HVC(FJHy$`5)izMVmv=14zHi+MZ<)k2ZuBj!%@_Y6i=~= zZeP6rn*|zpRu8CUQ-(2SP80*ie^@bN*W1^u4yw>-h%+JZD^dTE@C3`zu_g4CS&H*$ z!$DznhiiY;I@0v5D%Gkwujah7e_N0{4pZnIq}`5*73O1M7RS2AP5TcegCdUIl-7A< zUySIN?dPaTQ5|xKU=8*$FlASR^D%gG<1Kk) zE#dH)kmnxB^#`2)%g6iIm2@X$wwRw&BUQ>HO${QrmA+D8JOlu6C2;_1CK zC0n4Sx^~d@_!L4ywVku};}=Slv@%9wk@-2$KXit(goevN3#nB6FQ|97xujqCW~xbi z)%ppcu8nq2KaZ7(N-ea_e_5MNt>cc2p}EJ%&y;DaDmP(jB19~W6oL?2&!H*&-Z>16 z#tzTu4Tj8$OEiUF85>Rx{}Ji}X5R(XFCRwth7Vk5I}5Z9EN;W=pM`f^|3XRazpL@% zubWV(}p>Br??GSgrL+|cdn`1qE-$Y7g)e_5vIr3-LsWmk69f#=CeicCDm zkIsP*OGb}=0gI4`-`ts);kXm?)ca+qUQsB&2Zw6L@(FrB((xBH9Xy(|G>~>lSr)Xy z(|f02#eltKp`+>YtsgEH*R9xys-zou=J++L#=|+(sr}Zgnph2v88Cu09MY`$=6(C~(!Ge`+aM~5^m2!&ywkmxJj-STx+Vv7gr=Jkntwu7u%kEkHMdQpY@=v$~Ldj1*lmKAGQ!Kp`uHLhdu)h7!kB z=TdU2byoY~4k;aaJs>Y)fWCx_LgKP#P8sqf3Pddj|VRy5gZExoGBwTt2lU1};Tw3j|+ zazXZIp6FUGQb-%jOR4!nCrY#pjh)#M6!PEyc&HWwqk&ZI+!Bg=E%K(F{Il8$fQ8VJ z@j3ZGuLZa_HCKxC&u#p}zC$>_AsroOW}0sU)$iGPoB>*#3fB~jC--$juk{+jtR&V{$2I)HA)SO5Z9XkQ^qGIT<0;*5*p z@gD1CVXe}^*EYIVe<~lrf}`dNJft9!qsK8H7t_qQWar9LzU37B{(|}O9dp-tCnSVC z8x7I};%F3n=h%2yZxW8pOYp2VYVEumfTQ`X$l0x%wHtJBJa$u+5pP}*2=AV{PQZIcA!rd=*^l~wXEJd44RP8D%m zd&583j}^Jru4>~4(UkxSH;7nGU2)U0zn>AFA ze&VTNRe1_h2M#+K9Oc$*3-D{^^i|^V`F`K7wTN={ZFA4OBL*AE^I*yfnyZQc!}4S8 zvO;J1d>A?yp;hL5`+_uvg{qPN^xSZlAt1Oc0`N*mLgrv zyc}Djs<7avca2~7I3qkYizS|*^*-jS-(`_4g!6(w zh)@mU$>^%iFO=evpFG~DWeDNxJxyy~#CRr^ikQ3`{mZV#$K|ywNWZnA>%8UzGTHaP ztw`72L~>~Nx|K~`Xa!9h>4-D;adcz?U0QDdRW&QuJk|(gI&=CpbWB%@6l7-qNXr~4 zZ5PXaqp2#9Zm(_7S@AQr*b!1|#3s*@=bnz!MWhW&eD@yFudLz_F|n!Rsv)AEtSwAC z-mN%!9D~8J&w+<&M}Zaq)jTeTXUi0FNsVV!F7-dQI4bq%)uZO~-W7~$JqISNNi203F@9=d z0CjB5h>S$}T<(PD>55Par3X=%JU-$lVs}1(dkXnqAyg-oH086ZyctWz3bc2bkpiAo z`#)s@=i|ePq%k9OK+C#s!pi9Vhtt@pKHWU@yZBeSOwso|6DC$njnovm`rEt~ytoRb zcB=;RMdjT(OJdTmYGTix^gO)C@vOasx_|b(9CIfTJ;>1*C+quq1A*G_`9QkvaCDlJ zylghp5NSL#t`>aZ9#}cnhYa2|d~tKme>8E2JB{tDo7z)OdCF0Q73@WQjmJHf2ac zGrAgu>G!AN5Q+vEk4?s@+JoJa-?G$-&Ljit2Ga?;$%Axr%3em~()&)524~*8A2S*@ z!letN3yQid)f(~yHIzh>K6r4L#swj-7yingJ6d8-CI6z7TzQ?+QDdwmieuJM8?OPE zu;naU9Dosp!??_Rn$nG{%&rT)EB5?grEhxSJ`Po90L5vK-qhPYV5L{`tc#=7 zYsj{1U5zVb?l4w*3i)y4MSk2mKi!=2A5G>VdoC*s-7c+5Rr5LrqDHd!he%{i21KM| z%9QOEOd(BdY#g9#5xN%x5Iq^n-+kkITcp(0=r0Dd9?Nq@f@!*Aq_m`qY4((=w4}SP0NVEU zSJ$s1yTp$b(7q_-K-`b!<_NB+@NQ+GZ@*q{trS0wm}HAtG+XkE+=k2Xxhi^(<73Tf z#(Q7W&ughka={dt-&c89nhuKVf9&aW5G>^QA>pZBmZ($_pEHOl96Vvwl;Eg=YNzEZ z0UV=td=#;ceu1!ZGvlq;ZuML3xyI|1(!xFmX621x~xkMO#wNxG*F)vU0W=itcWMrc2&v7eXMj`1U$N{xuNl zfi5AMI*Ih2-|zc$d(NL1=Cd0C<5bx(srJgVv~gQsoX&Hh2~1ETZ&hejKd!g-xWu=d z>hCY>OrMWDpkY(*u~CMab316$ejhnOEb%RRv^pc-#kW_UWW~Qw7M@JA?Omy#N8LNW z7B>2Y(vDZ9zi?i7ME~&U(xu}UN-)!h#*QQXbp@=A(<8_)l;>(cJt6CjBVWnK_cq9{ zU*zr>@Suvemm3uB^}2HL*YqB%&Z?N6Ti9eJLo&6Q}Eo~qYSl)b1;JO5whes^POOsL+o0Qqd>Gp{p{RkP+K+WB5ka`r_^sUqKgjn_ut>4~eLP;t?+GzxRme-Bmv)H#xJ=GJkVK|{Xnk6P2tL>cn!TK ze?9pS*s$G5IfzlBArYp3*G1Ze7k{GaWWOzvQ8Y04la3Y3{KW<#1oot&i)SS%!qqiA zYSoxNzz*V^x0@7%rAgF?)}w54p(Ke`2;U(lyUtOPUH2H{iAv7@ZM_si>0g zbMBE9AJGVO8=dvAcxhDLlu@4;l@LSF0!`s_Gkm)ilwU7g2wT9>=AKyt{$Sddm{yFB z%t+E^fupNdDEaJWjyQWS|BU}8X%-vNY2t8rR8CD5 zne1=~2?`T*Xh{fV3hW8jfkfE(qpnCMN95e!?bL$$y7(n5(8q*Khp1Zj@?Le(&jQ5h#u$<}IbYNplpJd))+IM7SITcaQF7}G5> z0?uM?mQnHrDIDA2D!jY3o-3p-Vk?4!50^l)1v9G_BKD0Xi(@UQs1IJ$JWRZRY} zEo62jmo}dkko>UjvP;E*@y+ySrWFP#ZWxqMDzxFWF|i|&z64`$a|+?1KGsK{D+;=> z5B+M$y%~Q2AYhg1VW2G2i;%2MX)H7m0uA4LdoE}O<8LMh|aEF^z zmf&JS@Y5?g3rw;*Bk^-0?gt4HKH(-(0vJ-OCvz(KSINV|T|NzN6}Uhx3bZEkv?g7K ziXHO=va$uBw%y4GBYg#5mnzP{LE?K*+PzBFnMLBvs53v^E9d|U!}~vH{14kt;-Lt5 zo(rixc)8Tsd~_CR1GLK4Epy9fF>2-c8A;x>W91C@#nU;_ z5#aIGoiTN5%%wI~;mM>Jm=3eEGv4?jPU9`D7_r5s!j7%d{w-&#~JQ0|CvAG~2F z^=w+4kEa3!8IkwJ1{(*Ld|_svva>G7(Oew1ZVpHIS#Ctl6D2ADnU-2Alx`V54aI%KibOglWGj z9qM*loBT3y?Q9IzSAPZhkNY?umdMrVDjeg{7GQ>3nKJc#TrZlE*kmslrZYc|<$oOW zv_;jvJf7zBqLZ%6858MIS`aXUxG?U5m6VjqU}(q@?u_A#>;Qn0iVg!KU|&kg zzc(0}Al`W0v^XcQl9LaP`Sx~FOlrr^EzF0=0n-wbcX_s2aawW7&-wt$=0@D<;kkAM>e^~n~*ZHWJ(y>=}rRKzPf>lhic z&(Qi3*XQ<>KP~QHr4pgmG=Ba#KNNzUpU~=jepT&4z-q_`w3crwOULfwNEDL*v%ct= zJaA><4cpj|?yK-|rkxa|iPgd|`1&Wbzu07Z3lx6K8x7y#XFdUG9VLQARiZhxx$qsO3C6kkVuCiH^oZ3tf( zeUt&>FK*_acm13g2vXG-7)DZq7$tRL>UzmAfw{eH9r#|BLgE3Wp2^$YR+Pz%Q}*Z+c(m?h{mH~ zA@B_?8>a?J_4L=YbB(I z&X1n}O}A%?_OD&hFh12m9a+rNZQ-<)O-5H6wg?YpS`nnJPg5Q-ovvE7OC^hAi5@OP1-%gf{SD}9*j++(#nQ5Vo|hlm|=+}q8c&RfD`+i zc|NK~Z#!q3Yu}$=kn`JPDTj(Jn7c6b)-4+C1sgrm?m~!dVbwVDv`}^>LU|*dtSfuN zjtNW{fM(E=4;L{xFf@^FXJ94^z|wY!3t`A)mx&ZSDaC-TTE=)uHIt=}{3_`EOS;JvfY zCh9!ehZEi*vIAzv<)wF?^# zTvT<(3^lG=YUax0@uk8ewi-pN6Zg68Y-bLbS-4VZv>k8{8!7DD_-R_z#fn;4pu&{0 z*K{WD7x3Bdnd!?msi;>Rff6nM<)^Gs}JV_V2Zq0%pK3;*|Aim zowKH(J!VT7Ax=NHhsr z^H6rOpz(P8_3MeF8{Z;oz{#x6mlSuT!D`KQQ=kM`s~+A0k7EKh2&&~YXS_XNK*me^=dArNgM&#@YH z3`F{&yG-O|?Q*@zI8vP8swk*B=j1T*Z#Us6g^q$)Mii=2a?Wqt(e1`p9kO-NG{4H(}3T4 z6F!`y)ZQ$CB$eDD4EZpI9;9QBe<0kc0(Lb@=>n)kCoBvu?CIDo*7z@*HiyJaE5pg9 z6qK2bWfH&@wnAmTY=wo%U=ciBV~LfCNomO4`}Fw?Yn-$_&e-#9q1}(hHg@Xfi9luH zFbgFmZd zW}=;A=^aaa2=A8nz?5=dDA$$d9{9bo1Fk8&1!9|l@*v`t`go`47s~hb6Nkv7r;vf! zaxAMtn?qM|-dwYr(dd1YojDn}ZgJT}O*D$ZS1dsY$r?QuK?90YxVl<;HS zduXC;D@ku#)THCt99%Y^?w98MCiw@#7tSqc5xjWPoaC` znl!6m>@N7Tdnaia*nPC(}fc|vh0Z! zMh81wFGFN_BlI6gBgf)GNEkip**E73Ol{MLId6Fc*Q3hhb{b5j zZ(TjP3dr8!ZZsno{V=UeSgT|>p@R%eNf+!tlwRV?cd*m29x=sShEQ1ut;+cJ2mq6! z4v#~>W36t_wqYfg$BC7&;G!KQt6!22Whm*{*5EE#x=cIdR+pf%NqFAFCa$&>)V9(C zihFJNo?{2z0wzh+x=8rWL3ywMD*ssFw0P|XnzWs=5!%%Ue-=w;#kz24V-P*&dF6bN zZr0O@MU?_P-AH<#s!`DS*IOZ*Ap#m>1U^XVm-OM zQRQwUG}#KNn)&+N)G6|VpUiAV-QU%ZVJM9xYjtBhj5H7Rj9X_F1H&vVckC|@>(2Uz;5l}hHy7qQPK)VO=0JrP%S}u zJRsaCc2r4`wPH45wtn@%Vv_;@!a~l3wmbs{QPJ3RJqI)F?wop=34|FOP3g|i%+PW+ z2oXh_e+HWQ0;H>T)Kb_B6hz3pqWNw9 z{YA$G#L_0mie3K_6x=407IWE z>YiNo@2fGsT|d(m7NX0D;dC?G5>_2gHX5PQB)GpO9u5IDt4W;d`ol+x(vN;x=8JkU z6~#A`ju}cPki&`alh@1K<5h+C)p!EeosA5 z#4+CXF^g>WuvJ@BcbCm_vu804Eqc3t01X3mLywQxo8OvJnl3{H(5n1g1yFgKpEx^E z5*%By=^UHSekMo5AO)4n1T$5_kaRY4vAea_RTuv0l?T`)H6Pv1YX=)#gj>zT#Ulkm z^x@S{Xrs>KT$!^zvoL?HO|t*6Nz)eNH^rv@EK@R(t(Gf*42yqOZF*O$3wL%TfjLcD z2O1bmrsI~=ZqXXez`{{8o|OMSdctIjbCaS)DuhABOKC6~mEwf6UT9oTsSX$_6ig+D zQ&=&?$=hGrIrarZRsmHAoSy+=hhJRIo)62$b~6WfMjC0giR=iPEEU)54YR05=ug+=U`3hk>pdU8Fs zLl-cJ8$LNCDonRhr}x^=+#ekkmnT6EC>DR#m-I8%$Cb&9SHyPN*YlHD7iPZRhm6Zj zxJ=k;YYZ$SJ!4TXI9PO_-?XNC?;AhEW^MYRo4-)(Y7v}u9vAm)0oVF;XDIT2)yG67 zzI=t)9Gk5X*lFZsuzpw6U1qKqq@1J*s}7ym7@ZLhWtvorrU28?uvX< zqK^NpnLqK)&iswXn@(d`m9x8$c!Y+P;X+t6nec-#8pd8~>i?;XcezAZEGP4%(^+#z z_*M+oS&LR3aHf!YSQVreFPVR`guBU>G$X?tKZ|n{z@B2reEki`v+U%y3lOj$8Zauu zCE_ve|IW!g)S6wTS(%Nf&er;jC(U`pc`TH`PnRMY7DXe<&47nwG32`#a*IiLd84J^ zV_S%fNC4xqn&MwCjv+B`{tq7oSP_^fL{{eVs@px^M`u_Qc_(M5N;;h9Hc~3h4o*)< zwhbLJ7SrouXzOs-ZPVwmp=hH_eKwO-V|9@A`%f`H>?sngYO5BU#Xrp|HO=U>qhk1! z`bCM(u!JSeW&tu(#AW=eR`~4x}W<(!d#9Entob*RRh{=KPi;p&DL?qveq3(}L8DAWEa!0D^qQ)bl7xx*K3C$uAPTDPuz zKrQY!nH{ho<*ga_XRv>{jg~k$w#}VoL>vmo7+A%Wy5`NUF$fbc4~DSsgzpFP;>Xwu zku&=YPci98zsyp}5j;O)z+@#UjeKzGVDr8|nE2bd%TBI@ODI@Wx>7R@E@)Po(+KQl z2PkQJoX8$wLNO$I4-aUhb?alQX3|FdXozLmodJ~T)CE%OR_}#Y^@{#w(S9FzU-Rz^0F8mKp=}`3mjKI1Omhs)<;qS}t)Np1lQyxEn z!;PN1WncFhye`wNd0lBdw3Jw=3c?=NDrm=Rn3^wwF^C8uYGr5 zmsF9sm2b)dMY4KiXL?4S3w=UCA$W<@2O4M1$z`LMfX}EmSL76fPa`)h4NG~@C;H=| zo%?B>Z-Yg;dxm7Ie5tQLE2{CsS#RfR?7%Plh=3=Rh~2lEjeKwUIhY zDUB#5+P-xtTeFcmqBR-#Li$*Wa*WGs>-qi~eBXyzo^EZcI`CmFQ*jP@Tj&yYH_~bA zmnbE@t&+)MTHKX2w=1ov%OP5`Fl#H|BI~>DH?M3n3tv5yVN1C{tINVSXA&YLm?HXY zZDd^FK_>IC{?XY2JT_IR`QXqy)8w6{za!C5bovWr@h>{9>}(dkO7lID`*|D;kApz0 z{NdqzeQr;_001Ig8?VnhShdUC+7*g>t-PN?KZnjA9vyP2T1GkHsoH1-U~-B9fwCpT zN|9P4<~A#;(;NLTtGe>4a^^+H_bfagUltxah12ejvV@=1 zcCaGdgWMHYW!G?8EoGZYIy$KU(jOrWptwbW&(V57XI1YQXVkaCQ)moUE;z|{J{3I} z`^K%3!4%nH=~P=bhA(>^{1d^{ua{9gF?qgdYs*o`O!+HY0L~-AO1NOO`Z!$i;aB4K zbV*wYELifH^tTT-Hi1p9wcB+Q5xSu(j%T`CsiGQHp&9|*YxCCrNyV-O_mLHjLU;B9 z=~fzlZFwy^qE_|`rRh4Cy6{wR>iQ|}CGzl})1AD5cBJ-V@5x>z>D|DxTJ>*<;0vZ0 z;}hGsp7Jc-Y6k?-LimTFbbNR(4oJXa$DOl_7V)&l;v+@opP~Ns_FbtILXW%%0Y_`O zTFG){1{YNLiN1w|mpQS6atb2`|43FU;}+lO^2CR6{NlKSrSzu*%($DDY*>}DOFjGH zKFTGX;B+b)YzA6!aWP|KxA5@u@bK7g;ju76*YE#Rl%v;5C>oDL?OTTjS^jqAb)~A@ z18nvM9;X^)3|Y~SM1)p!<5`GeCJzV})yb?pfLE-sLzv zRo(+^*V^l4ME7yaHQzg-fZ_B83`Bs!ev+3Vq$EJlN+Pe3Ngw|l=T+>L(R`gg`z-e4 z1XFwoj%EqOi)Q1fQ4<<-60L<%6)~kT#cv%uisvxvE@wHZn1g*i`%zyGWY|I>+~#9; z2k)Ky({tR31X=A7sY13;q4HNf;B=M-VZKdmbNTyX?>g>_y+MR((We5F!`3V_FPQjy z-r*L+DSnH5i7fQ}OCb#Dt)g|kxf3&2as8!Z(@N^p#pA}MJ4G*$hyR>V<1ri0cgN;k zT6S9azZhPHi1X(Smzl@Qu`G#0uwI+NJ_42PvmJdZ^(j{#mX&}MhZUCvg*Wi~S`xC7 z&;|bt_wTl+q<^}tgV{V2?-amgk+NI|HdC)05&`9??|jl+PFUet1|s<+BcS$87$>l^ zxMPFvr(;FwGutiOV50eTQ}b<2-n&xo|6K+sDBR1Z^Bfhl=A!a4&!?#(Lk$GIy9WnE z`I&*SHJWl8Np=I6{GYiZIN4l*VjjCs`ESwgI0&LOQ<(!#9qh9>3F+onYSRXFxR+HT zl}O}db2Q3%Enq)7C%I+V1gmNv7aZvK(x6);W*68htE>k&BL+~rhx4M;1z_=3g?Ox% zNW?pKNDW+yXsFgWEP>r(zaqti6Na%=R{Nxst2eDu8kky+Q0}IC(arfrHUqF9E+A;3 zUm_J+PShqm>vq<8I~j@*6#1}Y; z9gkDj8L+7sq1qhm&$fP$o224v%=OqfgKO)aXnM z!?*;=!j-Zxmhlpn!si9K%Ur&(4KMW7vJ%TN?c{Y=dnn?dhaGW{aB@kcr2Gsb38HG~ zDahjxN||jwJ|24m)j%Ks4mw@(OkPVJ$x6XtJ~-MY84e{a^xznUDcNt2lXSua6p&B* zDc>B8(pqJB^{K_{uQTJqQf1WfHpjKSIo(@OY9y%S)C@(+}Y@1Om)t z)2XW>PHU{`)%KCT+AsUMgp*8DO(z2CL%8&Bf2yt-4(+^(| zk=Sicy%?$6;2NEanT3+VXk)cD&k@$%9o z=`F^G<1AL*d=5>m!VC#SNq!|nPSs&w?%5iuNKq=uL`7pGeYD{b{yh;K9EThnM^tQY zUyy(OcX^|5hn@b7Y0Vgm@tbKq<5Qr}7bBg2zS!H|TYXlLMD*l~`dU}n#>1{ylKcFx zZUIdizoDj5DV^7BD*2inJW16uFn`S3K?_|2la6Ij80*!!3KSd0r2n{3XokQ;=l3fT z^Kw&y%6lb(^q-_)Vp;Gt4z-zS^r2eRZsp0#c#q3UZh9-r?*}Ld3EYYOyqeu$(FO>UD7`;w zV$px0{4dssL+gZGw_H7SS-HrCy1@NYYGn?bwI9dS=b{4CI1YrF3v&YG!zZgGO)QG~ z%8pymdh?Q%>0eLHY8DO8(s$dxPW(u?m#%9-*z@WcxKLNStk@HcYv2rlP> zanKJvJ!ANyUP@v1>Cs{{+pAkNYW1H+-}QUWo6VM`{4OSk`#8si#@?JRCY&kDSRc-$ zi@x33wiBj~fOxIIQ&b{E(P^zpQsVu08k@4d$W90=CaYrad}y=)Wfv%ZLISeBN9q-j z{?nuow^^Z}_+@Eyn~YhvDA6&{MlEVIBurHl2;;}RG}pSvAqqjuP?De5AsAu);8_zI zkZU;*cycFk*M*9Doa}HQh~Vu^#SKjI_~)Z-Zf#G+vy0`F)zWE?g9xDi3Q}eDp21D) z`crzOb~;gxoIJUgC%sa`p*z4NZ_1~3M4NG0=Vyy-r za@y;-Zv-6(AU z_?^~VNWyt8yT!8d#(K{{?86-vWC$#jeQPd<&ZQAK*sdb3Et!&?nZG-+$@T095)&;B zDf#)(@E>Ql|C{6|@+hV1I8XIcN7n#JDJQ{XjMgm@O@bM|S=|)4L;R&m%-R&^$!>Ip z^^ZnJVZ8os6Z_S(izhWKj1Y%_J%cdI%1=lL+_c@-qV2WT6>Or888u2s9&|mBH~-)l zO2eIE4dn4ZCDdYaBK(@#c2zT8nnb3v9h?kX>w-uN3`-Od@I_Fx1;H@XKoL|=VZ_x zrtWk$1NjlXnXw;*Rv_ir{F^mxE(vutQbSudMs%avlzYq8(VQY$7Yb7iGWrj3dFRTHO%3a$car?FU>(_x zEp{IsKd;vio#Qn2+^@||y(;`pK4EzD{uhc{U-&PS?(G84<3^O#O*dk99STQR9zYqI zhwvPo1*_G#=eCF1@RJ69BzEP-j|X@oSdTrmbXdzBo@p^b1u{3xS=akS$Lo1QjKL?= zQR}$bV>RyBBNdUn7@3)@Qp3J9F{B>{5zWoz`rka&^YIJg!AXY~(-xzHd@5Z|m}IjB z<)jV!Z&K}!X;Krj(<)4-4-4SIEn-S!v7ohxQQ ztpf0D=@0=#M8z~1L_^U&7Ri;528f8rh=(F)p5dgrbM@)3vi{q?;mEO;8zsV@BZj|~ z2$w5^=c`w%MMLhlIMd zQD1ES(>x8oOLkw!}GzfhhHm?s7A5%P@}o8YMhQ_xKV#eHZb_0e8Kjip|MT<_OW3BTkeaX7>G6Cc4y zSUDJ_Rh9?o*6h!)INB7bFWd(2km|Fg{Lmt(mU z?P7I;p<_{utYJ;&@`~wtsi{`z?m$hg}qqUjvv z%Z`>O8or+uqLO#osyT1$hUN)-EC+O zhJGyLxpbVg5z6SJo$6z#M(5kWEL(4B{q*$rZr}M@NmY_)7dAUJNtn|`RAa;j zA+jB>us&`w&qaRY*8}x!C|*o0^GjY?(b*M>0c>} zsmD|u-P~w!R;Bv>WcCahk#_0uTtXK&HUtWhQo?v1Suy?I;OL#M~FFv(b+xFoOvn`&MV=!S04!O8Pt z40)gfiz*|+k?5|3%q@v`3~;{0;%KTUevT_m7l`5~m2wD!>F6zx4<)}!w5C&+^5?#8 z!PRxqB4!*B;!msAaMR?osNXCMt>EOnX=0~Pz|)g}Pe?Mvy9EoG|~>8v)Y>w+9d{^qQfJ>pW^Kx~61jMh{1x~E}wXCBGQ z)P;=BU|d0VX23%BH^FECUw@<}XJ;ZhqiokGI|QRwp{%P#{5r@ zL0_r0mm2Q}3WlRBeo5`gc&5>e|aJ+hvn-QHp$SF zylrYGUB5^pzW17oJ2GXk%t>9`tk(Wy>>(kqgIo6YeBmNsT+#zc2agcZKz23h1x(|E z_b^l!2^c2$MxCAFU>>JTNdJGv;@;uS1!Wy6r^*<2CUx?Uschy z1kH-f7a6jsuPBH}%J>tz+&8EN(50x7W&ryZd9q~BH})VYD^GBwD!OU6*s+GaKA^tt@Ml zv5;}d*U-E-;+tYcT-dGIh5>K`3S%ma;5ebMYerp(H>>y_k0vE~zf z`GCV*Tb}L|tW-P~E)~O59OloD#KDGinlrS)$JuG9`S9~m%XNQ8x|T=h;{9USHRncG z6QC}z$~MuR3_f67N~p!ISURzF^C>OQ-`1qH?1SXgi}wsNYombZuL`4{L?JzxGJ+-K zBIF~Oq$SvA{Qc{Z{HYj$Q@UIV8)#VJ*+jUb#;Kj)_Cz0upv6(e+q+dN9USVS{>mea zy#aL_BfT{{q0x+pLNj*xpfA$4ZqOcNK$~M*`!ct}g2nP8D1xo_kH9XZwtw!*qBGRA z&9Bvt^nh6z3O{|>Wk7qP5%4NTZor|t@3@nVlBO?HJB!P?N<8nC2IZEz*!i|)eMnq# z>=73WVJ${>Rzf)qwBAC*n;=4l<2cw&%j5-1({{K7=5oQ@2+sT9rlPY;=E zRfnyW!nSGeAjg{w+6rpUoOQCNENoTl-kRxh~WlC-jm(#&{T?)2ux*} z5SHVvR5a7*luuTVs>l_2`0=`4bjq5g4LAN5yarnuuk*kH^6&&c)qOwV_HvfoFL`5c zVs{emhJCzKR~XjI{o9=H(#2!PF_lM*!2C(sp&Ut+?3NWTEBXEg^Y4G4-{q4S)i`nx z;y+Rsu^V%?C(l&P1t@(Q>VZ^|P`6~kQuq}my_}vVAzynxeVGgaP|vIK4psHiJ_phv z{qV}Au}N*X;t=N;c$a~}oU+AtTF=VtTf{DClX6jWTYEc2Mp2eZs^_WiEK5|%U*{XS}`J2v^C8o0Oy@@noo_f<5C2jdd!|WSR&&CqE`K0>N?0xQ$F?MTE|!s zE#(~Ro));4Uf%{eta^To7|eXiP1DwhF)s5c*VPR-SbGOG_h&!x*0SBg=f`lI_byMG zGer;LoZL5oyCKr%1CkQD6J}rOZkYRIoNs=9cUqc!7!T|S^6&k_C!0Fic0;LD+kOxl zT(D49Tt zI^JQ6D7K)akCUK%a29LG5qA%Ecy}M99X{jC9@zSM8z5r#{z>1)s@bOV(3fUdY0mpjMS?6Nn)QVG>me05*Z-w2E%jw+n=_Wl65^; z-CfasDMvIp?X`I5dOI^}5+u5w#o0Z@Y!0xfEKTjYlo@#_`ui`hhz4^eTZcr>;l}jl z!M$AY4-~E{NHOgN9KH9&<;T~L2cous7NyGM>h-DmDFL{d+r$1sX#|)cg=uLJUv|5; zAQzs%%?_2J$?t?jMa1j|N{UIulxMUEan@HPpI2mV!dD+T5Gb=l3JWr;EIL1yl}2o| z?`HBACv61Sq(Bdo1eL1hqTI94E9jHvQ=rP{4Imt5nx79L-OV2M~012a?ORT9b zUjWh#U$+4?>EZ9sDoykT_Mb$3XQY>8O*RY=4{PWfdwLBBDWWM32VqI4%}nYQ?l^vz zBbhWDSN20mLoR77L_5-0;JhL~2aIbFuH6+w{=6eAJ zH9dA`8*-UCWoB(%^>_OmmDOcvcNiNMo~=p*d0H4>`~L4D>b-9O`k z+SxLJ^8u$F#Bvc*?3k5PDXKD<8$3)!)%OHD#&;GtLqA~g(I;OF2(%hB_)fK_f<)4G z&DHcj9?vhtDv#R)FE_S6Y1?HeBgu*j88m01pmL`kT1TEUmB8 z73e<4hHq(8f`ixC?QsnXdw4XgwK}r62kst0X-TxH?1>LxgZ!5E`aRd^w9c2;t5u*U3jvpcA3 z`Lbi(C{QcSR9&){YH{gQZy1wSP5G6^5%nTNr^f1P_;PcrB4k*%(iJ~DL`2!&TYtFP zd>kmsi7#yi0hz`CRl`n42_$@3N^MHPNad&0Ye(+f+0VsI<*ww;DEqVto=8Cuad z$|L*TZPcp24?_NpgI?E5ETa0kTWodJi^$u?dVihA=oWY?u`ljsxf zWUoNGsulmm#k8J1mnCAnm2_^#+o^TAmx+TL0=W%g*f#AydvnCbwkwBR)2dyi&E}S1 z&IpYV^hbV4_240qOJ4#(LZm|ai6x%G?TOEgAIAt5ON+R-%oO98#UQSPvCf**R>qp! z#y1Lt{BY3dg3+l=<@#5ADOlk4Z**R%8$EsH!6tV5PmgW%kYtlDB+Z;&N>+Y}K&_U2 zGOn+W`eRA_UPr1S4!$>A3CX$fV-5aciSH`3=%2DIE47`QW%F4EIR+6zHtnd4z33VZ zI!e;QvVtC?7uhApj&Od8a3qP-yG5h>I5Ztb#VT7HY&Pt!uIP6gZl2$twxQ-mK?G`SxX2Rla)q;yM-z%JVuf zaZMK+?_EhE&;26ds7ZuD)I;l2x3rG6E!&6DR*%2Q<1R}j)A?^Y6w-aO=I;=8{68_xPT@rNXEQ|di$4=DG~zj z<#wuGb`-R9ynZ;sB3owf(5gBjx_!G@s$a7cRkDL(Pi36ln?tDhl}4_d>s|)>xYe(U zf5`#bT)|Gy%4)(lTOLYgE$}%QaVHn+J&R&DiU7M;bF!8(At?g?cqy}X&I3%+Jr!Y}qko45VMK)L0 zoxfJ)YL%ww8^vWOTGvy*`;XFfVRNcp;$3Zv(a@N7b2$8h`~iItnonl0_!&l>72`_b zRRVHYQxFL<$cZ^EiAmgvYvuB(20UJ!i4X;(s7fdo@QVu?Z$n1&GV0B#C_AkY z6n;)VpxS)^REX&bIMg$o=X#ISrY3-$U00M}t>F57lSmN(^kBA-%eLYEfikgs>q1PZTH6pfILy z5ihJfif)_Z_y}LBoyIz&CT3_n@6`ZNmglcnC}xx28zm_EwQIk5lpnj>$r)5Uf{o{k{EY56 zD|~f5zS&7`;~P{#$oh!2>v$n0_6Bq?7?%JYE>0Y8CG>vm&j#Q(sGnIhMU%im9)|1! z8J*zFo*yV9gD=ZP@#P427plQ8nFWAi4VXK-G^rGO$Gz8`Wq=}%&#i&$HTLU8##I+m zUD*yiO7vQr6g*JXlqk@%?dfkb!9sxy30riyJL24HGZ)t3rg}O~WNAQn_Fm9=1#UzS zZIM~N9d!<8^vtCtSG{G3<$odpd~*5u)q$GbQn>V_fHq&?JTI6epmah26#E|8J(aOr zCya<~J+{y;)Vv@-1{(2ZWN=>#9V`p)n;AqB%brkh+BmXm@{`UWxpCASd8c=3D!MFF z4|+x`tcyEG1@C)Ybf$KpnX&w-=dTkMbn*b!JgyC|q^pu7sPnI({=i$DXPhSM5+dlO zI~-5U-Nm)O)Dh3tz$aD^4oHdEm8J?B5<(ODoGWi49u743Tat=99mwpA+Kr&K^kxIByB()f4oS$A+H3xJXzSf$(R^b28+ONI5+GY zZYN>eLLG8|+4Q{abtW<#_-MvzFvHPe?)D1WCy^wTQniZZ*|PfFyQXppc(4bvxQyv6 zBfh`kT+gD(h6c1!SkkV$)ptJ9+I<`VN`JgAM(sfD$I4i@D!|B@cEVGdop3UE#Kc#6 zh|=`4?|_}#K;TLNr0(y1X)(_xO`2)qJfGMuFeot%YcFj9i>!q`@N-dhwlyCjJg$t_L5r+pm?sZ|M%@=E-TSz(*9bL^T z&eX#nD9PG)AA}nBAzL&B(tGWsDk@_zr};71dco#}4ihKV50nE}WFPUWh5eUCq#)|| zg}G>J#Y2R@_0u27u!aX!h5)S(4+5=)WF*0i-T5|mzt-?#i*sqEW*zy0NkFpJm4udU zn{0+h*h25G10iLgj3bR5`D0j5C8VkyDkEGvMABq1W~8NmY8VUPy~JKll58Ef&ulH&h07^W@z)TJF=-3#Ik;gI zIdXHb+2yo4J3GY_0QI3){>lXD#vy+(wuG~}o5=)esaX;ab7IzfnC;~2wo-rM$O-N- zT%3O2F(aW=@(l8*5122h-cB@KQ+Fwv!?vYX58I#LpLEZz#x{SRWKsVZEFaU6$n()| zS={QmvUK)?h~4?t#GC`EOjAx^fWS~cA+Mi&Si=3^kgjL3>G;9Bx649`NJN-)>?Rel zr@;24K7_ktJ*i7Wag^AxebSsED{&at~qwan+a6XPvmNnmuCb+)WDOCiLrs!uazc=S5O3$Z zaXhmJdULGcjgQUQ8|6x@rLHQDH>bT?g`pzt-$jzlxn3Z9C9d0kZ9C5Gdf2wjl70O4 zNZvlW$LFqZnY*Nrp*2~si#@MQ`giigW8Q68-Ybjf!8nKTv0v13LT*vzW@LtTn<@^! zxTijrhM-+zl%QeKBqOgYz6TB8+bu5Ha?bhRaVDU%U;9e?n1X7lJ~-XpDf$39Z>Z4_ zQxF>D&F6ruI15$ht79tp!lwdUwcRFQZ0d#kLr!wot{R?7C%7{ry+*hjaEu8 zeNSRU+|JJ@Qu#c~n=Xr!i6m=tsNvz^gk*Kq4>`N{m3YkJhuM}2O?*Hg zWhk_#CQF5vRrgX2O7$OBYmbHwr?t+%dknD3U6O_W+*Z={>gw~W1Tayj4-fQ#TfVfs zKWzxEkJqz?r^(*j3>GP0&!grxn@1SkfJjO(xtkGLPWBdEU>!o;k*<6I6@ie`gdZp; zvPXlvLLbd5n~)Ek&UOUyq3d5oLw4hw`HR2*Kw-8>9+8;;f#SQoi!#pkZ>?7nn&JLSVU4RbKz5hZfda*4FJfl^$zh7?z;h4K7*jHQnP2y4ofl*cnY!KsLRHbhK+y77yA_rIWx6mkp$qaZ`eZyCR2VVCjKxa zVbkGt3HS?j@srecT~H678ecJGG!ZTH6Ro6lh=h8WB|xzvCs>5wYI^Q>xSx46A0xd- zSv772%b0OWVVSB@j+fj{EfI#??%#wieMlNn09ZE9=qh<`ZPte;6hJJ@H?nhjs}MlD z;YA5{m07}ubzhV3hn}mRmw?V2Xapa-ck7_Qq9Q0-fp^Z};DZ2g=moOx zNa-k}v*SDh*>7+>DC9zt#m82Pl#cRwY@Z=t-R7QuYW(X2y1ABH)N7%WOM19pB0rjp z#xViQ&jv)37|+Y-JswgLyx$~_1Bj71R+YYmCILm4uF9Z;ki+0nR16q@Vf;L!>+oWj zN@~1YNBh`y!|?VpLILb%Q8d9ZXu;?`yu#1_wfqN4>7ADVjpAr_v;eIqsT^fgOKF%1 zv2@r4T)+3^P=@&D1t(U`kRg!DWz8#W)gr}V*w_|xt1+2QAur*<_GO_FlP%E?1=)B9 zv#Vgyy?T=DZeKSanY|+1QJi`G{#VmbZuM=13Po2-FF-UbTeZ)Vw2UX1LP7NfB6zbo zD>fS^zKP@!bBSyka=QJUACrME0TLYCy>0RlF;QvQYv!eJ`vg7TzRtTqUp1qQOziSO z5EXFTR2=V(H#t=l^<_Xqe}8{Zx8Iar&uS?DbTYAM{OM$3Hmv!VlZpLLMkJ(@Nq`Ox z4{DmvvI_aKj@7aCvL@76=OHrmSLg+6+`X_%IIPvxKi)mEg?s3YM9jNrN^VX;mar2^ z>L&*Bl~|!u%#~i0JD`4^Z}OYW%+Xd6?2px@hoHS>%I(#QmRzc1J(9fp+s0c5%hrm^ zmvF=mi=shU_~dZ*O(aXg9cv-)YH~y4aZFA^f`nCSZF&AJIvVe@T?s{E&#URCv8mJb z#s=mS5qf0whUB8FJ-EmIFD{|3jvF`v920J>-vv?#$9JIbf*)J#F# zkcc;k?nLCfYGdqUCV3&@Ky2`^MHioOE zS}K@ke5wUCr#(+k-;A5do!rMJArY=rcmU>w5i{?{UNVl$)6WN*#05Q4z{JnlFB@_g`>PgBwbm*tugR zERccLYNRT;Ow`W}4CjdLEeXf`T|Xz(Yp=O3{~3 zm?$O0XWe3YI#6B$0uq&M>KNS}$!qw$0Z=zc!CHUGH>n|ZR=cl+jLiCVX9juML8ISsmM4k zmpzxOy*O93eU;qc(tcL&bna8bv9A0aZz7M`;dYL*@Q0}U*TGqeL)nW3YXT}7B+sZF z(mHPrYG&Qsg2zX@=4$0Z%w7!uBL9u^Q!=mGmNyj~ac|`ktP+Q>dYKfC2YPuct5uC_ zyA2VhRq-2ClmehM**FbMI=R)8wx+fpJM5m_!guo>54qX*8=5Zj=d${z7vf~uhUmn04pS#_@PwUO{T`-lDn01bK%oE5)DEU}*4>}-8rg?Hf@N9v>9mA5jgT!#i*^8&0asqr&3 z&$GMOk2Br_piNih#fv`~d9uerb$ucVNeyb0Dv_?7qf9(N0i{#GpeVKNH*soSPdTX{ zD0`p8&-<}mX)MYH6-7q3L3+FP_w1o|U&k83COO6OS73BYIji<01&^UI_=!UlpR$_y zH|j!$mJzZL`lm1iTktbQNsM=Di82{cenbl48L%_aX}zXGkB^-?$I#xs$crRRUcbcu zGMj)=eN4=jX%WggZ_Q?^gZ5eO*Ae+<@a31|^)rgUHg6}iV^G*BAcI&ELg zvj1FJPsXLuWmJ~;d^Hulv_!WCX{{L7r>{%45ed_o`ZCtlc*3dflsw z`B(Df`Mk%l$>Uag5|}D8Fbl#|VXIZ@e*ro!sD6DLFnESNryJ;HAz>pe`m&~sQX(xA z8?QEH6Wi^{zYu;3T=YkddyIvRd*&lW3=rPHyTjtcMZjVK?=+!!z<&7T+M;tZ)rZDJ ze6r5fyt(-7x|ycHB|7kyx)+D;uTY$}j!h0z!Cx$qgN89*5{Jz(>(UMBj^|5yZBB1! z!C4t4O5r9w)g#L#-P(*npPNe_01`A4z$B~w!ukt1&uGi0DR)1V5ewZJ;1 zsqoaYvTR0M{sdz|TfM%1#h}(hC{g)0lszGG|5N2(Co|{o*5ESU#v#h*pFT*r zE4feDX^58VhEJ7wPiCwIoOIe)<4!=13ndY0g-JW|(RoT{^W0`ngST;m{(|^k7A)FrZH`5xH>d_YztD5KO`2`g@=Ce%bqtWTuk6*MQi;$CdI5|U zSNFsj_=#S&LFS(Z8t^fW!#zyM+P=bV{7We(rSU5(dP`6I71WV>JDQq^PJ zF8@U{sxJSV%I|b80!~g`v^|_?bZzYBz0{=&W+iPlbwy)Z zTf$EK(!fE9M2Mw;;jsiHYn*F=+Z2L1OGWzo{NJrt1Jdm6``Jq6ouVvp?eXzzJs4>duoYU(XmKmMYyDdgNmM~17x#!`Ta%ANNF>9 zU3^wythl~mEv(jOM8t((>C($vJXm8!i}FLpG(@{!QblNc-}vD9OKtp`@jDED{^Wou zuI6EI`C%-@sq+zbVE1los?y7Jz(#=h=Fx%L!~jokRjr$wG#~oMpHTRV+nTd%dZ4Kv zD4Y+MWJlTfIxVXpE^D$M`2FP9x)EuFa;E{H?ltL)Y2ic$2OCIsFawj5X~?^5t?_8> zh!l;d?GJmZv-t2`0PmWv?D^j&%UW7>CZxND)4!h3satm20OJitdF5JZJakWz-x_Bb z?Pqcy=Y-CHC`n=X&_aO4Fg__`5T3;+hU~GpO$Cml3Vf`~$ugAQVxRNgXGO-Xn&$<{ z&6OuIi2VlIoyaqHcN7b>D|7ypu+PKKG3upyXV65DF>0h8Y;9eBpiF7kKTNdWAB(SM z)M{hR-C$%A)y7lHtZ+yFY=UPdS@JL)=db3WpdjD8mgP!YlKD9Jxs?w?C7WS^UPgd*i<1#h z$1uA}g2?Txhc;SJdSC&dZ6~(OIjU6LNk&&*lNN6r2hYpg^mn}L`9J+%$^~_K?ftMB z7ZWmz;#~@N4|_lIDahpAH%_&VG=npH{ObP#RB#k1;e^`_A_}skJeWjuYA28jTMPCF zNeO%&l6&?I{j66JP>P0+Ka z_uJERyG=jXJuZ!rA1M22oQV5_9E@7`k)BL^7lgEYDV4S4wkd+6Zbp`S!S!aJEd&LV zTbEI*gsxW)%B_TbykUiLnidDY;%WVXim2##O~g=Qq|Tg0%eGJE zdi#mf%M(0_ieeNJXX#J-1qRv7n+V*2U@^41xg-uBo9^na_)h5SSw%qbBFSinx|T|y zg8}mk~9`Qw2!_vLe=5UPD5_cCs@m=0 z-tFbC)Pf>%TeYBH029`&kBl>`DhPAIatTrC?8t+KjODkhKq2C<1Jnx3gxMX#>*13~ zig1NmH;n|u&3%^gb{FyTm-cZY0;5%{xS33A9Fxj!Le2O{_xfr?A%gs7o78WUF27=< z*EJ%2Q@XmvFMU%oY*@Ra7aWc}Z{wv>be4kar8U)tI)~&hm5>;{&nYns%2_IVE9#(i* z9<{y;#7^8!IH8C;)OS@oAZ2`U1^B ztUT}*f;4zlx{wo)&^nH-V}5hsiw4JKI=FqKSbwrmXzTJW(!<#Q%EZ5tn?`&Z&RbKV zdr-J0T_RWh78gkYFMs;O+;^2kku(epe{AZtJ?7-x4M&&8iRvvXk?&^UCv90c3>M~L zp{)O}B*?e?cZRK^Gplp2;_=^u%jsZGvBcDs3ji<2rs7fScHVO)rW&9-mtSvaf zXeyncSQF9nCS!fqIL;3=972w zA*`d__HN$dfM!5h1|A?3kJt`RA29%bVazCei^N54Z6#N?DJMS=aFcrj_`vSEIhQi> zEw9Dgwcn_?H!V`Wl?NcV?>|kKt zkj92Z%an$dzQWYXAOQSs$Mrm#+U;O4wY`J9bk$t0-GpDrMmB!=2Ib=2QNx7kB8ZfE z=R~a14c}zMi4BCiIX?Bn{nv3<<ru+t_1Y#90RcfLl#W>cPHkT zIo1NU%|21{I-GCcO=#&1YnIkV zDn>W#jx?ZVN4kiAqKSjRIC(;pJ9=J+Y!3!MFp1cH!SM?S^4GS^reejt(s%E@|av3*2(FmT|)~_e}E+f388C~z1MIJcZ zV+8I;eU~@I>57atMgKbW zg^RiRsPSq4lu1FCbc2^^MXi9L8fFPBKf-&>7p(F$xI#a!>!4&Tx1ga%I)E3i zzyN2XW`%=|b8h^)eeD{KWFBu}j>^3$qhpu~_p*kDtYZMiD{%}n5~v}@it#N@5=B*x zawWMm#X*&(0>4L;CSa#MPUuXL&Stb;Rr_8l+a_&VzP!G-BvpYWOe9bdRy8-0RKk+&(WyIfkS! za}V(cCv!ef@3LfWqstGGQdhk>|1(pw?=xSQQHCZ7_>T=Q*vLrqS6e=wc!kUJJ>3emE)I zGqF599czen5&ehHl(|(k#TcZR(JLp&AWizuA7}q zTP=uQQscZ4)?>GH%nri&-NS7(n?D}ASxprZV)X;x2{U{K7fwq!)v2b39$&F6b%0=)YYcH^g7ld#}#(p zBv^BgvvN(Uv=j9Z(uM1M#R45qx6jO~v-+|%?V(Grd2323O(9s;lI{v13A{|gZ4q5c zhlbQg_oTG4%S=K{8-yL|A@V`v!Cy1`4kGy(X%QiIKzzMMd4qmXXha-HNQtg0qCiS8>~ zy(k@a&LA)kjNlgXp{`8$G}ms~^F~+ouPeBAMxWEc@%=PC!X;UV|AnoFS{_VVO@00a z{0uLRo}_>wRGwU=_TAh;P|bYrmqee{y1QINWu6rus*WE#Tg3<^87;k!#;bb`@9!eV z(NPi`%?>i;B9bX+n$lHGGU=G`qB5!|u8x_&KA+cd?w&u*{HNu2vW_9&u*%Ce zdLXmVOaRaONw9=`&^bl~(w#=o`aVXQ8BqEFl*98?XKFs6gKZ<^yyE%v^uoACXVNFB z*xfMc(i0*{W8uY2I`fDKaopQ~&8(o_NM2Q;&v&Rz_0CAZl<|-H zff5ln0HE>+6Jj)P*y`O=0Hl%kk4PUpVn4QXP{8G1HzKTmfkGIvecEo z`-sQm*wylhWoVDY4EoahpO^MCC2I*G&l+0KmxKU)xaR}q$dU9RX6i$kgh=jlF?c3n zI4*8{>PLnNO2T#z z;%)rp9={5f5YPEEcwHA#*1jiu{t0w2=#UL7>|P5&1?O=azg>fIuqJiXL%`mwi9^{2JhHP90;mx(iGWT(ZBTTTzS-!5v+WmVQ)3C{l z8|u@@ecdBuC*EkMT$`01o-vh3;vv}Wiw`Il-KUW08S26xC_9CJ{6NWhA^6V#x9>QF z+_vm4H7gtuDUtLT_FV=uJ=AVLCvNykZd|%Ne_rJ3hJGV_fs{veRiRM7o`V#M?zLmQ zKvX3JrS8=pv@fcK3!vw`u>Q8rR!OC;{$X75AxiOK~(4^|n zSteFg7ITHc8=LwUWxnx6)T0c;9UTw|anZZEzUhM`v`}0OP|UaycKI0Iga0_pM|Z2^ zcH@%GNtLU+6*SQ#x_%*;vYC8gtqtFWASSiJu0N)*z34e1?SHQj^Ch-_g)1ZZyLz% zf;Dk{J6CApTkpSR-f>TPp?`E)7X78O%p9|cmJIM#Fh^?z=Q9WA+X7z&EuHv9U*>Wj zybJ@DZ+n21NVNXoEfN5`b?nWD`xH!?Xr8i96Yv!-tz)U3)ts)z1s8Ve=l&HK;-7l6 zx5$UjG98rz%(A2g1I(0+vBQaPKQI=TPO4d+LBwwxnq0JXywk)D&rcb+e3v}x`|ASl zd#phu-jVEW0Vw1~Y)U&$Gcy81Q$2$ECliil>b2+=R#RsI-J0=nWginaa{5{Gj7iWj zxn>S@vJ8|INU`pb7J4E>_&8&=9cY)h@l7m;Y<`_9`GF!CV1ggoyKH^jWa0Ohs>?H~ zzME_XVzSI`eX616wOh_GuM;d;v;0f4)1Xmtnc9e3G7Zkagm}b&?Bao4kkx2p9@lgA zQ@srI(7%n?ufzT)naIr*c+MqQh-84i6lBaB7bcD7`O+SLR6j-fj%QW zmn&OOZ+%)2R?0NUKL3ztNSJNXf~Y4BHYIxe#@2Qj**caZ(69 zJw~ibh-Y%yofw!7XWz`=%5u!)jY|C^yk35lFt*;X$j#{yH{W?QKfa#b#-W&&%q*Ha^#$Tk=60+!huYO4`uR~38@>57tF!- zU|gEuy9rDJCOZt zKxWgwZ_EEAiPyGZ4VawF5_K48R#*a*d=ap4%a;j88zWym7ThEe84bz_mYJV3$yv?U zDLTB>iabz;X?RPItg{Wl1!8%CDmJ zSO*U|9}(e*ht2L7Y9ilr=?k5c-;gvr6eWq)VcO%PPZ0(nTN49*5x1|oWm%0h^1-5O z>0Fa)@u`hdXje}V>eFJ3AzUK*wPd$2-gfSb1c-xD+0&3*zDyt0g)wM$NbVg$p*omt zCNP5Xn*x1!YZong!$Uz65>6opsUr?IaxPUNqw=ihd8z2#dfJ(Pn*UGJly_f1B{~#s z$|EsB@CYIUst%KqZ}L&Q(fgb@@wU72Z}m5Ct+;)yureBPtv=g7y8G|_JpRj?^ie97 zj}r8#A{H-#^@chH_?3Mv+16;_9O`V(V#A#Byz-9^UFT$*NppFEWU1Zr>&u=*MZeTNc<_6}`lrn0ar|*& zEaibobn?8K&FFy-rV2&XF%x|=kFk?tj=2CrhI-E7kMOD_NO>atPrD;FFbIEv`RCht z`Ds1?KTSQln%`)U5v_m2LR%yEq&mJ|H%{rM5Vr|%>%#U;dM)G9xZQij;Sa40MVlE^ z9~2Z`r-J#v>b(wILxYM+)q8=8rKJ-XqSU_g@}t&$|^C@K+7s>a2Imz#MSXt5M&#*D?|a z^J>ob4T~ok*(!#(M`b^G`Tat5s@Y^siIBcgQ)ICdjg1E;AzYD9E%9Pv>SY{ZQ?*x4eiMtN--(~FBl!r0_qA*5a z{u+CA-OCXdzac(7xalLpFd^Xb%2LQecwi%IBI@3uiWyEmqG~+I$zM8zGutLUUwyW> zvos;@5B8@2qUQ1VI$(t1aaCo4$@pS1_h9}6T_&}5auI&@4ZaG3 zJk3qEeG1f!f-6MyCRucx8~euZEYlT|EGv?F73?%H^?C%3Pe}|2_Xj^q9J+onlXsHk zi={Fak`PacA>b<)5sM#YtyWm2I~h`3$jTjNC9B|U&MExU!hdRlFp9z2@&)5673|M; zJ6>}+eU)Ux&t;RBDc>}#RP=sY|6p9H@QYD}^C3AVa(aJ(@3>CkU)PNbTR&9yg}_>@ z#7~WU?DLg#4Yd~(+MA5X=~c+^>(w%X&RvuZwSBo*WY;__x71I7PK@bP{k%sm;Uh$W zEGX#0CogIjq3WyUjoGfJs^GJOidkf*c?@Op)4y~e*Is7n6&+bKy5ml*(}eU^yB zSk_gMy_;y3@lv8sO^fsimB0t33Wb4BAIFC6xG>tC-n5$0TEonxFRDx01m4dW`J5QT zs!Svm<_+|QjmdkH)4jUy9r4DSDu7NxK7s-{P!)d3t2~Y&z{})RhGk<@!C_6iO z|8N#Wh~U`U5S6f&-&8TXeuU$hz$7e3=Y^a2tgHe8bP=vE1&g-Q>SDJJoysNMq16d*KG{|}QasPFQ^1{O zpUd3yp0-5p8H-zQ$Q@;gS{XL={AuYwG(&44lOb<_ z#U~IwI|X$;Lp%uG5#5O3k79aY+(06SF1vM-rLdMBWu?GBXbsE+; zj%0Ny9zoMNcf_9hY4gvNbsABrl`<|XRk*t@Mc6f@t*>E*z=%sazQbn5WF2Qv`q34) zg+fEZS~%V?%5WURx}wdh@6)5`s>mk;zdIdX$NjsE#-oM9%Vd_VeBN}7AMWG@VU~b^ zjlf$UTZ0#J2XtbAOwpi?c&TcfPI;R+SH@P%>Ng+F-H;B&i3eIXBAmjJzLSNx{fy7X zeIs?9iPBV+n37kuDaK4duwaKKjp;i4q_TD-ws;+Mz2LnYx1Qi6N z8IT&JkyN?{q#L9eVCaxWN{}A9l^D9aL%Lz;?jDeC{0@58^S;k>-|M&5^ZxgnF1*JM_sP~K5z^y#L@Gwj|Gb&~+XoXXnIgBq8d2Br z>t1d;rIHmJ_|(+ug?Wt$$WAImjzT#(ctoyh+U?p69LFsTshu;`R&Xv_a{7eaS&Nqr z#xO~Vzt}Z0{!sSjmpgw0#1-f|_b?C*f~3;=O@|mpMole!DAl77XBcwpt%=+{<4ca>hS0HI&zosa+OGMC-@XRzXZ^Q)U_2gv7xUi z_77Ook)?+CXV!m2vdXP!r?_`T{Xj{rKd-#Z`hmj5k>bWNMvC(AYD1ubE?X27?KmGd z*VeDeKV4R-$z$c-91)8$bNok6$R#WqHzpz^msT~XZKxbKUBz6~ic9q)Fa9F{n#wVT zvQxJK?{J*oObEe=jFp&)0J?}A{bHrQ_}f^toWj4D`Nt%_)duF!JZw&O<+Gmb`8 z+U;9!D@T)-c4Eb?lM=0YGOKV?=L7`<7f%zEH5_{E@HpJ5mx`#y*$Lg) zqf4(aCWt?Rk0;AFe43jMYotxWZ{^>n{FDdGO=5Q1qVLLcDPPuJnPBrwD(e8QL?^SG zZc+mLfe)>l7-W7O^F8Itda5yn*y-msL!ue_U*)g7SVi%<4l0+&u zY|%Ygo4bb%KbeXa;RvC-vU33SIoyv&ATkbUgXA5&$d`H-e{<_^rgzWdHzOm?6skeq zb%9g+OAXC#FO3FR~S=39a3d)|X9jU-*O?GP3KprXOr~w^=GB z(Ts_emY%WT)?gM)sZZ8>ZZ`;7=G7odq&IB)B?`p=xGA5%mQ~TZAmiAIJNDK6Y3<=u z-Hd6Zt8@C%axitZ9@QFJ34eyKsFoi8&L}vn|EH!C;04n0w;T&1OZ+^nb5JHtKYW~M5Wwhz6sh6Tt zi*muhZHLvlS3+QOPh;Ph^7ayr3@$-fB{_xF)b@JIt1b;!daLjI;aZ@*?}&K?#T(+b z*fEZ(xHTU|MI%L)d_%<#f{%Z>{df3)MrGN{%mN3@eL^{&Hp^NL5}1{DP6QKI%c?%~ zS(DR~zLx3&YOGmfa9Z-TB{@^i;o*VE#oog^IDga#)8GiSPKogLSTY0A?psqCdV=|? zZ7ElU<_B`8=U-ma2VQZD_4E$}I;*%Mh}@T6O*X=|sroZM5wB>ylz#~Lj&keN$$)#= zj&NN4a&OrJ4-#^4=*ZRN_qu--fm-`(r0^>tnNY-$HZ*pqk!YKoXQvyYB z@Hfi|Q}iZqZgFN`GF3!%Tk3Lbi3#Km6haw6AGByEasS-o4|o45aXkfTPk_MU)$^-M z%i*AONhHQ3MFJUUL?Jg?hFqx@Cx}QTCue!}gloNGL3D(n2bZq$IyICz2xkBt)L7SY zd<_q0>NOq71lo7$Y)=^a(wBa^pVS{AiZ3*pHY05RRye@BV&71Zm7O1KAGOiv4_+lp zn-ulYi?f4O-hDxDirH*MTRA*_%q^}p7ma(@&P9j}7OMSvY(^F+R0ZS(s`q!ft|eeO z{Zm1Z*KccS2UE}+8m1i{HGzg+KVQYFq%XqQ*X%H2tsmNS&_tYsan_b-{so|- z1gZfa#FZ4BQ>6D&^k}7+%qA{S&JoS(=%3jMGY^Pg0%)E*6&GE2*~yRn3^d%c?4S6q zt!f^ws9M^y=^wS*^ltUdZ_fQ)=gFuZ(xn(@+LpV_1C5JJ(E8?Eno}FCDal|P8L%^7 zzf)aJ+Y>NIl`0|C;nzojo22QI@)`Y)LgOOYQR-No71&*C)Y3|&McR&6vK=p%=7%9n z-UHmu1Ok#?K$Vgptu^W7@C@I0O;IQx5bgYY(?}X2=Iw1m9@pGf zuUp*E^iDf%&nfIltC8d;8Wz+PYFmOCJy6DZY4NPQ{0)#aodMnMA>~gj`-@6d~8M1l= z2UP$)^~hNvk(k1QnlRLjxVI@$M&rBD=^u`!m5Ay)=c^;q36dj~M5_%zfN8k^Ob#R3 z769(w`uF?ApKuY%UvQDmUvLqe(rtis6n!zT#Tff4J9y2zI`gT*E+ae~Jc<>5NPgeu z=e?bHqPbMkU+h2|KTzJ{NAhn^6%3jctLrB%XII?n&9(^;s?}Q3Q9M0FlK#1jl&6zv zKr8vVwIsP^;0mSzwOX7)Gdd9dXa)OJFQWZv7uxCd-(337JSAF!Je~O83Ip32LW?1R zdUy>TL}~$0%3;N>B)243D!&mz;(p+0>J291u{XKPR(}0fNbTZ`;~MT(er2k9aP?x) zO`y9Wa(j+N4v9sR3+(CXX>@7)y)ICc6KtdvW4Gh8pM56Jn-DIXX*BqE&*8TFD!4t|o2LsVrB>W1=sb*%lWlGZt7CjSGDJ-{rkMgi`{K<81 zJtVPXErh}*j$oHxG&)OVvSAao?vLz{8x_o4eOpb4oOG>AJF5VFS@ls!H*brTvjOLn zsaM=)+S3iC$Cr8zt3VUx>7khUQvCvURp#K<6Z;r2-(Sr9T@qEk)Lq!l-BK077j0}9 zvldsEIdR+jvkSGfm1#l)Wn3~_lm_&3Hm8jN$1U1rW}94XNakY#Rep9!3}^yrJfp-9 zlzZlo=mL^a;>-!wAig#QtL-lcJt>Pt@xC2=W}V|ylYE#0H**G--|nL#ZUXojp6czv zM1lHVD{gio-?zMV4T$!)$5}81HMR-{>ZU_eDXSL7tiU6a2n+n?7^v*}vb5~7e)PfTq?^*{Mg4h4Vlp+G_; z`g@^_o-Vb$866E~=OH0lQsh6kiEi__5nzBEwN>*n97K=(o)3c{-SpQM4$#l8_lG^R z!uqR-l_aVBIz_Z#`ko7t;?cp_9IA@&rVuBBO0yX+HQVocnznN@&Zg^m?>v6<6ayg9vPxZ@I0ciLt*OwE;KNxBfe>BK)41S7b`c?MoaJlq^FTk*r+*d=K>9u!_e{plwTF+{0x9#y&|0Dao&P;}qq2gU$e z!_BOONTJQBFRDT1!&M+wm(uCzDdV%XsDVwW*Vz$d9CBv$1LDt4^7j1Up! zapVpfGPLHC3Bt@O!3+$)NIq*tWB(RaUsPZ{EP4cK#-X7hcAf6hA$OS#83eUe2pN z>U|*?2GIX7%6!R#29p<=0PPptjSKW< zQ!%eoKwL`N#)8nXaEA>?<3OT@b5z}ApIkC1Or#7clhAi~!eB?>Cm}(M%9faA767gx zYQlzHyc+;<4btmC+UNvZUQSw&cTo!I#Pp1>RwW!scORHq>-eg3n-%XbwhT;SBY6D; z9))#|8L|LFSne3qf0SO<=is|^h8rlYEitr-m|ka_Gck^QPhoYJTPe~Nq>G2##AakQ+Sop3xyG3|!4 z{S{VzH1e_z*L(`O%pc%mojP!^CKqY{!AQY#1;+MJq9>q;&n^kyUV=sYD_vJ=jR9{a zzan)5nQVrq_=(M|v^Jm1-H8R~?^8;;X3VQd;qioXbhp-61yH7>h-+Pk(j+lC;P1JFAt)61l!22hFW1KAegE1sikFyt$hN$y1`{#0bMDlAYOIUu8UkCfFsE~eOGjE6_^Z@8TY1dT(6Yt_pz8`8=Ad zLYq=DJrMY9D)GCie|u);E}spp165ecrWq4=+8qGX<9Zw)7hlxAo?(Zd^>i(dYY+*K z-22{xV`MGaBP-I8C=a2jNTg(4GJPjzYMS&=b9e0^$LvJ4;2colqS#Kx%NKC>%t*bA zK4$lTp7ix27EZ(D(N1=;)YfAE#N{3~GSko%+bF%SSs!V6V?Ss+NkK5#9F(~jIqV4h zwKTVS9r$&y_;ZiFT$w}04~sGFh@oXfpWaQ90>?0Fssf18%2%c{G$JlTLwO(Z3x0-= zEseJVL|(s@#jmteuw^UU*w`W~)nLP^FRqLE{#C@Rj!>5clhyMgBJ|Ppzpa3O`^OuE z!2}XvpmhDe5eCjkgh9aY=}(9O`Bf%{_D>6;MsI2%S+Dz+n0JOaHi~$#2zO7*M?qGu zMw8m|IW2)B7hP^&vwZpi*l>l-8mEdO`6IKeZbkWQa(-(mFLC6`<=Uv)q+E|lTU?hb z$P3M|WwR4XDy82)i^Kyg$&?%IZL3<}TK-$5eVV{BADC-3 zGAj)6;->6Jl$I~$ za6d3`$~9_KNZ$}jK}tOTA1AkkqQl>4G|MZNPP<-6q%5j1xH}7PmLnK*&FBGf{WYEk zbn)p38Su**kcbH&Eu7fpY<*Sm#rz*_$en8rl?H{qTe1ucXCbZ5N%Kn;&kd&~m4R*o;F(S1j;}u#3pJ}Fvlcj~zx6@XZ{Z)x-G!2Kmo9C)H%*z}X~9@%#~B$^x3CZ?L(4@@&t zb=AB%QUd1=yHJM87Kwt8vZLfOJjq{CDiJ*EQzJGCk!@t~Zw{aJd++#9@cA0WV5-+G zi-haW@ny7`EK_>{S4tRKD3X)XJZfDCzhRH=z7EGPH7hoxzWW13nV}@nXyAnjD{HK^ zM7TDEf@X(e=l7(J2xy{savy|-g8AVjd=9NaaXR1jj-jeA+_t)C?Xf*`L76;L$M*Yn z7Dm=3r3EzucN~`%q$o94KADJ}!DQ7o>18uUs&W6vegEjm*h<{K1#D zAzx=5Z6|weT$V^7qZe*^V69tSe%Isa_^z2~%C;8G*n?Xj-8KuJHnt1Pa5e2%a;+>= z&3dk3pSWJbA+q%#^RV=othH`%8PB1ov0qZuMPgqj3wH%D#+8>nbnA)zR!LC9M$oeT zBsjOeKzbcvvr7}{P&!rZ0~M|6BN0$O?i<^`cYo#r99DJUq5b}UH03}17ZZ>BxF>d4 zbI$^gUuVd*cFLCPAToS8f6>(uEzidh= zt!a~IvG&N2YQf~i%00#qL3$aIME;WG&!LV^5eDC>aol~jQhj7bVa)PwRW(hr8~EqP zw#z9-8Z#HF`vlqZKYhD5n4zgNI;Yc)?->1fi;=aAeM`DLMctfz5hLo;<6;0Am|0Fi zC@mHr+oRxv;YP*1kB-LeW$JXCy?GC$9(MY5(G5k|M@J0vMCKS$6sKjBiG7aZT}_Kq za%~2-_qs_-*O7zxi}N+FX0g^8t_!Q|9_jrX>Pp$r88^AWcB{A=>&f9Ih86fr71d-) zn3ag$A|j7C<2d7qv^2ZHu0W@TwIMm5(?G?SpU&SL@OVo!6p9huU8OG zw1_D{fU;D*-$BATjzrrXs=@xcH3FH1dkLwp)l0hMKOwr687@~|Z3jvi^5eJQhx^dc z*#+u^yo4Y4x8#pUNyy~rd)YuK2|iOB!y6h*3W~RC!y)A1H>SAV7FOaer1N z;pG*vlDxtie|#z0`Ck_NiMT6|ZX=_vhHZChH%GVfYgEzOUs$ygL@fo#qy3!fj;6BF zh!`3gzUL1q%C)(eOS`81c&|5sGfCD__}Ys4ciqBI zv+tdwVEz9${8>w=lcE6xv^=+Y`dJG0z8GXQH12zmn%{9@sI;h-o5TlHl_9}H%lLO%0ZcD9 z5%~ZbqsfT&Tz_)YO}Tn>suWyX>gzCR;FCg0GDzoa`>+t3z{iB|kHQ`Ti&qS4M0?V3rOrJN)t4-J+Oz=~ce>SU` zIi-4+ML$V-jm?v~<{kT7Q(GP*U6Fv~ZBTJ(`gG0f0&@Y3D`iztZ5<>h5*YhD&g^qS zPk%%h{<#Bzl$R2Y?g5AXjE z66J~OhDZbv_wNWIc>V+uL4^2)AUddxJf%w3*#Wq4E~9;>PSp66==u#QVs14O>!P&S zYr=op_MY#}jaO9dLn%RB4BqR6GG!~B#UJCecnp)^b~Uad-7w{9gT2-Cu0w#fw>RlE zdHJkGS%H*Dw(e6-{WYy_NICG1;sJPDXsD$*Vx$zk*HTKPl*T64N#o;5tPA19t-+w(7;HKX!Ax{`{w#}`< zH4-JYRpZz46MSYfdW`sZwsG5rDa^5I3R*C@Jzi99T1YSvWapt51qXkK$5$d*>xiEI z(tZrc2>yU>R22qN^rc&}iZ`2-Rf4gK13C&cnZLFsbfjLFKKHFns;GA5K%ec(TWwdc zGm#G6sJHHX=@&GC7nz4`1N#$A2BI{IVP3QHz(ID{p)8Z-I*xuyk+OU3~ zMBd4~`z=$IUjZX+%QoXt%Va2sH^Rs?>4MT=hN^-vCnjS+-wifp&whmUvZL+=B!z`s z`JOC)E0>XJOo9!}zR;ZP&)PtzHv5K4F9{(~#pt-)GEv2s++wDT{}eGHRTpR|B;3iN z%|&>h-zjuRu|LyqZ6h%u={BbNT9Fu@LKZi36;GS#~69Ok2;YCL_|O<)5+b za_S2=&oNV`Q$h((8E1N&ZRVby&Q={dOe+qWDxVGnqD)wLa1%K2#5+~g%_;`sA=knv zOAF3DEPir>{aK>_ZVD9{#f4L^a7{9Z<%S!U$ex_&4;G=<%xIoAVw)z0Ea`iedJ6N|oZk#wT7MJe@=%)ju%OxbldPTxzv7ushAQ6o)Y^T@@4>Q4L zrb8t87Fhsm#MfF=yf5uj0-W0dG}*e!WG|QCWi)|8NxYooO9Kj0b1cYcHuacni|nj! z7OvHk%*Q`7K<4rDQP5S-CYDnoDDzrmh|Q`sdK7N5v9CdHE@K0zP(z$R!ykFp!C987 z7)b+mgoThqiE0Kvsl`<~{xE}b4|oS($>yt46IiCVFq!~^{YkscP_zpx#j#C^Mi8rXx4Tf{7+1e4q~TYjMGLqO5DAQ1@Y8 zEipIoZ)MIH%p_!iS(oTVBzNz%Q{e( zNS%f?%^KTVe9G(NJ5|Yd%7KN7{y>SlV73#{#(GV?cQo7N?pwJLlniJ{&Dd1CksogF z#6T@CLUF~{jyjNbx3NO<{(eqTzIwxPe$xv7XTQLc06h*1ob}#pyGO6bodR;5h`ib7 zc$@`;46^&siy52u;XX(losgcaQ<{f~@r@s-3ap~fr6IZ1GM{L8H@eCw?zackzvg(b zM44Bx?^jRjFv(LIU636x(8dND9(hd@JA%PLJ3ld|1bL>IO{ISSu4LRF#gXvP;PORv z$cc1~Hn&k+$o1xYYgU&eTg0-Pc^)8R|=OnAX*r}T2 z#GkFNRDAyrTgr%B-Oe5d>@)>)?5u(k+O3QMA<j^*9DG6CN6A^;~mAl`jz+n3T-*{?w#Z}B6 zzi>acT1~tk+jS_x$l_o#Uap>4mCZU0uf0e0`u=aqy%uUt>~81$$VWQy`aW4u>zCW> zUCy&$;_H*gN&L1cjOUFO>jln}bn_i+$$T%2s?J?T-_^Sxd;HoY`=j*#-GtytTVm)_ zV9ex`Al8#;DkP!Hvj8N!#_!;m7ty>?4y?fko5B;D8gWuyDq=U;KWrRFV_j9QV<=T- z5B`CoJ5nnNP<6ggZ=ombipuBjJR?cYnRUU&k4{8}!f0>AjCC%4Z#MGMG39HOoeakM zY=0}S|Bqq--T;XN7-NMG6LP3Jiv9f&u~4n4ISCmDceD5abX=^A+KwO%ZZhGSCI{zJ zpfLB(PNACg&F=8$D>6v-9b?7^{mr7-X0d)p)JbX1P5cz|wWw_pmRc7ERDE6(K(hLdy{ zeTlQufwG!RRMcLs+U?n+xX~O!Q~RnV?{per@~fw=s|9j0x**y9k#fYWV<6Lqt|F>6 z#BK0Ib^L`PQ>F8zT}9=QxFLa~(Q7jYt92P%V(BWGN!y_z z=D{b~nX_Y-98vR+3>+O~Jd@pRJ6bOpNj)rjT9S?fmGQ&+`P}%WPWWZwHSt}3pde6w zEoc8;5C7%!ZwQw`Ob;*;;bKZZLS)xH`v<~hBG#q}$-DC8XbH-Oho+HCmj81Yg9hSy z`>w{WK@$)W)!T8pB9c1W1AHx^&cM@YLcyRd8f{>4w}s?uc-Gs?d%iz+z*yT|WW3}t z;|opB4gF41?1f+-=pz1TTl9AiKfU|B=Nzz)cksZ0>4u}&&GV0f;wNob1(5R*Wvga~ z7BJ5NU~Twn0jue?PDS0KoeeT4!pl95^)S)pQZ3)`mHwQT4@p_7;#H<;=h7KQ>E~*HYdxSmd>r`9pd^o@i_QUdF@f#4*m3@0;JLdUW4s~dAS-G{ewz_fN~LyUZte>-w;c=-GH5(Op9x5dg}@xq`n z=omU&8`RwcdrSR&(A0*BEkCozuUA^GHCOiBW!CxrusDFQ-=o$3de>lODyEC9Ifz!B zGYH7`xfq6TwJ#T!2ii_ciAN zj@^Uys=9MyR65Vg1hN8S2o=b0vj)Acw0D_Qe?G7Tlm^QOx64D51AWyv^k>V6O5{35 zmpULkS^A;~ul^}{{14hoEb~*1hTG)9G1{{poggAicV@u$%8srKTu-K(9W(1 zoF`emB(&F(`9Xy@9m2F$p3Ak{{4>g%I{82Pp&_IG2u8)WchYLCTA>?NSVR*d0PwiP z4ef{1Tz*iG8N9#O?%m6*S?!D*=|Y#}O3z>G=#;zz#2+*E8M;@{=CDSFHWF`}$GXCm z;U#o<>H-ZNTI^kkjQf-PUrcmtI)!XUxbkOn4#3UZTH!?Ma5@ z(z9L)D3s+PG zT0#_h6r||OU*8*e&(V%J+ch50#J>4-hkA-TT6&-m41Izi`a%b7?Om-Gbv6eCS}lCs3T z?0ggy=NVul%p~}WZne8MAFsxA_TV$CTtMm4U<&7wbhUK-6qR&dF;!p$Xg`Hw*;6tX`ne&r|&l&zHJFJyh3!f|lHRq)F{e<{Q_z{cwPr7vY^`ElaF;s7YG$I^eZ3eM4vXsM9VbfL>>KA$@ zY8VkVE?C6Ks{XnBKwhi0cx%I?Fq-^I*h{XH0#w_!~Gie z&w3E;s;GthArusiwmyOb2evfylRYTk?pd6vXhV4SGIblfKRwE6M-Z_(P$cRbb82ATbgZL2a6y;J#EEscQ0Kb| zvNCM^Cn4ifc4aSz-N4xFFY5JH8CY01>Iz~`O8EmD{Efm0fvW^L6 zpsXCqYrGes=r8|fs6!Mf+*)@x(A0@gomSG=#OfV_mRdZo$S*_9>XRaY8HXygIYDPk z)pF8~syxA}%-Sb2kT>P%lhX9XYL*F0a!v2P!4DLPp5}!Xt;|im2G?N?M4#)`nf;rF z4VCAb_&jHR!<^DaXG;yPy~S(%E}cN-D;n4>UvoZtP&DK~vnUqtBpf@;cs65@CKeYy z2U(t4;E3D=w{V>gm2%2qJ`jL{DJ+Lhiwc-Bp+*C52t8TEsLr-yR zCH3CpvJJlxY~lwP%pX)hxyv!Zy{s)KEd}2l**sA2WQy%CX9mHvZUO2Q{5^{fJ4hP9 zkNXEBf#Q^RNv4UstMeX=(mlsXYf8kDIxt!Q`Cfz>v_u5jH!gJs03yj&DPQgC1=bD? zESUr7AmYgN8W%m|#(cawqD~#+zF}U8(t6J(9BH)oEmB`ALba_w8BG=+4TtV%X72yei>$^?-!e^hcrVR-Zb!yf`~3jmNP`a;u-m`#CrM&DH;Wx~(M>sORQ11&gnmte-g~(Xew6n{F({ zBOBhHKg^M1!Q?a9Y*#vPFy0`Y%fYG6RIII5tD{mleOV;sJ=)f(p#fmGmq&k#rH$0C zocnZYX1;W7&DDtv_ig0Q`GMj_vQShLa@Mg$ea(V$U2t{k?%TG*zebUpeA;vSyy0Zw znvk&a2TDS4F%q1Q^^Yb{XXWjvHtB+^R+lc$X49Y4&CD9GZq(2{kTtyqaJ3^J%?+M}?$lWiXR4C?qSes7RvS2NZM4_*GRIr9wy8!`P>2ak zIKH%^75|O>7&T?htty@?pq^oIZJSG`BHsLymUXd9NM#z`Pr0J@P9zV8Yp0|`!}pqt z`rknS=k`Hjxeg{5mN2UVDj{CXq2{HhSb2l*ug7ujF-j(`Q+{PAs)R|{Wc%`I=E?**lZdc2fg zOV}^p&3kZeyGCPid8CeTKU&y7s1FbF3$0BP;;K z38gh^(ZGq&-5G)xXTT>WED}$nI)a*BR8eUA%#sfmBVu>-Q0zJb;5E+nq*;t55by4w zu*}|)9qJ{a4A<_}h{=G;2!y@^cDo}U*x~M#mY!>~AfL4MRX61i6n`Tmlo%;m@Fe8~ zZ<%rR>CR7mkE=VsJy?u*hTL`znq_2F(M2zm5_P0oOS=-)usSNBrt*<7HKu&%CM8zs z-1=h66Ir?vAgKmgf+!qnNK_mcgB1=boB|t^s|&n?L&zw-S$&6ukdeOFWG}^W~{=OloIgKb7a8Os-$BP~~>v3U6wgez<&jBy^UUg0ebz z>DBY$5%YMi^neRcaP0KxCW8b|JGL_EWP5Sc6a|GOSXX@uRwNHOnBGzfO-2Us#x2SX zO`!1?yGYVBBZ$+wi>7i7XS|eSH67J~#o8uHX^xpD>L8lYr)kO2WckNLj0sZ#;$bn4 z^8^QWYJqz}?}p7R;S>9h?4lHKJ}i~7oxm5rRG#7kQkLt9cReaHqT-BF*ttxo&S?@# z;arQvcO*&C4(gK`FQl8<1*wx9}y^R?%L5tax=1`4Vz>nf)V4>N6 z@X+uH`HS)VFhJW#Q&#M|5M;{TVkm5P2lXc1)O~XD~RTjpr1epsFIAm0wtvu)y-5_-PJ$aB@{+qf<#gkCQ7u!U-tf@PdOpUx@feWM_PQ1O()st* z!?RfAF4atjHwp?P%X?Y>tD$)$9m@7Q7IDB4L1Fhea;f!B31i}xtCaD~C1e?kWAk8`Md_Dj z?%VOY*0YCaKED>R8{Yn`85Ar@-$jmz9eHGD@iEtfNzky+E+E?ve4!3gEihi_) zfQon5aH_v1@e2Vte@|H-5 z8cxnC7FeDP5t0z}XQn_6(Nx?>&4@+qEE>v%w%;z)rZW$o>+2|rEQrKs?cU{z-yF^z z7RpG7we}tIr22|SMeOKu*2N}hF?F{Dj``iL7HcDs%O=5OZhRvp_6W_b_fL7BaGO>bBo&uPYNwbr+(E(mEZtNGh-V_2L#IKpkG zoF}>L&B%~5;$!u)jH;7^Rb%r9^*8T2a{BnsKhz~VLe6wJ5pUlSHKij{(G2f5>%hfp zfoVxG-RLK2iLS=`Guk~6hPMT-CRW;Pcf#fB?l&6SjxY$;kIYC9LzKIsK3NCJ^zB~> zcD^thg;cr5>Eq%9nx{B0C0T*ZT>?;3+1w$6X+xJ7tUtG^P;OcCVVP$uKc~vov~3#2 zNNhjcRha5v=`GA3JYuMoRLF^m3^l5@(>TasZG{bUJwJBzF}uZ{BGSWj;jRy!GFyFH zNr>P0cf~Wkzn5e>RsC_;UGxz60;ZKdH9M859gF{nVCGZ8<|@cJVm7=JV9zSE5Xoh- zWsIN(QJLpSK-$DnvF1@wp0%4fad23vhYet&Mt_e?5tJfA0()GwbgG*vGr;o@++TIzSulz_)p4 z=6*?ZDP8o{FYGV%F^nV+RXjD7y|!UNJwRGPRXN@bW{cT6_FI(sl3+?bQpeRkJP}Q~ z){So`?8u&Sv;w4kOQ!v3goMwFV0Du&A!39l5u2XD$jb<X z6Rw(83He@h*%+|NA8L>T-Ad5kNfKuK&k5p@w7b$c!=&ElGNuG8|*Ip%AwLo%j zzPdk%(p4cTa@Ngex4ZLU2RL^&MW^UK?$I;wOThS^?!W8aSsdYTa}u4HvF(xQH|+a? z_2?yjLQu~Gu+{4qG)k_Yfoh3R%TEN#Gi4HfSD(dIyN$i5Jdkc8wd?NL&9yx7v9q1i z)RkRqd&(nBus=I{&bIrB zQZN7nbBD>6k|+8mNXke!Ywk-x=qn{nLwMAvI8{W~!nCy*zu}ynC zcT~VSWnZ;^J#V|I_SHy@AxlLoW3j+-w;kM_Ku7v9RM3aXD(aI)UXk^^&f}t*psL8? zbRow_%ojnK93|j-2jOfrhmR)ajAYDviNei$X1hcYpKvxQ2MvZTtsnT`wgy2B_^&=T)g5 zejymlMm@33ba|`XOyAmY*kKZ)L4)>&$sGAm3(VqP-LcW+>P6(6ZgY?a2y7fNYVG4r z>(8)Od|D`HeV&R)o@U+F6z%>VEAFVT4>b^)!=g!l4EeRHff|%wRK<BVB? zbP+%Z%l`&(Y)jNyKx%p&A}kX-uvanzBc$!)+#FC?qkfj4PCAjZVZ!``eNKI9`W+j2 z!AsV?&g5|$X6s^EylaTU@?yw*#LMg3U6ba;1;Uf7yLi6OINl$ZY)jeK7kswyEV|i! z1@7u9N#@T0V=Yst){+#}&PW!>mGDCe#VJln$~cI$wJk`npY#s$Gh$Q7l7BQ$;x9$? ztHv)SO{1NQu7^o0^T&6t9o*{>d4(p=r7lis#Fc}Uth~qdnli~%Dn)~DFqwpS4nody z>VP+No7Ds5ChEqU=-=(&)M~~;MrQ1XeOI-Ftkmp$xN+gMc95K#p)Us=ll}A|fVQ_S z0^v{ED>Yn183f{|MG7bqTpsSO)QWwD#p%E%3`&{1UkZX)hj6AqtdruH)-J=QK=>oyh} zwou(XerE9x2Quy@!?9)EDZxp;$ptlTf^L%#WP^peXWn zII*6y&ooIL$>E8Jw3T-(A8`;D_8w`qe+!Mqc_hD**2yv|^2GMKh*7j*&jAtt14WkL z2TC2vrLur@h=c^xm4|&mD216t8pE5;3&>|O$UrN8^*|izcO}-*sF&)T^rSDkCaj5B zX4AFNjNLJhF4y%#6a+SbChzc(X!=9(6IBxCp`PsHMNciR!)O9-{e^&U%y{pHhzxhD z9OpWgO*zQg(chf7IeF*+yA;aQPWiV)WFQP`%$Bp%}h$*1@x~lvwuj^Q@h(r`f6apbwi#uAv3J@ti1i zr!-Q#`vr$QHy#<*v*ODJt85cUapX6(y;cX{xT?uZThC)uAiUbTD|?)ps|!AGOAIB- zwD%sC=tQow?TDs3nsK_;mqZ4x+7kpJ0~XL#oti@+Uf&#PffLxEk^=$FM4sx+!<9|N zed*U$i9|vU<&kjd~MB9PPcq<#s~vmO_j%zQ2&H-IBm~1Rh!#9upY6dGP`ORMR_J;k(QU;L`M+{K(1E5ttz8znLo^)|j^%S0B zWfUFZyJGd2CmMp%?Oqn9UK0_b&Z}$>)D+RlyjypCM@A9Ut2n@`z-V$H=~Vu7y% ziH?HQAJJ&_iG}5;N~bkOQ*j%5%I}*feA`Kz<}?y3ELPd3CjEYgeBt z2N(4R28nH?l8}%c$ zmYPg%`y4(AixB=!j=Br36}mEc>3{d3dv*Q~l<0PgZqDPVWf2#*>3s~ep6T<;z8yCn zj|NQqJr6q8s>k6PMpX<_XV}Ma z&P68+-Q?;(Z?9v6C80^_G$M13y2Sg#m}T14Zc>SYa3ihJAUc+}95Z}fDU<}R((URW zh8Nh>Wr9oygB-ye^pUGBjnT9Irm$dhQIJ)h?trG`w=xSU=F_B!5W{h{Y3|L}>oVwW zOr5@qBagZs*0z;qCQYlW#b(-LCUA!1+j-wrMnOd<&UK>$>5mg%+szqs36}?vjl7T- z2Iwe+te!>5#*9u)>N~_ae_q9ZA>c1aF|HmYY#PQN@}(EEzG8Ekrscb_nit^#k2!aZ z8zoG4`1GYLB!*=5B)MG+4|;oOwHhVM*tkWEwn~>6?u1H8|$JoZ6(yteUFk zG$`D_!ivuzJuk3b;j-o-A^Ic9M0WXZ7WE+mamTSaJ3|wzv8QGDu`!R3pCpX(L!Zs= zSXYE8SV!_0%%$BSp$e`6deX~B_?lC8SbCd+JGAHhFWMhjlgM&R zNj@DC$^U?U3mKt-sFC?jJymdBv#EVGe|KzKzO|^|- zf9;#n6(6KqK88WZ+NCQTMj8`M@w`Q)rooV+OHwW&U-F@x+(M?O(>&6%SDK3|T}j{0 z$#(09SYYsjJqGGl$ubd1tAsI2CviUzgiz!V*JM3z2qMu@jXji#vx9$-=*Nz@v?pFN9I*BfawsKj4t-|lIKOe z3}2>M*iD(yuxI0HY||=5X*rcB!<}xo6^G#f9Fn;sBo&eVD3{)*;^9{>O(o}e*Ufge z!z{03`mzYRxQD(E!}yqzol+v^A>fuPG^2Bu-;T6gc&1ap<=Nm`ax;B+ix>#XK5T++N8?8_j z6nfT1?pTUg-m4UQC-zfp{joixm7Bn|j`Zq{zHh<68)OyV9$KgjI(Cj2)TwL%jL$9G z%Wlz;XFvgb=k+!P^w0t-dL{o(dCJV%%0YZ5!36f9Ku=H{Ug|IbA?#2E6QBJcbn>`n zO4p+3X6pa=U#I>7zo!1dOAqRAS`(R>Nfix7#?#Nw-0|NNp)})oLs;)5UC^^(1XtB2 z*}OZksCZF+e2@VtIDHyUig*1hr@uemR<;PN(AF4s%OG$~vCMrQCSJi%sWVby8mH`B zHnEzeskM3c04kNh4C$;?NMw5J0-Tr?( zDi#Cz%V$ua}`}!imfG1SEZ&jBWXDA4%si*<^{4b#hFPVlC+(5xS=* zaGj8K5bc|x46zB>E5vCH; zm`vMq(m$r=nWp3p*)g08EH%fIqGzAhF?+-9p$FK2h9 ziH$PL6+ub>$H)Jq5R|w1LKrw9Y*t;PFESx|^5poj0~~MLSy5P39Ct}ai=!5(`()jVk^RohX_Se=L*w_zAeTASIes%%0NmD;Z zF_Mw*HGU>kEp%(OBi5k*bgY`|ktM#H~PGs(&0FiAkZfW1i zTr-El5P8W6wwgIu2W`}{GqYk99}&!0JuX&A=o!;<0NKM|w@zag4zDUJXBhi(tR#kZ zXFtKliq6MTuIf_Gg6rMz9=(D*wG0lM^G1HwRcpq;@$USxDf~w%?xIF72f<|$`{d4I z+R8eJN?*0Vspw<=afs$%QCdx(u+RK1{OGExTXPLP9c%VxDuASX8)b^FIM<=wC)KW(%g`gXoE<<#1th)F)tLiv6<7N(@lo8vu6JswVXPWTe` z+F97X=y^2_i8wnkk9SQX%pGW_uHtTs!r~wXFt|H}EKpoP-~(mFKX?4ct8_AkTaE?| zElcMgB^wkQ=BhV5N*wmtj>X-7?Uih8xmiVHoXL>fF*y$C_;@EfU1z@YAohv?2G@xZ zxEsOA4VoX6L(cQS?rQaSMj`}9_M4m zZf_>M+B!*`y=_cR&v7qhitjSzJ@t4iO{#ZdY!a)sHX3-(2rV-UD16F_ZjoWvM{Nzg zxD>}bG7N_!n^}6f*~ez^~>YeMRL1Fhdz z>YD++6Uu!dsj_US{y}ud${V!NF=xGlhpOWLifW}>=RNBE^80BMjO5L=;3aaZSst_; zcV?S-;w{;oKeA2_>=mD{+LB(s&PF^~eblRbVix$FDU;1*;cKg|_uC3Fei;TiYg0d) zp$6D&aNV>aK+NMX`t87`H8%7wfLQrpk@6Ll;?Mk9AK!TcrbMC_-~R6GKU`p9TRf%8 z^?sO(z47B&weg9I@ZoZ4uNUSASOKz8OwVYTkb@~9j*#-%Qe?C@CpoHBW`((%d|LcV z7a-s+WDQn4E4-=dy^hbIz=OQ^7?OU%e7x z%HnRjS^T4h>$yM^fJo9S{77-ePTluOue-sUFV7z{p$*jR9!4}^(XqgAk>VHNVl`KMP=I9E|sw-Ge%pFLt0)+<{&G#T2Owru)Rg@Y0Pl9E4M6t_mP*UvF$x{RJTEJyMWv zbHm;%c3l@9lWwGIE$8-7kJ%~FM9sE+$t;E`Z)j*#mxWLe`F+Y$86F`zEoR5!(}1JR z!lMP0Gq#cH1Scd|yndp*NV}f6t%OO00jS?b5mFWGUWBe9BV)b=X5j}Y6L*A8G7Kfr ziWzngm|FQn9H zB4xOpHY1za)pm;~Q;o-LE!Y3OD4d3V#vHk{%<+e;cmpP9t8sG~)b{33Y5{tV=LZPjb%8Td|~}HQ$;jKJKV6dt?dM24c8gP^Kd#Ooue47YY+_fFP1i|V+7C~p zAXbgRqq`R2Q1MjE_p$gd-#-dn5VZ|iRNoqvEO+e3*=**u@HzX7CT|T0!;`;E06{Op zdAo-yid@ZUK607zRr3xD_t-}TzFKyctp=hd0_x%)!5;qC2+I0fZ-2S&%#+%h-R|mb z?|lpB9r1C;+5|88e$p~?Ahn&bkcB`kFP<)_ngC}YK8Z8qKh|0M?-B4(06@@QxZG1t zGr=kjTG$>xcTMEhV&AW?XSUF=m_DW!neL6w@yVW0Vvcyi1 zhto&5hteZwR&7Y?t=va1{LVwCX?qdw^a5{j9&fd!SxM+QUj2MP*b#9@fXjVH~3q7X4gL#VDrwjet@z^MP5a ztfrloM7GfVF@Jt?TSi%=lKFGv^j(iVsyDRG+p32`L&(oh8lAY`2CAryn!+nHB75CV z*%X=`gdd!J7E(7Mda7oW!Yhp{Nk`Bdjo9i#l1!{APW37FbL7+R>!{hPgQFQuky!|?=mkT(Qg7XVaLQhLr$2gk+rA8*A=SZimX1f>#KS$R8tc=kuywiD&lf^K%j zUuL+IkVo)McB zFs!9eGpKrLtgi|uznkjMJCet&8Z+z|NHs$!03z+&73i@T;F|4NP7|&^{~hQt=O3uS z?>0IpycJ*(FP3ae3x&l?R&gfQ{F4&l>_r}LyR7QbU3QU#u>#X3`>Biat=oQQ2~36s zra)06{k)kZB3KnQxCj=;2ExI=gmAtfSBzsONOP$K6YRtL*S}W}K$?WT0M-SLFgiMCO3H+uBPYy%0bEMJDEQ&#>T65%hakr^4s+vnx_}TIYLXoHt zKG8id3W9N}3wos~G!_^R$w$Sw2aPO0tg%&8gRafOI`)Ge<#3K#raXBUem+Sc&d*;R zQQUn&z|K?4h5_%sP>CVPqG4YUDrXhJ;NR4FvNt!+uY0zNBTs$sa@RTb!+!y`UOm~9 z-Ws0})>@D=i#j5n)$>6(x$%XlWL;*d5MI}#=ps_Q)Ll) zU}AeV;ettm486@iL+Rzy)F|`dD(Jh#df@v_xyP_f68iqsz;l}mN3gjLymsd?v}Mog zQN;CFPOx-7VUq9hz0)~1kaK6y6S>gk+c2*f-ATi0OommoZot33ns>u#+l!bdo$>Dn zPx1_|UZrB0IZgHi^YnK`S1*Kq*n@(0FWxpFD;dhSJT^tOwUk>A)ig`rI*M;1bAjd> zpIQYYt>V?*^`gyfCD@WvjYHy-fES^`>PgW8F(j;wrE{dEE^=>XF!jamJwJM@1@tSD z>VdQ9V!w7h3fsi7#O7O2%uBPdCAYBW-H5)ff$v1=HLOH=^lA}Bd;4 zS`^7Tc(qSU>^!fj$e-{1ptGo&7?Gki06T0!+n=fFmYIa9>HXwR9C{PDEkuZ&we-%m zZKeA3vAz|4_YS9_W+FJ^;Hsvt0A{uqW}96@zrn3{Q~6 z?{Jf3#J>!Mb=lR0C8wdk^tG)^_M%}e6qXW|;9}yOk9pI}6uI$VP^q7>gD)-&wg0&H zg^&U=jK0PSUL70(W@^S5ahY5*h=4c%_q<6#6K>`sZsogw`i*)xiqZ(y#&j zqPM))qiow);RZwvoo-54`tfM%330uv%-vvqYgTNt+yFCoEnjQdc5c0Tfl%STv@L3v zJR8FvpsZ^muAKCr?{~5vHet#%Exv!ytcazFx_^#;(03i0{ z6Nr9O#-^+`3mnzqwexkWs$VI|2wfj#psZ&;3j+%%Q$temo3Izn_jL`2d`HP|S}Gg) z2H+#LcRt%*$c#2aI;xUAvTYj>@Yq$OG_&ze<8mir&XCkJ6N*FI5Y6GF*b!@f5$A?6 z+w875JSs1$UE>z$FF@I+*}nj%t{VcEDGpRum$!^0qqbw(^E7@QY1$<;WQRLkYvwpD z2KOF3P(sZ_eA+p9z{)s;)gy;rsNdE?2b!{gQu@r6Goxny{;N^_Ijj z+BIE`Zpe;Tox9PdR+?4w&|&dgI3*i!Vb}7kI@oj-6rF|O*K-z78Ar*>^6GGDTj@6q zyyZxJe$VqSfaSgVzW_g1M=Z`jV*(eaca9&WWc&pnH6xIwV&Md;;MWg{c`t`jguV2f z-ZIQ|9>c=%{PxBn`CgGJ>(pq)b5*CnJ%K7K8Iz*cDihSL9a}nZsFsR{&S#y7an5O> zFm*ID>M3FMKQj8&x>ho|5vh44tq_Q+Xx5r^YMwZ|Sf66#$)g}iN|4P7a3H&sA$f`a zU2R!KXaXSWk|WwBqy1{_oie6B&8FJ#snjH?)|F1V|BQjJ)!CXLh@#v7GQWgeeDxN7 zg^ZBM^vr%y=V&u5?njB8Yc}DFxdssvdNeM0p?yVQG2QtvP9oYR`u1+qxBU$$cP?Hq zQvk?$+|audT|(0Q_A~1~$7IirZxHcXX+YV&X~e-GFDq9et#$Oqv2PUY`qeNzoUKyf z@uL}BsEgqVj>q}w$-x|X8&~EEm1|sk;I?vDjxzGzeb<}cmn6(~Nn*d-QV&e>l$PT- zYpP>#qCUNXrodR|FL4=?yq`R~lW6Q#`#x`dp96~EM=jYI{+PIQG(S9V6wWk3nR$zHgpc=H@saJ@lc`B|agqgoH<_Dh&bYfuClE-D5gHUhK z&v8!Tay39WBnPYg?=r`=Z-lhDm_+wC?9*z-x;ZaDQk=!;$5FYCp;$A!b>le3mB2z^ zFM^aNmH>_aw8yA_C#in8vA=V7a(HFuPs?|QhPy!yyPEEL3PyPn$+o7Np%x6Ab%V3q z$MkV{W3I<}Js*NcGM}l6p;dih4pMgs1Q;OEAIiVO%#!~j%-p~A{|htIzp!qD*=GMc z%#4gS`1X5Q0*qyUiIH~wxk=EVVguVB-Fc>1kSZzQN-`x4ikr46sq&re&Ve0|Q^&D5%ixt8=QU6%`er0}4a=D^h>auw^Jc!82Mw|-BDH5 z1mvVFE8v<3(zaxhJR1HPs`msnH4pv(ojCwU=@`=Ku!y9tMS|DMj`TWQ;g7R0+YHA8 zIUOaacxHBlbS1|_ms{z^ORkFeukWvyjm|-S)kVSPz_uN2@~Xh>h5zB5F@dDrwOO&hJeBxXx3kdp zq(}>5^NR@}15yzjhl9?oRS1Ncsh#lfv{uGNvx$;eN4x^ABC^$=fypRmWk0 zG}sYy{M z=iTc1d2MwJR>Q|=B(976)Q5zC#|kHCBV7w=N*BX>ATm;Y)%R2Zi$?keW(Jyhb)^At z9Y<1#JK8KxiNnCiU=WJPeV%b&$GIzs)YOySO5KP=ynVZ_Chf%tnyp=nBSb1!pAKuC z&o;9|ljF#Mt63IQ+ycccBlHFykULIPY`PO`@PM7UCh&-+WI$39qz%`sCCld~*$nB;`;A9iy48|PSS&K72>KNMZ2k-I zh_+7}N-~vQ=*)>J<(e9H+Eb>_dl5P+gRpDp!xm+4sum|#McG|=PFMiQWC*VD&%$v0 zSkrEbG3lFZ_3f3ZOw4)x&n_z&GFS>O2w%Ks+s4}FI@5|KuCJ%{4Lc)+=yNF(Xnf=N zIC=r`r1R3&3|fb%l32#^CKKliRAJ#q#s`I$xce<_?zEHBCJK=L_~^|cP5ICClTrQ> zG3MA!epR>2BU&@DCmT>XRp~cVV?ohWrVT#xy4`HGKfKYjCpVdqok>a3DxE@CqFs;r zv=vq1%1JGbqO?!qJYqwMvEfSv8)l8P_|GKc8=!o>*6ea!e2;f14wSm3&!uV2E~pd@ zR}9l(88`Z#Cf;vquv!~#U?|zkmj&(8jd^9G;NqSBbJ{rqN}>@C-VAbyUfF^tKak@8 zZbmbjx;9}Fjv1SjZ*#W*v{fYO`vxN{ILftGD%oeXjkI4m+=v}>yO?6lR|ww@wc7

(a95vUiHJ?FO)G}K#tR@ z!|8g7g+@uLb_iv36^GyA^^NpXHs;e_Pc!RlfFj@sb8G5Vv!v&VPS0Gko|M`}IaRrU zD&h3EzX2|V*`hH@ii!kko(~y;q?449Nk)Ys0Cnu=@d~9|bD-yxCkmRw2lO@p`|dR*5qSwMZ3%QB}fBPfv8cx$KlvUs-!)XIfoDXZnq> zL<#2D_p1XMHZazbUdPp-%u3%{dlSW+t`;YpY_aJpRdRgMlV*OaPi3G^tHQ>@_4U)= zp-#X}*uwx#&FBEPkZ%G}5fAm;vyDY>cdOKKOj2Gmrg$dg4eiI~g#>4>T>C(&fZYy` zWg#sSUMz{bUptk9Ag795aFK5JYq6soKWSP5+#c}b_#=l-)z}d+lmFUUgA1+V`h6)S zjDdJi;R!{T3jax3!J@${a$o!l+RCst65I`@v-MK@Z*QV*7*&axR+`-!WL>Qb%K%BW z=sJZm#BGIOdL3dGi(lC>GtBD-Hm17P^j2|0oZ`8Mf(Ub>X`(c@oaY>PXn|s{%2^Q{< zBMFi3S~3Av@fH@F2-vjbBK%t1A&qR>OH4?hv$CkfeJwO+5~Z4Hjb%uh(Iz^d`lQ-u zQ&xdksz^C;%Z*TcNBRn96C+a5kwB>n8locJMY?j1Wp69In#g`egSsHV%oEC+oj%0AXiZKeWP4nm&kCvYwj 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 L@u<7TDySux)TY%sY+#$FGcY?dS2MF#Sz{Bisq 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%0D!Ws&JER^Q{+i1Fs+HB2ywc@0#vn7T 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 literal 0 HcmV?d00001 diff --git a/apps/d.d0rich.me/src/App.vue b/apps/d.d0rich.me/src/App.vue new file mode 100644 index 00000000..ffc5b607 --- /dev/null +++ b/apps/d.d0rich.me/src/App.vue @@ -0,0 +1,91 @@ + + + + + diff --git a/apps/d.d0rich.me/src/assets/base.css b/apps/d.d0rich.me/src/assets/base.css new file mode 100644 index 00000000..fc15cc49 --- /dev/null +++ b/apps/d.d0rich.me/src/assets/base.css @@ -0,0 +1,74 @@ +/* color palette from */ +:root { + --vt-c-white: #ffffff; + --vt-c-white-soft: #f8f8f8; + --vt-c-white-mute: #f2f2f2; + + --vt-c-black: #181818; + --vt-c-black-soft: #222222; + --vt-c-black-mute: #282828; + + --vt-c-indigo: #2c3e50; + + --vt-c-divider-light-1: rgba(60, 60, 60, 0.29); + --vt-c-divider-light-2: rgba(60, 60, 60, 0.12); + --vt-c-divider-dark-1: rgba(84, 84, 84, 0.65); + --vt-c-divider-dark-2: rgba(84, 84, 84, 0.48); + + --vt-c-text-light-1: var(--vt-c-indigo); + --vt-c-text-light-2: rgba(60, 60, 60, 0.66); + --vt-c-text-dark-1: var(--vt-c-white); + --vt-c-text-dark-2: rgba(235, 235, 235, 0.64); +} + +/* semantic color variables for this project */ +:root { + --color-background: var(--vt-c-white); + --color-background-soft: var(--vt-c-white-soft); + --color-background-mute: var(--vt-c-white-mute); + + --color-border: var(--vt-c-divider-light-2); + --color-border-hover: var(--vt-c-divider-light-1); + + --color-heading: var(--vt-c-text-light-1); + --color-text: var(--vt-c-text-light-1); + + --section-gap: 160px; +} + +@media (prefers-color-scheme: dark) { + :root { + --color-background: var(--vt-c-black); + --color-background-soft: var(--vt-c-black-soft); + --color-background-mute: var(--vt-c-black-mute); + + --color-border: var(--vt-c-divider-dark-2); + --color-border-hover: var(--vt-c-divider-dark-1); + + --color-heading: var(--vt-c-text-dark-1); + --color-text: var(--vt-c-text-dark-2); + } +} + +*, +*::before, +*::after { + box-sizing: border-box; + margin: 0; + font-weight: normal; +} + +body { + min-height: 100vh; + color: var(--color-text); + background: var(--color-background); + transition: color 0.5s, background-color 0.5s; + line-height: 1.6; + font-family: Inter, -apple-system, BlinkMacSystemFont, 'Segoe UI', Roboto, + Oxygen, Ubuntu, Cantarell, 'Fira Sans', 'Droid Sans', 'Helvetica Neue', + sans-serif; + font-size: 15px; + text-rendering: optimizeLegibility; + -webkit-font-smoothing: antialiased; + -moz-osx-font-smoothing: grayscale; +} diff --git a/apps/d.d0rich.me/src/assets/logo.svg b/apps/d.d0rich.me/src/assets/logo.svg new file mode 100644 index 00000000..75656603 --- /dev/null +++ b/apps/d.d0rich.me/src/assets/logo.svg @@ -0,0 +1 @@ + diff --git a/apps/d.d0rich.me/src/assets/main.css b/apps/d.d0rich.me/src/assets/main.css new file mode 100644 index 00000000..e8667cd4 --- /dev/null +++ b/apps/d.d0rich.me/src/assets/main.css @@ -0,0 +1,35 @@ +@import './base.css'; + +#app { + max-width: 1280px; + margin: 0 auto; + padding: 2rem; + + font-weight: normal; +} + +a, +.green { + text-decoration: none; + color: hsla(160, 100%, 37%, 1); + transition: 0.4s; +} + +@media (hover: hover) { + a:hover { + background-color: hsla(160, 100%, 37%, 0.2); + } +} + +@media (min-width: 1024px) { + body { + display: flex; + place-items: center; + } + + #app { + display: grid; + grid-template-columns: 1fr 1fr; + padding: 0 2rem; + } +} diff --git a/apps/d.d0rich.me/src/components/HelloWorld.vue b/apps/d.d0rich.me/src/components/HelloWorld.vue new file mode 100644 index 00000000..a1dfe161 --- /dev/null +++ b/apps/d.d0rich.me/src/components/HelloWorld.vue @@ -0,0 +1,42 @@ + + + + + diff --git a/apps/d.d0rich.me/src/components/TheWelcome.vue b/apps/d.d0rich.me/src/components/TheWelcome.vue new file mode 100644 index 00000000..235d35b8 --- /dev/null +++ b/apps/d.d0rich.me/src/components/TheWelcome.vue @@ -0,0 +1,121 @@ + + + diff --git a/apps/d.d0rich.me/src/components/WelcomeItem.vue b/apps/d.d0rich.me/src/components/WelcomeItem.vue new file mode 100644 index 00000000..6d7086ae --- /dev/null +++ b/apps/d.d0rich.me/src/components/WelcomeItem.vue @@ -0,0 +1,87 @@ + + + diff --git a/apps/d.d0rich.me/src/components/__tests__/HelloWorld.spec.ts b/apps/d.d0rich.me/src/components/__tests__/HelloWorld.spec.ts new file mode 100644 index 00000000..25332020 --- /dev/null +++ b/apps/d.d0rich.me/src/components/__tests__/HelloWorld.spec.ts @@ -0,0 +1,11 @@ +import { describe, it, expect } from 'vitest' + +import { mount } from '@vue/test-utils' +import HelloWorld from '../HelloWorld.vue' + +describe('HelloWorld', () => { + it('renders properly', () => { + const wrapper = mount(HelloWorld, { props: { msg: 'Hello Vitest' } }) + expect(wrapper.text()).toContain('Hello Vitest') + }) +}) diff --git a/apps/d.d0rich.me/src/components/icons/IconCommunity.vue b/apps/d.d0rich.me/src/components/icons/IconCommunity.vue new file mode 100644 index 00000000..ea8ddefb --- /dev/null +++ b/apps/d.d0rich.me/src/components/icons/IconCommunity.vue @@ -0,0 +1,12 @@ + diff --git a/apps/d.d0rich.me/src/components/icons/IconDocumentation.vue b/apps/d.d0rich.me/src/components/icons/IconDocumentation.vue new file mode 100644 index 00000000..63a85340 --- /dev/null +++ b/apps/d.d0rich.me/src/components/icons/IconDocumentation.vue @@ -0,0 +1,12 @@ + diff --git a/apps/d.d0rich.me/src/components/icons/IconEcosystem.vue b/apps/d.d0rich.me/src/components/icons/IconEcosystem.vue new file mode 100644 index 00000000..385a2029 --- /dev/null +++ b/apps/d.d0rich.me/src/components/icons/IconEcosystem.vue @@ -0,0 +1,12 @@ + diff --git a/apps/d.d0rich.me/src/components/icons/IconSupport.vue b/apps/d.d0rich.me/src/components/icons/IconSupport.vue new file mode 100644 index 00000000..7db961e4 --- /dev/null +++ b/apps/d.d0rich.me/src/components/icons/IconSupport.vue @@ -0,0 +1,12 @@ + diff --git a/apps/d.d0rich.me/src/components/icons/IconTooling.vue b/apps/d.d0rich.me/src/components/icons/IconTooling.vue new file mode 100644 index 00000000..660598d7 --- /dev/null +++ b/apps/d.d0rich.me/src/components/icons/IconTooling.vue @@ -0,0 +1,19 @@ + + diff --git a/apps/d.d0rich.me/src/entities/blog/model/DBlog.ts b/apps/d.d0rich.me/src/entities/blog/model/DBlog.ts new file mode 100644 index 00000000..b7d3438f --- /dev/null +++ b/apps/d.d0rich.me/src/entities/blog/model/DBlog.ts @@ -0,0 +1,6 @@ +import { DSocialNetworkBlog } from '@d0rich/contracts/wrappers/DSocialNetworkBlog' + +export class DBlog { + // eslint-disable-next-line no-useless-constructor + constructor(public readonly contract: DSocialNetworkBlog) {} +} diff --git a/apps/d.d0rich.me/src/entities/master/model/DMaster.ts b/apps/d.d0rich.me/src/entities/master/model/DMaster.ts new file mode 100644 index 00000000..941324b3 --- /dev/null +++ b/apps/d.d0rich.me/src/entities/master/model/DMaster.ts @@ -0,0 +1,6 @@ +import { DSocialNetworkMaster } from '@d0rich/contracts/wrappers/DSocialNetworkMaster' + +export class DMaster { + // eslint-disable-next-line no-useless-constructor + constructor(public readonly contract: DSocialNetworkMaster) {} +} diff --git a/apps/d.d0rich.me/src/entities/post/model/DPost.ts b/apps/d.d0rich.me/src/entities/post/model/DPost.ts new file mode 100644 index 00000000..9e31e27f --- /dev/null +++ b/apps/d.d0rich.me/src/entities/post/model/DPost.ts @@ -0,0 +1,61 @@ +import { Address } from 'ton-core' +import { + DSocialNetworkPost, + type NftMetadata +} from '@d0rich/contracts/wrappers/DSocialNetworkPost' + +export type DPostModel = { + url: string + date: Date + author: Address + contentMd: string +} + +/** Start of text symbol */ +const stxChar = String.fromCharCode(2) +/** End of text symbol */ +const etxChar = String.fromCharCode(3) + +export class DPost { + model?: DPostModel + + // eslint-disable-next-line no-useless-constructor + constructor(public readonly contract: DSocialNetworkPost) {} + + static serializePostData(model: DPostModel): NftMetadata { + const name = `Post on D from ${model.date.toLocaleDateString( + 'de-DE' + )} by ${model.author.toRawString()}` + const stringBuilder: string[] = [] + stringBuilder.push(`Posted: ${model.date.toLocaleDateString('de-DE')}`) + stringBuilder.push(`Author: ${model.author.toString()}`) + stringBuilder.push(`See on D: ${model.url}`) + stringBuilder.push('') + // TODO: Convert markdown to plain text + stringBuilder.push(model.contentMd) + stringBuilder.push('', '', '') + stringBuilder.push('===== Technical information =====') + stringBuilder.push( + `${stxChar}${JSON.stringify({ + url: model.url, + date: model.date.toISOString(), + author: model.author.toRawString(), + contentMd: model.contentMd + })}${etxChar}` + ) + return { + $$type: 'NftMetadata', + image: 'https://d.d0rich.me/metadata/.jpg', + name, + description: stringBuilder.join('\n') + } + } + + static deserializePostData(metadata: NftMetadata): DPostModel { + const modelJSON = metadata.description.split(etxChar)[0].split(stxChar)[1] + const model: DPostModel = JSON.parse(modelJSON) + model.date = new Date(model.date) + model.author = Address.parseRaw(model.author as unknown as string) + return model + } +} diff --git a/apps/d.d0rich.me/src/main.ts b/apps/d.d0rich.me/src/main.ts new file mode 100644 index 00000000..5dcad83c --- /dev/null +++ b/apps/d.d0rich.me/src/main.ts @@ -0,0 +1,14 @@ +import './assets/main.css' + +import { createApp } from 'vue' +import { createPinia } from 'pinia' + +import App from './App.vue' +import router from './router' + +const app = createApp(App) + +app.use(createPinia()) +app.use(router) + +app.mount('#app') diff --git a/apps/d.d0rich.me/src/router/index.ts b/apps/d.d0rich.me/src/router/index.ts new file mode 100644 index 00000000..a49ae507 --- /dev/null +++ b/apps/d.d0rich.me/src/router/index.ts @@ -0,0 +1,23 @@ +import { createRouter, createWebHistory } from 'vue-router' +import HomeView from '../views/HomeView.vue' + +const router = createRouter({ + history: createWebHistory(import.meta.env.BASE_URL), + routes: [ + { + path: '/', + name: 'home', + component: HomeView + }, + { + path: '/about', + name: 'about', + // route level code-splitting + // this generates a separate chunk (About.[hash].js) for this route + // which is lazy-loaded when the route is visited. + component: () => import('../views/AboutView.vue') + } + ] +}) + +export default router diff --git a/apps/d.d0rich.me/src/stores/counter.ts b/apps/d.d0rich.me/src/stores/counter.ts new file mode 100644 index 00000000..b6757ba5 --- /dev/null +++ b/apps/d.d0rich.me/src/stores/counter.ts @@ -0,0 +1,12 @@ +import { ref, computed } from 'vue' +import { defineStore } from 'pinia' + +export const useCounterStore = defineStore('counter', () => { + const count = ref(0) + const doubleCount = computed(() => count.value * 2) + function increment() { + count.value++ + } + + return { count, doubleCount, increment } +}) diff --git a/apps/d.d0rich.me/src/views/AboutView.vue b/apps/d.d0rich.me/src/views/AboutView.vue new file mode 100644 index 00000000..756ad2a1 --- /dev/null +++ b/apps/d.d0rich.me/src/views/AboutView.vue @@ -0,0 +1,15 @@ + + + diff --git a/apps/d.d0rich.me/src/views/HomeView.vue b/apps/d.d0rich.me/src/views/HomeView.vue new file mode 100644 index 00000000..d5c0217e --- /dev/null +++ b/apps/d.d0rich.me/src/views/HomeView.vue @@ -0,0 +1,9 @@ + + + diff --git a/apps/d.d0rich.me/tsconfig.app.json b/apps/d.d0rich.me/tsconfig.app.json new file mode 100644 index 00000000..3e5b621e --- /dev/null +++ b/apps/d.d0rich.me/tsconfig.app.json @@ -0,0 +1,12 @@ +{ + "extends": "@vue/tsconfig/tsconfig.dom.json", + "include": ["env.d.ts", "src/**/*", "src/**/*.vue"], + "exclude": ["src/**/__tests__/*"], + "compilerOptions": { + "composite": true, + "baseUrl": ".", + "paths": { + "@/*": ["./src/*"] + } + } +} diff --git a/apps/d.d0rich.me/tsconfig.json b/apps/d.d0rich.me/tsconfig.json new file mode 100644 index 00000000..100cf6a8 --- /dev/null +++ b/apps/d.d0rich.me/tsconfig.json @@ -0,0 +1,14 @@ +{ + "files": [], + "references": [ + { + "path": "./tsconfig.node.json" + }, + { + "path": "./tsconfig.app.json" + }, + { + "path": "./tsconfig.vitest.json" + } + ] +} diff --git a/apps/d.d0rich.me/tsconfig.node.json b/apps/d.d0rich.me/tsconfig.node.json new file mode 100644 index 00000000..dee96bed --- /dev/null +++ b/apps/d.d0rich.me/tsconfig.node.json @@ -0,0 +1,16 @@ +{ + "extends": "@tsconfig/node18/tsconfig.json", + "include": [ + "vite.config.*", + "vitest.config.*", + "cypress.config.*", + "nightwatch.conf.*", + "playwright.config.*" + ], + "compilerOptions": { + "composite": true, + "module": "ESNext", + "moduleResolution": "Bundler", + "types": ["node"] + } +} diff --git a/apps/d.d0rich.me/tsconfig.vitest.json b/apps/d.d0rich.me/tsconfig.vitest.json new file mode 100644 index 00000000..d080d611 --- /dev/null +++ b/apps/d.d0rich.me/tsconfig.vitest.json @@ -0,0 +1,9 @@ +{ + "extends": "./tsconfig.app.json", + "exclude": [], + "compilerOptions": { + "composite": true, + "lib": [], + "types": ["node", "jsdom"] + } +} diff --git a/apps/d.d0rich.me/vite.config.ts b/apps/d.d0rich.me/vite.config.ts new file mode 100644 index 00000000..de5cb31c --- /dev/null +++ b/apps/d.d0rich.me/vite.config.ts @@ -0,0 +1,14 @@ +import { fileURLToPath, URL } from 'node:url' + +import { defineConfig } from 'vite' +import vue from '@vitejs/plugin-vue' + +// https://vitejs.dev/config/ +export default defineConfig({ + plugins: [vue()], + resolve: { + alias: { + '@': fileURLToPath(new URL('./src', import.meta.url)) + } + } +}) diff --git a/apps/d.d0rich.me/vitest.config.ts b/apps/d.d0rich.me/vitest.config.ts new file mode 100644 index 00000000..10067d57 --- /dev/null +++ b/apps/d.d0rich.me/vitest.config.ts @@ -0,0 +1,14 @@ +import { fileURLToPath } from 'node:url' +import { mergeConfig, defineConfig, configDefaults } from 'vitest/config' +import viteConfig from './vite.config' + +export default mergeConfig( + viteConfig, + defineConfig({ + test: { + environment: 'jsdom', + exclude: [...configDefaults.exclude, 'e2e/*'], + root: fileURLToPath(new URL('./', import.meta.url)) + } + }) +) diff --git a/apps/d0rich.me/ignore-build.mjs b/apps/d0rich.me/ignore-build.mjs index 0eb6af1c..b85c6aaa 100644 --- a/apps/d0rich.me/ignore-build.mjs +++ b/apps/d0rich.me/ignore-build.mjs @@ -1,27 +1,3 @@ -import { execSync } from 'child_process' +import { ignoreD0richMeBuild } from '../../ignore-builds-master.mjs' -const cachedCommitRef = - process.env.CACHED_COMMIT_REF || 'd06423d365fa9cf3ef99a8653abbf1a83fe7d3bb' -const commitRef = process.env.COMMIT_REF || 'HEAD' - -const changesList = execSync( - `git diff --name-only ${cachedCommitRef} ${commitRef}` -).toString() - -const isD0richMeChanged = changesList.includes('apps/d0rich.me') -const isNuxtContentMermaidChanged = changesList.includes( - 'packages/nuxt-content-mermaid' -) -const isNuxtDesignSystemChanged = changesList.includes( - 'packages/nuxt-design-system' -) - -const isEspritDesignChanged = changesList.includes('packages/esprit-design') - -const ignoreBuild = - !isD0richMeChanged && - !isNuxtContentMermaidChanged && - !isNuxtDesignSystemChanged && - !isEspritDesignChanged - -process.exit(ignoreBuild ? 0 : 1) +process.exit(ignoreD0richMeBuild ? 0 : 1) diff --git a/apps/d0xigen.d0rich.me/ignore-build.mjs b/apps/d0xigen.d0rich.me/ignore-build.mjs index d56e13d0..b02c04b5 100644 --- a/apps/d0xigen.d0rich.me/ignore-build.mjs +++ b/apps/d0xigen.d0rich.me/ignore-build.mjs @@ -1,27 +1,3 @@ -import { execSync } from 'child_process' +import { ignoreD0xigenD0richMeBuild } from '../../ignore-builds-master.mjs' -const cachedCommitRef = - process.env.CACHED_COMMIT_REF || 'd06423d365fa9cf3ef99a8653abbf1a83fe7d3bb' -const commitRef = process.env.COMMIT_REF || 'HEAD' - -const changesList = execSync( - `git diff --name-only ${cachedCommitRef} ${commitRef}` -).toString() - -const isD0xigenD0richMeChanged = changesList.includes('apps/d0xigen.d0rich.me') -const isNuxtContentMermaidChanged = changesList.includes( - 'packages/nuxt-content-mermaid' -) -const isNuxtDesignSystemChanged = changesList.includes( - 'packages/nuxt-design-system' -) - -const isEspritDesignChanged = changesList.includes('packages/esprit-design') - -const ignoreBuild = - !isD0xigenD0richMeChanged && - !isNuxtContentMermaidChanged && - !isNuxtDesignSystemChanged && - !isEspritDesignChanged - -process.exit(ignoreBuild ? 0 : 1) +process.exit(ignoreD0xigenD0richMeBuild ? 0 : 1) diff --git a/apps/design.d0rich.me/ignore-build.mjs b/apps/design.d0rich.me/ignore-build.mjs index 37d418dd..43e7896a 100644 --- a/apps/design.d0rich.me/ignore-build.mjs +++ b/apps/design.d0rich.me/ignore-build.mjs @@ -1,22 +1,3 @@ -import { execSync } from 'child_process' +import { ignoreDesignD0richMeBuild } from '../../ignore-builds-master.mjs' -const cachedCommitRef = - process.env.CACHED_COMMIT_REF || 'd06423d365fa9cf3ef99a8653abbf1a83fe7d3bb' -const commitRef = process.env.COMMIT_REF || 'HEAD' - -const changesList = execSync( - `git diff --name-only ${cachedCommitRef} ${commitRef}` -).toString() - -const isDesignD0richMeChanged = changesList.includes('apps/design.d0rich.me') -const isNuxtDesignSystemChanged = changesList.includes( - 'packages/nuxt-design-system' -) -const isEspritDesignChanged = changesList.includes('packages/esprit-design') - -const ignoreBuild = - !isDesignD0richMeChanged && - !isNuxtDesignSystemChanged && - !isEspritDesignChanged - -process.exit(ignoreBuild ? 0 : 1) +process.exit(ignoreDesignD0richMeBuild ? 0 : 1) diff --git a/contracts/.gitignore b/contracts/.gitignore new file mode 100644 index 00000000..211f8113 --- /dev/null +++ b/contracts/.gitignore @@ -0,0 +1,3 @@ +node_modules +temp +build diff --git a/contracts/.prettierignore b/contracts/.prettierignore new file mode 100644 index 00000000..378eac25 --- /dev/null +++ b/contracts/.prettierignore @@ -0,0 +1 @@ +build diff --git a/contracts/README.md b/contracts/README.md new file mode 100644 index 00000000..e2b0ca7f --- /dev/null +++ b/contracts/README.md @@ -0,0 +1,26 @@ +# d-social-network + +## Project structure + +- `contracts` - source code of all the smart contracts of the project and their dependencies. +- `wrappers` - wrapper classes (implementing `Contract` from ton-core) for the contracts, including any [de]serialization primitives and compilation functions. +- `tests` - tests for the contracts. +- `scripts` - scripts used by the project, mainly the deployment scripts. + +## How to use + +### Build + +`npx blueprint build` or `yarn blueprint build` + +### Test + +`npx blueprint test` or `yarn blueprint test` + +### Deploy or run another script + +`npx blueprint run` or `yarn blueprint run` + +### Add a new contract + +`npx blueprint create ContractName` or `yarn blueprint create ContractName` diff --git a/contracts/build-scripts/new-imports.ts b/contracts/build-scripts/new-imports.ts new file mode 100644 index 00000000..f3f3d8bf --- /dev/null +++ b/contracts/build-scripts/new-imports.ts @@ -0,0 +1,22 @@ +/* eslint-disable */ +import type { + TupleItem, + ContractProvider, + Sender, + Contract, + ContractABI, + ABIType, + ABIGetter, + ABIReceiver, + DictionaryValue +} from 'ton-core' + +import { Cell } from 'ton-core/dist/boc/Cell' +import { Slice } from 'ton-core/dist/boc/Slice' +import { Address } from 'ton-core/dist/address/Address' +import { Builder, beginCell } from 'ton-core/dist/boc/Builder' +import { ComputeError } from 'ton-core/dist/contract/ComputeError' +import { contractAddress } from 'ton-core/dist/address/contractAddress' +import { TupleReader } from 'ton-core/dist/tuple/reader' +import { TupleBuilder } from 'ton-core/dist/tuple/builder' +import { Dictionary } from 'ton-core/dist/dict/Dictionary' diff --git a/contracts/build-scripts/patch-wrappers-imports.mjs b/contracts/build-scripts/patch-wrappers-imports.mjs new file mode 100644 index 00000000..4e4c36aa --- /dev/null +++ b/contracts/build-scripts/patch-wrappers-imports.mjs @@ -0,0 +1,26 @@ +import * as fs from 'fs/promises' +import { join } from 'path' + +async function main() { + // Load new imports string from file + const newImports = await fs.readFile('./build-scripts/new-imports.ts', 'utf8') + // Find all ts files in build folder and all subfolders + const files = await fs.readdir('./build', { + withFileTypes: true, + recursive: true + }) + const tsFiles = files.filter( + (file) => file.isFile() && file.name.endsWith('.ts') + ) + for (const file of tsFiles) { + const filePath = join(file.path, file.name) + // Read file + const data = await fs.readFile(filePath, 'utf8') + // Replace first 21 lines with new imports + const result = newImports + data.split('\n').slice(21).join('\n') + // Write result to file + await fs.writeFile(filePath, result, 'utf8') + } +} + +main() diff --git a/contracts/contracts/d_social_network_blog.tact b/contracts/contracts/d_social_network_blog.tact new file mode 100644 index 00000000..8624d5bd --- /dev/null +++ b/contracts/contracts/d_social_network_blog.tact @@ -0,0 +1,102 @@ +import "@stdlib/deploy"; +import "./lib/trait_nft_collection.tact"; +import "./lib/trait_nft_collection_royalty_extention.tact"; +import "./lib/trait_personal_fees.tact"; +import "./lib/trait_storage_controller.tact"; +import "./messages_d.tact"; +import "./d_social_network_post.tact"; + +contract DSocialNetworkBlog with NftCollection, NftCollectionRoyaltyExtention, PersonalFees, StorageController { + blog_id: Int; + next_item_index: Int as uint32 = 0; + owner: Address; + personal_fees_destination: Address; + master_contract: Address; + royalty_params: RoyaltyParams; + is_initialized: Bool = false; + collection_content: NftCollectionMetadata; + + const CREATE_POST_FEE: Int = ton("0.1"); + + init(blog_id: Int, master_contract: Address, personal_fees_destination: Address){ + self.blog_id = blog_id; + self.master_contract = master_contract; + self.owner = master_contract; + self.personal_fees_destination = personal_fees_destination; + self.royalty_params = RoyaltyParams{ + numerator: 13, + denominator: 100, + destination: master_contract + }; + self.collection_content = NftCollectionMetadata { + image: "", + name: "", + description: "" + }; + } + + get fun get_blog_info(): BlogInfo { + return BlogInfo{ + id: self.blog_id, + owner: self.owner, + master_contract: self.master_contract, + collection_content: self.collection_content, + is_initialized: self.is_initialized + }; + } + + get fun get_next_item_index(): Int { + return self.next_item_index; + } + + receive(msg: InitializeBlog) { + require(!self.is_initialized, "Blog is already initialized"); + self.requireOwner(); + self.owner = msg.owner; + self.collection_content = msg.collection_content; + self.is_initialized = true; + self.sendExcessesTo( + self.calculateSendAmountToHoldEnoughTonForStorage(), + self.owner, + msg.query_id + ); + } + + receive(msg: EditBlogMetadata) { + self.requireInitialization(); + self.requireOwner(); + self.collection_content = msg.new_metadata; + self.sendExcessesTo( + self.calculateSendAmountToHoldEnoughTonForStorage(), + self.owner, + msg.query_id + ); + } + + fun requireInitialization() { + require(self.is_initialized, "Blog is not initialized"); + } + + override fun getNftItemInit(item_index: Int): StateInit { + return initOf DSocialNetworkPost( + myAddress(), + item_index, + self.owner + ); + } + + override fun actionBeforeMinting() { + require(context().value + ton("0.05") >= self.CREATE_POST_FEE, "not enough funds to create a post"); + } + + override fun actionAfterMinting() { + let sb: StringBuilder = beginString(); + sb.append("D Blog Post Created by "); + sb.append(self.collection_content.name); + self.sendRemainingValueAsPersonalFee(sb.toString()); + } + + override fun calculateNftItemInitialBalance(): Int { + return self.calculateSendAmountToHoldFeeFromRecieved(self.CREATE_POST_FEE); + } +} diff --git a/contracts/contracts/d_social_network_master.tact b/contracts/contracts/d_social_network_master.tact new file mode 100644 index 00000000..9c33034f --- /dev/null +++ b/contracts/contracts/d_social_network_master.tact @@ -0,0 +1,65 @@ +import "@stdlib/deploy"; +import "@stdlib/ownable"; +import "./lib/trait_accounting.tact"; +import "./lib/trait_personal_fees.tact"; +import "./lib/trait_storage_controller.tact"; +import "./messages_d.tact"; +import "./d_social_network_blog.tact"; + +contract DSocialNetworkMaster with Deployable, OwnableTransferable, Accounting, PersonalFees, StorageController { + version: String = "v1"; + owner: Address; + personal_fees_destination: Address; + next_blog_index: Int as uint32 = 0; + + const CREATE_POST_FEE: Int = ton("0.5"); + + init() { + let ctx: Context = context(); + self.owner = ctx.sender; + self.personal_fees_destination = ctx.sender; + } + + get fun get_version(): String { + return self.version; + } + + get fun get_blogs_count(): Int { + return self.next_blog_index; + } + + get fun get_blog_address_by_index(item_index: Int): Address?{ + let initCode: StateInit = self.getBlogInit(item_index); + return contractAddress(initCode); + } + + receive(msg: CreateBlog) { + require(self.next_blog_index >= 0, "non-sequential blog id"); + let ctx: Context = context(); + require(ctx.value + ton("0.05") >= self.CREATE_POST_FEE, "not enough funds to create a blog"); + let blog_init: StateInit = self.getBlogInit(self.next_blog_index); + send(SendParameters{ + to: contractAddress(blog_init), + value: self.calculateSendAmountToHoldFeeFromRecieved(self.CREATE_POST_FEE), + bounce: false, + mode: SendIgnoreErrors, + body: InitializeBlog { + query_id: 0, + owner: ctx.sender, + collection_content: msg.blog_metadata + }.toCell(), + code: blog_init.code, + data: blog_init.data + }); + self.next_blog_index = self.next_blog_index + 1; + + let sb: StringBuilder = beginString(); + sb.append("D Blog Created: "); + sb.append(msg.blog_metadata.name); + self.sendRemainingValueAsPersonalFee(sb.toString()); + } + + fun getBlogInit(account_id: Int): StateInit { + return initOf DSocialNetworkBlog(account_id, myAddress(), self.personal_fees_destination); + } +} diff --git a/contracts/contracts/d_social_network_post.tact b/contracts/contracts/d_social_network_post.tact new file mode 100644 index 00000000..26294373 --- /dev/null +++ b/contracts/contracts/d_social_network_post.tact @@ -0,0 +1,45 @@ +import "@stdlib/deploy"; +import "@stdlib/ownable"; +import "./lib/trait_nft_item.tact"; +import "./lib/trait_storage_controller.tact"; +import "./messages_d.tact"; + +contract DSocialNetworkPost with NftItem, StorageController { + collection_address: Address; + item_index: Int; + owner: Address; + is_initialized: Bool; + individual_content: NftMetadata; + + init(collection_address: Address, item_index: Int, owner: Address){ + self.collection_address = collection_address; + self.item_index = item_index; + self.owner = collection_address; + self.individual_content = NftMetadata { + name: "", + description: "", + image: "" + }; + self.is_initialized = false; + } + + get fun get_post_info(): PostInfo { + return PostInfo{ + blog: self.collection_address, + id: self.item_index, + owner: self.owner, + nft_content: self.individual_content + }; + } + + receive(msg: EditBlogPost) { + require(self.is_initialized, "This post is not initialized yet"); + self.requireOwner(); + self.individual_content = msg.new_metadata; + self.sendExcessesTo( + self.calculateSendAmountToHoldEnoughTonForStorage(), + self.owner, + msg.query_id + ); + } +} diff --git a/contracts/contracts/imports/stdlib.fc b/contracts/contracts/imports/stdlib.fc new file mode 100644 index 00000000..fa048f67 --- /dev/null +++ b/contracts/contracts/imports/stdlib.fc @@ -0,0 +1,625 @@ +;; Standard library for funC +;; + +{- + # Tuple manipulation primitives + The names and the types are mostly self-explaining. + See [polymorhism with forall](https://ton.org/docs/#/func/functions?id=polymorphism-with-forall) + for more info on the polymorphic functions. + + Note that currently values of atomic type `tuple` can't be cast to composite tuple type (e.g. `[int, cell]`) + and vise versa. +-} + +{- + # Lisp-style lists + + Lists can be represented as nested 2-elements tuples. + Empty list is conventionally represented as TVM `null` value (it can be obtained by calling [null()]). + For example, tuple `(1, (2, (3, null)))` represents list `[1, 2, 3]`. Elements of a list can be of different types. +-} + +;;; Adds an element to the beginning of lisp-style list. +forall X -> tuple cons(X head, tuple tail) asm "CONS"; + +;;; Extracts the head and the tail of lisp-style list. +forall X -> (X, tuple) uncons(tuple list) asm "UNCONS"; + +;;; Extracts the tail and the head of lisp-style list. +forall X -> (tuple, X) list_next(tuple list) asm( -> 1 0) "UNCONS"; + +;;; Returns the head of lisp-style list. +forall X -> X car(tuple list) asm "CAR"; + +;;; Returns the tail of lisp-style list. +tuple cdr(tuple list) asm "CDR"; + +;;; Creates tuple with zero elements. +tuple empty_tuple() asm "NIL"; + +;;; Appends a value `x` to a `Tuple t = (x1, ..., xn)`, but only if the resulting `Tuple t' = (x1, ..., xn, x)` +;;; is of length at most 255. Otherwise throws a type check exception. +forall X -> tuple tpush(tuple t, X value) asm "TPUSH"; +forall X -> (tuple, ()) ~tpush(tuple t, X value) asm "TPUSH"; + +;;; Creates a tuple of length one with given argument as element. +forall X -> [X] single(X x) asm "SINGLE"; + +;;; Unpacks a tuple of length one +forall X -> X unsingle([X] t) asm "UNSINGLE"; + +;;; Creates a tuple of length two with given arguments as elements. +forall X, Y -> [X, Y] pair(X x, Y y) asm "PAIR"; + +;;; Unpacks a tuple of length two +forall X, Y -> (X, Y) unpair([X, Y] t) asm "UNPAIR"; + +;;; Creates a tuple of length three with given arguments as elements. +forall X, Y, Z -> [X, Y, Z] triple(X x, Y y, Z z) asm "TRIPLE"; + +;;; Unpacks a tuple of length three +forall X, Y, Z -> (X, Y, Z) untriple([X, Y, Z] t) asm "UNTRIPLE"; + +;;; Creates a tuple of length four with given arguments as elements. +forall X, Y, Z, W -> [X, Y, Z, W] tuple4(X x, Y y, Z z, W w) asm "4 TUPLE"; + +;;; Unpacks a tuple of length four +forall X, Y, Z, W -> (X, Y, Z, W) untuple4([X, Y, Z, W] t) asm "4 UNTUPLE"; + +;;; Returns the first element of a tuple (with unknown element types). +forall X -> X first(tuple t) asm "FIRST"; + +;;; Returns the second element of a tuple (with unknown element types). +forall X -> X second(tuple t) asm "SECOND"; + +;;; Returns the third element of a tuple (with unknown element types). +forall X -> X third(tuple t) asm "THIRD"; + +;;; Returns the fourth element of a tuple (with unknown element types). +forall X -> X fourth(tuple t) asm "3 INDEX"; + +;;; Returns the first element of a pair tuple. +forall X, Y -> X pair_first([X, Y] p) asm "FIRST"; + +;;; Returns the second element of a pair tuple. +forall X, Y -> Y pair_second([X, Y] p) asm "SECOND"; + +;;; Returns the first element of a triple tuple. +forall X, Y, Z -> X triple_first([X, Y, Z] p) asm "FIRST"; + +;;; Returns the second element of a triple tuple. +forall X, Y, Z -> Y triple_second([X, Y, Z] p) asm "SECOND"; + +;;; Returns the third element of a triple tuple. +forall X, Y, Z -> Z triple_third([X, Y, Z] p) asm "THIRD"; + + +;;; Push null element (casted to given type) +;;; By the TVM type `Null` FunC represents absence of a value of some atomic type. +;;; So `null` can actually have any atomic type. +forall X -> X null() asm "PUSHNULL"; + +;;; Moves a variable [x] to the top of the stack +forall X -> (X, ()) ~impure_touch(X x) impure asm "NOP"; + + + +;;; Returns the current Unix time as an Integer +int now() asm "NOW"; + +;;; Returns the internal address of the current smart contract as a Slice with a `MsgAddressInt`. +;;; If necessary, it can be parsed further using primitives such as [parse_std_addr]. +slice my_address() asm "MYADDR"; + +;;; Returns the balance of the smart contract as a tuple consisting of an int +;;; (balance in nanotoncoins) and a `cell` +;;; (a dictionary with 32-bit keys representing the balance of "extra currencies") +;;; at the start of Computation Phase. +;;; Note that RAW primitives such as [send_raw_message] do not update this field. +[int, cell] get_balance() asm "BALANCE"; + +;;; Returns the logical time of the current transaction. +int cur_lt() asm "LTIME"; + +;;; Returns the starting logical time of the current block. +int block_lt() asm "BLOCKLT"; + +;;; Computes the representation hash of a `cell` [c] and returns it as a 256-bit unsigned integer `x`. +;;; Useful for signing and checking signatures of arbitrary entities represented by a tree of cells. +int cell_hash(cell c) asm "HASHCU"; + +;;; Computes the hash of a `slice s` and returns it as a 256-bit unsigned integer `x`. +;;; The result is the same as if an ordinary cell containing only data and references from `s` had been created +;;; and its hash computed by [cell_hash]. +int slice_hash(slice s) asm "HASHSU"; + +;;; Computes sha256 of the data bits of `slice` [s]. If the bit length of `s` is not divisible by eight, +;;; throws a cell underflow exception. The hash value is returned as a 256-bit unsigned integer `x`. +int string_hash(slice s) asm "SHA256U"; + +{- + # Signature checks +-} + +;;; Checks the Ed25519-`signature` of a `hash` (a 256-bit unsigned integer, usually computed as the hash of some data) +;;; using [public_key] (also represented by a 256-bit unsigned integer). +;;; The signature must contain at least 512 data bits; only the first 512 bits are used. +;;; The result is `−1` if the signature is valid, `0` otherwise. +;;; Note that `CHKSIGNU` creates a 256-bit slice with the hash and calls `CHKSIGNS`. +;;; That is, if [hash] is computed as the hash of some data, these data are hashed twice, +;;; the second hashing occurring inside `CHKSIGNS`. +int check_signature(int hash, slice signature, int public_key) asm "CHKSIGNU"; + +;;; Checks whether [signature] is a valid Ed25519-signature of the data portion of `slice data` using `public_key`, +;;; similarly to [check_signature]. +;;; If the bit length of [data] is not divisible by eight, throws a cell underflow exception. +;;; The verification of Ed25519 signatures is the standard one, +;;; with sha256 used to reduce [data] to the 256-bit number that is actually signed. +int check_data_signature(slice data, slice signature, int public_key) asm "CHKSIGNS"; + +{--- + # Computation of boc size + The primitives below may be useful for computing storage fees of user-provided data. +-} + +;;; Returns `(x, y, z, -1)` or `(null, null, null, 0)`. +;;; Recursively computes the count of distinct cells `x`, data bits `y`, and cell references `z` +;;; in the DAG rooted at `cell` [c], effectively returning the total storage used by this DAG taking into account +;;; the identification of equal cells. +;;; The values of `x`, `y`, and `z` are computed by a depth-first traversal of this DAG, +;;; with a hash table of visited cell hashes used to prevent visits of already-visited cells. +;;; The total count of visited cells `x` cannot exceed non-negative [max_cells]; +;;; otherwise the computation is aborted before visiting the `(max_cells + 1)`-st cell and +;;; a zero flag is returned to indicate failure. If [c] is `null`, returns `x = y = z = 0`. +(int, int, int) compute_data_size(cell c, int max_cells) impure asm "CDATASIZE"; + +;;; Similar to [compute_data_size?], but accepting a `slice` [s] instead of a `cell`. +;;; The returned value of `x` does not take into account the cell that contains the `slice` [s] itself; +;;; however, the data bits and the cell references of [s] are accounted for in `y` and `z`. +(int, int, int) slice_compute_data_size(slice s, int max_cells) impure asm "SDATASIZE"; + +;;; A non-quiet version of [compute_data_size?] that throws a cell overflow exception (`8`) on failure. +(int, int, int, int) compute_data_size?(cell c, int max_cells) asm "CDATASIZEQ NULLSWAPIFNOT2 NULLSWAPIFNOT"; + +;;; A non-quiet version of [slice_compute_data_size?] that throws a cell overflow exception (8) on failure. +(int, int, int, int) slice_compute_data_size?(cell c, int max_cells) asm "SDATASIZEQ NULLSWAPIFNOT2 NULLSWAPIFNOT"; + +;;; Throws an exception with exit_code excno if cond is not 0 (commented since implemented in compilator) +;; () throw_if(int excno, int cond) impure asm "THROWARGIF"; + +{-- + # Debug primitives + Only works for local TVM execution with debug level verbosity +-} +;;; Dumps the stack (at most the top 255 values) and shows the total stack depth. +() dump_stack() impure asm "DUMPSTK"; + +{- + # Persistent storage save and load +-} + +;;; Returns the persistent contract storage cell. It can be parsed or modified with slice and builder primitives later. +cell get_data() asm "c4 PUSH"; + +;;; Sets `cell` [c] as persistent contract data. You can update persistent contract storage with this primitive. +() set_data(cell c) impure asm "c4 POP"; + +{- + # Continuation primitives +-} +;;; Usually `c3` has a continuation initialized by the whole code of the contract. It is used for function calls. +;;; The primitive returns the current value of `c3`. +cont get_c3() impure asm "c3 PUSH"; + +;;; Updates the current value of `c3`. Usually, it is used for updating smart contract code in run-time. +;;; Note that after execution of this primitive the current code +;;; (and the stack of recursive function calls) won't change, +;;; but any other function call will use a function from the new code. +() set_c3(cont c) impure asm "c3 POP"; + +;;; Transforms a `slice` [s] into a simple ordinary continuation `c`, with `c.code = s` and an empty stack and savelist. +cont bless(slice s) impure asm "BLESS"; + +{--- + # Gas related primitives +-} + +;;; Sets current gas limit `gl` to its maximal allowed value `gm`, and resets the gas credit `gc` to zero, +;;; decreasing the value of `gr` by `gc` in the process. +;;; In other words, the current smart contract agrees to buy some gas to finish the current transaction. +;;; This action is required to process external messages, which bring no value (hence no gas) with themselves. +;;; +;;; For more details check [accept_message effects](https://ton.org/docs/#/smart-contracts/accept). +() accept_message() impure asm "ACCEPT"; + +;;; Sets current gas limit `gl` to the minimum of limit and `gm`, and resets the gas credit `gc` to zero. +;;; If the gas consumed so far (including the present instruction) exceeds the resulting value of `gl`, +;;; an (unhandled) out of gas exception is thrown before setting new gas limits. +;;; Notice that [set_gas_limit] with an argument `limit ≥ 2^63 − 1` is equivalent to [accept_message]. +() set_gas_limit(int limit) impure asm "SETGASLIMIT"; + +;;; Commits the current state of registers `c4` (“persistent data”) and `c5` (“actions”) +;;; so that the current execution is considered “successful” with the saved values even if an exception +;;; in Computation Phase is thrown later. +() commit() impure asm "COMMIT"; + +;;; Not implemented +;;() buy_gas(int gram) impure asm "BUYGAS"; + +;;; Computes the amount of gas that can be bought for `amount` nanoTONs, +;;; and sets `gl` accordingly in the same way as [set_gas_limit]. +() buy_gas(int amount) impure asm "BUYGAS"; + +;;; Computes the minimum of two integers [x] and [y]. +int min(int x, int y) asm "MIN"; + +;;; Computes the maximum of two integers [x] and [y]. +int max(int x, int y) asm "MAX"; + +;;; Sorts two integers. +(int, int) minmax(int x, int y) asm "MINMAX"; + +;;; Computes the absolute value of an integer [x]. +int abs(int x) asm "ABS"; + +{- + # Slice primitives + + It is said that a primitive _loads_ some data, + if it returns the data and the remainder of the slice + (so it can also be used as [modifying method](https://ton.org/docs/#/func/statements?id=modifying-methods)). + + It is said that a primitive _preloads_ some data, if it returns only the data + (it can be used as [non-modifying method](https://ton.org/docs/#/func/statements?id=non-modifying-methods)). + + Unless otherwise stated, loading and preloading primitives read the data from a prefix of the slice. +-} + + +;;; Converts a `cell` [c] into a `slice`. Notice that [c] must be either an ordinary cell, +;;; or an exotic cell (see [TVM.pdf](https://ton-blockchain.github.io/docs/tvm.pdf), 3.1.2) +;;; which is automatically loaded to yield an ordinary cell `c'`, converted into a `slice` afterwards. +slice begin_parse(cell c) asm "CTOS"; + +;;; Checks if [s] is empty. If not, throws an exception. +() end_parse(slice s) impure asm "ENDS"; + +;;; Loads the first reference from the slice. +(slice, cell) load_ref(slice s) asm( -> 1 0) "LDREF"; + +;;; Preloads the first reference from the slice. +cell preload_ref(slice s) asm "PLDREF"; + + {- Functions below are commented because are implemented on compilator level for optimisation -} + +;;; Loads a signed [len]-bit integer from a slice [s]. +;; (slice, int) ~load_int(slice s, int len) asm(s len -> 1 0) "LDIX"; + +;;; Loads an unsigned [len]-bit integer from a slice [s]. +;; (slice, int) ~load_uint(slice s, int len) asm( -> 1 0) "LDUX"; + +;;; Preloads a signed [len]-bit integer from a slice [s]. +;; int preload_int(slice s, int len) asm "PLDIX"; + +;;; Preloads an unsigned [len]-bit integer from a slice [s]. +;; int preload_uint(slice s, int len) asm "PLDUX"; + +;;; Loads the first `0 ≤ len ≤ 1023` bits from slice [s] into a separate `slice s''`. +;; (slice, slice) load_bits(slice s, int len) asm(s len -> 1 0) "LDSLICEX"; + +;;; Preloads the first `0 ≤ len ≤ 1023` bits from slice [s] into a separate `slice s''`. +;; slice preload_bits(slice s, int len) asm "PLDSLICEX"; + +;;; Loads serialized amount of TonCoins (any unsigned integer up to `2^128 - 1`). +(slice, int) load_grams(slice s) asm( -> 1 0) "LDGRAMS"; +(slice, int) load_coins(slice s) asm( -> 1 0) "LDGRAMS"; + +;;; Returns all but the first `0 ≤ len ≤ 1023` bits of `slice` [s]. +slice skip_bits(slice s, int len) asm "SDSKIPFIRST"; +(slice, ()) ~skip_bits(slice s, int len) asm "SDSKIPFIRST"; + +;;; Returns the first `0 ≤ len ≤ 1023` bits of `slice` [s]. +slice first_bits(slice s, int len) asm "SDCUTFIRST"; + +;;; Returns all but the last `0 ≤ len ≤ 1023` bits of `slice` [s]. +slice skip_last_bits(slice s, int len) asm "SDSKIPLAST"; +(slice, ()) ~skip_last_bits(slice s, int len) asm "SDSKIPLAST"; + +;;; Returns the last `0 ≤ len ≤ 1023` bits of `slice` [s]. +slice slice_last(slice s, int len) asm "SDCUTLAST"; + +;;; Loads a dictionary `D` (HashMapE) from `slice` [s]. +;;; (returns `null` if `nothing` constructor is used). +(slice, cell) load_dict(slice s) asm( -> 1 0) "LDDICT"; + +;;; Preloads a dictionary `D` from `slice` [s]. +cell preload_dict(slice s) asm "PLDDICT"; + +;;; Loads a dictionary as [load_dict], but returns only the remainder of the slice. +slice skip_dict(slice s) asm "SKIPDICT"; + +;;; Loads (Maybe ^Cell) from `slice` [s]. +;;; In other words loads 1 bit and if it is true +;;; loads first ref and return it with slice remainder +;;; otherwise returns `null` and slice remainder +(slice, cell) load_maybe_ref(slice s) asm( -> 1 0) "LDOPTREF"; + +;;; Preloads (Maybe ^Cell) from `slice` [s]. +cell preload_maybe_ref(slice s) asm "PLDOPTREF"; + + +;;; Returns the depth of `cell` [c]. +;;; If [c] has no references, then return `0`; +;;; otherwise the returned value is one plus the maximum of depths of cells referred to from [c]. +;;; If [c] is a `null` instead of a cell, returns zero. +int cell_depth(cell c) asm "CDEPTH"; + + +{- + # Slice size primitives +-} + +;;; Returns the number of references in `slice` [s]. +int slice_refs(slice s) asm "SREFS"; + +;;; Returns the number of data bits in `slice` [s]. +int slice_bits(slice s) asm "SBITS"; + +;;; Returns both the number of data bits and the number of references in `slice` [s]. +(int, int) slice_bits_refs(slice s) asm "SBITREFS"; + +;;; Checks whether a `slice` [s] is empty (i.e., contains no bits of data and no cell references). +int slice_empty?(slice s) asm "SEMPTY"; + +;;; Checks whether `slice` [s] has no bits of data. +int slice_data_empty?(slice s) asm "SDEMPTY"; + +;;; Checks whether `slice` [s] has no references. +int slice_refs_empty?(slice s) asm "SREMPTY"; + +;;; Returns the depth of `slice` [s]. +;;; If [s] has no references, then returns `0`; +;;; otherwise the returned value is one plus the maximum of depths of cells referred to from [s]. +int slice_depth(slice s) asm "SDEPTH"; + +{- + # Builder size primitives +-} + +;;; Returns the number of cell references already stored in `builder` [b] +int builder_refs(builder b) asm "BREFS"; + +;;; Returns the number of data bits already stored in `builder` [b]. +int builder_bits(builder b) asm "BBITS"; + +;;; Returns the depth of `builder` [b]. +;;; If no cell references are stored in [b], then returns 0; +;;; otherwise the returned value is one plus the maximum of depths of cells referred to from [b]. +int builder_depth(builder b) asm "BDEPTH"; + +{- + # Builder primitives + It is said that a primitive _stores_ a value `x` into a builder `b` + if it returns a modified version of the builder `b'` with the value `x` stored at the end of it. + It can be used as [non-modifying method](https://ton.org/docs/#/func/statements?id=non-modifying-methods). + + All the primitives below first check whether there is enough space in the `builder`, + and only then check the range of the value being serialized. +-} + +;;; Creates a new empty `builder`. +builder begin_cell() asm "NEWC"; + +;;; Converts a `builder` into an ordinary `cell`. +cell end_cell(builder b) asm "ENDC"; + +;;; Stores a reference to `cell` [c] into `builder` [b]. +builder store_ref(builder b, cell c) asm(c b) "STREF"; + +;;; Stores an unsigned [len]-bit integer `x` into `b` for `0 ≤ len ≤ 256`. +;; builder store_uint(builder b, int x, int len) asm(x b len) "STUX"; + +;;; Stores a signed [len]-bit integer `x` into `b` for` 0 ≤ len ≤ 257`. +;; builder store_int(builder b, int x, int len) asm(x b len) "STIX"; + + +;;; Stores `slice` [s] into `builder` [b] +builder store_slice(builder b, slice s) asm "STSLICER"; + +;;; Stores (serializes) an integer [x] in the range `0..2^128 − 1` into `builder` [b]. +;;; The serialization of [x] consists of a 4-bit unsigned big-endian integer `l`, +;;; which is the smallest integer `l ≥ 0`, such that `x < 2^8l`, +;;; followed by an `8l`-bit unsigned big-endian representation of [x]. +;;; If [x] does not belong to the supported range, a range check exception is thrown. +;;; +;;; Store amounts of TonCoins to the builder as VarUInteger 16 +builder store_grams(builder b, int x) asm "STGRAMS"; +builder store_coins(builder b, int x) asm "STGRAMS"; + +;;; Stores dictionary `D` represented by `cell` [c] or `null` into `builder` [b]. +;;; In other words, stores a `1`-bit and a reference to [c] if [c] is not `null` and `0`-bit otherwise. +builder store_dict(builder b, cell c) asm(c b) "STDICT"; + +;;; Stores (Maybe ^Cell) to builder: +;;; if cell is null store 1 zero bit +;;; otherwise store 1 true bit and ref to cell +builder store_maybe_ref(builder b, cell c) asm(c b) "STOPTREF"; + + +{- + # Address manipulation primitives + The address manipulation primitives listed below serialize and deserialize values according to the following TL-B scheme: + ```TL-B + addr_none$00 = MsgAddressExt; + addr_extern$01 len:(## 8) external_address:(bits len) + = MsgAddressExt; + anycast_info$_ depth:(#<= 30) { depth >= 1 } + rewrite_pfx:(bits depth) = Anycast; + addr_std$10 anycast:(Maybe Anycast) + workchain_id:int8 address:bits256 = MsgAddressInt; + addr_var$11 anycast:(Maybe Anycast) addr_len:(## 9) + workchain_id:int32 address:(bits addr_len) = MsgAddressInt; + _ _:MsgAddressInt = MsgAddress; + _ _:MsgAddressExt = MsgAddress; + + int_msg_info$0 ihr_disabled:Bool bounce:Bool bounced:Bool + src:MsgAddress dest:MsgAddressInt + value:CurrencyCollection ihr_fee:Grams fwd_fee:Grams + created_lt:uint64 created_at:uint32 = CommonMsgInfoRelaxed; + ext_out_msg_info$11 src:MsgAddress dest:MsgAddressExt + created_lt:uint64 created_at:uint32 = CommonMsgInfoRelaxed; + ``` + A deserialized `MsgAddress` is represented by a tuple `t` as follows: + + - `addr_none` is represented by `t = (0)`, + i.e., a tuple containing exactly one integer equal to zero. + - `addr_extern` is represented by `t = (1, s)`, + where slice `s` contains the field `external_address`. In other words, ` + t` is a pair (a tuple consisting of two entries), containing an integer equal to one and slice `s`. + - `addr_std` is represented by `t = (2, u, x, s)`, + where `u` is either a `null` (if `anycast` is absent) or a slice `s'` containing `rewrite_pfx` (if anycast is present). + Next, integer `x` is the `workchain_id`, and slice `s` contains the address. + - `addr_var` is represented by `t = (3, u, x, s)`, + where `u`, `x`, and `s` have the same meaning as for `addr_std`. +-} + +;;; Loads from slice [s] the only prefix that is a valid `MsgAddress`, +;;; and returns both this prefix `s'` and the remainder `s''` of [s] as slices. +(slice, slice) load_msg_addr(slice s) asm( -> 1 0) "LDMSGADDR"; + +;;; Decomposes slice [s] containing a valid `MsgAddress` into a `tuple t` with separate fields of this `MsgAddress`. +;;; If [s] is not a valid `MsgAddress`, a cell deserialization exception is thrown. +tuple parse_addr(slice s) asm "PARSEMSGADDR"; + +;;; Parses slice [s] containing a valid `MsgAddressInt` (usually a `msg_addr_std`), +;;; applies rewriting from the anycast (if present) to the same-length prefix of the address, +;;; and returns both the workchain and the 256-bit address as integers. +;;; If the address is not 256-bit, or if [s] is not a valid serialization of `MsgAddressInt`, +;;; throws a cell deserialization exception. +(int, int) parse_std_addr(slice s) asm "REWRITESTDADDR"; + +;;; A variant of [parse_std_addr] that returns the (rewritten) address as a slice [s], +;;; even if it is not exactly 256 bit long (represented by a `msg_addr_var`). +(int, slice) parse_var_addr(slice s) asm "REWRITEVARADDR"; + +{- + # Dictionary primitives +-} + + +;;; Sets the value associated with [key_len]-bit key signed index in dictionary [dict] to [value] (cell), +;;; and returns the resulting dictionary. +cell idict_set_ref(cell dict, int key_len, int index, cell value) asm(value index dict key_len) "DICTISETREF"; +(cell, ()) ~idict_set_ref(cell dict, int key_len, int index, cell value) asm(value index dict key_len) "DICTISETREF"; + +;;; Sets the value associated with [key_len]-bit key unsigned index in dictionary [dict] to [value] (cell), +;;; and returns the resulting dictionary. +cell udict_set_ref(cell dict, int key_len, int index, cell value) asm(value index dict key_len) "DICTUSETREF"; +(cell, ()) ~udict_set_ref(cell dict, int key_len, int index, cell value) asm(value index dict key_len) "DICTUSETREF"; + +cell idict_get_ref(cell dict, int key_len, int index) asm(index dict key_len) "DICTIGETOPTREF"; +(cell, int) idict_get_ref?(cell dict, int key_len, int index) asm(index dict key_len) "DICTIGETREF" "NULLSWAPIFNOT"; +(cell, int) udict_get_ref?(cell dict, int key_len, int index) asm(index dict key_len) "DICTUGETREF" "NULLSWAPIFNOT"; +(cell, cell) idict_set_get_ref(cell dict, int key_len, int index, cell value) asm(value index dict key_len) "DICTISETGETOPTREF"; +(cell, cell) udict_set_get_ref(cell dict, int key_len, int index, cell value) asm(value index dict key_len) "DICTUSETGETOPTREF"; +(cell, int) idict_delete?(cell dict, int key_len, int index) asm(index dict key_len) "DICTIDEL"; +(cell, int) udict_delete?(cell dict, int key_len, int index) asm(index dict key_len) "DICTUDEL"; +(slice, int) idict_get?(cell dict, int key_len, int index) asm(index dict key_len) "DICTIGET" "NULLSWAPIFNOT"; +(slice, int) udict_get?(cell dict, int key_len, int index) asm(index dict key_len) "DICTUGET" "NULLSWAPIFNOT"; +(cell, slice, int) idict_delete_get?(cell dict, int key_len, int index) asm(index dict key_len) "DICTIDELGET" "NULLSWAPIFNOT"; +(cell, slice, int) udict_delete_get?(cell dict, int key_len, int index) asm(index dict key_len) "DICTUDELGET" "NULLSWAPIFNOT"; +(cell, (slice, int)) ~idict_delete_get?(cell dict, int key_len, int index) asm(index dict key_len) "DICTIDELGET" "NULLSWAPIFNOT"; +(cell, (slice, int)) ~udict_delete_get?(cell dict, int key_len, int index) asm(index dict key_len) "DICTUDELGET" "NULLSWAPIFNOT"; +cell udict_set(cell dict, int key_len, int index, slice value) asm(value index dict key_len) "DICTUSET"; +(cell, ()) ~udict_set(cell dict, int key_len, int index, slice value) asm(value index dict key_len) "DICTUSET"; +cell idict_set(cell dict, int key_len, int index, slice value) asm(value index dict key_len) "DICTISET"; +(cell, ()) ~idict_set(cell dict, int key_len, int index, slice value) asm(value index dict key_len) "DICTISET"; +cell dict_set(cell dict, int key_len, slice index, slice value) asm(value index dict key_len) "DICTSET"; +(cell, ()) ~dict_set(cell dict, int key_len, slice index, slice value) asm(value index dict key_len) "DICTSET"; +(cell, int) udict_add?(cell dict, int key_len, int index, slice value) asm(value index dict key_len) "DICTUADD"; +(cell, int) udict_replace?(cell dict, int key_len, int index, slice value) asm(value index dict key_len) "DICTUREPLACE"; +(cell, int) idict_add?(cell dict, int key_len, int index, slice value) asm(value index dict key_len) "DICTIADD"; +(cell, int) idict_replace?(cell dict, int key_len, int index, slice value) asm(value index dict key_len) "DICTIREPLACE"; +cell udict_set_builder(cell dict, int key_len, int index, builder value) asm(value index dict key_len) "DICTUSETB"; +(cell, ()) ~udict_set_builder(cell dict, int key_len, int index, builder value) asm(value index dict key_len) "DICTUSETB"; +cell idict_set_builder(cell dict, int key_len, int index, builder value) asm(value index dict key_len) "DICTISETB"; +(cell, ()) ~idict_set_builder(cell dict, int key_len, int index, builder value) asm(value index dict key_len) "DICTISETB"; +cell dict_set_builder(cell dict, int key_len, slice index, builder value) asm(value index dict key_len) "DICTSETB"; +(cell, ()) ~dict_set_builder(cell dict, int key_len, slice index, builder value) asm(value index dict key_len) "DICTSETB"; +(cell, int) udict_add_builder?(cell dict, int key_len, int index, builder value) asm(value index dict key_len) "DICTUADDB"; +(cell, int) udict_replace_builder?(cell dict, int key_len, int index, builder value) asm(value index dict key_len) "DICTUREPLACEB"; +(cell, int) idict_add_builder?(cell dict, int key_len, int index, builder value) asm(value index dict key_len) "DICTIADDB"; +(cell, int) idict_replace_builder?(cell dict, int key_len, int index, builder value) asm(value index dict key_len) "DICTIREPLACEB"; +(cell, int, slice, int) udict_delete_get_min(cell dict, int key_len) asm(-> 0 2 1 3) "DICTUREMMIN" "NULLSWAPIFNOT2"; +(cell, (int, slice, int)) ~udict::delete_get_min(cell dict, int key_len) asm(-> 0 2 1 3) "DICTUREMMIN" "NULLSWAPIFNOT2"; +(cell, int, slice, int) idict_delete_get_min(cell dict, int key_len) asm(-> 0 2 1 3) "DICTIREMMIN" "NULLSWAPIFNOT2"; +(cell, (int, slice, int)) ~idict::delete_get_min(cell dict, int key_len) asm(-> 0 2 1 3) "DICTIREMMIN" "NULLSWAPIFNOT2"; +(cell, slice, slice, int) dict_delete_get_min(cell dict, int key_len) asm(-> 0 2 1 3) "DICTREMMIN" "NULLSWAPIFNOT2"; +(cell, (slice, slice, int)) ~dict::delete_get_min(cell dict, int key_len) asm(-> 0 2 1 3) "DICTREMMIN" "NULLSWAPIFNOT2"; +(cell, int, slice, int) udict_delete_get_max(cell dict, int key_len) asm(-> 0 2 1 3) "DICTUREMMAX" "NULLSWAPIFNOT2"; +(cell, (int, slice, int)) ~udict::delete_get_max(cell dict, int key_len) asm(-> 0 2 1 3) "DICTUREMMAX" "NULLSWAPIFNOT2"; +(cell, int, slice, int) idict_delete_get_max(cell dict, int key_len) asm(-> 0 2 1 3) "DICTIREMMAX" "NULLSWAPIFNOT2"; +(cell, (int, slice, int)) ~idict::delete_get_max(cell dict, int key_len) asm(-> 0 2 1 3) "DICTIREMMAX" "NULLSWAPIFNOT2"; +(cell, slice, slice, int) dict_delete_get_max(cell dict, int key_len) asm(-> 0 2 1 3) "DICTREMMAX" "NULLSWAPIFNOT2"; +(cell, (slice, slice, int)) ~dict::delete_get_max(cell dict, int key_len) asm(-> 0 2 1 3) "DICTREMMAX" "NULLSWAPIFNOT2"; +(int, slice, int) udict_get_min?(cell dict, int key_len) asm (-> 1 0 2) "DICTUMIN" "NULLSWAPIFNOT2"; +(int, slice, int) udict_get_max?(cell dict, int key_len) asm (-> 1 0 2) "DICTUMAX" "NULLSWAPIFNOT2"; +(int, cell, int) udict_get_min_ref?(cell dict, int key_len) asm (-> 1 0 2) "DICTUMINREF" "NULLSWAPIFNOT2"; +(int, cell, int) udict_get_max_ref?(cell dict, int key_len) asm (-> 1 0 2) "DICTUMAXREF" "NULLSWAPIFNOT2"; +(int, slice, int) idict_get_min?(cell dict, int key_len) asm (-> 1 0 2) "DICTIMIN" "NULLSWAPIFNOT2"; +(int, slice, int) idict_get_max?(cell dict, int key_len) asm (-> 1 0 2) "DICTIMAX" "NULLSWAPIFNOT2"; +(int, cell, int) idict_get_min_ref?(cell dict, int key_len) asm (-> 1 0 2) "DICTIMINREF" "NULLSWAPIFNOT2"; +(int, cell, int) idict_get_max_ref?(cell dict, int key_len) asm (-> 1 0 2) "DICTIMAXREF" "NULLSWAPIFNOT2"; +(int, slice, int) udict_get_next?(cell dict, int key_len, int pivot) asm(pivot dict key_len -> 1 0 2) "DICTUGETNEXT" "NULLSWAPIFNOT2"; +(int, slice, int) udict_get_nexteq?(cell dict, int key_len, int pivot) asm(pivot dict key_len -> 1 0 2) "DICTUGETNEXTEQ" "NULLSWAPIFNOT2"; +(int, slice, int) udict_get_prev?(cell dict, int key_len, int pivot) asm(pivot dict key_len -> 1 0 2) "DICTUGETPREV" "NULLSWAPIFNOT2"; +(int, slice, int) udict_get_preveq?(cell dict, int key_len, int pivot) asm(pivot dict key_len -> 1 0 2) "DICTUGETPREVEQ" "NULLSWAPIFNOT2"; +(int, slice, int) idict_get_next?(cell dict, int key_len, int pivot) asm(pivot dict key_len -> 1 0 2) "DICTIGETNEXT" "NULLSWAPIFNOT2"; +(int, slice, int) idict_get_nexteq?(cell dict, int key_len, int pivot) asm(pivot dict key_len -> 1 0 2) "DICTIGETNEXTEQ" "NULLSWAPIFNOT2"; +(int, slice, int) idict_get_prev?(cell dict, int key_len, int pivot) asm(pivot dict key_len -> 1 0 2) "DICTIGETPREV" "NULLSWAPIFNOT2"; +(int, slice, int) idict_get_preveq?(cell dict, int key_len, int pivot) asm(pivot dict key_len -> 1 0 2) "DICTIGETPREVEQ" "NULLSWAPIFNOT2"; + +;;; Creates an empty dictionary, which is actually a null value. Equivalent to PUSHNULL +cell new_dict() asm "NEWDICT"; +;;; Checks whether a dictionary is empty. Equivalent to cell_null?. +int dict_empty?(cell c) asm "DICTEMPTY"; + + +{- Prefix dictionary primitives -} +(slice, slice, slice, int) pfxdict_get?(cell dict, int key_len, slice key) asm(key dict key_len) "PFXDICTGETQ" "NULLSWAPIFNOT2"; +(cell, int) pfxdict_set?(cell dict, int key_len, slice key, slice value) asm(value key dict key_len) "PFXDICTSET"; +(cell, int) pfxdict_delete?(cell dict, int key_len, slice key) asm(key dict key_len) "PFXDICTDEL"; + +;;; Returns the value of the global configuration parameter with integer index `i` as a `cell` or `null` value. +cell config_param(int x) asm "CONFIGOPTPARAM"; +;;; Checks whether c is a null. Note, that FunC also has polymorphic null? built-in. +int cell_null?(cell c) asm "ISNULL"; + +;;; Creates an output action which would reserve exactly amount nanotoncoins (if mode = 0), at most amount nanotoncoins (if mode = 2), or all but amount nanotoncoins (if mode = 1 or mode = 3), from the remaining balance of the account. It is roughly equivalent to creating an outbound message carrying amount nanotoncoins (or b − amount nanotoncoins, where b is the remaining balance) to oneself, so that the subsequent output actions would not be able to spend more money than the remainder. Bit +2 in mode means that the external action does not fail if the specified amount cannot be reserved; instead, all remaining balance is reserved. Bit +8 in mode means `amount <- -amount` before performing any further actions. Bit +4 in mode means that amount is increased by the original balance of the current account (before the compute phase), including all extra currencies, before performing any other checks and actions. Currently, amount must be a non-negative integer, and mode must be in the range 0..15. +() raw_reserve(int amount, int mode) impure asm "RAWRESERVE"; +;;; Similar to raw_reserve, but also accepts a dictionary extra_amount (represented by a cell or null) with extra currencies. In this way currencies other than TonCoin can be reserved. +() raw_reserve_extra(int amount, cell extra_amount, int mode) impure asm "RAWRESERVEX"; +;;; Sends a raw message contained in msg, which should contain a correctly serialized object Message X, with the only exception that the source address is allowed to have dummy value addr_none (to be automatically replaced with the current smart contract address), and ihr_fee, fwd_fee, created_lt and created_at fields can have arbitrary values (to be rewritten with correct values during the action phase of the current transaction). Integer parameter mode contains the flags. Currently mode = 0 is used for ordinary messages; mode = 128 is used for messages that are to carry all the remaining balance of the current smart contract (instead of the value originally indicated in the message); mode = 64 is used for messages that carry all the remaining value of the inbound message in addition to the value initially indicated in the new message (if bit 0 is not set, the gas fees are deducted from this amount); mode' = mode + 1 means that the sender wants to pay transfer fees separately; mode' = mode + 2 means that any errors arising while processing this message during the action phase should be ignored. Finally, mode' = mode + 32 means that the current account must be destroyed if its resulting balance is zero. This flag is usually employed together with +128. +() send_raw_message(cell msg, int mode) impure asm "SENDRAWMSG"; +;;; Creates an output action that would change this smart contract code to that given by cell new_code. Notice that this change will take effect only after the successful termination of the current run of the smart contract +() set_code(cell new_code) impure asm "SETCODE"; + +;;; Generates a new pseudo-random unsigned 256-bit integer x. The algorithm is as follows: if r is the old value of the random seed, considered as a 32-byte array (by constructing the big-endian representation of an unsigned 256-bit integer), then its sha512(r) is computed; the first 32 bytes of this hash are stored as the new value r' of the random seed, and the remaining 32 bytes are returned as the next random value x. +int random() impure asm "RANDU256"; +;;; Generates a new pseudo-random integer z in the range 0..range−1 (or range..−1, if range < 0). More precisely, an unsigned random value x is generated as in random; then z := x * range / 2^256 is computed. +int rand(int range) impure asm "RAND"; +;;; Returns the current random seed as an unsigned 256-bit Integer. +int get_seed() impure asm "RANDSEED"; +;;; Sets the random seed to unsigned 256-bit seed. +() set_seed(int x) impure asm "SETRAND"; +;;; Mixes unsigned 256-bit integer x into the random seed r by setting the random seed to sha256 of the concatenation of two 32-byte strings: the first with the big-endian representation of the old seed r, and the second with the big-endian representation of x. +() randomize(int x) impure asm "ADDRAND"; +;;; Equivalent to randomize(cur_lt());. +() randomize_lt() impure asm "LTIME" "ADDRAND"; + +;;; Checks whether the data parts of two slices coinside +int equal_slice_bits(slice a, slice b) asm "SDEQ"; +int equal_slices(slice a, slice b) asm "SDEQ"; + +;;; Concatenates two builders +builder store_builder(builder to, builder from) asm "STBR"; \ No newline at end of file diff --git a/contracts/contracts/lib/messages_nft.tact b/contracts/contracts/lib/messages_nft.tact new file mode 100644 index 00000000..c8ac58c8 --- /dev/null +++ b/contracts/contracts/lib/messages_nft.tact @@ -0,0 +1,93 @@ +// NFT collection + +struct CollectionData { + next_item_index: Int; + collection_content: Cell; + owner_address: Address; +} + +struct NftCollectionMetadata { + image: String; + name: String; + description: String; +} + +message MintNft { + query_id: Int as uint64; + individual_content: NftMetadata; +} + +// NFT collection: Royalty exntention + +message(0x693d3950) GetRoyaltyParams { + query_id: Int as uint64; +} + +message(0xa8cb00ad) ReportRoyaltyParams { + query_id: Int as uint64; + numerator: Int as uint16; + denominator: Int as uint16; + destination: Address; +} + +struct RoyaltyParams { + numerator: Int; + denominator: Int; + destination: Address; +} + +// NFT item + +struct NftMetadataAttribute { + trait_type: String; + value: String; +} + +struct NftMetadata { + name: String; + description: String; + image: String; +} + +message InitializeNft { + query_id: Int as uint64; + owner: Address; + individual_content: NftMetadata; +} + +message(0x5fcc3d14) Transfer { + query_id: Int as uint64; + new_owner: Address; + response_destination: Address; + custom_payload: Cell?; + forward_amount: Int as coins; + forward_payload: Slice as remaining; +} + +message(0x05138d91) OwnershipAssigned{ + query_id: Int as uint64; + prev_owner: Address; + forward_payload: Slice as remaining; +} + +message(0xd53276db) Excesses { + query_id: Int as uint64; +} + +message(0x2fcb26a2) GetStaticData { + query_id: Int as uint64; +} + +message(0x8b771735) ReportStaticData{ + query_id: Int as uint64; + index_id: Int; + collection: Address; +} + +struct GetNftData { + is_initialized: Bool; + index: Int; + collection_address: Address; + owner_address: Address; + individual_content: Cell; +} diff --git a/contracts/contracts/lib/native_dict.tact b/contracts/contracts/lib/native_dict.tact new file mode 100644 index 00000000..7f3e3d4b --- /dev/null +++ b/contracts/contracts/lib/native_dict.tact @@ -0,0 +1,37 @@ +struct DictGetReturn { + value: Slice?; + found: Bool; +} + +// Whole dict operations + +@name(new_dict) +native newDict(): Cell?; + +@name(store_dict) +native storeDict(b: Builder, c: Cell?): Builder; + +// Setters + +@name(idict_set) +native idictSet(dict: Cell?, key_len: Int, index: Int, value: Slice): Cell; + +@name(udict_set) +native udictSet(dict: Cell?, key_len: Int, index: Int, value: Slice): Cell; + +@name(dict_set) +native dictSet(dict: Cell?, key_len: Int, index: Int, value: Slice): Cell; + +@name(idict_set_ref) +native idictSetRef(dict: Cell?, key_len: Int, index: Int, value: Cell): Cell; + +@name(udict_set_ref) +native udictSetRef(dict: Cell?, key_len: Int, index: Int, value: Cell): Cell; + +// Getters + +@name(idict_get) +native idictGet(dict: Cell?, key_len: Int, index: Int): DictGetReturn; + +@name(udict_get) +native udictGet(dict: Cell?, key_len: Int, index: Int): DictGetReturn; diff --git a/contracts/contracts/lib/tep64_serialization.tact b/contracts/contracts/lib/tep64_serialization.tact new file mode 100644 index 00000000..f2fc433b --- /dev/null +++ b/contracts/contracts/lib/tep64_serialization.tact @@ -0,0 +1,31 @@ +import "./native_dict.tact"; + +fun beginTep64Dict(): Cell? { + return newDict(); +} + +fun storeTep64Cell(tep64Dict: Cell?, key: String, value: Cell): Cell { + return udictSetRef( + tep64Dict, + 256, sha256(key), + beginCell() + .storeUint(1, 8) + .storeRef(value) + .endCell() + ); +} + +fun storeTep64SnakeString(tep64Dict: Cell?, key: String, value: String): Cell { + let sb: StringBuilder = beginTailString(); + sb.append(value); + return udictSetRef( + tep64Dict, + 256, sha256(key), + sb.toCell() + ); +} + +fun buildTep64OnchainContent(tep64Dict: Cell): Cell { + let b: Builder = beginCell().storeUint(0, 8); + return storeDict(b, tep64Dict).endCell(); +} diff --git a/contracts/contracts/lib/trait_accounting.tact b/contracts/contracts/lib/trait_accounting.tact new file mode 100644 index 00000000..b470204d --- /dev/null +++ b/contracts/contracts/lib/trait_accounting.tact @@ -0,0 +1,40 @@ +trait Accounting { + virtual const MIN_TON_FOR_STORAGE: Int = ton("0.03"); + + virtual fun getGasConsumption(): Int { + return ton("0.03"); + } + + fun getTonRecieved(): Int { + let ctx: Context = context(); + return ctx.value; + } + + fun calculateMinOperationFee(): Int { + let tonBalanceBeforeMsg: Int = myBalance() - self.getTonRecieved(); + // calculate TON to keep in contract, handle case when balance is less than MIN_TON_FOR_STORAGE + let storageFee: Int = self.MIN_TON_FOR_STORAGE - min(tonBalanceBeforeMsg, self.MIN_TON_FOR_STORAGE); + return storageFee + self.getGasConsumption(); + } + + fun calculateSendAmountToHoldEnoughTonForStorage(): Int { + return myBalance() - self.calculateMinOperationFee(); + } + + fun calculateSendAmountToHoldFeeFromRecieved(personalFee: Int): Int { + return self.calculateSendAmountToHoldEnoughTonForStorage() - personalFee; + } + + fun sendExcessesTo(amount: Int, to: Address, query_id: Int?) { + let sendQueryId: Int = 0; + if (query_id != null) { + sendQueryId = query_id!!; + } + send(SendParameters{ + to: to, + value: amount, + mode: SendIgnoreErrors, + body: Excesses { query_id: sendQueryId }.toCell() + }); + } +} diff --git a/contracts/contracts/lib/trait_nft_collection.tact b/contracts/contracts/lib/trait_nft_collection.tact new file mode 100644 index 00000000..f94cc321 --- /dev/null +++ b/contracts/contracts/lib/trait_nft_collection.tact @@ -0,0 +1,91 @@ +import "@stdlib/deploy"; +import "@stdlib/ownable"; +import "./messages_nft.tact"; +import "./trait_accounting.tact"; +import "./tep64_serialization.tact"; + +trait NftCollection with Deployable, Ownable, Accounting { + next_item_index: Int; + owner: Address; + collection_content: NftCollectionMetadata; + + // ===== Customizable functions ===== // + + virtual fun serializeNftCollectionContent(): Cell { + let tep64Dict: Cell? = beginTep64Dict(); + tep64Dict = storeTep64SnakeString(tep64Dict, "name", self.collection_content.name); + tep64Dict = storeTep64SnakeString(tep64Dict, "description", self.collection_content.description); + tep64Dict = storeTep64SnakeString(tep64Dict, "image", self.collection_content.image); + return buildTep64OnchainContent(tep64Dict!!); + } + + virtual fun getNftItemInit(item_index: Int): StateInit { + require(false, "Not implemented"); + } + + virtual fun serializeNftContent(index: Int, individual_content: Cell): Cell { + require(index >= 0, "index must be positive"); + require(index < self.next_item_index, "index must be less than next_item_index"); + return individual_content; + } + + virtual fun actionBeforeMinting() { + } + + virtual fun actionAfterMinting() { + } + + virtual fun calculateNftItemInitialBalance(): Int { + return self.calculateSendAmountToHoldEnoughTonForStorage(); + } + + // ------------------ Get Function ------------------ // + + + // ------------------ NFT standard getters ------------------ // + // https://github.com/ton-blockchain/TEPs/blob/master/text/0062-nft-standard.md#get-methods-1 + + get fun get_collection_data(): CollectionData { + return CollectionData{ + next_item_index: self.next_item_index, + collection_content: self.serializeNftCollectionContent(), + owner_address: self.owner + }; + } + + get fun get_nft_address_by_index(item_index: Int): Address?{ + let initCode: StateInit = self.getNftItemInit(item_index); + return contractAddress(initCode); + } + + get fun get_nft_content(index: Int, individual_content: Cell): Cell { + return self.serializeNftContent(index, individual_content); + } + + // ===== Recievers ===== // + + receive(msg: MintNft){ + require(self.next_item_index >= 0, "non-sequential NFTs"); + self.actionBeforeMinting(); + let ctx: Context = context(); + let nft_init: StateInit = self.getNftItemInit(self.next_item_index); + send(SendParameters{ + to: contractAddress(nft_init), + value: self.calculateNftItemInitialBalance(), + bounce: false, + mode: SendIgnoreErrors, + body: InitializeNft { + query_id: 0, + owner: ctx.sender, + individual_content: msg.individual_content + }.toCell(), + code: nft_init.code, + data: nft_init.data + }); + self.next_item_index = self.next_item_index + 1; + self.actionAfterMinting(); + } + + // ===== Private Methods ===== // + +} diff --git a/contracts/contracts/lib/trait_nft_collection_royalty_extention.tact b/contracts/contracts/lib/trait_nft_collection_royalty_extention.tact new file mode 100644 index 00000000..45a009d8 --- /dev/null +++ b/contracts/contracts/lib/trait_nft_collection_royalty_extention.tact @@ -0,0 +1,42 @@ +import "@stdlib/deploy"; +import "./messages_nft.tact"; + +trait NftCollectionRoyaltyExtention { + royalty_params: RoyaltyParams; + owner: Address; + + // ===== Customizable functions ===== // + + // ------------------ Get Function ------------------ // + + + // ------------------ NFT standard getters ------------------ // + // https://github.com/ton-blockchain/TEPs/blob/master/text/0066-nft-royalty-standard.md#get-methods + + get fun royalty_params(): RoyaltyParams { + return self.royalty_params; + } + + // ===== Recievers ===== // + + // ------------------ NFT standard recievers ------------------ // + // https://github.com/ton-blockchain/TEPs/blob/master/text/0066-nft-royalty-standard.md#internal-messages + + receive(msg: GetRoyaltyParams) { + let ctx: Context = context(); // get sender Info + send(SendParameters{ + to: ctx.sender, + value: 0, + mode: 64, + bounce: false, + body: ReportRoyaltyParams { + query_id: msg.query_id, + numerator: self.royalty_params.numerator, + denominator: self.royalty_params.denominator, + destination: self.owner + }.toCell() + }); + } + + // ===== Private Methods ===== // +} diff --git a/contracts/contracts/lib/trait_nft_item.tact b/contracts/contracts/lib/trait_nft_item.tact new file mode 100644 index 00000000..3758491f --- /dev/null +++ b/contracts/contracts/lib/trait_nft_item.tact @@ -0,0 +1,102 @@ +import "@stdlib/deploy"; +import "@stdlib/ownable"; +import "./messages_nft.tact"; +import "./trait_accounting.tact"; +import "./tep64_serialization.tact"; + +trait NftItem with Deployable, Ownable, Accounting { + collection_address: Address; + item_index: Int; + owner: Address; + is_initialized: Bool; + individual_content: NftMetadata; + + // ===== Customizable functions ===== // + + virtual fun serializeIndividualContent(): Cell { + let tep64Dict: Cell? = beginTep64Dict(); + tep64Dict = storeTep64SnakeString(tep64Dict, "name", self.individual_content.name); + tep64Dict = storeTep64SnakeString(tep64Dict, "description", self.individual_content.description); + tep64Dict = storeTep64SnakeString(tep64Dict, "image", self.individual_content.image); + return buildTep64OnchainContent(tep64Dict!!); + } + + // --------- Get Function --------- // + + + // ------------------ NFT standard getters ------------------ // + // https://github.com/ton-blockchain/TEPs/blob/master/text/0062-nft-standard.md#get-methods + get fun get_nft_data(): GetNftData { + return GetNftData { + is_initialized: self.is_initialized, + index: self.item_index, + collection_address: self.collection_address, + owner_address: self.owner, + individual_content: self.serializeIndividualContent() + }; + } + + // ===== Recievers ===== // + + receive(msg: InitializeNft) { + self.requireOwner(); + require(self.is_initialized == false, "NFT Item is already initialized"); + self.is_initialized = true; + self.owner = msg.owner; + self.individual_content = msg.individual_content; + send(SendParameters{ + to: self.owner, + value: self.calculateSendAmountToHoldEnoughTonForStorage(), + mode: SendIgnoreErrors, + body: Excesses { query_id: msg.query_id }.toCell() + }); + } + + receive(msg: Transfer){ + self.requireOwner(); + require(self.is_initialized == true, "NFT Item is not initialized"); + let msgValue: Int = self.calculateSendAmountToHoldEnoughTonForStorage(); + let ctx: Context = context(); + self.owner = msg.new_owner; // change current owner to the new_owner + if (msg.forward_amount > 0) { + send(SendParameters{ + to: msg.new_owner, + value: msg.forward_amount, + mode: SendIgnoreErrors, + bounce: false, + body: OwnershipAssigned{ + query_id: msg.query_id, + prev_owner: ctx.sender, + forward_payload: msg.forward_payload + }.toCell() + }); + } + + msgValue = msgValue - ctx.readForwardFee(); + if (msg.response_destination != null) { + send(SendParameters{ + to: msg.response_destination, + value: msgValue - msg.forward_amount, + mode: SendPayGasSeparately, + body: Excesses { query_id: msg.query_id }.toCell() + }); + } + } + + receive(msg: GetStaticData){ + let ctx: Context = context(); + send(SendParameters { + to: ctx.sender, + value: 0, + mode: 64, // (return msg amount except gas fees) + bounce: true, + body: ReportStaticData{ + query_id: msg.query_id, + index_id: self.item_index, + collection: self.collection_address + }.toCell() + }); + } + + // ===== Private Methods ===== // +} diff --git a/contracts/contracts/lib/trait_personal_fees.tact b/contracts/contracts/lib/trait_personal_fees.tact new file mode 100644 index 00000000..f660bbf2 --- /dev/null +++ b/contracts/contracts/lib/trait_personal_fees.tact @@ -0,0 +1,23 @@ +import "./trait_accounting.tact"; + +trait PersonalFees with Accounting { + personal_fees_destination: Address; + + fun sendPersonalFee(amount: Int, comment: String) { + send(SendParameters{ + to: self.personal_fees_destination, + value: amount, + mode: SendIgnoreErrors, + body: comment.asComment() + }); + } + + fun sendRemainingValueAsPersonalFee(comment: String) { + send(SendParameters{ + to: self.personal_fees_destination, + value: 0, + mode: SendIgnoreErrors + SendRemainingValue, + body: comment.asComment() + }); + } +} diff --git a/contracts/contracts/lib/trait_storage_controller.tact b/contracts/contracts/lib/trait_storage_controller.tact new file mode 100644 index 00000000..e07900c0 --- /dev/null +++ b/contracts/contracts/lib/trait_storage_controller.tact @@ -0,0 +1,46 @@ +import "@stdlib/ownable"; +import "./trait_accounting"; + +message Withdraw { + query_id: Int as uint64; + amount: Int; +} + +message WithdrawAll { + query_id: Int as uint64; + destroy: Bool?; +} + +message TopUp { + query_id: Int as uint64; +} + +trait StorageController with Ownable, Accounting { + owner: Address; + + receive(msg: TopUp) {} + + receive(msg: Withdraw) { + self.requireOwner(); + send(SendParameters{ + to: self.owner, + value: min(msg.amount, self.calculateSendAmountToHoldEnoughTonForStorage()), + mode: SendIgnoreErrors, + body: "Withdraw".asComment() + }); + } + + receive(msg: WithdrawAll) { + self.requireOwner(); + let additionalMode: Int = 0; + if (msg.destroy == true) { + additionalMode = additionalMode + SendDestroyIfZero; + } + send(SendParameters{ + to: self.owner, + value: 0, + mode: SendRemainingBalance + SendIgnoreErrors + additionalMode, + body: "Withdraw all".asComment() + }); + } +} diff --git a/contracts/contracts/messages_d.tact b/contracts/contracts/messages_d.tact new file mode 100644 index 00000000..86d68f59 --- /dev/null +++ b/contracts/contracts/messages_d.tact @@ -0,0 +1,43 @@ +import "./lib/messages_nft.tact"; + +// Master contract + +message CreateBlog { + query_id: Int as uint64; + blog_metadata: NftCollectionMetadata; +} + +// Blog contract + +message InitializeBlog { + query_id: Int as uint64; + owner: Address; + collection_content: NftCollectionMetadata; +} + +message EditBlogMetadata { + query_id: Int as uint64; + new_metadata: NftCollectionMetadata; +} + +struct BlogInfo { + id: Int; + master_contract: Address; + owner: Address; + collection_content: NftCollectionMetadata; + is_initialized: Bool; +} + +// Post contract + +message EditBlogPost { + query_id: Int as uint64; + new_metadata: NftMetadata; +} + +struct PostInfo { + blog: Address; + id: Int; + owner: Address; + nft_content: NftMetadata; +} diff --git a/contracts/jest.config.ts b/contracts/jest.config.ts new file mode 100644 index 00000000..7b034895 --- /dev/null +++ b/contracts/jest.config.ts @@ -0,0 +1,10 @@ +import type { Config } from 'jest' + +const config: Config = { + preset: 'ts-jest', + testEnvironment: 'node', + testPathIgnorePatterns: ['/node_modules/', '/dist/'], + maxWorkers: 1 +} + +export default config diff --git a/contracts/package.json b/contracts/package.json new file mode 100644 index 00000000..af424e28 --- /dev/null +++ b/contracts/package.json @@ -0,0 +1,22 @@ +{ + "name": "@d0rich/contracts", + "version": "0.0.1", + "private": true, + "scripts": { + "build": "blueprint build --all && npm run patch:build-imports", + "test": "jest", + "bp:start": "blueprint run", + "bp:build": "blueprint build", + "patch:build-imports": "node ./build-scripts/patch-wrappers-imports.mjs" + }, + "devDependencies": { + "@ton-community/blueprint": "^0.12.0", + "@ton-community/sandbox": "^0.11.0", + "@ton-community/test-utils": "^0.3.0", + "@types/jest": "^29.5.0", + "@types/node": "^20.2.5", + "ton": "~13.6.0", + "ton-core": "^0.51.0", + "ton-crypto": "^3.2.0" + } +} diff --git a/contracts/scripts/deployDSocialNetworkMaster.ts b/contracts/scripts/deployDSocialNetworkMaster.ts new file mode 100644 index 00000000..f2eb374b --- /dev/null +++ b/contracts/scripts/deployDSocialNetworkMaster.ts @@ -0,0 +1,24 @@ +import { toNano } from 'ton-core' +import { NetworkProvider } from '@ton-community/blueprint' +import { DSocialNetworkMaster } from '../wrappers/DSocialNetworkMaster' + +export async function run(provider: NetworkProvider) { + const dSocialNetworkMaster = provider.open( + await DSocialNetworkMaster.fromInit() + ) + + await dSocialNetworkMaster.send( + provider.sender(), + { + value: toNano('0.05') + }, + { + $$type: 'Deploy', + queryId: 0n + } + ) + + await provider.waitForDeploy(dSocialNetworkMaster.address) + + // run methods on `dSocialNetworkMaster` +} diff --git a/contracts/scripts/deployTestSocialNetwork.ts b/contracts/scripts/deployTestSocialNetwork.ts new file mode 100644 index 00000000..85c74967 --- /dev/null +++ b/contracts/scripts/deployTestSocialNetwork.ts @@ -0,0 +1,63 @@ +import { toNano } from 'ton-core' +import { NetworkProvider } from '@ton-community/blueprint' +import { DSocialNetworkMaster } from '../wrappers/DSocialNetworkMaster' +import { DSocialNetworkBlog, MintNft } from '../wrappers/DSocialNetworkBlog' +import { DSocialNetworkPost } from '../wrappers/DSocialNetworkPost' +import { + getTestPostModel, + registerTestAccountMessage +} from '../utils/test-fixtures' + +import { serializePostData } from '../utils/stub-post-serialization' + +export async function run(provider: NetworkProvider) { + const dMaster = provider.open(await DSocialNetworkMaster.fromInit()) + + await dMaster.send( + provider.sender(), + { + value: toNano('0.1') + }, + { + $$type: 'Deploy', + queryId: 0n + } + ) + + await provider.waitForDeploy(dMaster.address) + + await dMaster.send( + provider.sender(), + { value: toNano('1') }, + registerTestAccountMessage + ) + + const blogAddress = await dMaster.getGetBlogAddressByIndex(0n) + + const dBlog = provider.open(DSocialNetworkBlog.fromAddress(blogAddress!)) + + await provider.waitForDeploy(dBlog.address) + + const testPostModel = getTestPostModel( + provider.sender().address!, + (await dBlog.getGetNftAddressByIndex(await dBlog.getGetNextItemIndex()))!, + dBlog.address + ) + + const createTestPostMessage: MintNft = { + $$type: 'MintNft', + query_id: 0n, + individual_content: serializePostData(testPostModel) + } + + await dBlog.send( + provider.sender(), + { value: toNano('0.2') }, + createTestPostMessage + ) + + const postAddress = await dBlog.getGetNftAddressByIndex(0n) + + const dPost = provider.open(DSocialNetworkPost.fromAddress(postAddress!)) + await provider.waitForDeploy(dPost.address) +} diff --git a/contracts/tests/DSocialNetworkBlog.spec.ts b/contracts/tests/DSocialNetworkBlog.spec.ts new file mode 100644 index 00000000..d4492543 --- /dev/null +++ b/contracts/tests/DSocialNetworkBlog.spec.ts @@ -0,0 +1,149 @@ +import { Blockchain, SandboxContract } from '@ton-community/sandbox' +import { toNano } from 'ton-core' +import { DSocialNetworkMaster } from '../wrappers/DSocialNetworkMaster' +import { + DSocialNetworkBlog, + EditBlogMetadata, + MintNft +} from '../wrappers/DSocialNetworkBlog' +import '@ton-community/test-utils' +import { + getTestPostModel, + registerTestAccountMessage +} from '../utils/test-fixtures' +import { serializePostData } from '../utils/stub-post-serialization' + +describe('DSocialNetworkMaster', () => { + let blockchain: Blockchain + let deployer: Awaited> + let dMaster: SandboxContract + let dBlog: SandboxContract + + beforeEach(async () => { + blockchain = await Blockchain.create() + dMaster = blockchain.openContract(await DSocialNetworkMaster.fromInit()) + deployer = await blockchain.treasury('deployer') + const deployResult = await dMaster.send( + deployer.getSender(), + { value: toNano('0.1') }, + { + $$type: 'Deploy', + queryId: 0n + } + ) + + expect(deployResult.transactions).toHaveTransaction({ + from: deployer.address, + to: dMaster.address, + deploy: true, + success: true + }) + + const registerResult = await dMaster.send( + deployer.getSender(), + { value: toNano('1') }, + registerTestAccountMessage + ) + + const blogAddress = await dMaster.getGetBlogAddressByIndex(0n) + + expect(blogAddress).not.toBeNull() + + expect(registerResult.transactions).toHaveTransaction({ + from: dMaster.address, + to: blogAddress!, + success: true + }) + + expect(await dMaster.getGetBlogsCount()).toBe(1n) + + dBlog = blockchain.openContract( + DSocialNetworkBlog.fromAddress(blogAddress!) + ) + }) + + it('deployer shoud be owner of the account', async () => { + const owner = await dBlog.getOwner() + + expect(owner.toRawString()).toEqual(deployer.address.toRawString()) + }) + + it('should create post', async () => { + const testPostModel = getTestPostModel( + deployer.address, + (await dBlog.getGetNftAddressByIndex(await dBlog.getGetNextItemIndex()))!, + dBlog.address + ) + + const createTestPostMessage: MintNft = { + $$type: 'MintNft', + query_id: 0n, + individual_content: serializePostData(testPostModel) + } + + const createPostResult = await dBlog.send( + deployer.getSender(), + { value: toNano('0.2') }, + createTestPostMessage + ) + + const postAddress = await dBlog.getGetNftAddressByIndex(0n) + + expect(postAddress).not.toBeNull() + + // Should top up post balance + expect(createPostResult.transactions).toHaveTransaction({ + from: dBlog.address, + to: postAddress!, + success: true + }) + + // Should return excesses to owner + expect(createPostResult.transactions).toHaveTransaction({ + from: postAddress!, + to: deployer.address, + success: true + }) + + expect(await dBlog.getGetNextItemIndex()).toBe(1n) + }) + + it('Should edit blog metadata correctly', async () => { + const editBlogMetadataMessage: EditBlogMetadata = { + $$type: 'EditBlogMetadata', + query_id: 0n, + new_metadata: { + $$type: 'NftCollectionMetadata', + name: 'New blog name', + description: 'New blog description', + image: 'New blog avatar' + } + } + + const editBlogMetadataResult = await dBlog.send( + deployer.getSender(), + { value: toNano('0.2') }, + editBlogMetadataMessage + ) + + // Should pay for changes + expect(editBlogMetadataResult.transactions).toHaveTransaction({ + from: deployer.address, + to: dBlog.address, + success: true + }) + + // Should return excesses + expect(editBlogMetadataResult.transactions).toHaveTransaction({ + from: dBlog.address, + to: deployer.address, + success: true + }) + + const newMetadata = await dBlog.getGetBlogInfo() + + expect(newMetadata.collection_content).toEqual( + editBlogMetadataMessage.new_metadata + ) + }) +}) diff --git a/contracts/tests/DSocialNetworkMaster.spec.ts b/contracts/tests/DSocialNetworkMaster.spec.ts new file mode 100644 index 00000000..acd7ed69 --- /dev/null +++ b/contracts/tests/DSocialNetworkMaster.spec.ts @@ -0,0 +1,69 @@ +import { Blockchain, SandboxContract } from '@ton-community/sandbox' +import { toNano } from 'ton-core' +import { DSocialNetworkMaster } from '../wrappers/DSocialNetworkMaster' +import { DSocialNetworkBlog } from '../wrappers/DSocialNetworkBlog' +import '@ton-community/test-utils' +import { registerTestAccountMessage } from '../utils/test-fixtures' + +describe('DSocialNetworkMaster', () => { + let blockchain: Blockchain + let deployer: Awaited> + let dMaster: SandboxContract + + beforeEach(async () => { + blockchain = await Blockchain.create() + dMaster = blockchain.openContract(await DSocialNetworkMaster.fromInit()) + deployer = await blockchain.treasury('deployer') + const deployResult = await dMaster.send( + deployer.getSender(), + { value: toNano('0.1') }, + { + $$type: 'Deploy', + queryId: 0n + } + ) + + expect(deployResult.transactions).toHaveTransaction({ + from: deployer.address, + to: dMaster.address, + deploy: true, + success: true + }) + }) + + it('deployer shoud be owner', async () => { + const owner = await dMaster.getOwner() + + expect(owner.toRawString()).toEqual(deployer.address.toRawString()) + }) + + it('Create blog', async () => { + const createBlogResult = await dMaster.send( + deployer.getSender(), + { value: toNano('1') }, + registerTestAccountMessage + ) + + const blogAddress = await dMaster.getGetBlogAddressByIndex(0n) + + expect(blogAddress).not.toBeNull() + + // Should top up blog balance + expect(createBlogResult.transactions).toHaveTransaction({ + from: dMaster.address, + to: blogAddress!, + success: true + }) + + // Should return excesses + expect(createBlogResult.transactions).toHaveTransaction({ + from: blogAddress!, + to: deployer.address, + success: true + }) + + expect(await dMaster.getGetBlogsCount()).toBe(1n) + + blockchain.openContract(DSocialNetworkBlog.fromAddress(blogAddress!)) + }) +}) diff --git a/contracts/tests/DSocialNetworkPost.spec.ts b/contracts/tests/DSocialNetworkPost.spec.ts new file mode 100644 index 00000000..bc9e572d --- /dev/null +++ b/contracts/tests/DSocialNetworkPost.spec.ts @@ -0,0 +1,180 @@ +import { Blockchain, SandboxContract } from '@ton-community/sandbox' +import { toNano } from 'ton-core' +import { DSocialNetworkMaster } from '../wrappers/DSocialNetworkMaster' +import { + DSocialNetworkBlog, + MintNft, + NftMetadata +} from '../wrappers/DSocialNetworkBlog' +import '@ton-community/test-utils' +import { DSocialNetworkPost } from '../wrappers/DSocialNetworkPost' +import { + getTestPostModel, + registerTestAccountMessage +} from '../utils/test-fixtures' +import { parse } from '../utils/onchain-metadata-parser/parse' +import { + deserializePostData, + serializePostData, + stringifyPostModel, + type DPostModel +} from '../utils/stub-post-serialization' + +describe('DSocialNetworkMaster', () => { + let blockchain: Blockchain + let deployer: Awaited> + let dMaster: SandboxContract + let dBlog: SandboxContract + let testPostModel: DPostModel + let dPost: SandboxContract + + beforeEach(async () => { + blockchain = await Blockchain.create() + dMaster = blockchain.openContract(await DSocialNetworkMaster.fromInit()) + deployer = await blockchain.treasury('deployer') + const deployResult = await dMaster.send( + deployer.getSender(), + { value: toNano('0.1') }, + { + $$type: 'Deploy', + queryId: 0n + } + ) + + expect(deployResult.transactions).toHaveTransaction({ + from: deployer.address, + to: dMaster.address, + deploy: true, + success: true + }) + + const registerResult = await dMaster.send( + deployer.getSender(), + { value: toNano('1') }, + registerTestAccountMessage + ) + + const blogAddress = await dMaster.getGetBlogAddressByIndex(0n) + + expect(blogAddress).not.toBeNull() + + expect(registerResult.transactions).toHaveTransaction({ + from: dMaster.address, + to: blogAddress!, + success: true + }) + + expect(await dMaster.getGetBlogsCount()).toBe(1n) + + dBlog = blockchain.openContract( + DSocialNetworkBlog.fromAddress(blogAddress!) + ) + + testPostModel = getTestPostModel( + deployer.address, + (await dBlog.getGetNftAddressByIndex(await dBlog.getGetNextItemIndex()))!, + dBlog.address + ) + + const createTestPostMessage: MintNft = { + $$type: 'MintNft', + query_id: 0n, + individual_content: serializePostData(testPostModel) + } + + const createPostResult = await dBlog.send( + deployer.getSender(), + { value: toNano('0.2') }, + createTestPostMessage + ) + + const postAddress = await dBlog.getGetNftAddressByIndex(0n) + + expect(postAddress).not.toBeNull() + + expect(createPostResult.transactions).toHaveTransaction({ + from: dBlog.address, + to: postAddress!, + success: true + }) + + expect(await dBlog.getGetNextItemIndex()).toBe(1n) + + dPost = blockchain.openContract( + DSocialNetworkPost.fromAddress(postAddress!) + ) + }) + + it('Deployer shoud be owner of the post', async () => { + const owner = await dPost.getOwner() + + expect(owner.toRawString()).toEqual(deployer.address.toRawString()) + }) + + it('Post model should be serialized correctly', () => { + const serializedModel = serializePostData(testPostModel) + const deserializedPostData = deserializePostData(serializedModel) + expect(stringifyPostModel(testPostModel)).toEqual( + stringifyPostModel(deserializedPostData) + ) + }) + + it('Post should be readable', async () => { + const getNftDataRes = await dPost.getGetNftData() + await dBlog.getGetNftContent( + getNftDataRes.index, + getNftDataRes.individual_content + ) + }) + + it('Post NFT data shoud be parsed correctly', async () => { + const postMetadata = await dPost.getGetPostInfo() + const parsedPostMetadata = await parse( + blockchain, + dPost.address, + dBlog.address + ) + expect(parsedPostMetadata).toEqual({ + image: postMetadata.nft_content.image, + name: postMetadata.nft_content.name, + description: postMetadata.nft_content.description + }) + }) + + it('Post should be editable', async () => { + const newPostMetadata: NftMetadata = { + $$type: 'NftMetadata', + name: 'New post name', + description: 'New post description', + image: 'New post cover' + } + + const editPostResult = await dPost.send( + deployer.getSender(), + { value: toNano('0.1') }, + { + $$type: 'EditBlogPost', + query_id: 0n, + new_metadata: newPostMetadata + } + ) + + // Should top up post balance + expect(editPostResult.transactions).toHaveTransaction({ + from: deployer.address, + to: dPost.address, + success: true + }) + + // Should return excesses to owner + expect(editPostResult.transactions).toHaveTransaction({ + from: dPost.address, + to: deployer.address, + success: true + }) + + const postMetadata = await dPost.getGetPostInfo() + + expect(postMetadata.nft_content).toEqual(newPostMetadata) + }) +}) diff --git a/contracts/tsconfig.json b/contracts/tsconfig.json new file mode 100644 index 00000000..8a5861b1 --- /dev/null +++ b/contracts/tsconfig.json @@ -0,0 +1,12 @@ +{ + "compilerOptions": { + "target": "ES2020", + "outDir": "dist", + "module": "commonjs", + "declaration": true, + "esModuleInterop": true, + "forceConsistentCasingInFileNames": true, + "strict": true, + "skipLibCheck": true + } +} diff --git a/contracts/utils/onchain-metadata-parser/dict.ts b/contracts/utils/onchain-metadata-parser/dict.ts new file mode 100644 index 00000000..4fae5b89 --- /dev/null +++ b/contracts/utils/onchain-metadata-parser/dict.ts @@ -0,0 +1,38 @@ +/* eslint-disable */ +import { Builder, Dictionary, Slice } from 'ton-core' +import { flattenSnakeCell, ParseChunkDict } from './nftContent' + +interface ChunkDictValue { + content: Buffer +} + +interface NFTDictValue { + content: Buffer +} + +export const ChunkDictValueSerializer = { + serialize(src: ChunkDictValue, builder: Builder) {}, + parse(src: Slice): ChunkDictValue { + const snake = flattenSnakeCell(src.loadRef()) + return { content: snake } + } +} + +export const NFTDictValueSerializer = { + serialize(src: NFTDictValue, builder: Builder) {}, + parse(src: Slice): NFTDictValue { + const ref = src.loadRef().asSlice() + + const start = ref.loadUint(8) + if (start === 0) { + const snake = flattenSnakeCell(ref.asCell()) + return { content: snake } + } + + if (start === 1) { + return { content: ParseChunkDict(ref) } + } + + return { content: Buffer.from([]) } + } +} diff --git a/contracts/utils/onchain-metadata-parser/nftContent.ts b/contracts/utils/onchain-metadata-parser/nftContent.ts new file mode 100644 index 00000000..0ec95429 --- /dev/null +++ b/contracts/utils/onchain-metadata-parser/nftContent.ts @@ -0,0 +1,100 @@ +/* eslint-disable */ +import { + beginCell, + BitBuilder, + BitReader, + Cell, + Dictionary, + Slice, + Builder +} from 'ton-core' + +const OFF_CHAIN_CONTENT_PREFIX = 0x01 + +export function flattenSnakeCell(cell: Cell) { + let c: Cell | null = cell + + // TODO: do something with TON Expolrers, they can't handle big snake cells. BitBuilder by default is limited to 1 Cell. https://github.com/ton-org/ton-core/issues/16 + const bitResult = new BitBuilder(4_294_967_296) + while (c) { + const cs = c.beginParse() + if (cs.remainingBits === 0) { + break + } + + const data = cs.loadBits(cs.remainingBits) + bitResult.writeBits(data) + c = c.refs && c.refs[0] + } + + const endBits = bitResult.build() + const reader = new BitReader(endBits) + + return reader.loadBuffer(reader.remaining / 8) +} + +function bufferToChunks(buff: Buffer, chunkSize: number) { + const chunks: Buffer[] = [] + while (buff.byteLength > 0) { + chunks.push(buff.slice(0, chunkSize)) + + buff = buff.slice(chunkSize) + } + return chunks +} + +export function makeSnakeCell(data: Buffer): Cell { + const chunks = bufferToChunks(data, 127) + + if (chunks.length === 0) { + return beginCell().endCell() + } + + if (chunks.length === 1) { + return beginCell().storeBuffer(chunks[0]).endCell() + } + + let curCell = beginCell() + + for (let i = chunks.length - 1; i >= 0; i--) { + const chunk = chunks[i] + + curCell.storeBuffer(chunk) + + if (i - 1 >= 0) { + const nextCell = beginCell() + nextCell.storeRef(curCell) + curCell = nextCell + } + } + + return curCell.endCell() +} + +export function encodeOffChainContent(content: string) { + let data = Buffer.from(content) + const offChainPrefix = Buffer.from([OFF_CHAIN_CONTENT_PREFIX]) + data = Buffer.concat([offChainPrefix, data]) + return makeSnakeCell(data) +} + +interface ChunkDictValue { + content: Buffer +} +export const ChunkDictValueSerializer = { + serialize(src: ChunkDictValue, builder: Builder) {}, + parse(src: Slice): ChunkDictValue { + const snake = flattenSnakeCell(src.loadRef()) + return { content: snake } + } +} + +export function ParseChunkDict(cell: Slice): Buffer { + const dict = cell.loadDict(Dictionary.Keys.Uint(32), ChunkDictValueSerializer) + + let buf = Buffer.alloc(0) + for (const [_, v] of dict) { + buf = Buffer.concat([buf, v.content]) + } + return buf +} diff --git a/contracts/utils/onchain-metadata-parser/parse.ts b/contracts/utils/onchain-metadata-parser/parse.ts new file mode 100644 index 00000000..9fc8a909 --- /dev/null +++ b/contracts/utils/onchain-metadata-parser/parse.ts @@ -0,0 +1,45 @@ +import { Blockchain } from '@ton-community/sandbox' +import { Address, Dictionary, TupleItemCell } from 'ton-core' +import { sha256 } from 'ton-crypto' +import { NFTDictValueSerializer } from './dict' + +type BlockchainResponse = Awaited< + ReturnType>['runGetMethod']> +> + +export async function parse( + blockchain: Blockchain, + mNftAddress: Address, + mCollectionAddress: Address +) { + const nftDataRes: BlockchainResponse = await blockchain.runGetMethod( + mNftAddress, + 'get_nft_data', + [] + ) + const nftContentRes: BlockchainResponse = await blockchain.runGetMethod( + mCollectionAddress, + 'get_nft_content', + [nftDataRes.stack[1], nftDataRes.stack[4]] + ) + const dataCell = nftContentRes.stack[0] as TupleItemCell + + const data = dataCell.cell.asSlice() + const start = data.loadUint(8) + if (start !== 0) { + throw new Error(`Unknown format: ${start}`) + } + + const dict = data.loadDict(Dictionary.Keys.Buffer(32), NFTDictValueSerializer) + + const keys = ['image', 'name', 'description'] + const result: Record = {} + for (const key of keys) { + const dictKey = await sha256(key) + const dictValue = dict.get(dictKey) + if (dictValue) { + result[key] = dictValue.content.toString('utf-8') + } + } + return result +} diff --git a/contracts/utils/stub-post-serialization.ts b/contracts/utils/stub-post-serialization.ts new file mode 100644 index 00000000..54cc8b99 --- /dev/null +++ b/contracts/utils/stub-post-serialization.ts @@ -0,0 +1,60 @@ +import { Address } from 'ton-core' +import { NftMetadata } from '../wrappers/DSocialNetworkPost' + +/** Start of text symbol */ +const stxChar = String.fromCharCode(2) +/** End of text symbol */ +const etxChar = String.fromCharCode(3) + +export type DPostModel = { + url: string + date: Date + author: Address + contentMd: string +} + +export function stringifyPostModel( + model: DPostModel +): Record { + return { + ...model, + date: model.date.toISOString(), + author: model.author.toRawString() + } +} + +export function serializePostData(model: DPostModel): NftMetadata { + const name = `Post on D from ${model.date.toLocaleDateString( + 'de-DE' + )} by ${model.author.toRawString()}` + const stringBuilder: string[] = [] + stringBuilder.push(`Posted: ${model.date.toLocaleDateString('de-DE')}`) + stringBuilder.push(`Author: ${model.author.toString()}`) + stringBuilder.push(`See on D: ${model.url}`) + stringBuilder.push('') + stringBuilder.push(model.contentMd) + stringBuilder.push('', '', '') + stringBuilder.push('===== Technical information =====') + stringBuilder.push( + `${stxChar}${JSON.stringify({ + url: model.url, + date: model.date.toISOString(), + author: model.author.toRawString(), + contentMd: model.contentMd + })}${etxChar}` + ) + return { + $$type: 'NftMetadata', + image: 'https://d.d0rich.me/metadata/covers/post.jpg', + name, + description: stringBuilder.join('\n') + } +} + +export function deserializePostData(metadata: NftMetadata): DPostModel { + const modelJSON = metadata.description.split(etxChar)[0].split(stxChar)[1] + const model: DPostModel = JSON.parse(modelJSON) + model.date = new Date(model.date) + model.author = Address.parseRaw(model.author as unknown as string) + return model +} diff --git a/contracts/utils/test-fixtures.ts b/contracts/utils/test-fixtures.ts new file mode 100644 index 00000000..f3a58ebe --- /dev/null +++ b/contracts/utils/test-fixtures.ts @@ -0,0 +1,35 @@ +import { Address, Dictionary } from 'ton-core' +import { CreateBlog } from '../wrappers/DSocialNetworkMaster' +import { NftMetadataAttribute } from '../wrappers/DSocialNetworkBlog' +import { DPostModel } from './stub-post-serialization' + +export const registerTestAccountMessage: CreateBlog = { + $$type: 'CreateBlog', + query_id: 0n, + blog_metadata: { + $$type: 'NftCollectionMetadata', + name: 'Test blog', + description: 'Test blog description', + image: 'https://d.d0rich.me/metadata/covers/blog.jpg' + } +} + +const testNftAttributes = Dictionary.empty() +testNftAttributes.set(0n, { + $$type: 'NftMetadataAttribute', + trait_type: 'content', + value: 'My first post' +}) + +export function getTestPostModel( + author: Address, + postContractAddress: Address, + blogContractAddress: Address +): DPostModel { + return { + url: `https://d.d0rich.me/${blogContractAddress.toString()}/${postContractAddress.toString()}`, + date: new Date(), + author, + contentMd: 'This is my first post on D' + } +} diff --git a/contracts/wrappers/DSocialNetworkBlog.compile.ts b/contracts/wrappers/DSocialNetworkBlog.compile.ts new file mode 100644 index 00000000..862ef506 --- /dev/null +++ b/contracts/wrappers/DSocialNetworkBlog.compile.ts @@ -0,0 +1,6 @@ +import { CompilerConfig } from '@ton-community/blueprint' + +export const compile: CompilerConfig = { + lang: 'tact', + target: 'contracts/d_social_network_blog.tact' +} diff --git a/contracts/wrappers/DSocialNetworkBlog.ts b/contracts/wrappers/DSocialNetworkBlog.ts new file mode 100644 index 00000000..26dad425 --- /dev/null +++ b/contracts/wrappers/DSocialNetworkBlog.ts @@ -0,0 +1 @@ +export * from '../build/DSocialNetworkMaster/tact_DSocialNetworkBlog' diff --git a/contracts/wrappers/DSocialNetworkMaster.compile.ts b/contracts/wrappers/DSocialNetworkMaster.compile.ts new file mode 100644 index 00000000..1936060d --- /dev/null +++ b/contracts/wrappers/DSocialNetworkMaster.compile.ts @@ -0,0 +1,6 @@ +import { CompilerConfig } from '@ton-community/blueprint' + +export const compile: CompilerConfig = { + lang: 'tact', + target: 'contracts/d_social_network_master.tact' +} diff --git a/contracts/wrappers/DSocialNetworkMaster.ts b/contracts/wrappers/DSocialNetworkMaster.ts new file mode 100644 index 00000000..5b04ebbd --- /dev/null +++ b/contracts/wrappers/DSocialNetworkMaster.ts @@ -0,0 +1 @@ +export * from '../build/DSocialNetworkMaster/tact_DSocialNetworkMaster' diff --git a/contracts/wrappers/DSocialNetworkPost.compile.ts b/contracts/wrappers/DSocialNetworkPost.compile.ts new file mode 100644 index 00000000..d28673e0 --- /dev/null +++ b/contracts/wrappers/DSocialNetworkPost.compile.ts @@ -0,0 +1,6 @@ +import { CompilerConfig } from '@ton-community/blueprint' + +export const compile: CompilerConfig = { + lang: 'tact', + target: 'contracts/d_social_network_post.tact' +} diff --git a/contracts/wrappers/DSocialNetworkPost.ts b/contracts/wrappers/DSocialNetworkPost.ts new file mode 100644 index 00000000..64388882 --- /dev/null +++ b/contracts/wrappers/DSocialNetworkPost.ts @@ -0,0 +1 @@ +export * from '../build/DSocialNetworkPost/tact_DSocialNetworkPost' diff --git a/ignore-builds-master.mjs b/ignore-builds-master.mjs new file mode 100644 index 00000000..dd9e609a --- /dev/null +++ b/ignore-builds-master.mjs @@ -0,0 +1,56 @@ +import { execSync } from 'child_process' + +const cachedCommitRef = + process.env.CACHED_COMMIT_REF || 'd06423d365fa9cf3ef99a8653abbf1a83fe7d3bb' +const commitRef = process.env.COMMIT_REF || 'HEAD' + +const changesList = execSync( + `git diff --name-only ${cachedCommitRef} ${commitRef}` +).toString() + +// Apps +const isD0richMeChanged = changesList.includes('apps/d0rich.me') +const isD0xigenD0richMeChanged = changesList.includes('apps/d0xigen.d0rich.me') +const isDesignD0richMeChanged = changesList.includes('apps/design.d0rich.me') +const isDD0richMeChanged = changesList.includes('apps/d.d0rich.me') + +// Contracts + +const areContractsChanged = changesList.includes('contracts/contracts') + +// Packages +const isNuxtContentMermaidChanged = changesList.includes( + 'packages/nuxt-content-mermaid' +) +const isNuxtDesignSystemChanged = changesList.includes( + 'packages/nuxt-design-system' +) + +const isEspritDesignChanged = changesList.includes('packages/esprit-design') + +const ignoreD0richMeBuild = + !isD0richMeChanged && + !isNuxtContentMermaidChanged && + !isNuxtDesignSystemChanged && + !isEspritDesignChanged + +const ignoreD0xigenD0richMeBuild = + !isD0xigenD0richMeChanged && + !isNuxtContentMermaidChanged && + !isNuxtDesignSystemChanged && + !isEspritDesignChanged + +const ignoreDesignD0richMeBuild = + !isDesignD0richMeChanged && + !isNuxtDesignSystemChanged && + !isEspritDesignChanged + +const ignoreDD0richMeBuild = + !isDD0richMeChanged && !areContractsChanged && !isEspritDesignChanged + +export { + ignoreD0richMeBuild, + ignoreD0xigenD0richMeBuild, + ignoreDesignD0richMeBuild, + ignoreDD0richMeBuild +} diff --git a/package-lock.json b/package-lock.json index 485b48ac..3bba52a9 100644 --- a/package-lock.json +++ b/package-lock.json @@ -7,7 +7,8 @@ "name": "esprit", "workspaces": [ "apps/*", - "packages/*" + "packages/*", + "contracts" ], "devDependencies": { "@changesets/cli": "^2.26.2", @@ -21,14 +22,329 @@ "eslint-plugin-prettier": "^4.2.1", "eslint-plugin-unicorn": "^49.0.0", "eslint-plugin-vitest": "^0.1.4", + "jest": "^29.5.0", "playwright": "^1.32.1", "prettier": "^2.8.4", + "ts-jest": "^29.0.5", + "ts-node": "^10.9.1", "turbo": "latest", "typescript": "^5.0.2", "vitest": "^0.30.1", "vue-tsc": "^1.2.0" } }, + "apps/d.d0rich.me": { + "version": "0.0.0", + "dependencies": { + "@d0rich/contracts": "*", + "pinia": "^2.1.7", + "vue": "^3.3.4", + "vue-router": "^4.2.5" + }, + "devDependencies": { + "@tsconfig/node18": "^18.2.2", + "@types/jsdom": "^21.1.3", + "@types/node": "^18.18.5", + "@vitejs/plugin-vue": "^4.4.0", + "@vue/test-utils": "^2.4.1", + "@vue/tsconfig": "^0.4.0", + "jsdom": "^22.1.0", + "npm-run-all2": "^6.1.1", + "typescript": "~5.2.0", + "vite": "^4.4.11", + "vitest": "^0.34.6", + "vue-tsc": "^1.8.19" + } + }, + "apps/d.d0rich.me/node_modules/@types/node": { + "version": "18.18.11", + "resolved": "https://registry.npmjs.org/@types/node/-/node-18.18.11.tgz", + "integrity": "sha512-c1vku6qnTeujJneYH94/4aq73XrVcsJe35UPyAsSok1ijiKrkRzK+AxQPSpNMUnC03roWBBwJx/9I8V7lQoxmA==", + "dev": true, + "dependencies": { + "undici-types": "~5.26.4" + } + }, + "apps/d.d0rich.me/node_modules/@vitest/expect": { + "version": "0.34.6", + "resolved": "https://registry.npmjs.org/@vitest/expect/-/expect-0.34.6.tgz", + "integrity": "sha512-QUzKpUQRc1qC7qdGo7rMK3AkETI7w18gTCUrsNnyjjJKYiuUB9+TQK3QnR1unhCnWRC0AbKv2omLGQDF/mIjOw==", + "dev": true, + "dependencies": { + "@vitest/spy": "0.34.6", + "@vitest/utils": "0.34.6", + "chai": "^4.3.10" + }, + "funding": { + "url": "https://opencollective.com/vitest" + } + }, + "apps/d.d0rich.me/node_modules/@vitest/runner": { + "version": "0.34.6", + "resolved": "https://registry.npmjs.org/@vitest/runner/-/runner-0.34.6.tgz", + "integrity": "sha512-1CUQgtJSLF47NnhN+F9X2ycxUP0kLHQ/JWvNHbeBfwW8CzEGgeskzNnHDyv1ieKTltuR6sdIHV+nmR6kPxQqzQ==", + "dev": true, + "dependencies": { + "@vitest/utils": "0.34.6", + "p-limit": "^4.0.0", + "pathe": "^1.1.1" + }, + "funding": { + "url": "https://opencollective.com/vitest" + } + }, + "apps/d.d0rich.me/node_modules/@vitest/snapshot": { + "version": "0.34.6", + "resolved": "https://registry.npmjs.org/@vitest/snapshot/-/snapshot-0.34.6.tgz", + "integrity": "sha512-B3OZqYn6k4VaN011D+ve+AA4whM4QkcwcrwaKwAbyyvS/NB1hCWjFIBQxAQQSQir9/RtyAAGuq+4RJmbn2dH4w==", + "dev": true, + "dependencies": { + "magic-string": "^0.30.1", + "pathe": "^1.1.1", + "pretty-format": "^29.5.0" + }, + "funding": { + "url": "https://opencollective.com/vitest" + } + }, + "apps/d.d0rich.me/node_modules/@vitest/spy": { + "version": "0.34.6", + "resolved": "https://registry.npmjs.org/@vitest/spy/-/spy-0.34.6.tgz", + "integrity": "sha512-xaCvneSaeBw/cz8ySmF7ZwGvL0lBjfvqc1LpQ/vcdHEvpLn3Ff1vAvjw+CoGn0802l++5L/pxb7whwcWAw+DUQ==", + "dev": true, + "dependencies": { + "tinyspy": "^2.1.1" + }, + "funding": { + "url": "https://opencollective.com/vitest" + } + }, + "apps/d.d0rich.me/node_modules/@vitest/utils": { + "version": "0.34.6", + "resolved": "https://registry.npmjs.org/@vitest/utils/-/utils-0.34.6.tgz", + "integrity": "sha512-IG5aDD8S6zlvloDsnzHw0Ut5xczlF+kv2BOTo+iXfPr54Yhi5qbVOgGB1hZaVq4iJ4C/MZ2J0y15IlsV/ZcI0A==", + "dev": true, + "dependencies": { + "diff-sequences": "^29.4.3", + "loupe": "^2.3.6", + "pretty-format": "^29.5.0" + }, + "funding": { + "url": "https://opencollective.com/vitest" + } + }, + "apps/d.d0rich.me/node_modules/ansi-styles": { + "version": "5.2.0", + "resolved": "https://registry.npmjs.org/ansi-styles/-/ansi-styles-5.2.0.tgz", + "integrity": "sha512-Cxwpt2SfTzTtXcfOlzGEee8O+c+MmUgGrNiBcXnuWxuFJHe6a5Hz7qwhwe5OgaSYI0IJvkLqWX1ASG+cJOkEiA==", + "dev": true, + "engines": { + "node": ">=10" + }, + "funding": { + "url": "https://github.com/chalk/ansi-styles?sponsor=1" + } + }, + "apps/d.d0rich.me/node_modules/p-limit": { + "version": "4.0.0", + "resolved": "https://registry.npmjs.org/p-limit/-/p-limit-4.0.0.tgz", + "integrity": "sha512-5b0R4txpzjPWVw/cXXUResoD4hb6U/x9BH08L7nw+GN1sezDzPdxeRvpc9c433fZhBan/wusjbCsqwqm4EIBIQ==", + "dev": true, + "dependencies": { + "yocto-queue": "^1.0.0" + }, + "engines": { + "node": "^12.20.0 || ^14.13.1 || >=16.0.0" + }, + "funding": { + "url": "https://github.com/sponsors/sindresorhus" + } + }, + "apps/d.d0rich.me/node_modules/pinia": { + "version": "2.1.7", + "resolved": "https://registry.npmjs.org/pinia/-/pinia-2.1.7.tgz", + "integrity": "sha512-+C2AHFtcFqjPih0zpYuvof37SFxMQ7OEG2zV9jRI12i9BOy3YQVAHwdKtyyc8pDcDyIc33WCIsZaCFWU7WWxGQ==", + "dependencies": { + "@vue/devtools-api": "^6.5.0", + "vue-demi": ">=0.14.5" + }, + "funding": { + "url": "https://github.com/sponsors/posva" + }, + "peerDependencies": { + "@vue/composition-api": "^1.4.0", + "typescript": ">=4.4.4", + "vue": "^2.6.14 || ^3.3.0" + }, + "peerDependenciesMeta": { + "@vue/composition-api": { + "optional": true + }, + "typescript": { + "optional": true + } + } + }, + "apps/d.d0rich.me/node_modules/pinia/node_modules/vue-demi": { + "version": "0.14.6", + "resolved": "https://registry.npmjs.org/vue-demi/-/vue-demi-0.14.6.tgz", + "integrity": "sha512-8QA7wrYSHKaYgUxDA5ZC24w+eHm3sYCbp0EzcDwKqN3p6HqtTCGR/GVsPyZW92unff4UlcSh++lmqDWN3ZIq4w==", + "hasInstallScript": true, + "bin": { + "vue-demi-fix": "bin/vue-demi-fix.js", + "vue-demi-switch": "bin/vue-demi-switch.js" + }, + "engines": { + "node": ">=12" + }, + "funding": { + "url": "https://github.com/sponsors/antfu" + }, + "peerDependencies": { + "@vue/composition-api": "^1.0.0-rc.1", + "vue": "^3.0.0-0 || ^2.6.0" + }, + "peerDependenciesMeta": { + "@vue/composition-api": { + "optional": true + } + } + }, + "apps/d.d0rich.me/node_modules/pretty-format": { + "version": "29.7.0", + "resolved": "https://registry.npmjs.org/pretty-format/-/pretty-format-29.7.0.tgz", + "integrity": "sha512-Pdlw/oPxN+aXdmM9R00JVC9WVFoCLTKJvDVLgmJ+qAffBMxsV85l/Lu7sNx4zSzPyoL2euImuEwHhOXdEgNFZQ==", + "dev": true, + "dependencies": { + "@jest/schemas": "^29.6.3", + "ansi-styles": "^5.0.0", + "react-is": "^18.0.0" + }, + "engines": { + "node": "^14.15.0 || ^16.10.0 || >=18.0.0" + } + }, + "apps/d.d0rich.me/node_modules/tinypool": { + "version": "0.7.0", + "resolved": "https://registry.npmjs.org/tinypool/-/tinypool-0.7.0.tgz", + "integrity": "sha512-zSYNUlYSMhJ6Zdou4cJwo/p7w5nmAH17GRfU/ui3ctvjXFErXXkruT4MWW6poDeXgCaIBlGLrfU6TbTXxyGMww==", + "dev": true, + "engines": { + "node": ">=14.0.0" + } + }, + "apps/d.d0rich.me/node_modules/vite-node": { + "version": "0.34.6", + "resolved": "https://registry.npmjs.org/vite-node/-/vite-node-0.34.6.tgz", + "integrity": "sha512-nlBMJ9x6n7/Amaz6F3zJ97EBwR2FkzhBRxF5e+jE6LA3yi6Wtc2lyTij1OnDMIr34v5g/tVQtsVAzhT0jc5ygA==", + "dev": true, + "dependencies": { + "cac": "^6.7.14", + "debug": "^4.3.4", + "mlly": "^1.4.0", + "pathe": "^1.1.1", + "picocolors": "^1.0.0", + "vite": "^3.0.0 || ^4.0.0 || ^5.0.0-0" + }, + "bin": { + "vite-node": "vite-node.mjs" + }, + "engines": { + "node": ">=v14.18.0" + }, + "funding": { + "url": "https://opencollective.com/vitest" + } + }, + "apps/d.d0rich.me/node_modules/vitest": { + "version": "0.34.6", + "resolved": "https://registry.npmjs.org/vitest/-/vitest-0.34.6.tgz", + "integrity": "sha512-+5CALsOvbNKnS+ZHMXtuUC7nL8/7F1F2DnHGjSsszX8zCjWSSviphCb/NuS9Nzf4Q03KyyDRBAXhF/8lffME4Q==", + "dev": true, + "dependencies": { + "@types/chai": "^4.3.5", + "@types/chai-subset": "^1.3.3", + "@types/node": "*", + "@vitest/expect": "0.34.6", + "@vitest/runner": "0.34.6", + "@vitest/snapshot": "0.34.6", + "@vitest/spy": "0.34.6", + "@vitest/utils": "0.34.6", + "acorn": "^8.9.0", + "acorn-walk": "^8.2.0", + "cac": "^6.7.14", + "chai": "^4.3.10", + "debug": "^4.3.4", + "local-pkg": "^0.4.3", + "magic-string": "^0.30.1", + "pathe": "^1.1.1", + "picocolors": "^1.0.0", + "std-env": "^3.3.3", + "strip-literal": "^1.0.1", + "tinybench": "^2.5.0", + "tinypool": "^0.7.0", + "vite": "^3.1.0 || ^4.0.0 || ^5.0.0-0", + "vite-node": "0.34.6", + "why-is-node-running": "^2.2.2" + }, + "bin": { + "vitest": "vitest.mjs" + }, + "engines": { + "node": ">=v14.18.0" + }, + "funding": { + "url": "https://opencollective.com/vitest" + }, + "peerDependencies": { + "@edge-runtime/vm": "*", + "@vitest/browser": "*", + "@vitest/ui": "*", + "happy-dom": "*", + "jsdom": "*", + "playwright": "*", + "safaridriver": "*", + "webdriverio": "*" + }, + "peerDependenciesMeta": { + "@edge-runtime/vm": { + "optional": true + }, + "@vitest/browser": { + "optional": true + }, + "@vitest/ui": { + "optional": true + }, + "happy-dom": { + "optional": true + }, + "jsdom": { + "optional": true + }, + "playwright": { + "optional": true + }, + "safaridriver": { + "optional": true + }, + "webdriverio": { + "optional": true + } + } + }, + "apps/d.d0rich.me/node_modules/yocto-queue": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/yocto-queue/-/yocto-queue-1.0.0.tgz", + "integrity": "sha512-9bnSc/HEW2uRy67wc+T8UwauLuPJVn28jb+GtJY16iiKWyvmYJRXVT4UamsAEGQfPohgr2q4Tq0sQbQlxTfi1g==", + "dev": true, + "engines": { + "node": ">=12.20" + }, + "funding": { + "url": "https://github.com/sponsors/sindresorhus" + } + }, "apps/d0rich.github.io": { "extraneous": true, "dependencies": { @@ -98,6 +414,43 @@ "@d0rich/nuxt-content-mermaid": "*" } }, + "contracts": { + "name": "@d0rich/contracts", + "version": "0.0.1", + "devDependencies": { + "@ton-community/blueprint": "^0.12.0", + "@ton-community/sandbox": "^0.11.0", + "@ton-community/test-utils": "^0.3.0", + "@types/jest": "^29.5.0", + "@types/node": "^20.2.5", + "ton": "~13.6.0", + "ton-core": "^0.51.0", + "ton-crypto": "^3.2.0" + } + }, + "contracts/d-social-network": { + "version": "0.0.1", + "extraneous": true, + "devDependencies": { + "@ton-community/blueprint": "^0.12.0", + "@ton-community/sandbox": "^0.11.0", + "@ton-community/test-utils": "^0.3.0", + "@types/jest": "^29.5.0", + "@types/node": "^20.2.5", + "ton": "~13.6.0", + "ton-core": "^0.51.0", + "ton-crypto": "^3.2.0" + } + }, + "contracts/node_modules/@types/node": { + "version": "20.9.0", + "resolved": "https://registry.npmjs.org/@types/node/-/node-20.9.0.tgz", + "integrity": "sha512-nekiGu2NDb1BcVofVcEKMIwzlx4NjHlcjhoxxKBNLtz15Y1z7MYf549DFvkHSId02Ax6kGwWntIBPC3l/JZcmw==", + "dev": true, + "dependencies": { + "undici-types": "~5.26.4" + } + }, "node_modules/@aashutoshrathi/word-wrap": { "version": "1.2.6", "devOptional": true, @@ -128,6 +481,12 @@ "node": ">=6.0.0" } }, + "node_modules/@assemblyscript/loader": { + "version": "0.9.4", + "resolved": "https://registry.npmjs.org/@assemblyscript/loader/-/loader-0.9.4.tgz", + "integrity": "sha512-HazVq9zwTVwGmqdwYzu7WyQ6FQVZ7SwET0KKQuKm55jD0IfUpZgN0OPIiZG3zV1iSrVYcN0bdwLRXI/VNCYsUA==", + "dev": true + }, "node_modules/@babel/code-frame": { "version": "7.22.13", "license": "MIT", @@ -557,6 +916,66 @@ "node": ">=6.0.0" } }, + "node_modules/@babel/plugin-syntax-async-generators": { + "version": "7.8.4", + "resolved": "https://registry.npmjs.org/@babel/plugin-syntax-async-generators/-/plugin-syntax-async-generators-7.8.4.tgz", + "integrity": "sha512-tycmZxkGfZaxhMRbXlPXuVFpdWlXpir2W4AMhSJgRKzk/eDlIXOhb2LHWoLpDF7TEHylV5zNhykX6KAgHJmTNw==", + "dev": true, + "dependencies": { + "@babel/helper-plugin-utils": "^7.8.0" + }, + "peerDependencies": { + "@babel/core": "^7.0.0-0" + } + }, + "node_modules/@babel/plugin-syntax-bigint": { + "version": "7.8.3", + "resolved": "https://registry.npmjs.org/@babel/plugin-syntax-bigint/-/plugin-syntax-bigint-7.8.3.tgz", + "integrity": "sha512-wnTnFlG+YxQm3vDxpGE57Pj0srRU4sHE/mDkt1qv2YJJSeUAec2ma4WLUnUPeKjyrfntVwe/N6dCXpU+zL3Npg==", + "dev": true, + "dependencies": { + "@babel/helper-plugin-utils": "^7.8.0" + }, + "peerDependencies": { + "@babel/core": "^7.0.0-0" + } + }, + "node_modules/@babel/plugin-syntax-class-properties": { + "version": "7.12.13", + "resolved": "https://registry.npmjs.org/@babel/plugin-syntax-class-properties/-/plugin-syntax-class-properties-7.12.13.tgz", + "integrity": "sha512-fm4idjKla0YahUNgFNLCB0qySdsoPiZP3iQE3rky0mBUtMZ23yDJ9SJdg6dXTSDnulOVqiF3Hgr9nbXvXTQZYA==", + "dev": true, + "dependencies": { + "@babel/helper-plugin-utils": "^7.12.13" + }, + "peerDependencies": { + "@babel/core": "^7.0.0-0" + } + }, + "node_modules/@babel/plugin-syntax-import-meta": { + "version": "7.10.4", + "resolved": "https://registry.npmjs.org/@babel/plugin-syntax-import-meta/-/plugin-syntax-import-meta-7.10.4.tgz", + "integrity": "sha512-Yqfm+XDx0+Prh3VSeEQCPU81yC+JWZ2pDPFSS4ZdpfZhp4MkFMaDC1UqseovEKwSUpnIL7+vK+Clp7bfh0iD7g==", + "dev": true, + "dependencies": { + "@babel/helper-plugin-utils": "^7.10.4" + }, + "peerDependencies": { + "@babel/core": "^7.0.0-0" + } + }, + "node_modules/@babel/plugin-syntax-json-strings": { + "version": "7.8.3", + "resolved": "https://registry.npmjs.org/@babel/plugin-syntax-json-strings/-/plugin-syntax-json-strings-7.8.3.tgz", + "integrity": "sha512-lY6kdGpWHvjoe2vk4WrAapEuBR69EMxZl+RoGRhrFGNYVK8mOPAW8VfbT/ZgrFbXlDNiiaxQnAtgVCZ6jv30EA==", + "dev": true, + "dependencies": { + "@babel/helper-plugin-utils": "^7.8.0" + }, + "peerDependencies": { + "@babel/core": "^7.0.0-0" + } + }, "node_modules/@babel/plugin-syntax-jsx": { "version": "7.22.5", "resolved": "https://registry.npmjs.org/@babel/plugin-syntax-jsx/-/plugin-syntax-jsx-7.22.5.tgz", @@ -571,6 +990,93 @@ "@babel/core": "^7.0.0-0" } }, + "node_modules/@babel/plugin-syntax-logical-assignment-operators": { + "version": "7.10.4", + "resolved": "https://registry.npmjs.org/@babel/plugin-syntax-logical-assignment-operators/-/plugin-syntax-logical-assignment-operators-7.10.4.tgz", + "integrity": "sha512-d8waShlpFDinQ5MtvGU9xDAOzKH47+FFoney2baFIoMr952hKOLp1HR7VszoZvOsV/4+RRszNY7D17ba0te0ig==", + "dev": true, + "dependencies": { + "@babel/helper-plugin-utils": "^7.10.4" + }, + "peerDependencies": { + "@babel/core": "^7.0.0-0" + } + }, + "node_modules/@babel/plugin-syntax-nullish-coalescing-operator": { + "version": "7.8.3", + "resolved": "https://registry.npmjs.org/@babel/plugin-syntax-nullish-coalescing-operator/-/plugin-syntax-nullish-coalescing-operator-7.8.3.tgz", + "integrity": "sha512-aSff4zPII1u2QD7y+F8oDsz19ew4IGEJg9SVW+bqwpwtfFleiQDMdzA/R+UlWDzfnHFCxxleFT0PMIrR36XLNQ==", + "dev": true, + "dependencies": { + "@babel/helper-plugin-utils": "^7.8.0" + }, + "peerDependencies": { + "@babel/core": "^7.0.0-0" + } + }, + "node_modules/@babel/plugin-syntax-numeric-separator": { + "version": "7.10.4", + "resolved": "https://registry.npmjs.org/@babel/plugin-syntax-numeric-separator/-/plugin-syntax-numeric-separator-7.10.4.tgz", + "integrity": "sha512-9H6YdfkcK/uOnY/K7/aA2xpzaAgkQn37yzWUMRK7OaPOqOpGS1+n0H5hxT9AUw9EsSjPW8SVyMJwYRtWs3X3ug==", + "dev": true, + "dependencies": { + "@babel/helper-plugin-utils": "^7.10.4" + }, + "peerDependencies": { + "@babel/core": "^7.0.0-0" + } + }, + "node_modules/@babel/plugin-syntax-object-rest-spread": { + "version": "7.8.3", + "resolved": "https://registry.npmjs.org/@babel/plugin-syntax-object-rest-spread/-/plugin-syntax-object-rest-spread-7.8.3.tgz", + "integrity": "sha512-XoqMijGZb9y3y2XskN+P1wUGiVwWZ5JmoDRwx5+3GmEplNyVM2s2Dg8ILFQm8rWM48orGy5YpI5Bl8U1y7ydlA==", + "dev": true, + "dependencies": { + "@babel/helper-plugin-utils": "^7.8.0" + }, + "peerDependencies": { + "@babel/core": "^7.0.0-0" + } + }, + "node_modules/@babel/plugin-syntax-optional-catch-binding": { + "version": "7.8.3", + "resolved": "https://registry.npmjs.org/@babel/plugin-syntax-optional-catch-binding/-/plugin-syntax-optional-catch-binding-7.8.3.tgz", + "integrity": "sha512-6VPD0Pc1lpTqw0aKoeRTMiB+kWhAoT24PA+ksWSBrFtl5SIRVpZlwN3NNPQjehA2E/91FV3RjLWoVTglWcSV3Q==", + "dev": true, + "dependencies": { + "@babel/helper-plugin-utils": "^7.8.0" + }, + "peerDependencies": { + "@babel/core": "^7.0.0-0" + } + }, + "node_modules/@babel/plugin-syntax-optional-chaining": { + "version": "7.8.3", + "resolved": "https://registry.npmjs.org/@babel/plugin-syntax-optional-chaining/-/plugin-syntax-optional-chaining-7.8.3.tgz", + "integrity": "sha512-KoK9ErH1MBlCPxV0VANkXW2/dw4vlbGDrFgz8bmUsBGYkFRcbRwMh6cIJubdPrkxRwuGdtCk0v/wPTKbQgBjkg==", + "dev": true, + "dependencies": { + "@babel/helper-plugin-utils": "^7.8.0" + }, + "peerDependencies": { + "@babel/core": "^7.0.0-0" + } + }, + "node_modules/@babel/plugin-syntax-top-level-await": { + "version": "7.14.5", + "resolved": "https://registry.npmjs.org/@babel/plugin-syntax-top-level-await/-/plugin-syntax-top-level-await-7.14.5.tgz", + "integrity": "sha512-hx++upLv5U1rgYfwe1xBQUhRmU41NEvpUvrp8jkrSCdvGSnM5/qdRMtylJ6PG5OFkBaHkbTAKTnd3/YyESRHFw==", + "dev": true, + "dependencies": { + "@babel/helper-plugin-utils": "^7.14.5" + }, + "engines": { + "node": ">=6.9.0" + }, + "peerDependencies": { + "@babel/core": "^7.0.0-0" + } + }, "node_modules/@babel/plugin-syntax-typescript": { "version": "7.22.5", "resolved": "https://registry.npmjs.org/@babel/plugin-syntax-typescript/-/plugin-syntax-typescript-7.22.5.tgz", @@ -672,6 +1178,12 @@ "node": ">=6.9.0" } }, + "node_modules/@bcoe/v8-coverage": { + "version": "0.2.3", + "resolved": "https://registry.npmjs.org/@bcoe/v8-coverage/-/v8-coverage-0.2.3.tgz", + "integrity": "sha512-0hYQ8SB4Db5zvZB4axdMHGwEaQjkZzFjQiN9LVYvIFB2nSUHW9tYpxWriPrWDASIxiaXax83REcLxuSdnGPZtw==", + "dev": true + }, "node_modules/@braintree/sanitize-url": { "version": "6.0.4", "resolved": "https://registry.npmjs.org/@braintree/sanitize-url/-/sanitize-url-6.0.4.tgz", @@ -1538,9 +2050,8 @@ }, "node_modules/@cspotcode/source-map-support": { "version": "0.8.1", + "devOptional": true, "license": "MIT", - "optional": true, - "peer": true, "dependencies": { "@jridgewell/trace-mapping": "0.3.9" }, @@ -1550,9 +2061,8 @@ }, "node_modules/@cspotcode/source-map-support/node_modules/@jridgewell/trace-mapping": { "version": "0.3.9", + "devOptional": true, "license": "MIT", - "optional": true, - "peer": true, "dependencies": { "@jridgewell/resolve-uri": "^3.0.3", "@jridgewell/sourcemap-codec": "^1.4.10" @@ -1640,6 +2150,10 @@ "postcss-selector-parser": "^6.0.13" } }, + "node_modules/@d0rich/contracts": { + "resolved": "contracts", + "link": true + }, "node_modules/@d0rich/esprit-design": { "resolved": "packages/esprit-design", "link": true @@ -2096,6 +2610,15 @@ "resolved": "https://registry.npmjs.org/@ioredis/commands/-/commands-1.2.0.tgz", "integrity": "sha512-Sx1pU8EM64o2BrqNpEO1CNLtKQwyhuXuqyfH7oGKCk+1a33d2r5saW8zNwm3j6BTExtjrv2BxTgzzkMwts6vGg==" }, + "node_modules/@ipld/dag-pb": { + "version": "2.1.18", + "resolved": "https://registry.npmjs.org/@ipld/dag-pb/-/dag-pb-2.1.18.tgz", + "integrity": "sha512-ZBnf2fuX9y3KccADURG5vb9FaOeMjFkCrNysB0PtftME/4iCTjxfaLoNq/IAh5fTqUOMXvryN6Jyka4ZGuMLIg==", + "dev": true, + "dependencies": { + "multiformats": "^9.5.4" + } + }, "node_modules/@isaacs/cliui": { "version": "8.0.2", "resolved": "https://registry.npmjs.org/@isaacs/cliui/-/cliui-8.0.2.tgz", @@ -2180,6 +2703,457 @@ "url": "https://github.com/chalk/wrap-ansi?sponsor=1" } }, + "node_modules/@istanbuljs/load-nyc-config": { + "version": "1.1.0", + "resolved": "https://registry.npmjs.org/@istanbuljs/load-nyc-config/-/load-nyc-config-1.1.0.tgz", + "integrity": "sha512-VjeHSlIzpv/NyD3N0YuHfXOPDIixcA1q2ZV98wsMqcYlPmv2n3Yb2lYP9XMElnaFVXg5A7YLTeLu6V84uQDjmQ==", + "dev": true, + "dependencies": { + "camelcase": "^5.3.1", + "find-up": "^4.1.0", + "get-package-type": "^0.1.0", + "js-yaml": "^3.13.1", + "resolve-from": "^5.0.0" + }, + "engines": { + "node": ">=8" + } + }, + "node_modules/@istanbuljs/load-nyc-config/node_modules/argparse": { + "version": "1.0.10", + "resolved": "https://registry.npmjs.org/argparse/-/argparse-1.0.10.tgz", + "integrity": "sha512-o5Roy6tNG4SL/FOkCAN6RzjiakZS25RLYFrcMttJqbdd8BWrnA+fGz57iN5Pb06pvBGvl5gQ0B48dJlslXvoTg==", + "dev": true, + "dependencies": { + "sprintf-js": "~1.0.2" + } + }, + "node_modules/@istanbuljs/load-nyc-config/node_modules/camelcase": { + "version": "5.3.1", + "resolved": "https://registry.npmjs.org/camelcase/-/camelcase-5.3.1.tgz", + "integrity": "sha512-L28STB170nwWS63UjtlEOE3dldQApaJXZkOI1uMFfzf3rRuPegHaHesyee+YxQ+W6SvRDQV6UrdOdRiR153wJg==", + "dev": true, + "engines": { + "node": ">=6" + } + }, + "node_modules/@istanbuljs/load-nyc-config/node_modules/find-up": { + "version": "4.1.0", + "resolved": "https://registry.npmjs.org/find-up/-/find-up-4.1.0.tgz", + "integrity": "sha512-PpOwAdQ/YlXQ2vj8a3h8IipDuYRi3wceVQQGYWxNINccq40Anw7BlsEXCMbt1Zt+OLA6Fq9suIpIWD0OsnISlw==", + "dev": true, + "dependencies": { + "locate-path": "^5.0.0", + "path-exists": "^4.0.0" + }, + "engines": { + "node": ">=8" + } + }, + "node_modules/@istanbuljs/load-nyc-config/node_modules/js-yaml": { + "version": "3.14.1", + "resolved": "https://registry.npmjs.org/js-yaml/-/js-yaml-3.14.1.tgz", + "integrity": "sha512-okMH7OXXJ7YrN9Ok3/SXrnu4iX9yOk+25nqX4imS2npuvTYDmo/QEZoqwZkYaIDk3jVvBOTOIEgEhaLOynBS9g==", + "dev": true, + "dependencies": { + "argparse": "^1.0.7", + "esprima": "^4.0.0" + }, + "bin": { + "js-yaml": "bin/js-yaml.js" + } + }, + "node_modules/@istanbuljs/load-nyc-config/node_modules/locate-path": { + "version": "5.0.0", + "resolved": "https://registry.npmjs.org/locate-path/-/locate-path-5.0.0.tgz", + "integrity": "sha512-t7hw9pI+WvuwNJXwk5zVHpyhIqzg2qTlklJOf0mVxGSbe3Fp2VieZcduNYjaLDoy6p9uGpQEGWG87WpMKlNq8g==", + "dev": true, + "dependencies": { + "p-locate": "^4.1.0" + }, + "engines": { + "node": ">=8" + } + }, + "node_modules/@istanbuljs/load-nyc-config/node_modules/p-limit": { + "version": "2.3.0", + "resolved": "https://registry.npmjs.org/p-limit/-/p-limit-2.3.0.tgz", + "integrity": "sha512-//88mFWSJx8lxCzwdAABTJL2MyWB12+eIY7MDL2SqLmAkeKU9qxRvWuSyTjm3FUmpBEMuFfckAIqEaVGUDxb6w==", + "dev": true, + "dependencies": { + "p-try": "^2.0.0" + }, + "engines": { + "node": ">=6" + }, + "funding": { + "url": "https://github.com/sponsors/sindresorhus" + } + }, + "node_modules/@istanbuljs/load-nyc-config/node_modules/p-locate": { + "version": "4.1.0", + "resolved": "https://registry.npmjs.org/p-locate/-/p-locate-4.1.0.tgz", + "integrity": "sha512-R79ZZ/0wAxKGu3oYMlz8jy/kbhsNrS7SKZ7PxEHBgJ5+F2mtFW2fK2cOtBh1cHYkQsbzFV7I+EoRKe6Yt0oK7A==", + "dev": true, + "dependencies": { + "p-limit": "^2.2.0" + }, + "engines": { + "node": ">=8" + } + }, + "node_modules/@istanbuljs/load-nyc-config/node_modules/resolve-from": { + "version": "5.0.0", + "resolved": "https://registry.npmjs.org/resolve-from/-/resolve-from-5.0.0.tgz", + "integrity": "sha512-qYg9KP24dD5qka9J47d0aVky0N+b4fTU89LN9iDnjB5waksiC49rvMB0PrUJQGoTmH50XPiqOvAjDfaijGxYZw==", + "dev": true, + "engines": { + "node": ">=8" + } + }, + "node_modules/@istanbuljs/schema": { + "version": "0.1.3", + "resolved": "https://registry.npmjs.org/@istanbuljs/schema/-/schema-0.1.3.tgz", + "integrity": "sha512-ZXRY4jNvVgSVQ8DL3LTcakaAtXwTVUxE81hslsyD2AtoXW/wVob10HkOJ1X/pAlcI7D+2YoZKg5do8G/w6RYgA==", + "dev": true, + "engines": { + "node": ">=8" + } + }, + "node_modules/@jest/console": { + "version": "29.7.0", + "resolved": "https://registry.npmjs.org/@jest/console/-/console-29.7.0.tgz", + "integrity": "sha512-5Ni4CU7XHQi32IJ398EEP4RrB8eV09sXP2ROqD4bksHrnTree52PsxvX8tpL8LvTZ3pFzXyPbNQReSN41CAhOg==", + "dev": true, + "dependencies": { + "@jest/types": "^29.6.3", + "@types/node": "*", + "chalk": "^4.0.0", + "jest-message-util": "^29.7.0", + "jest-util": "^29.7.0", + "slash": "^3.0.0" + }, + "engines": { + "node": "^14.15.0 || ^16.10.0 || >=18.0.0" + } + }, + "node_modules/@jest/core": { + "version": "29.7.0", + "resolved": "https://registry.npmjs.org/@jest/core/-/core-29.7.0.tgz", + "integrity": "sha512-n7aeXWKMnGtDA48y8TLWJPJmLmmZ642Ceo78cYWEpiD7FzDgmNDV/GCVRorPABdXLJZ/9wzzgZAlHjXjxDHGsg==", + "dev": true, + "dependencies": { + "@jest/console": "^29.7.0", + "@jest/reporters": "^29.7.0", + "@jest/test-result": "^29.7.0", + "@jest/transform": "^29.7.0", + "@jest/types": "^29.6.3", + "@types/node": "*", + "ansi-escapes": "^4.2.1", + "chalk": "^4.0.0", + "ci-info": "^3.2.0", + "exit": "^0.1.2", + "graceful-fs": "^4.2.9", + "jest-changed-files": "^29.7.0", + "jest-config": "^29.7.0", + "jest-haste-map": "^29.7.0", + "jest-message-util": "^29.7.0", + "jest-regex-util": "^29.6.3", + "jest-resolve": "^29.7.0", + "jest-resolve-dependencies": "^29.7.0", + "jest-runner": "^29.7.0", + "jest-runtime": "^29.7.0", + "jest-snapshot": "^29.7.0", + "jest-util": "^29.7.0", + "jest-validate": "^29.7.0", + "jest-watcher": "^29.7.0", + "micromatch": "^4.0.4", + "pretty-format": "^29.7.0", + "slash": "^3.0.0", + "strip-ansi": "^6.0.0" + }, + "engines": { + "node": "^14.15.0 || ^16.10.0 || >=18.0.0" + }, + "peerDependencies": { + "node-notifier": "^8.0.1 || ^9.0.0 || ^10.0.0" + }, + "peerDependenciesMeta": { + "node-notifier": { + "optional": true + } + } + }, + "node_modules/@jest/core/node_modules/ansi-styles": { + "version": "5.2.0", + "resolved": "https://registry.npmjs.org/ansi-styles/-/ansi-styles-5.2.0.tgz", + "integrity": "sha512-Cxwpt2SfTzTtXcfOlzGEee8O+c+MmUgGrNiBcXnuWxuFJHe6a5Hz7qwhwe5OgaSYI0IJvkLqWX1ASG+cJOkEiA==", + "dev": true, + "engines": { + "node": ">=10" + }, + "funding": { + "url": "https://github.com/chalk/ansi-styles?sponsor=1" + } + }, + "node_modules/@jest/core/node_modules/pretty-format": { + "version": "29.7.0", + "resolved": "https://registry.npmjs.org/pretty-format/-/pretty-format-29.7.0.tgz", + "integrity": "sha512-Pdlw/oPxN+aXdmM9R00JVC9WVFoCLTKJvDVLgmJ+qAffBMxsV85l/Lu7sNx4zSzPyoL2euImuEwHhOXdEgNFZQ==", + "dev": true, + "dependencies": { + "@jest/schemas": "^29.6.3", + "ansi-styles": "^5.0.0", + "react-is": "^18.0.0" + }, + "engines": { + "node": "^14.15.0 || ^16.10.0 || >=18.0.0" + } + }, + "node_modules/@jest/environment": { + "version": "29.7.0", + "resolved": "https://registry.npmjs.org/@jest/environment/-/environment-29.7.0.tgz", + "integrity": "sha512-aQIfHDq33ExsN4jP1NWGXhxgQ/wixs60gDiKO+XVMd8Mn0NWPWgc34ZQDTb2jKaUWQ7MuwoitXAsN2XVXNMpAw==", + "dev": true, + "dependencies": { + "@jest/fake-timers": "^29.7.0", + "@jest/types": "^29.6.3", + "@types/node": "*", + "jest-mock": "^29.7.0" + }, + "engines": { + "node": "^14.15.0 || ^16.10.0 || >=18.0.0" + } + }, + "node_modules/@jest/expect": { + "version": "29.7.0", + "resolved": "https://registry.npmjs.org/@jest/expect/-/expect-29.7.0.tgz", + "integrity": "sha512-8uMeAMycttpva3P1lBHB8VciS9V0XAr3GymPpipdyQXbBcuhkLQOSe8E/p92RyAdToS6ZD1tFkX+CkhoECE0dQ==", + "dev": true, + "dependencies": { + "expect": "^29.7.0", + "jest-snapshot": "^29.7.0" + }, + "engines": { + "node": "^14.15.0 || ^16.10.0 || >=18.0.0" + } + }, + "node_modules/@jest/expect-utils": { + "version": "29.7.0", + "resolved": "https://registry.npmjs.org/@jest/expect-utils/-/expect-utils-29.7.0.tgz", + "integrity": "sha512-GlsNBWiFQFCVi9QVSx7f5AgMeLxe9YCCs5PuP2O2LdjDAA8Jh9eX7lA1Jq/xdXw3Wb3hyvlFNfZIfcRetSzYcA==", + "dev": true, + "dependencies": { + "jest-get-type": "^29.6.3" + }, + "engines": { + "node": "^14.15.0 || ^16.10.0 || >=18.0.0" + } + }, + "node_modules/@jest/fake-timers": { + "version": "29.7.0", + "resolved": "https://registry.npmjs.org/@jest/fake-timers/-/fake-timers-29.7.0.tgz", + "integrity": "sha512-q4DH1Ha4TTFPdxLsqDXK1d3+ioSL7yL5oCMJZgDYm6i+6CygW5E5xVr/D1HdsGxjt1ZWSfUAs9OxSB/BNelWrQ==", + "dev": true, + "dependencies": { + "@jest/types": "^29.6.3", + "@sinonjs/fake-timers": "^10.0.2", + "@types/node": "*", + "jest-message-util": "^29.7.0", + "jest-mock": "^29.7.0", + "jest-util": "^29.7.0" + }, + "engines": { + "node": "^14.15.0 || ^16.10.0 || >=18.0.0" + } + }, + "node_modules/@jest/globals": { + "version": "29.7.0", + "resolved": "https://registry.npmjs.org/@jest/globals/-/globals-29.7.0.tgz", + "integrity": "sha512-mpiz3dutLbkW2MNFubUGUEVLkTGiqW6yLVTA+JbP6fI6J5iL9Y0Nlg8k95pcF8ctKwCS7WVxteBs29hhfAotzQ==", + "dev": true, + "dependencies": { + "@jest/environment": "^29.7.0", + "@jest/expect": "^29.7.0", + "@jest/types": "^29.6.3", + "jest-mock": "^29.7.0" + }, + "engines": { + "node": "^14.15.0 || ^16.10.0 || >=18.0.0" + } + }, + "node_modules/@jest/reporters": { + "version": "29.7.0", + "resolved": "https://registry.npmjs.org/@jest/reporters/-/reporters-29.7.0.tgz", + "integrity": "sha512-DApq0KJbJOEzAFYjHADNNxAE3KbhxQB1y5Kplb5Waqw6zVbuWatSnMjE5gs8FUgEPmNsnZA3NCWl9NG0ia04Pg==", + "dev": true, + "dependencies": { + "@bcoe/v8-coverage": "^0.2.3", + "@jest/console": "^29.7.0", + "@jest/test-result": "^29.7.0", + "@jest/transform": "^29.7.0", + "@jest/types": "^29.6.3", + "@jridgewell/trace-mapping": "^0.3.18", + "@types/node": "*", + "chalk": "^4.0.0", + "collect-v8-coverage": "^1.0.0", + "exit": "^0.1.2", + "glob": "^7.1.3", + "graceful-fs": "^4.2.9", + "istanbul-lib-coverage": "^3.0.0", + "istanbul-lib-instrument": "^6.0.0", + "istanbul-lib-report": "^3.0.0", + "istanbul-lib-source-maps": "^4.0.0", + "istanbul-reports": "^3.1.3", + "jest-message-util": "^29.7.0", + "jest-util": "^29.7.0", + "jest-worker": "^29.7.0", + "slash": "^3.0.0", + "string-length": "^4.0.1", + "strip-ansi": "^6.0.0", + "v8-to-istanbul": "^9.0.1" + }, + "engines": { + "node": "^14.15.0 || ^16.10.0 || >=18.0.0" + }, + "peerDependencies": { + "node-notifier": "^8.0.1 || ^9.0.0 || ^10.0.0" + }, + "peerDependenciesMeta": { + "node-notifier": { + "optional": true + } + } + }, + "node_modules/@jest/reporters/node_modules/jest-worker": { + "version": "29.7.0", + "resolved": "https://registry.npmjs.org/jest-worker/-/jest-worker-29.7.0.tgz", + "integrity": "sha512-eIz2msL/EzL9UFTFFx7jBTkeZfku0yUAyZZZmJ93H2TYEiroIx2PQjEXcwYtYl8zXCxb+PAmA2hLIt/6ZEkPHw==", + "dev": true, + "dependencies": { + "@types/node": "*", + "jest-util": "^29.7.0", + "merge-stream": "^2.0.0", + "supports-color": "^8.0.0" + }, + "engines": { + "node": "^14.15.0 || ^16.10.0 || >=18.0.0" + } + }, + "node_modules/@jest/reporters/node_modules/supports-color": { + "version": "8.1.1", + "resolved": "https://registry.npmjs.org/supports-color/-/supports-color-8.1.1.tgz", + "integrity": "sha512-MpUEN2OodtUzxvKQl72cUF7RQ5EiHsGvSsVG0ia9c5RbWGL2CI4C7EpPS8UTBIplnlzZiNuV56w+FuNxy3ty2Q==", + "dev": true, + "dependencies": { + "has-flag": "^4.0.0" + }, + "engines": { + "node": ">=10" + }, + "funding": { + "url": "https://github.com/chalk/supports-color?sponsor=1" + } + }, + "node_modules/@jest/schemas": { + "version": "29.6.3", + "resolved": "https://registry.npmjs.org/@jest/schemas/-/schemas-29.6.3.tgz", + "integrity": "sha512-mo5j5X+jIZmJQveBKeS/clAueipV7KgiX1vMgCxam1RNYiqE1w62n0/tJJnHtjW8ZHcQco5gY85jA3mi0L+nSA==", + "dev": true, + "dependencies": { + "@sinclair/typebox": "^0.27.8" + }, + "engines": { + "node": "^14.15.0 || ^16.10.0 || >=18.0.0" + } + }, + "node_modules/@jest/source-map": { + "version": "29.6.3", + "resolved": "https://registry.npmjs.org/@jest/source-map/-/source-map-29.6.3.tgz", + "integrity": "sha512-MHjT95QuipcPrpLM+8JMSzFx6eHp5Bm+4XeFDJlwsvVBjmKNiIAvasGK2fxz2WbGRlnvqehFbh07MMa7n3YJnw==", + "dev": true, + "dependencies": { + "@jridgewell/trace-mapping": "^0.3.18", + "callsites": "^3.0.0", + "graceful-fs": "^4.2.9" + }, + "engines": { + "node": "^14.15.0 || ^16.10.0 || >=18.0.0" + } + }, + "node_modules/@jest/test-result": { + "version": "29.7.0", + "resolved": "https://registry.npmjs.org/@jest/test-result/-/test-result-29.7.0.tgz", + "integrity": "sha512-Fdx+tv6x1zlkJPcWXmMDAG2HBnaR9XPSd5aDWQVsfrZmLVT3lU1cwyxLgRmXR9yrq4NBoEm9BMsfgFzTQAbJYA==", + "dev": true, + "dependencies": { + "@jest/console": "^29.7.0", + "@jest/types": "^29.6.3", + "@types/istanbul-lib-coverage": "^2.0.0", + "collect-v8-coverage": "^1.0.0" + }, + "engines": { + "node": "^14.15.0 || ^16.10.0 || >=18.0.0" + } + }, + "node_modules/@jest/test-sequencer": { + "version": "29.7.0", + "resolved": "https://registry.npmjs.org/@jest/test-sequencer/-/test-sequencer-29.7.0.tgz", + "integrity": "sha512-GQwJ5WZVrKnOJuiYiAF52UNUJXgTZx1NHjFSEB0qEMmSZKAkdMoIzw/Cj6x6NF4AvV23AUqDpFzQkN/eYCYTxw==", + "dev": true, + "dependencies": { + "@jest/test-result": "^29.7.0", + "graceful-fs": "^4.2.9", + "jest-haste-map": "^29.7.0", + "slash": "^3.0.0" + }, + "engines": { + "node": "^14.15.0 || ^16.10.0 || >=18.0.0" + } + }, + "node_modules/@jest/transform": { + "version": "29.7.0", + "resolved": "https://registry.npmjs.org/@jest/transform/-/transform-29.7.0.tgz", + "integrity": "sha512-ok/BTPFzFKVMwO5eOHRrvnBVHdRy9IrsrW1GpMaQ9MCnilNLXQKmAX8s1YXDFaai9xJpac2ySzV0YeRRECr2Vw==", + "dev": true, + "dependencies": { + "@babel/core": "^7.11.6", + "@jest/types": "^29.6.3", + "@jridgewell/trace-mapping": "^0.3.18", + "babel-plugin-istanbul": "^6.1.1", + "chalk": "^4.0.0", + "convert-source-map": "^2.0.0", + "fast-json-stable-stringify": "^2.1.0", + "graceful-fs": "^4.2.9", + "jest-haste-map": "^29.7.0", + "jest-regex-util": "^29.6.3", + "jest-util": "^29.7.0", + "micromatch": "^4.0.4", + "pirates": "^4.0.4", + "slash": "^3.0.0", + "write-file-atomic": "^4.0.2" + }, + "engines": { + "node": "^14.15.0 || ^16.10.0 || >=18.0.0" + } + }, + "node_modules/@jest/types": { + "version": "29.6.3", + "resolved": "https://registry.npmjs.org/@jest/types/-/types-29.6.3.tgz", + "integrity": "sha512-u3UPsIilWKOM3F9CXtrG8LEJmNxwoCQC/XVj4IKYXvvpx7QIi/Kg1LI5uDmDpKlac62NUtX7eLjRh+jVZcLOzw==", + "dev": true, + "dependencies": { + "@jest/schemas": "^29.6.3", + "@types/istanbul-lib-coverage": "^2.0.0", + "@types/istanbul-reports": "^3.0.0", + "@types/node": "*", + "@types/yargs": "^17.0.8", + "chalk": "^4.0.0" + }, + "engines": { + "node": "^14.15.0 || ^16.10.0 || >=18.0.0" + } + }, "node_modules/@jridgewell/gen-mapping": { "version": "0.3.3", "license": "MIT", @@ -2538,6 +3512,16 @@ "url": "https://github.com/sponsors/ljharb" } }, + "node_modules/@multiformats/murmur3": { + "version": "1.1.3", + "resolved": "https://registry.npmjs.org/@multiformats/murmur3/-/murmur3-1.1.3.tgz", + "integrity": "sha512-wAPLUErGR8g6Lt+bAZn6218k9YQPym+sjszsXL6o4zfxbA22P+gxWZuuD9wDbwL55xrKO5idpcuQUX7/E3oHcw==", + "dev": true, + "dependencies": { + "multiformats": "^9.5.4", + "murmurhash3js-revisited": "^3.0.0" + } + }, "node_modules/@netlify/functions": { "version": "2.3.0", "resolved": "https://registry.npmjs.org/@netlify/functions/-/functions-2.3.0.tgz", @@ -2782,17 +3766,6 @@ "nuxt-telemetry": "bin/nuxt-telemetry.mjs" } }, - "node_modules/@nuxt/telemetry/node_modules/dotenv": { - "version": "16.3.1", - "resolved": "https://registry.npmjs.org/dotenv/-/dotenv-16.3.1.tgz", - "integrity": "sha512-IPzF4w4/Rd94bA9imS68tZBaYyBWSCE47V1RGuMrB94iyTOIEwRmVL2x/4An+6mETpLrKJ5hQkB8W4kFAadeIQ==", - "engines": { - "node": ">=12" - }, - "funding": { - "url": "https://github.com/motdotla/dotenv?sponsor=1" - } - }, "node_modules/@nuxt/telemetry/node_modules/nanoid": { "version": "4.0.2", "resolved": "https://registry.npmjs.org/nanoid/-/nanoid-4.0.2.tgz", @@ -4103,6 +5076,15 @@ "integrity": "sha512-XuySG1E38YScSJoMlqovLru4KTUNSjgVTIjyh7qMX6aNN5HY5Ct5LhRJdxO79JtTzKfzV/bnWpz+zquYrISsvw==", "dev": true }, + "node_modules/@orbs-network/ton-access": { + "version": "2.3.3", + "resolved": "https://registry.npmjs.org/@orbs-network/ton-access/-/ton-access-2.3.3.tgz", + "integrity": "sha512-b1miCPts7wBG9JKYgzXIRZQm/LMy5Uk1mNK8NzlcXHL3HRHJkkFbuYJGuj3IkWCiIicW3Ipp4sYnn3Fwo4oB0g==", + "dev": true, + "dependencies": { + "isomorphic-fetch": "^3.0.0" + } + }, "node_modules/@parcel/watcher": { "version": "2.3.0", "resolved": "https://registry.npmjs.org/@parcel/watcher/-/watcher-2.3.0.tgz", @@ -4398,6 +5380,70 @@ "node": ">=14" } }, + "node_modules/@protobufjs/aspromise": { + "version": "1.1.2", + "resolved": "https://registry.npmjs.org/@protobufjs/aspromise/-/aspromise-1.1.2.tgz", + "integrity": "sha512-j+gKExEuLmKwvz3OgROXtrJ2UG2x8Ch2YZUxahh+s1F2HZ+wAceUNLkvy6zKCPVRkU++ZWQrdxsUeQXmcg4uoQ==", + "dev": true + }, + "node_modules/@protobufjs/base64": { + "version": "1.1.2", + "resolved": "https://registry.npmjs.org/@protobufjs/base64/-/base64-1.1.2.tgz", + "integrity": "sha512-AZkcAA5vnN/v4PDqKyMR5lx7hZttPDgClv83E//FMNhR2TMcLUhfRUBHCmSl0oi9zMgDDqRUJkSxO3wm85+XLg==", + "dev": true + }, + "node_modules/@protobufjs/codegen": { + "version": "2.0.4", + "resolved": "https://registry.npmjs.org/@protobufjs/codegen/-/codegen-2.0.4.tgz", + "integrity": "sha512-YyFaikqM5sH0ziFZCN3xDC7zeGaB/d0IUb9CATugHWbd1FRFwWwt4ld4OYMPWu5a3Xe01mGAULCdqhMlPl29Jg==", + "dev": true + }, + "node_modules/@protobufjs/eventemitter": { + "version": "1.1.0", + "resolved": "https://registry.npmjs.org/@protobufjs/eventemitter/-/eventemitter-1.1.0.tgz", + "integrity": "sha512-j9ednRT81vYJ9OfVuXG6ERSTdEL1xVsNgqpkxMsbIabzSo3goCjDIveeGv5d03om39ML71RdmrGNjG5SReBP/Q==", + "dev": true + }, + "node_modules/@protobufjs/fetch": { + "version": "1.1.0", + "resolved": "https://registry.npmjs.org/@protobufjs/fetch/-/fetch-1.1.0.tgz", + "integrity": "sha512-lljVXpqXebpsijW71PZaCYeIcE5on1w5DlQy5WH6GLbFryLUrBD4932W/E2BSpfRJWseIL4v/KPgBFxDOIdKpQ==", + "dev": true, + "dependencies": { + "@protobufjs/aspromise": "^1.1.1", + "@protobufjs/inquire": "^1.1.0" + } + }, + "node_modules/@protobufjs/float": { + "version": "1.0.2", + "resolved": "https://registry.npmjs.org/@protobufjs/float/-/float-1.0.2.tgz", + "integrity": "sha512-Ddb+kVXlXst9d+R9PfTIxh1EdNkgoRe5tOX6t01f1lYWOvJnSPDBlG241QLzcyPdoNTsblLUdujGSE4RzrTZGQ==", + "dev": true + }, + "node_modules/@protobufjs/inquire": { + "version": "1.1.0", + "resolved": "https://registry.npmjs.org/@protobufjs/inquire/-/inquire-1.1.0.tgz", + "integrity": "sha512-kdSefcPdruJiFMVSbn801t4vFK7KB/5gd2fYvrxhuJYg8ILrmn9SKSX2tZdV6V+ksulWqS7aXjBcRXl3wHoD9Q==", + "dev": true + }, + "node_modules/@protobufjs/path": { + "version": "1.1.2", + "resolved": "https://registry.npmjs.org/@protobufjs/path/-/path-1.1.2.tgz", + "integrity": "sha512-6JOcJ5Tm08dOHAbdR3GrvP+yUUfkjG5ePsHYczMFLq3ZmMkAD98cDgcT2iA1lJ9NVwFd4tH/iSSoe44YWkltEA==", + "dev": true + }, + "node_modules/@protobufjs/pool": { + "version": "1.1.0", + "resolved": "https://registry.npmjs.org/@protobufjs/pool/-/pool-1.1.0.tgz", + "integrity": "sha512-0kELaGSIDBKvcgS4zkjz1PeddatrjYcmMWOlAuAPwAeccUrPHdUqo/J6LiymHHEiJT5NrF1UVwxY14f+fy4WQw==", + "dev": true + }, + "node_modules/@protobufjs/utf8": { + "version": "1.1.0", + "resolved": "https://registry.npmjs.org/@protobufjs/utf8/-/utf8-1.1.0.tgz", + "integrity": "sha512-Vvn3zZrhQZkkBE8LSuW3em98c0FwgO4nxzv6OdSxPKJIEKY2bGbHn+mhGIPerzI4twdxaP8/0+06HBpwf345Lw==", + "dev": true + }, "node_modules/@puppeteer/browsers": { "version": "1.8.0", "resolved": "https://registry.npmjs.org/@puppeteer/browsers/-/browsers-1.8.0.tgz", @@ -4755,6 +5801,19 @@ "sprintf-js": "~1.0.2" } }, + "node_modules/@scarf/scarf": { + "version": "1.3.0", + "resolved": "https://registry.npmjs.org/@scarf/scarf/-/scarf-1.3.0.tgz", + "integrity": "sha512-lHKK8M5CTcpFj2hZDB3wIjb0KAbEOgDmiJGDv1WBRfQgRm/a8/XMEkG/N1iM01xgbUDsPQwi42D+dFo1XPAKew==", + "dev": true, + "hasInstallScript": true + }, + "node_modules/@sinclair/typebox": { + "version": "0.27.8", + "resolved": "https://registry.npmjs.org/@sinclair/typebox/-/typebox-0.27.8.tgz", + "integrity": "sha512-+Fj43pSMwJs4KRrH/938Uf+uAELIgVBmQzg/q1YG10djyfA3TnrU8N8XzqCh/okZdszqBQTZf96idMfE5lnwTA==", + "dev": true + }, "node_modules/@sindresorhus/is": { "version": "3.1.2", "resolved": "https://registry.npmjs.org/@sindresorhus/is/-/is-3.1.2.tgz", @@ -4766,11 +5825,86 @@ "url": "https://github.com/sindresorhus/is?sponsor=1" } }, + "node_modules/@sinonjs/commons": { + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/@sinonjs/commons/-/commons-3.0.0.tgz", + "integrity": "sha512-jXBtWAF4vmdNmZgD5FoKsVLv3rPgDnLgPbU84LIJ3otV44vJlDRokVng5v8NFJdCf/da9legHcKaRuZs4L7faA==", + "dev": true, + "dependencies": { + "type-detect": "4.0.8" + } + }, + "node_modules/@sinonjs/fake-timers": { + "version": "10.3.0", + "resolved": "https://registry.npmjs.org/@sinonjs/fake-timers/-/fake-timers-10.3.0.tgz", + "integrity": "sha512-V4BG07kuYSUkTCSBHG8G8TNhM+F19jXFWnQtzj+we8DrkpSBCee9Z3Ms8yiGer/dlmhe35/Xdgyo3/0rQKg7YA==", + "dev": true, + "dependencies": { + "@sinonjs/commons": "^3.0.0" + } + }, "node_modules/@socket.io/component-emitter": { "version": "3.1.0", "resolved": "https://registry.npmjs.org/@socket.io/component-emitter/-/component-emitter-3.1.0.tgz", "integrity": "sha512-+9jVqKhRSpsc591z5vX+X5Yyw+he/HCB4iQ/RYxw35CEPaY1gnsNE43nf9n9AaYjAQrTiI/mOwKUKdUs9vf7Xg==" }, + "node_modules/@tact-lang/compiler": { + "version": "1.1.4", + "resolved": "https://registry.npmjs.org/@tact-lang/compiler/-/compiler-1.1.4.tgz", + "integrity": "sha512-yrwrQBV1uDc3vl6fmKhfrGxsPkHrE7kVduennhq1cKzToftObwdyIHufKROkWtdJevBGFOqA8ZL8rkCP18zK4w==", + "dev": true, + "dependencies": { + "@ipld/dag-pb": "2.1.18", + "@tact-lang/opcode": "^0.0.13", + "arg": "^5.0.2", + "blockstore-core": "1.0.5", + "change-case": "^4.1.2", + "ipfs-unixfs-importer": "9.0.10", + "mkdirp": "^2.1.3", + "multiformats": "9.9.0", + "ohm-js": "16.5.0", + "path-normalize": "^6.0.10", + "prando": "^6.0.1", + "qs": "^6.11.0", + "ton-core": ">=0.49.0", + "ton-crypto": "^3.2.0", + "zod": "^3.20.2" + }, + "bin": { + "tact": "bin/tact" + } + }, + "node_modules/@tact-lang/compiler/node_modules/arg": { + "version": "5.0.2", + "resolved": "https://registry.npmjs.org/arg/-/arg-5.0.2.tgz", + "integrity": "sha512-PYjyFOLKQ9y57JvQ6QLo8dAgNqswh8M1RMJYdQduT6xbWSgK36P/Z/v+p888pM69jMMfS8Xd8F6I1kQ/I9HUGg==", + "dev": true + }, + "node_modules/@tact-lang/compiler/node_modules/mkdirp": { + "version": "2.1.6", + "resolved": "https://registry.npmjs.org/mkdirp/-/mkdirp-2.1.6.tgz", + "integrity": "sha512-+hEnITedc8LAtIP9u3HJDFIdcLV2vXP33sqLLIzkv1Db1zO/1OxbvYf0Y1OC/S/Qo5dxHXepofhmxL02PsKe+A==", + "dev": true, + "bin": { + "mkdirp": "dist/cjs/src/bin.js" + }, + "engines": { + "node": ">=10" + }, + "funding": { + "url": "https://github.com/sponsors/isaacs" + } + }, + "node_modules/@tact-lang/opcode": { + "version": "0.0.13", + "resolved": "https://registry.npmjs.org/@tact-lang/opcode/-/opcode-0.0.13.tgz", + "integrity": "sha512-4FGp1p3ahVrXr2QbyD2FqmnvXTMYapTlRJSPhj4O1L2yIq7dp0CkFL9EdKOCUfyirT0X5en78PHLfj0CuQGD7A==", + "dev": true, + "peerDependencies": { + "ton-core": ">=0.49.0", + "ton-crypto": "^3.2.0" + } + }, "node_modules/@tailwindcss/typography": { "version": "0.5.10", "resolved": "https://registry.npmjs.org/@tailwindcss/typography/-/typography-0.5.10.tgz", @@ -4797,6 +5931,144 @@ "node": ">=4" } }, + "node_modules/@ton-community/blueprint": { + "version": "0.12.0", + "resolved": "https://registry.npmjs.org/@ton-community/blueprint/-/blueprint-0.12.0.tgz", + "integrity": "sha512-QytcjOQCKtmaseEuEeuBGiKuQ649nwXGw4U3aGw7zz/SOd3SidMoTKAK3KE2VL84L8WRlw9HZx6wumJUkWPF7Q==", + "dev": true, + "dependencies": { + "@orbs-network/ton-access": "^2.3.3", + "@tact-lang/compiler": "^1.1.3", + "@ton-community/func-js": "^0.6.2", + "@tonconnect/sdk": "^2.1.3", + "arg": "^5.0.2", + "chalk": "^4.1.0", + "dotenv": "^16.1.4", + "inquirer": "^8.2.5", + "qrcode-terminal": "^0.12.0", + "ton-x": "^2.1.0", + "ts-node": "^10.9.1" + }, + "bin": { + "blueprint": "dist/cli/cli.js" + }, + "peerDependencies": { + "ton": ">=13.4.1", + "ton-core": ">=0.48.0", + "ton-crypto": ">=3.2.0" + } + }, + "node_modules/@ton-community/blueprint/node_modules/arg": { + "version": "5.0.2", + "resolved": "https://registry.npmjs.org/arg/-/arg-5.0.2.tgz", + "integrity": "sha512-PYjyFOLKQ9y57JvQ6QLo8dAgNqswh8M1RMJYdQduT6xbWSgK36P/Z/v+p888pM69jMMfS8Xd8F6I1kQ/I9HUGg==", + "dev": true + }, + "node_modules/@ton-community/func-js": { + "version": "0.6.2", + "resolved": "https://registry.npmjs.org/@ton-community/func-js/-/func-js-0.6.2.tgz", + "integrity": "sha512-5bewe8APG2TVgIPLUV5atQfAy+NtdjjGBfsWUeRdVUclzQ5H2wZ8aJsVNLiDBpKSNEKdOAP/1PownOFeodpQHg==", + "dev": true, + "dependencies": { + "@ton-community/func-js-bin": "0.4.4", + "arg": "^5.0.2" + }, + "bin": { + "func-js": "dist/cli.js" + } + }, + "node_modules/@ton-community/func-js-bin": { + "version": "0.4.4", + "resolved": "https://registry.npmjs.org/@ton-community/func-js-bin/-/func-js-bin-0.4.4.tgz", + "integrity": "sha512-zCSVXmh+rFMgouzTbWkSVDIt1Z5i36u9rws/Kuqn89/a0vhA1aEoJJ3oJypz0TjWKJQveU4doJsPlqu7UT2zkw==", + "dev": true + }, + "node_modules/@ton-community/func-js/node_modules/arg": { + "version": "5.0.2", + "resolved": "https://registry.npmjs.org/arg/-/arg-5.0.2.tgz", + "integrity": "sha512-PYjyFOLKQ9y57JvQ6QLo8dAgNqswh8M1RMJYdQduT6xbWSgK36P/Z/v+p888pM69jMMfS8Xd8F6I1kQ/I9HUGg==", + "dev": true + }, + "node_modules/@ton-community/sandbox": { + "version": "0.11.0", + "resolved": "https://registry.npmjs.org/@ton-community/sandbox/-/sandbox-0.11.0.tgz", + "integrity": "sha512-3tlSprRBTSu9m0tJTC3cl4MXQep1vfNMPqk9+JAXSRJu9ToEvIUVpqO6MQNkbz9LkKDuOEBs5vyqT37DlKKcWw==", + "dev": true, + "peerDependencies": { + "ton-core": ">=0.48.0", + "ton-crypto": ">=3.2.0" + } + }, + "node_modules/@ton-community/test-utils": { + "version": "0.3.0", + "resolved": "https://registry.npmjs.org/@ton-community/test-utils/-/test-utils-0.3.0.tgz", + "integrity": "sha512-eCw1c6a0TcKwiYEA4fmzPq+7dJtUx0UFYu+UEoRznIxEOcpEb8Ssjb9yMeiJEzbtUVMCkhEtpztdKt75ngDRWg==", + "dev": true, + "dependencies": { + "node-inspect-extracted": "^2.0.0" + }, + "peerDependencies": { + "@jest/globals": "*", + "chai": "*", + "ton-core": ">=0.36.1" + }, + "peerDependenciesMeta": { + "@jest/globals": { + "optional": true + }, + "chai": { + "optional": true + } + } + }, + "node_modules/@tonconnect/isomorphic-eventsource": { + "version": "0.0.1", + "resolved": "https://registry.npmjs.org/@tonconnect/isomorphic-eventsource/-/isomorphic-eventsource-0.0.1.tgz", + "integrity": "sha512-ODk48pMlqLSOvu3fM0R1sdlz/Cv2y4hSfwtXmLq9ky9+H7ZQfw/16ElpIJ69B4lUvHycxrueNgrRtF9PJHoGMw==", + "dev": true, + "dependencies": { + "eventsource": "^2.0.2" + } + }, + "node_modules/@tonconnect/isomorphic-fetch": { + "version": "0.0.2", + "resolved": "https://registry.npmjs.org/@tonconnect/isomorphic-fetch/-/isomorphic-fetch-0.0.2.tgz", + "integrity": "sha512-DAyA4oL7MqbBo9k8+8E+YiWsGCYi6UMhDTcsZjhgzhESkBNG6b+NBkpb1KH4oi0xDZQoknFtY9XogJLuQtSMQQ==", + "dev": true, + "dependencies": { + "node-fetch": "^2.6.9" + } + }, + "node_modules/@tonconnect/protocol": { + "version": "2.2.6", + "resolved": "https://registry.npmjs.org/@tonconnect/protocol/-/protocol-2.2.6.tgz", + "integrity": "sha512-kyoDz5EqgsycYP+A+JbVsAUYHNT059BCrK+m0pqxykMODwpziuSAXfwAZmHcg8v7NB9VKYbdFY55xKeXOuEd0w==", + "dev": true, + "dependencies": { + "tweetnacl": "^1.0.3", + "tweetnacl-util": "^0.15.1" + } + }, + "node_modules/@tonconnect/sdk": { + "version": "2.2.0", + "resolved": "https://registry.npmjs.org/@tonconnect/sdk/-/sdk-2.2.0.tgz", + "integrity": "sha512-8plnAXzaLhapUnt47ZqAOQSIQ8NHSvgTSR74QVJdPWqg8128smgGM4cDYewKdBfTD6Lup0odT1WMMrJu+rE4NQ==", + "dev": true, + "dependencies": { + "@tonconnect/isomorphic-eventsource": "^0.0.1", + "@tonconnect/isomorphic-fetch": "^0.0.2", + "@tonconnect/protocol": "^2.2.5" + } + }, + "node_modules/@tootallnate/once": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/@tootallnate/once/-/once-2.0.0.tgz", + "integrity": "sha512-XCuKFP5PS55gnMVu3dty8KPatLqUoy/ZYzDzAGCQ8JNFCkLXzmI7vNHCR+XpbZaMWQK/vQubr7PkYq8g470J/A==", + "dev": true, + "engines": { + "node": ">= 10" + } + }, "node_modules/@tootallnate/quickjs-emscripten": { "version": "0.23.0", "license": "MIT" @@ -4811,27 +6083,29 @@ }, "node_modules/@tsconfig/node10": { "version": "1.0.9", - "license": "MIT", - "optional": true, - "peer": true + "devOptional": true, + "license": "MIT" }, "node_modules/@tsconfig/node12": { "version": "1.0.11", - "license": "MIT", - "optional": true, - "peer": true + "devOptional": true, + "license": "MIT" }, "node_modules/@tsconfig/node14": { "version": "1.0.3", - "license": "MIT", - "optional": true, - "peer": true + "devOptional": true, + "license": "MIT" }, "node_modules/@tsconfig/node16": { "version": "1.0.4", - "license": "MIT", - "optional": true, - "peer": true + "devOptional": true, + "license": "MIT" + }, + "node_modules/@tsconfig/node18": { + "version": "18.2.2", + "resolved": "https://registry.npmjs.org/@tsconfig/node18/-/node18-18.2.2.tgz", + "integrity": "sha512-d6McJeGsuoRlwWZmVIeE8CUA27lu6jLjvv1JzqmpsytOYYbVi1tHZEnwCNVOXnj4pyLvneZlFlpXUK+X9wBWyw==", + "dev": true }, "node_modules/@types/argparse": { "version": "1.0.38", @@ -4844,6 +6118,56 @@ "resolved": "https://registry.npmjs.org/@types/aws-lambda/-/aws-lambda-8.10.125.tgz", "integrity": "sha512-Vqw/WMlV4O1fJT6capim01v7VLDZkcX1n6Yhb52E7IfnMqYbNfwHfyDV8rRN42NLBtdDvfaqcCqs2K0fr5ljZw==" }, + "node_modules/@types/babel__core": { + "version": "7.20.4", + "resolved": "https://registry.npmjs.org/@types/babel__core/-/babel__core-7.20.4.tgz", + "integrity": "sha512-mLnSC22IC4vcWiuObSRjrLd9XcBTGf59vUSoq2jkQDJ/QQ8PMI9rSuzE+aEV8karUMbskw07bKYoUJCKTUaygg==", + "dev": true, + "dependencies": { + "@babel/parser": "^7.20.7", + "@babel/types": "^7.20.7", + "@types/babel__generator": "*", + "@types/babel__template": "*", + "@types/babel__traverse": "*" + } + }, + "node_modules/@types/babel__generator": { + "version": "7.6.7", + "resolved": "https://registry.npmjs.org/@types/babel__generator/-/babel__generator-7.6.7.tgz", + "integrity": "sha512-6Sfsq+EaaLrw4RmdFWE9Onp63TOUue71AWb4Gpa6JxzgTYtimbM086WnYTy2U67AofR++QKCo08ZP6pwx8YFHQ==", + "dev": true, + "dependencies": { + "@babel/types": "^7.0.0" + } + }, + "node_modules/@types/babel__template": { + "version": "7.4.4", + "resolved": "https://registry.npmjs.org/@types/babel__template/-/babel__template-7.4.4.tgz", + "integrity": "sha512-h/NUaSyG5EyxBIp8YRxo4RMe2/qQgvyowRwVMzhYhBCONbW8PUsg4lkFMrhgZhUe5z3L3MiLDuvyJ/CaPa2A8A==", + "dev": true, + "dependencies": { + "@babel/parser": "^7.1.0", + "@babel/types": "^7.0.0" + } + }, + "node_modules/@types/babel__traverse": { + "version": "7.20.4", + "resolved": "https://registry.npmjs.org/@types/babel__traverse/-/babel__traverse-7.20.4.tgz", + "integrity": "sha512-mSM/iKUk5fDDrEV/e83qY+Cr3I1+Q3qqTuEn++HAWYjEa1+NxZr6CNrcJGf2ZTnq4HoFGC3zaTPZTobCzCFukA==", + "dev": true, + "dependencies": { + "@babel/types": "^7.20.7" + } + }, + "node_modules/@types/bn.js": { + "version": "5.1.5", + "resolved": "https://registry.npmjs.org/@types/bn.js/-/bn.js-5.1.5.tgz", + "integrity": "sha512-V46N0zwKRF5Q00AZ6hWtN0T8gGmDUaUzLWQvHFo5yThtVwK/VCenFY3wXVbOvNfajEpsTfQM4IN9k/d6gUVX3A==", + "dev": true, + "dependencies": { + "@types/node": "*" + } + }, "node_modules/@types/btoa-lite": { "version": "1.0.1", "resolved": "https://registry.npmjs.org/@types/btoa-lite/-/btoa-lite-1.0.1.tgz", @@ -4924,6 +6248,15 @@ "resolved": "https://registry.npmjs.org/@types/estree/-/estree-1.0.4.tgz", "integrity": "sha512-2JwWnHK9H+wUZNorf2Zr6ves96WHoWDJIftkcxPKsS7Djta6Zu519LarhRNljPXkpsZR2ZMwNCPeW7omW07BJw==" }, + "node_modules/@types/graceful-fs": { + "version": "4.1.9", + "resolved": "https://registry.npmjs.org/@types/graceful-fs/-/graceful-fs-4.1.9.tgz", + "integrity": "sha512-olP3sd1qOEe5dXTSaFvQG+02VdRXcdytWLAZsAq1PecU8uqQAhkrnbli7DagjtXKW/Bl7YJbUsa8MPcuc8LHEQ==", + "dev": true, + "dependencies": { + "@types/node": "*" + } + }, "node_modules/@types/hast": { "version": "3.0.2", "resolved": "https://registry.npmjs.org/@types/hast/-/hast-3.0.2.tgz", @@ -4949,6 +6282,89 @@ "ci-info": "^3.1.0" } }, + "node_modules/@types/istanbul-lib-coverage": { + "version": "2.0.6", + "resolved": "https://registry.npmjs.org/@types/istanbul-lib-coverage/-/istanbul-lib-coverage-2.0.6.tgz", + "integrity": "sha512-2QF/t/auWm0lsy8XtKVPG19v3sSOQlJe/YHZgfjb/KBBHOGSV+J2q/S671rcq9uTBrLAXmZpqJiaQbMT+zNU1w==", + "dev": true + }, + "node_modules/@types/istanbul-lib-report": { + "version": "3.0.3", + "resolved": "https://registry.npmjs.org/@types/istanbul-lib-report/-/istanbul-lib-report-3.0.3.tgz", + "integrity": "sha512-NQn7AHQnk/RSLOxrBbGyJM/aVQ+pjj5HCgasFxc0K/KhoATfQ/47AyUl15I2yBUpihjmas+a+VJBOqecrFH+uA==", + "dev": true, + "dependencies": { + "@types/istanbul-lib-coverage": "*" + } + }, + "node_modules/@types/istanbul-reports": { + "version": "3.0.4", + "resolved": "https://registry.npmjs.org/@types/istanbul-reports/-/istanbul-reports-3.0.4.tgz", + "integrity": "sha512-pk2B1NWalF9toCRu6gjBzR69syFjP4Od8WRAX+0mmf9lAjCRicLOWc+ZrxZHx/0XRjotgkF9t6iaMJ+aXcOdZQ==", + "dev": true, + "dependencies": { + "@types/istanbul-lib-report": "*" + } + }, + "node_modules/@types/jest": { + "version": "29.5.8", + "resolved": "https://registry.npmjs.org/@types/jest/-/jest-29.5.8.tgz", + "integrity": "sha512-fXEFTxMV2Co8ZF5aYFJv+YeA08RTYJfhtN5c9JSv/mFEMe+xxjufCb+PHL+bJcMs/ebPUsBu+UNTEz+ydXrR6g==", + "dev": true, + "dependencies": { + "expect": "^29.0.0", + "pretty-format": "^29.0.0" + } + }, + "node_modules/@types/jest/node_modules/ansi-styles": { + "version": "5.2.0", + "resolved": "https://registry.npmjs.org/ansi-styles/-/ansi-styles-5.2.0.tgz", + "integrity": "sha512-Cxwpt2SfTzTtXcfOlzGEee8O+c+MmUgGrNiBcXnuWxuFJHe6a5Hz7qwhwe5OgaSYI0IJvkLqWX1ASG+cJOkEiA==", + "dev": true, + "engines": { + "node": ">=10" + }, + "funding": { + "url": "https://github.com/chalk/ansi-styles?sponsor=1" + } + }, + "node_modules/@types/jest/node_modules/pretty-format": { + "version": "29.7.0", + "resolved": "https://registry.npmjs.org/pretty-format/-/pretty-format-29.7.0.tgz", + "integrity": "sha512-Pdlw/oPxN+aXdmM9R00JVC9WVFoCLTKJvDVLgmJ+qAffBMxsV85l/Lu7sNx4zSzPyoL2euImuEwHhOXdEgNFZQ==", + "dev": true, + "dependencies": { + "@jest/schemas": "^29.6.3", + "ansi-styles": "^5.0.0", + "react-is": "^18.0.0" + }, + "engines": { + "node": "^14.15.0 || ^16.10.0 || >=18.0.0" + } + }, + "node_modules/@types/jsdom": { + "version": "21.1.6", + "resolved": "https://registry.npmjs.org/@types/jsdom/-/jsdom-21.1.6.tgz", + "integrity": "sha512-/7kkMsC+/kMs7gAYmmBR9P0vGTnOoLhQhyhQJSlXGI5bzTHp6xdo0TtKWQAsz6pmSAeVqKSbqeyP6hytqr9FDw==", + "dev": true, + "dependencies": { + "@types/node": "*", + "@types/tough-cookie": "*", + "parse5": "^7.0.0" + } + }, + "node_modules/@types/jsdom/node_modules/parse5": { + "version": "7.1.2", + "resolved": "https://registry.npmjs.org/parse5/-/parse5-7.1.2.tgz", + "integrity": "sha512-Czj1WaSVpaoj0wbhMzLmWD69anp2WH7FXMB9n1Sy8/ZFF9jolSQVMu1Ij5WIyGmcBmhk7EOndpO4mIpihVqAXw==", + "dev": true, + "dependencies": { + "entities": "^4.4.0" + }, + "funding": { + "url": "https://github.com/inikulin/parse5?sponsor=1" + } + }, "node_modules/@types/json-schema": { "version": "7.0.14", "license": "MIT" @@ -4966,6 +6382,12 @@ "@types/node": "*" } }, + "node_modules/@types/long": { + "version": "4.0.2", + "resolved": "https://registry.npmjs.org/@types/long/-/long-4.0.2.tgz", + "integrity": "sha512-MqTGEo5bj5t157U6fA/BiDynNkn0YknVdh48CMPkTSpFTVmvao5UQmm7uEF6xBEo7qIMAlY/JSleYaE6VOdpaA==", + "dev": true + }, "node_modules/@types/mdast": { "version": "4.0.2", "resolved": "https://registry.npmjs.org/@types/mdast/-/mdast-4.0.2.tgz", @@ -5032,6 +6454,18 @@ "dev": true, "license": "MIT" }, + "node_modules/@types/stack-utils": { + "version": "2.0.3", + "resolved": "https://registry.npmjs.org/@types/stack-utils/-/stack-utils-2.0.3.tgz", + "integrity": "sha512-9aEbYZ3TbYMznPdcdr3SmIrLXwC/AKZXQeCf9Pgao5CKb8CyHuEX5jzWPTkvregvhRJHcpRO6BFoGW9ycaOkYw==", + "dev": true + }, + "node_modules/@types/tough-cookie": { + "version": "4.0.5", + "resolved": "https://registry.npmjs.org/@types/tough-cookie/-/tough-cookie-4.0.5.tgz", + "integrity": "sha512-/Ad8+nIOV7Rl++6f1BdKxFSMgmoqEoYbHRpPcx3JEfv8VRsQe9Z4mCXeJBzxs7mbHY/XOZZuXlRNfhpVPbs6ZA==", + "dev": true + }, "node_modules/@types/unist": { "version": "3.0.1", "resolved": "https://registry.npmjs.org/@types/unist/-/unist-3.0.1.tgz", @@ -5042,6 +6476,21 @@ "resolved": "https://registry.npmjs.org/@types/web-bluetooth/-/web-bluetooth-0.0.18.tgz", "integrity": "sha512-v/ZHEj9xh82usl8LMR3GarzFY1IrbXJw5L4QfQhokjRV91q+SelFqxQWSep1ucXEZ22+dSTwLFkXeur25sPIbw==" }, + "node_modules/@types/yargs": { + "version": "17.0.31", + "resolved": "https://registry.npmjs.org/@types/yargs/-/yargs-17.0.31.tgz", + "integrity": "sha512-bocYSx4DI8TmdlvxqGpVNXOgCNR1Jj0gNPhhAY+iz1rgKDAaYrAYdFYnhDV1IFuiuVc9HkOwyDcFxaTElF3/wg==", + "dev": true, + "dependencies": { + "@types/yargs-parser": "*" + } + }, + "node_modules/@types/yargs-parser": { + "version": "21.0.3", + "resolved": "https://registry.npmjs.org/@types/yargs-parser/-/yargs-parser-21.0.3.tgz", + "integrity": "sha512-I4q9QU9MQv4oEOz4tAHJtNz1cwuLxn2F3xcc2iV5WdqLPpUnj30aUuxt1mAxYTG+oe8CZMV/+6rU4S4gRDzqtQ==", + "dev": true + }, "node_modules/@types/yauzl": { "version": "2.10.2", "resolved": "https://registry.npmjs.org/@types/yauzl/-/yauzl-2.10.2.tgz", @@ -5791,6 +7240,12 @@ } } }, + "node_modules/@vue/tsconfig": { + "version": "0.4.0", + "resolved": "https://registry.npmjs.org/@vue/tsconfig/-/tsconfig-0.4.0.tgz", + "integrity": "sha512-CPuIReonid9+zOG/CGTT05FXrPYATEqoDGNrEaqS4hwcw5BUNM2FguC0mOwJD4Jr16UpRVl9N0pY3P+srIbqmg==", + "dev": true + }, "node_modules/@vueuse/core": { "version": "10.5.0", "resolved": "https://registry.npmjs.org/@vueuse/core/-/core-10.5.0.tgz", @@ -6046,6 +7501,12 @@ "integrity": "sha512-NuHqBY1PB/D8xU6s/thBgOAiAP7HOYDQ32+BFZILJ8ivkUkAHQnWfn6WhL79Owj1qmUnoN/YPhktdIoucipkAQ==", "peer": true }, + "node_modules/abab": { + "version": "2.0.6", + "resolved": "https://registry.npmjs.org/abab/-/abab-2.0.6.tgz", + "integrity": "sha512-j2afSsaIENvHZN2B8GOpF566vZ5WVk5opAiMTvWgaQT8DkbOqsTfvNAvHoRGU2zzP8cPoqys+xHTRDWW8L+/BA==", + "dev": true + }, "node_modules/abbrev": { "version": "1.1.1", "resolved": "https://registry.npmjs.org/abbrev/-/abbrev-1.1.1.tgz", @@ -6319,9 +7780,8 @@ }, "node_modules/arg": { "version": "4.1.3", - "license": "MIT", - "optional": true, - "peer": true + "devOptional": true, + "license": "MIT" }, "node_modules/argparse": { "version": "2.0.1", @@ -6512,6 +7972,12 @@ "resolved": "https://registry.npmjs.org/async-sema/-/async-sema-3.1.1.tgz", "integrity": "sha512-tLRNUXati5MFePdAk8dw7Qt7DpxPB60ofAgn8WRhW6a2rcimZnYBP9oxHiv0OHy+Wz7kPMG+t4LGdt31+4EmGg==" }, + "node_modules/asynckit": { + "version": "0.4.0", + "resolved": "https://registry.npmjs.org/asynckit/-/asynckit-0.4.0.tgz", + "integrity": "sha512-Oei9OH4tRh0YqU3GxhX79dM/mwVgvbZJaSNaRk+bshkj0S5cfHcgYakreBjrHwatXKbz+IoIdYLxrKim2MjW0Q==", + "dev": true + }, "node_modules/at-least-node": { "version": "1.0.0", "resolved": "https://registry.npmjs.org/at-least-node/-/at-least-node-1.0.0.tgz", @@ -6566,11 +8032,136 @@ "url": "https://github.com/sponsors/ljharb" } }, + "node_modules/axios": { + "version": "0.25.0", + "resolved": "https://registry.npmjs.org/axios/-/axios-0.25.0.tgz", + "integrity": "sha512-cD8FOb0tRH3uuEe6+evtAbgJtfxr7ly3fQjYcMcuPlgkwVS9xboaVIpcDV+cYQe+yGykgwZCs1pzjntcGa6l5g==", + "dev": true, + "dependencies": { + "follow-redirects": "^1.14.7" + } + }, "node_modules/b4a": { "version": "1.6.4", "resolved": "https://registry.npmjs.org/b4a/-/b4a-1.6.4.tgz", "integrity": "sha512-fpWrvyVHEKyeEvbKZTVOeZF3VSKKWtJxFIxX/jaVPf+cLbGUSitjb49pHLqPV2BUNNZ0LcoeEGfE/YCpyDYHIw==" }, + "node_modules/babel-jest": { + "version": "29.7.0", + "resolved": "https://registry.npmjs.org/babel-jest/-/babel-jest-29.7.0.tgz", + "integrity": "sha512-BrvGY3xZSwEcCzKvKsCi2GgHqDqsYkOP4/by5xCgIwGXQxIEh+8ew3gmrE1y7XRR6LHZIj6yLYnUi/mm2KXKBg==", + "dev": true, + "dependencies": { + "@jest/transform": "^29.7.0", + "@types/babel__core": "^7.1.14", + "babel-plugin-istanbul": "^6.1.1", + "babel-preset-jest": "^29.6.3", + "chalk": "^4.0.0", + "graceful-fs": "^4.2.9", + "slash": "^3.0.0" + }, + "engines": { + "node": "^14.15.0 || ^16.10.0 || >=18.0.0" + }, + "peerDependencies": { + "@babel/core": "^7.8.0" + } + }, + "node_modules/babel-plugin-istanbul": { + "version": "6.1.1", + "resolved": "https://registry.npmjs.org/babel-plugin-istanbul/-/babel-plugin-istanbul-6.1.1.tgz", + "integrity": "sha512-Y1IQok9821cC9onCx5otgFfRm7Lm+I+wwxOx738M/WLPZ9Q42m4IG5W0FNX8WLL2gYMZo3JkuXIH2DOpWM+qwA==", + "dev": true, + "dependencies": { + "@babel/helper-plugin-utils": "^7.0.0", + "@istanbuljs/load-nyc-config": "^1.0.0", + "@istanbuljs/schema": "^0.1.2", + "istanbul-lib-instrument": "^5.0.4", + "test-exclude": "^6.0.0" + }, + "engines": { + "node": ">=8" + } + }, + "node_modules/babel-plugin-istanbul/node_modules/istanbul-lib-instrument": { + "version": "5.2.1", + "resolved": "https://registry.npmjs.org/istanbul-lib-instrument/-/istanbul-lib-instrument-5.2.1.tgz", + "integrity": "sha512-pzqtp31nLv/XFOzXGuvhCb8qhjmTVo5vjVk19XE4CRlSWz0KoeJ3bw9XsA7nOp9YBf4qHjwBxkDzKcME/J29Yg==", + "dev": true, + "dependencies": { + "@babel/core": "^7.12.3", + "@babel/parser": "^7.14.7", + "@istanbuljs/schema": "^0.1.2", + "istanbul-lib-coverage": "^3.2.0", + "semver": "^6.3.0" + }, + "engines": { + "node": ">=8" + } + }, + "node_modules/babel-plugin-istanbul/node_modules/semver": { + "version": "6.3.1", + "resolved": "https://registry.npmjs.org/semver/-/semver-6.3.1.tgz", + "integrity": "sha512-BR7VvDCVHO+q2xBEWskxS6DJE1qRnb7DxzUrogb71CWoSficBxYsiAGd+Kl0mmq/MprG9yArRkyrQxTO6XjMzA==", + "dev": true, + "bin": { + "semver": "bin/semver.js" + } + }, + "node_modules/babel-plugin-jest-hoist": { + "version": "29.6.3", + "resolved": "https://registry.npmjs.org/babel-plugin-jest-hoist/-/babel-plugin-jest-hoist-29.6.3.tgz", + "integrity": "sha512-ESAc/RJvGTFEzRwOTT4+lNDk/GNHMkKbNzsvT0qKRfDyyYTskxB5rnU2njIDYVxXCBHHEI1c0YwHob3WaYujOg==", + "dev": true, + "dependencies": { + "@babel/template": "^7.3.3", + "@babel/types": "^7.3.3", + "@types/babel__core": "^7.1.14", + "@types/babel__traverse": "^7.0.6" + }, + "engines": { + "node": "^14.15.0 || ^16.10.0 || >=18.0.0" + } + }, + "node_modules/babel-preset-current-node-syntax": { + "version": "1.0.1", + "resolved": "https://registry.npmjs.org/babel-preset-current-node-syntax/-/babel-preset-current-node-syntax-1.0.1.tgz", + "integrity": "sha512-M7LQ0bxarkxQoN+vz5aJPsLBn77n8QgTFmo8WK0/44auK2xlCXrYcUxHFxgU7qW5Yzw/CjmLRK2uJzaCd7LvqQ==", + "dev": true, + "dependencies": { + "@babel/plugin-syntax-async-generators": "^7.8.4", + "@babel/plugin-syntax-bigint": "^7.8.3", + "@babel/plugin-syntax-class-properties": "^7.8.3", + "@babel/plugin-syntax-import-meta": "^7.8.3", + "@babel/plugin-syntax-json-strings": "^7.8.3", + "@babel/plugin-syntax-logical-assignment-operators": "^7.8.3", + "@babel/plugin-syntax-nullish-coalescing-operator": "^7.8.3", + "@babel/plugin-syntax-numeric-separator": "^7.8.3", + "@babel/plugin-syntax-object-rest-spread": "^7.8.3", + "@babel/plugin-syntax-optional-catch-binding": "^7.8.3", + "@babel/plugin-syntax-optional-chaining": "^7.8.3", + "@babel/plugin-syntax-top-level-await": "^7.8.3" + }, + "peerDependencies": { + "@babel/core": "^7.0.0" + } + }, + "node_modules/babel-preset-jest": { + "version": "29.6.3", + "resolved": "https://registry.npmjs.org/babel-preset-jest/-/babel-preset-jest-29.6.3.tgz", + "integrity": "sha512-0B3bhxR6snWXJZtR/RliHTDPRgn1sNHOR0yVtq/IiQFyuOVjFS+wuio/R4gSNkyYmKmJB4wGZv2NZanmKmTnNA==", + "dev": true, + "dependencies": { + "babel-plugin-jest-hoist": "^29.6.3", + "babel-preset-current-node-syntax": "^1.0.0" + }, + "engines": { + "node": "^14.15.0 || ^16.10.0 || >=18.0.0" + }, + "peerDependencies": { + "@babel/core": "^7.0.0" + } + }, "node_modules/bail": { "version": "2.0.2", "resolved": "https://registry.npmjs.org/bail/-/bail-2.0.2.tgz", @@ -6659,6 +8250,22 @@ "readable-stream": "^3.4.0" } }, + "node_modules/blockstore-core": { + "version": "1.0.5", + "resolved": "https://registry.npmjs.org/blockstore-core/-/blockstore-core-1.0.5.tgz", + "integrity": "sha512-i/9CUMMvBALVbtSqUIuiWB3tk//a4Q2I2CEWiBuYNnhJvk/DWplXjLt8Sqc5VGkRVXVPSsEuH8fUtqJt5UFYcA==", + "dev": true, + "dependencies": { + "err-code": "^3.0.1", + "interface-blockstore": "^2.0.2", + "interface-store": "^2.0.1", + "it-all": "^1.0.4", + "it-drain": "^1.0.4", + "it-filter": "^1.0.2", + "it-take": "^1.0.1", + "multiformats": "^9.4.7" + } + }, "node_modules/blueimp-md5": { "version": "2.19.0", "resolved": "https://registry.npmjs.org/blueimp-md5/-/blueimp-md5-2.19.0.tgz", @@ -6732,6 +8339,27 @@ "node": "^6 || ^7 || ^8 || ^9 || ^10 || ^11 || ^12 || >=13.7" } }, + "node_modules/bs-logger": { + "version": "0.2.6", + "resolved": "https://registry.npmjs.org/bs-logger/-/bs-logger-0.2.6.tgz", + "integrity": "sha512-pd8DCoxmbgc7hyPKOvxtqNcjYoOsABPQdcCUjGp3d42VR2CX1ORhk2A87oqqu5R1kk+76nsxZupkmyd+MVtCog==", + "dev": true, + "dependencies": { + "fast-json-stable-stringify": "2.x" + }, + "engines": { + "node": ">= 6" + } + }, + "node_modules/bser": { + "version": "2.1.1", + "resolved": "https://registry.npmjs.org/bser/-/bser-2.1.1.tgz", + "integrity": "sha512-gQxTNE/GAfIIrmHLUE3oJyp5FO6HRBfhjnw4/wMmA63ZGDJnWBmgY/lyQBpnDUkGmAhbSe39tx2d/iTOAfglwQ==", + "dev": true, + "dependencies": { + "node-int64": "^0.4.0" + } + }, "node_modules/btoa-lite": { "version": "1.0.0", "resolved": "https://registry.npmjs.org/btoa-lite/-/btoa-lite-1.0.0.tgz", @@ -6813,17 +8441,6 @@ "rc9": "^2.1.1" } }, - "node_modules/c12/node_modules/dotenv": { - "version": "16.3.1", - "resolved": "https://registry.npmjs.org/dotenv/-/dotenv-16.3.1.tgz", - "integrity": "sha512-IPzF4w4/Rd94bA9imS68tZBaYyBWSCE47V1RGuMrB94iyTOIEwRmVL2x/4An+6mETpLrKJ5hQkB8W4kFAadeIQ==", - "engines": { - "node": ">=12" - }, - "funding": { - "url": "https://github.com/motdotla/dotenv?sponsor=1" - } - }, "node_modules/cac": { "version": "6.7.14", "resolved": "https://registry.npmjs.org/cac/-/cac-6.7.14.tgz", @@ -6863,6 +8480,15 @@ "node": ">=6" } }, + "node_modules/camel-case": { + "version": "4.1.2", + "resolved": "https://registry.npmjs.org/camel-case/-/camel-case-4.1.2.tgz", + "integrity": "sha512-gxGWBrTT1JuMx6R+o5PTXMmUnhnVzLQ9SNutD4YqKtI6ap897t3tKECYla6gCWEkplXnlNybEkZg9GEGxKFCgw==", + "dependencies": { + "pascal-case": "^3.1.2", + "tslib": "^2.0.3" + } + }, "node_modules/camelcase": { "version": "6.3.0", "resolved": "https://registry.npmjs.org/camelcase/-/camelcase-6.3.0.tgz", @@ -6947,31 +8573,6 @@ "upper-case-first": "^2.0.2" } }, - "node_modules/capital-case/node_modules/lower-case": { - "version": "2.0.2", - "resolved": "https://registry.npmjs.org/lower-case/-/lower-case-2.0.2.tgz", - "integrity": "sha512-7fm3l3NAF9WfN6W3JOmf5drwpVqX78JtoGJ3A6W0a6ZnldM41w2fV5D490psKFTpMds8TJse/eHLFFsNHHjHgg==", - "dependencies": { - "tslib": "^2.0.3" - } - }, - "node_modules/capital-case/node_modules/no-case": { - "version": "3.0.4", - "resolved": "https://registry.npmjs.org/no-case/-/no-case-3.0.4.tgz", - "integrity": "sha512-fgAN3jGAh+RoxUGZHTSOLJIqUc2wmoBwGR4tbpNAKmmovFoWq0OdRkb0VkldReO2a2iBT/OEulG9XSUc10r3zg==", - "dependencies": { - "lower-case": "^2.0.2", - "tslib": "^2.0.3" - } - }, - "node_modules/capital-case/node_modules/upper-case-first": { - "version": "2.0.2", - "resolved": "https://registry.npmjs.org/upper-case-first/-/upper-case-first-2.0.2.tgz", - "integrity": "sha512-514ppYHBaKwfJRK/pNC6c/OxfGa0obSnAl106u97Ed0I625Nin96KAjttZF6ZL3e1XLtphxnqrOi9iWgm+u+bg==", - "dependencies": { - "tslib": "^2.0.3" - } - }, "node_modules/ccount": { "version": "2.0.1", "resolved": "https://registry.npmjs.org/ccount/-/ccount-2.0.1.tgz", @@ -7013,6 +8614,25 @@ "url": "https://github.com/chalk/chalk?sponsor=1" } }, + "node_modules/change-case": { + "version": "4.1.2", + "resolved": "https://registry.npmjs.org/change-case/-/change-case-4.1.2.tgz", + "integrity": "sha512-bSxY2ws9OtviILG1EiY5K7NNxkqg/JnRnFxLtKQ96JaviiIxi7djMrSd0ECT9AC+lttClmYwKw53BWpOMblo7A==", + "dependencies": { + "camel-case": "^4.1.2", + "capital-case": "^1.0.4", + "constant-case": "^3.0.4", + "dot-case": "^3.0.4", + "header-case": "^2.0.4", + "no-case": "^3.0.4", + "param-case": "^3.0.4", + "pascal-case": "^3.1.2", + "path-case": "^3.0.4", + "sentence-case": "^3.0.4", + "snake-case": "^3.0.4", + "tslib": "^2.0.3" + } + }, "node_modules/char-regex": { "version": "1.0.2", "resolved": "https://registry.npmjs.org/char-regex/-/char-regex-1.0.2.tgz", @@ -7172,6 +8792,12 @@ "consola": "^3.2.3" } }, + "node_modules/cjs-module-lexer": { + "version": "1.2.3", + "resolved": "https://registry.npmjs.org/cjs-module-lexer/-/cjs-module-lexer-1.2.3.tgz", + "integrity": "sha512-0TNiGstbQmCFwt4akjjBg5pLRTSyj/PkWQ1ZoO2zntmg9yLqSRxwEa4iCfQLGjqhiqBfOJa7W/E8wfGrTDmlZQ==", + "dev": true + }, "node_modules/clean-regexp": { "version": "1.0.0", "dev": true, @@ -7240,6 +8866,39 @@ "node": ">=8" } }, + "node_modules/cli-cursor": { + "version": "3.1.0", + "resolved": "https://registry.npmjs.org/cli-cursor/-/cli-cursor-3.1.0.tgz", + "integrity": "sha512-I/zHAwsKf9FqGoXM4WWRACob9+SNukZTd94DWF57E4toouRulbCxcUh6RKUEOQlYTHJnzkPMySvPNaaSLNfLZw==", + "dev": true, + "dependencies": { + "restore-cursor": "^3.1.0" + }, + "engines": { + "node": ">=8" + } + }, + "node_modules/cli-spinners": { + "version": "2.9.1", + "resolved": "https://registry.npmjs.org/cli-spinners/-/cli-spinners-2.9.1.tgz", + "integrity": "sha512-jHgecW0pxkonBJdrKsqxgRX9AcG+u/5k0Q7WPDfi8AogLAdwxEkyYYNWwZ5GvVFoFx2uiY1eNcSK00fh+1+FyQ==", + "dev": true, + "engines": { + "node": ">=6" + }, + "funding": { + "url": "https://github.com/sponsors/sindresorhus" + } + }, + "node_modules/cli-width": { + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/cli-width/-/cli-width-3.0.0.tgz", + "integrity": "sha512-FxqpkPPwu1HjuN93Omfm4h8uIanXofW0RxVEW3k5RKx+mJJYSthzNhp32Kzxxy3YAEZ/Dc/EWN1vZRY0+kOhbw==", + "dev": true, + "engines": { + "node": ">= 10" + } + }, "node_modules/clipboardy": { "version": "3.0.0", "resolved": "https://registry.npmjs.org/clipboardy/-/clipboardy-3.0.0.tgz", @@ -7311,6 +8970,12 @@ "node": ">= 0.12.0" } }, + "node_modules/collect-v8-coverage": { + "version": "1.0.2", + "resolved": "https://registry.npmjs.org/collect-v8-coverage/-/collect-v8-coverage-1.0.2.tgz", + "integrity": "sha512-lHl4d5/ONEbLlJvaJNtsF/Lz+WvB07u2ycqTYbdrq7UypDXailES4valYb2eWiJFxZlVmpGekfqoxQhzyFdT4Q==", + "dev": true + }, "node_modules/color-convert": { "version": "2.0.1", "license": "MIT", @@ -7352,6 +9017,18 @@ "node": ">=0.1.90" } }, + "node_modules/combined-stream": { + "version": "1.0.8", + "resolved": "https://registry.npmjs.org/combined-stream/-/combined-stream-1.0.8.tgz", + "integrity": "sha512-FQN4MRfuJeHf7cBbBMJFXhKSDq+2kAArBlmRBvcvFE5BB1HZKXtSFASDhdlz9zOYwxh8lDdnvmMOe/+5cdoEdg==", + "dev": true, + "dependencies": { + "delayed-stream": "~1.0.0" + }, + "engines": { + "node": ">= 0.8" + } + }, "node_modules/comma-separated-tokens": { "version": "2.0.3", "resolved": "https://registry.npmjs.org/comma-separated-tokens/-/comma-separated-tokens-2.0.3.tgz", @@ -7440,6 +9117,16 @@ "resolved": "https://registry.npmjs.org/console-control-strings/-/console-control-strings-1.1.0.tgz", "integrity": "sha512-ty/fTekppD2fIwRvnZAVdeOiGd1c7YXEixbgJTNzqcxJWKQnjJ/V1bNEEE6hygpM3WjwHFUVK6HTjWSzV4a8sQ==" }, + "node_modules/constant-case": { + "version": "3.0.4", + "resolved": "https://registry.npmjs.org/constant-case/-/constant-case-3.0.4.tgz", + "integrity": "sha512-I2hSBi7Vvs7BEuJDr5dDHfzb/Ruj3FyvFyh7KLilAjNQw3Be+xgqUBA2W6scVEcL0hL1dwPRtIqEPVUCKkSsyQ==", + "dependencies": { + "no-case": "^3.0.4", + "tslib": "^2.0.3", + "upper-case": "^2.0.2" + } + }, "node_modules/content-disposition": { "version": "0.5.4", "resolved": "https://registry.npmjs.org/content-disposition/-/content-disposition-0.5.4.tgz", @@ -7532,6 +9219,27 @@ "node": ">= 12.0.0" } }, + "node_modules/create-jest": { + "version": "29.7.0", + "resolved": "https://registry.npmjs.org/create-jest/-/create-jest-29.7.0.tgz", + "integrity": "sha512-Adz2bdH0Vq3F53KEMJOoftQFutWCukm6J24wbPWRO4k1kMY7gS7ds/uoJkNuV8wDCtWWnuwGcJwpWcih+zEW1Q==", + "dev": true, + "dependencies": { + "@jest/types": "^29.6.3", + "chalk": "^4.0.0", + "exit": "^0.1.2", + "graceful-fs": "^4.2.9", + "jest-config": "^29.7.0", + "jest-util": "^29.7.0", + "prompts": "^2.0.1" + }, + "bin": { + "create-jest": "bin/create-jest.js" + }, + "engines": { + "node": "^14.15.0 || ^16.10.0 || >=18.0.0" + } + }, "node_modules/create-require": { "version": "1.1.1", "license": "MIT" @@ -7745,6 +9453,18 @@ "resolved": "https://registry.npmjs.org/mdn-data/-/mdn-data-2.0.28.tgz", "integrity": "sha512-aylIc7Z9y4yzHYAJNuESG3hfhC+0Ibp/MAMiaOZgNv4pmEdFyfZhhhny4MNiAfWdBQ1RQ2mfDWmM1x8SvGyp8g==" }, + "node_modules/cssstyle": { + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/cssstyle/-/cssstyle-3.0.0.tgz", + "integrity": "sha512-N4u2ABATi3Qplzf0hWbVCdjenim8F3ojEXpBDF5hBpjzW182MjNGLqfmQ0SkSPeQ+V86ZXgeH8aXj6kayd4jgg==", + "dev": true, + "dependencies": { + "rrweb-cssom": "^0.6.0" + }, + "engines": { + "node": ">=14" + } + }, "node_modules/csstype": { "version": "3.1.2", "license": "MIT" @@ -7839,6 +9559,10 @@ "integrity": "sha512-dp3s92+uNI1hWIpPGH3jK2kxE2lMjdXdr+DH8ynZHpd6PUlH6x6cbuXnoMmiNumznqaNO31xu9e79F0uuZ0JFg==", "dev": true }, + "node_modules/d.d0rich.me": { + "resolved": "apps/d.d0rich.me", + "link": true + }, "node_modules/d0rich.me": { "resolved": "apps/d0rich.me", "link": true @@ -8330,6 +10054,60 @@ "node": ">= 14" } }, + "node_modules/data-urls": { + "version": "4.0.0", + "resolved": "https://registry.npmjs.org/data-urls/-/data-urls-4.0.0.tgz", + "integrity": "sha512-/mMTei/JXPqvFqQtfyTowxmJVwr2PVAeCcDxyFf6LhoOu/09TX2OX3kb2wzi4DMXcfj4OItwDOnhl5oziPnT6g==", + "dev": true, + "dependencies": { + "abab": "^2.0.6", + "whatwg-mimetype": "^3.0.0", + "whatwg-url": "^12.0.0" + }, + "engines": { + "node": ">=14" + } + }, + "node_modules/data-urls/node_modules/tr46": { + "version": "4.1.1", + "resolved": "https://registry.npmjs.org/tr46/-/tr46-4.1.1.tgz", + "integrity": "sha512-2lv/66T7e5yNyhAAC4NaKe5nVavzuGJQVVtRYLyQ2OI8tsJ61PMLlelehb0wi2Hx6+hT/OJUWZcw8MjlSRnxvw==", + "dev": true, + "dependencies": { + "punycode": "^2.3.0" + }, + "engines": { + "node": ">=14" + } + }, + "node_modules/data-urls/node_modules/webidl-conversions": { + "version": "7.0.0", + "resolved": "https://registry.npmjs.org/webidl-conversions/-/webidl-conversions-7.0.0.tgz", + "integrity": "sha512-VwddBukDzu71offAQR975unBIGqfKZpM+8ZX6ySk8nYhVoo5CYaZyzt3YBvYtRtO+aoGlqxPg/B87NGVZ/fu6g==", + "dev": true, + "engines": { + "node": ">=12" + } + }, + "node_modules/data-urls/node_modules/whatwg-url": { + "version": "12.0.1", + "resolved": "https://registry.npmjs.org/whatwg-url/-/whatwg-url-12.0.1.tgz", + "integrity": "sha512-Ed/LrqB8EPlGxjS+TrsXcpUond1mhccS3pchLhzSgPCnTimUCKj3IZE75pAs5m6heB2U2TMerKFUXheyHY+VDQ==", + "dev": true, + "dependencies": { + "tr46": "^4.1.1", + "webidl-conversions": "^7.0.0" + }, + "engines": { + "node": ">=14" + } + }, + "node_modules/dataloader": { + "version": "2.2.2", + "resolved": "https://registry.npmjs.org/dataloader/-/dataloader-2.2.2.tgz", + "integrity": "sha512-8YnDaaf7N3k/q5HnTJVuzSyLETjoZjVmHc4AeKAzOvKHEFQKcn64OKBfzHYtE9zGjctNM7V9I0MfnUVLpi7M5g==", + "dev": true + }, "node_modules/date-time": { "version": "3.1.0", "resolved": "https://registry.npmjs.org/date-time/-/date-time-3.1.0.tgz", @@ -8410,6 +10188,12 @@ "node": ">=0.10.0" } }, + "node_modules/decimal.js": { + "version": "10.4.3", + "resolved": "https://registry.npmjs.org/decimal.js/-/decimal.js-10.4.3.tgz", + "integrity": "sha512-VBBaLc1MgL5XpzgIP7ny5Z6Nx3UrRkIViUkPUdtl9aya5amy3De1gsUUSB1g3+3sExYNjCAsAznmukyxCb1GRA==", + "dev": true + }, "node_modules/decode-named-character-reference": { "version": "1.0.2", "resolved": "https://registry.npmjs.org/decode-named-character-reference/-/decode-named-character-reference-1.0.2.tgz", @@ -8422,6 +10206,20 @@ "url": "https://github.com/sponsors/wooorm" } }, + "node_modules/dedent": { + "version": "1.5.1", + "resolved": "https://registry.npmjs.org/dedent/-/dedent-1.5.1.tgz", + "integrity": "sha512-+LxW+KLWxu3HW3M2w2ympwtqPrqYRzU8fqi6Fhd18fBALe15blJPI/I4+UHveMVG6lJqB4JNd4UG0S5cnVHwIg==", + "dev": true, + "peerDependencies": { + "babel-plugin-macros": "^3.1.0" + }, + "peerDependenciesMeta": { + "babel-plugin-macros": { + "optional": true + } + } + }, "node_modules/deep-eql": { "version": "4.1.3", "resolved": "https://registry.npmjs.org/deep-eql/-/deep-eql-4.1.3.tgz", @@ -8525,6 +10323,15 @@ "robust-predicates": "^3.0.0" } }, + "node_modules/delayed-stream": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/delayed-stream/-/delayed-stream-1.0.0.tgz", + "integrity": "sha512-ZySD7Nf91aLB0RxL4KGrKHBXl7Eds1DAmEdcoVawXnLD7SDhpNgtuII2aAkg7a7QS41jxPSZ17p4VdGnMHk3MQ==", + "dev": true, + "engines": { + "node": ">=0.4.0" + } + }, "node_modules/delegates": { "version": "1.0.0", "resolved": "https://registry.npmjs.org/delegates/-/delegates-1.0.0.tgz", @@ -8605,6 +10412,15 @@ "node": ">=0.10" } }, + "node_modules/detect-newline": { + "version": "3.1.0", + "resolved": "https://registry.npmjs.org/detect-newline/-/detect-newline-3.1.0.tgz", + "integrity": "sha512-TLz+x/vEXm/Y7P7wn1EJFNLxYpUD4TgMosxY6fAVJUnJMbupHBOncxyWUG9OpTaH9EBD7uFI5LfEgmMOc54DsA==", + "dev": true, + "engines": { + "node": ">=8" + } + }, "node_modules/devalue": { "version": "4.3.2", "resolved": "https://registry.npmjs.org/devalue/-/devalue-4.3.2.tgz", @@ -8634,13 +10450,21 @@ }, "node_modules/diff": { "version": "4.0.2", + "devOptional": true, "license": "BSD-3-Clause", - "optional": true, - "peer": true, "engines": { "node": ">=0.3.1" } }, + "node_modules/diff-sequences": { + "version": "29.6.3", + "resolved": "https://registry.npmjs.org/diff-sequences/-/diff-sequences-29.6.3.tgz", + "integrity": "sha512-EjePK1srD3P08o2j4f0ExnylqRs5B9tJjcp9t1krH2qRi8CCdsYfwe9JgSLurFBWwq4uOlipzfk5fHNvwFKr8Q==", + "dev": true, + "engines": { + "node": "^14.15.0 || ^16.10.0 || >=18.0.0" + } + }, "node_modules/dir-glob": { "version": "3.0.1", "license": "MIT", @@ -8691,6 +10515,27 @@ } ] }, + "node_modules/domexception": { + "version": "4.0.0", + "resolved": "https://registry.npmjs.org/domexception/-/domexception-4.0.0.tgz", + "integrity": "sha512-A2is4PLG+eeSfoTMA95/s4pvAoSo2mKtiM5jlHkAVewmiO8ISFTFKZjH7UAM1Atli/OT/7JHOrJRJiMKUZKYBw==", + "dev": true, + "dependencies": { + "webidl-conversions": "^7.0.0" + }, + "engines": { + "node": ">=12" + } + }, + "node_modules/domexception/node_modules/webidl-conversions": { + "version": "7.0.0", + "resolved": "https://registry.npmjs.org/webidl-conversions/-/webidl-conversions-7.0.0.tgz", + "integrity": "sha512-VwddBukDzu71offAQR975unBIGqfKZpM+8ZX6ySk8nYhVoo5CYaZyzt3YBvYtRtO+aoGlqxPg/B87NGVZ/fu6g==", + "dev": true, + "engines": { + "node": ">=12" + } + }, "node_modules/domhandler": { "version": "5.0.3", "resolved": "https://registry.npmjs.org/domhandler/-/domhandler-5.0.3.tgz", @@ -8724,6 +10569,15 @@ "url": "https://github.com/fb55/domutils?sponsor=1" } }, + "node_modules/dot-case": { + "version": "3.0.4", + "resolved": "https://registry.npmjs.org/dot-case/-/dot-case-3.0.4.tgz", + "integrity": "sha512-Kv5nKlh6yRrdrGvxeJ2e5y2eRUpkUosIW4A2AS38zwSz27zu7ufDwQPi5Jhs3XAlGNetl3bmnGhQsMtkKJnj3w==", + "dependencies": { + "no-case": "^3.0.4", + "tslib": "^2.0.3" + } + }, "node_modules/dot-prop": { "version": "8.0.2", "resolved": "https://registry.npmjs.org/dot-prop/-/dot-prop-8.0.2.tgz", @@ -8749,6 +10603,17 @@ "url": "https://github.com/sponsors/sindresorhus" } }, + "node_modules/dotenv": { + "version": "16.3.1", + "resolved": "https://registry.npmjs.org/dotenv/-/dotenv-16.3.1.tgz", + "integrity": "sha512-IPzF4w4/Rd94bA9imS68tZBaYyBWSCE47V1RGuMrB94iyTOIEwRmVL2x/4An+6mETpLrKJ5hQkB8W4kFAadeIQ==", + "engines": { + "node": ">=12" + }, + "funding": { + "url": "https://github.com/motdotla/dotenv?sponsor=1" + } + }, "node_modules/duplexer": { "version": "0.1.2", "resolved": "https://registry.npmjs.org/duplexer/-/duplexer-0.1.2.tgz", @@ -8824,6 +10689,18 @@ "integrity": "sha512-L6uRgvZTH+4OF5NE/MBbzQx/WYpru1xCBE9respNj6qznEewGUIfhzmm7horWWxbNO2M0WckQypGctR8lH79xQ==", "dev": true }, + "node_modules/emittery": { + "version": "0.13.1", + "resolved": "https://registry.npmjs.org/emittery/-/emittery-0.13.1.tgz", + "integrity": "sha512-DeWwawk6r5yR9jFgnDKYt4sLS0LmHJJi3ZOnb5/JdbYwj3nW+FxQnHIjhBKz8YLC7oRNPVM9NQ47I3CVx34eqQ==", + "dev": true, + "engines": { + "node": ">=12" + }, + "funding": { + "url": "https://github.com/sindresorhus/emittery?sponsor=1" + } + }, "node_modules/emoji-regex": { "version": "9.2.2", "license": "MIT" @@ -8964,6 +10841,12 @@ "url": "https://github.com/fb55/entities?sponsor=1" } }, + "node_modules/err-code": { + "version": "3.0.1", + "resolved": "https://registry.npmjs.org/err-code/-/err-code-3.0.1.tgz", + "integrity": "sha512-GiaH0KJUewYok+eeY05IIgjtAe4Yltygk9Wqp1V5yVWLdhf0hYZchRjNIT9bb0mSwRcIusT3cx7PJUf3zEIfUA==", + "dev": true + }, "node_modules/errno": { "version": "0.1.8", "resolved": "https://registry.npmjs.org/errno/-/errno-0.1.8.tgz", @@ -9878,6 +11761,26 @@ "node": ">= 0.6" } }, + "node_modules/ethjs-unit": { + "version": "0.1.6", + "resolved": "https://registry.npmjs.org/ethjs-unit/-/ethjs-unit-0.1.6.tgz", + "integrity": "sha512-/Sn9Y0oKl0uqQuvgFk/zQgR7aw1g36qX/jzSQ5lSwlO0GigPymk4eGQfeNTD03w1dPOqfz8V77Cy43jH56pagw==", + "dev": true, + "dependencies": { + "bn.js": "4.11.6", + "number-to-bn": "1.7.0" + }, + "engines": { + "node": ">=6.5.0", + "npm": ">=3" + } + }, + "node_modules/ethjs-unit/node_modules/bn.js": { + "version": "4.11.6", + "resolved": "https://registry.npmjs.org/bn.js/-/bn.js-4.11.6.tgz", + "integrity": "sha512-XWwnNNFCuuSQ0m3r3C4LE3EiORltHd9M05pq6FOlVeiophzRbMo50Sbz1ehl8K3Z+jw9+vmgnXefY1hz8X+2wA==", + "dev": true + }, "node_modules/events": { "version": "3.3.0", "resolved": "https://registry.npmjs.org/events/-/events-3.3.0.tgz", @@ -9887,6 +11790,15 @@ "node": ">=0.8.x" } }, + "node_modules/eventsource": { + "version": "2.0.2", + "resolved": "https://registry.npmjs.org/eventsource/-/eventsource-2.0.2.tgz", + "integrity": "sha512-IzUmBGPR3+oUG9dUeXynyNmf91/3zUSJg1lCktzKw47OXuhco54U3r9B7O4XX+Rb1Itm9OZ2b0RkTs10bICOxA==", + "dev": true, + "engines": { + "node": ">=12.0.0" + } + }, "node_modules/execa": { "version": "5.1.1", "license": "MIT", @@ -9908,6 +11820,31 @@ "url": "https://github.com/sindresorhus/execa?sponsor=1" } }, + "node_modules/exit": { + "version": "0.1.2", + "resolved": "https://registry.npmjs.org/exit/-/exit-0.1.2.tgz", + "integrity": "sha512-Zk/eNKV2zbjpKzrsQ+n1G6poVbErQxJ0LBOJXaKZ1EViLzH+hrLu9cdXI4zw9dBQJslwBEpbQ2P1oS7nDxs6jQ==", + "dev": true, + "engines": { + "node": ">= 0.8.0" + } + }, + "node_modules/expect": { + "version": "29.7.0", + "resolved": "https://registry.npmjs.org/expect/-/expect-29.7.0.tgz", + "integrity": "sha512-2Zks0hf1VLFYI1kbh0I5jP3KHHyCHpkfyHBzsSXRFgl/Bg9mWYfMW8oD+PdMPlEwy5HNsR9JutYy6pMeOh61nw==", + "dev": true, + "dependencies": { + "@jest/expect-utils": "^29.7.0", + "jest-get-type": "^29.6.3", + "jest-matcher-utils": "^29.7.0", + "jest-message-util": "^29.7.0", + "jest-util": "^29.7.0" + }, + "engines": { + "node": "^14.15.0 || ^16.10.0 || >=18.0.0" + } + }, "node_modules/extend": { "version": "3.0.2", "resolved": "https://registry.npmjs.org/extend/-/extend-3.0.2.tgz", @@ -10032,6 +11969,15 @@ "reusify": "^1.0.4" } }, + "node_modules/fb-watchman": { + "version": "2.0.2", + "resolved": "https://registry.npmjs.org/fb-watchman/-/fb-watchman-2.0.2.tgz", + "integrity": "sha512-p5161BqbuCaSnB8jIbzQHOlpgsPmK5rJVDfDKO91Axs5NC1uu3HRQm6wt9cd9/+GtQQIO53JdGXXoyDpTAsgYA==", + "dev": true, + "dependencies": { + "bser": "2.1.1" + } + }, "node_modules/fd-slicer": { "version": "1.1.0", "resolved": "https://registry.npmjs.org/fd-slicer/-/fd-slicer-1.1.0.tgz", @@ -10040,6 +11986,30 @@ "pend": "~1.2.0" } }, + "node_modules/figures": { + "version": "3.2.0", + "resolved": "https://registry.npmjs.org/figures/-/figures-3.2.0.tgz", + "integrity": "sha512-yaduQFRKLXYOGgEn6AZau90j3ggSOyiqXU0F9JZfeXYhNa+Jk4X+s45A2zg5jns87GAFa34BBm2kXw4XpNcbdg==", + "dev": true, + "dependencies": { + "escape-string-regexp": "^1.0.5" + }, + "engines": { + "node": ">=8" + }, + "funding": { + "url": "https://github.com/sponsors/sindresorhus" + } + }, + "node_modules/figures/node_modules/escape-string-regexp": { + "version": "1.0.5", + "resolved": "https://registry.npmjs.org/escape-string-regexp/-/escape-string-regexp-1.0.5.tgz", + "integrity": "sha512-vbRorB5FUQWvla16U8R/qgaFIya2qGzwDrNmCZuYKrbdSUMG6I1ZCGQRefkRVhuOkIGVne7BQ35DSfo1qvJqFg==", + "dev": true, + "engines": { + "node": ">=0.8.0" + } + }, "node_modules/file-entry-cache": { "version": "6.0.1", "devOptional": true, @@ -10117,6 +12087,26 @@ "devOptional": true, "license": "ISC" }, + "node_modules/follow-redirects": { + "version": "1.15.3", + "resolved": "https://registry.npmjs.org/follow-redirects/-/follow-redirects-1.15.3.tgz", + "integrity": "sha512-1VzOtuEM8pC9SFU1E+8KfTjZyMztRsgEfwQl44z8A25uy13jSzTj6dyK2Df52iV0vgHCfBwLhDWevLn95w5v6Q==", + "dev": true, + "funding": [ + { + "type": "individual", + "url": "https://github.com/sponsors/RubenVerborgh" + } + ], + "engines": { + "node": ">=4.0" + }, + "peerDependenciesMeta": { + "debug": { + "optional": true + } + } + }, "node_modules/for-each": { "version": "0.3.3", "license": "MIT", @@ -10150,6 +12140,26 @@ "url": "https://github.com/sponsors/isaacs" } }, + "node_modules/form-data": { + "version": "4.0.0", + "resolved": "https://registry.npmjs.org/form-data/-/form-data-4.0.0.tgz", + "integrity": "sha512-ETEklSGi5t0QMZuiXoA/Q6vcnxcLQP5vdugSpuAyi6SVGi2clPPp+xgEhuMaHC+zGgn31Kd235W35f7Hykkaww==", + "dev": true, + "dependencies": { + "asynckit": "^0.4.0", + "combined-stream": "^1.0.8", + "mime-types": "^2.1.12" + }, + "engines": { + "node": ">= 6" + } + }, + "node_modules/fp-ts": { + "version": "2.16.1", + "resolved": "https://registry.npmjs.org/fp-ts/-/fp-ts-2.16.1.tgz", + "integrity": "sha512-by7U5W8dkIzcvDofUcO42yl9JbnHTEDBrzu3pt5fKT+Z4Oy85I21K80EYJYdjQGC2qum4Vo55Ag57iiIK4FYuA==", + "dev": true + }, "node_modules/fraction.js": { "version": "4.3.7", "resolved": "https://registry.npmjs.org/fraction.js/-/fraction.js-4.3.7.tgz", @@ -10320,6 +12330,15 @@ "url": "https://github.com/sponsors/ljharb" } }, + "node_modules/get-package-type": { + "version": "0.1.0", + "resolved": "https://registry.npmjs.org/get-package-type/-/get-package-type-0.1.0.tgz", + "integrity": "sha512-pjzuKtY64GYfWizNAJ0fr9VqttZkNiK2iS430LtIHzjBEr6bX8Am2zm4sW4Ro5wjWW5cAlRL1qAMTcXbjNAO2Q==", + "dev": true, + "engines": { + "node": ">=8.0.0" + } + }, "node_modules/get-port-please": { "version": "3.1.1", "resolved": "https://registry.npmjs.org/get-port-please/-/get-port-please-3.1.1.tgz", @@ -10605,6 +12624,20 @@ "url": "https://github.com/sponsors/brc-dd" } }, + "node_modules/hamt-sharding": { + "version": "2.0.1", + "resolved": "https://registry.npmjs.org/hamt-sharding/-/hamt-sharding-2.0.1.tgz", + "integrity": "sha512-vnjrmdXG9dDs1m/H4iJ6z0JFI2NtgsW5keRkTcM85NGak69Mkf5PHUqBz+Xs0T4sg0ppvj9O5EGAJo40FTxmmA==", + "dev": true, + "dependencies": { + "sparse-array": "^1.3.1", + "uint8arrays": "^3.0.0" + }, + "engines": { + "node": ">=10.0.0", + "npm": ">=6.0.0" + } + }, "node_modules/handlebars": { "version": "4.7.8", "license": "MIT", @@ -11115,6 +13148,15 @@ "he": "bin/he" } }, + "node_modules/header-case": { + "version": "2.0.4", + "resolved": "https://registry.npmjs.org/header-case/-/header-case-2.0.4.tgz", + "integrity": "sha512-H/vuk5TEEVZwrR0lp2zed9OCo1uAILMlx0JEMgC26rzyJJ3N1v6XkwHHXJQdR2doSjcGPM6OKPYoJgf0plJ11Q==", + "dependencies": { + "capital-case": "^1.0.4", + "tslib": "^2.0.3" + } + }, "node_modules/heap": { "version": "0.2.7", "resolved": "https://registry.npmjs.org/heap/-/heap-0.2.7.tgz", @@ -11131,6 +13173,24 @@ "dev": true, "license": "ISC" }, + "node_modules/html-encoding-sniffer": { + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/html-encoding-sniffer/-/html-encoding-sniffer-3.0.0.tgz", + "integrity": "sha512-oWv4T4yJ52iKrufjnyZPkrN0CH3QnrUqdB6In1g5Fe1mia8GmF36gnfNySxoZtxD5+NmYw1EElVXiBk93UeskA==", + "dev": true, + "dependencies": { + "whatwg-encoding": "^2.0.0" + }, + "engines": { + "node": ">=12" + } + }, + "node_modules/html-escaper": { + "version": "2.0.2", + "resolved": "https://registry.npmjs.org/html-escaper/-/html-escaper-2.0.2.tgz", + "integrity": "sha512-H2iMtd0I4Mt5eYiapRdIDjp+XzelXQ0tFE4JS7YFwFevXXMmOp9myNrUvCg0D6ws8iqkRPBfKHgbwig1SmlLfg==", + "dev": true + }, "node_modules/html-tags": { "version": "3.3.1", "resolved": "https://registry.npmjs.org/html-tags/-/html-tags-3.3.1.tgz", @@ -11329,6 +13389,25 @@ "node": ">=8" } }, + "node_modules/import-local": { + "version": "3.1.0", + "resolved": "https://registry.npmjs.org/import-local/-/import-local-3.1.0.tgz", + "integrity": "sha512-ASB07uLtnDs1o6EHjKpX34BKYDSqnFerfTOJL2HvMqF70LnxpjkzDB8J44oT9pu4AMPkQwf8jl6szgvNd2tRIg==", + "dev": true, + "dependencies": { + "pkg-dir": "^4.2.0", + "resolve-cwd": "^3.0.0" + }, + "bin": { + "import-local-fixture": "fixtures/cli.js" + }, + "engines": { + "node": ">=8" + }, + "funding": { + "url": "https://github.com/sponsors/sindresorhus" + } + }, "node_modules/imurmurhash": { "version": "0.1.4", "devOptional": true, @@ -11360,6 +13439,48 @@ "version": "1.3.8", "license": "ISC" }, + "node_modules/inquirer": { + "version": "8.2.6", + "resolved": "https://registry.npmjs.org/inquirer/-/inquirer-8.2.6.tgz", + "integrity": "sha512-M1WuAmb7pn9zdFRtQYk26ZBoY043Sse0wVDdk4Bppr+JOXyQYybdtvK+l9wUibhtjdjvtoiNy8tk+EgsYIUqKg==", + "dev": true, + "dependencies": { + "ansi-escapes": "^4.2.1", + "chalk": "^4.1.1", + "cli-cursor": "^3.1.0", + "cli-width": "^3.0.0", + "external-editor": "^3.0.3", + "figures": "^3.0.0", + "lodash": "^4.17.21", + "mute-stream": "0.0.8", + "ora": "^5.4.1", + "run-async": "^2.4.0", + "rxjs": "^7.5.5", + "string-width": "^4.1.0", + "strip-ansi": "^6.0.0", + "through": "^2.3.6", + "wrap-ansi": "^6.0.1" + }, + "engines": { + "node": ">=12.0.0" + } + }, + "node_modules/interface-blockstore": { + "version": "2.0.3", + "resolved": "https://registry.npmjs.org/interface-blockstore/-/interface-blockstore-2.0.3.tgz", + "integrity": "sha512-OwVUnlNcx7H5HloK0Myv6c/C1q9cNG11HX6afdeU6q6kbuNj8jKCwVnmJHhC94LZaJ+9hvVOk4IUstb3Esg81w==", + "dev": true, + "dependencies": { + "interface-store": "^2.0.2", + "multiformats": "^9.0.4" + } + }, + "node_modules/interface-store": { + "version": "2.0.2", + "resolved": "https://registry.npmjs.org/interface-store/-/interface-store-2.0.2.tgz", + "integrity": "sha512-rScRlhDcz6k199EkHqT8NpM87ebN89ICOzILoBHgaG36/WX50N32BnU/kpZgCGPLhARRAWUUX5/cyaIjt7Kipg==", + "dev": true + }, "node_modules/internal-slot": { "version": "1.0.6", "dev": true, @@ -11382,6 +13503,28 @@ "node": ">=12" } }, + "node_modules/io-ts": { + "version": "2.2.20", + "resolved": "https://registry.npmjs.org/io-ts/-/io-ts-2.2.20.tgz", + "integrity": "sha512-Rq2BsYmtwS5vVttie4rqrOCIfHCS9TgpRLFpKQCM1wZBBRY9nWVGmEvm2FnDbSE2un1UE39DvFpTR5UL47YDcA==", + "dev": true, + "peerDependencies": { + "fp-ts": "^2.5.0" + } + }, + "node_modules/io-ts-reporters": { + "version": "2.0.1", + "resolved": "https://registry.npmjs.org/io-ts-reporters/-/io-ts-reporters-2.0.1.tgz", + "integrity": "sha512-RVpLstYBsmTGgCW9wJ5KVyN/eRnRUDp87Flt4D1O3aJ7oAnd8csq8aXuu7ZeNK8qEDKmjUl9oUuzfwikaNAMKQ==", + "dev": true, + "dependencies": { + "@scarf/scarf": "^1.1.1" + }, + "peerDependencies": { + "fp-ts": "^2.10.5", + "io-ts": "^2.2.16" + } + }, "node_modules/ioredis": { "version": "5.3.2", "resolved": "https://registry.npmjs.org/ioredis/-/ioredis-5.3.2.tgz", @@ -11409,6 +13552,82 @@ "version": "1.1.8", "license": "MIT" }, + "node_modules/ipfs-unixfs": { + "version": "6.0.9", + "resolved": "https://registry.npmjs.org/ipfs-unixfs/-/ipfs-unixfs-6.0.9.tgz", + "integrity": "sha512-0DQ7p0/9dRB6XCb0mVCTli33GzIzSVx5udpJuVM47tGcD+W+Bl4LsnoLswd3ggNnNEakMv1FdoFITiEnchXDqQ==", + "dev": true, + "dependencies": { + "err-code": "^3.0.1", + "protobufjs": "^6.10.2" + }, + "engines": { + "node": ">=16.0.0", + "npm": ">=7.0.0" + } + }, + "node_modules/ipfs-unixfs-importer": { + "version": "9.0.10", + "resolved": "https://registry.npmjs.org/ipfs-unixfs-importer/-/ipfs-unixfs-importer-9.0.10.tgz", + "integrity": "sha512-W+tQTVcSmXtFh7FWYWwPBGXJ1xDgREbIyI1E5JzDcimZLIyT5gGMfxR3oKPxxWj+GKMpP5ilvMQrbsPzWcm3Fw==", + "dev": true, + "dependencies": { + "@ipld/dag-pb": "^2.0.2", + "@multiformats/murmur3": "^1.0.3", + "bl": "^5.0.0", + "err-code": "^3.0.1", + "hamt-sharding": "^2.0.0", + "interface-blockstore": "^2.0.3", + "ipfs-unixfs": "^6.0.0", + "it-all": "^1.0.5", + "it-batch": "^1.0.8", + "it-first": "^1.0.6", + "it-parallel-batch": "^1.0.9", + "merge-options": "^3.0.4", + "multiformats": "^9.4.2", + "rabin-wasm": "^0.1.4", + "uint8arrays": "^3.0.0" + }, + "engines": { + "node": ">=16.0.0", + "npm": ">=7.0.0" + } + }, + "node_modules/ipfs-unixfs-importer/node_modules/bl": { + "version": "5.1.0", + "resolved": "https://registry.npmjs.org/bl/-/bl-5.1.0.tgz", + "integrity": "sha512-tv1ZJHLfTDnXE6tMHv73YgSJaWR2AFuPwMntBe7XL/GBFHnT0CLnsHMogfk5+GzCDC5ZWarSCYaIGATZt9dNsQ==", + "dev": true, + "dependencies": { + "buffer": "^6.0.3", + "inherits": "^2.0.4", + "readable-stream": "^3.4.0" + } + }, + "node_modules/ipfs-unixfs-importer/node_modules/buffer": { + "version": "6.0.3", + "resolved": "https://registry.npmjs.org/buffer/-/buffer-6.0.3.tgz", + "integrity": "sha512-FTiCpNxtwiZZHEZbcbTIcZjERVICn9yq/pDFkTl95/AxzD1naBctN7YO68riM/gLSDY7sdrMby8hofADYuuqOA==", + "dev": true, + "funding": [ + { + "type": "github", + "url": "https://github.com/sponsors/feross" + }, + { + "type": "patreon", + "url": "https://www.patreon.com/feross" + }, + { + "type": "consulting", + "url": "https://feross.org/support" + } + ], + "dependencies": { + "base64-js": "^1.3.1", + "ieee754": "^1.2.1" + } + }, "node_modules/iron-webcrypto": { "version": "1.0.0", "resolved": "https://registry.npmjs.org/iron-webcrypto/-/iron-webcrypto-1.0.0.tgz", @@ -11636,6 +13855,15 @@ "node": ">=8" } }, + "node_modules/is-generator-fn": { + "version": "2.1.0", + "resolved": "https://registry.npmjs.org/is-generator-fn/-/is-generator-fn-2.1.0.tgz", + "integrity": "sha512-cTIB4yPYL/Grw0EaSzASzg6bBy9gqCofvWN8okThAYIxKJZC+udlRAmGbM0XLeniEJSs8uEgHPGuHSe1XsOLSQ==", + "dev": true, + "engines": { + "node": ">=6" + } + }, "node_modules/is-generator-function": { "version": "1.0.10", "license": "MIT", @@ -11659,6 +13887,16 @@ "node": ">=0.10.0" } }, + "node_modules/is-hex-prefixed": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/is-hex-prefixed/-/is-hex-prefixed-1.0.0.tgz", + "integrity": "sha512-WvtOiug1VFrE9v1Cydwm+FnXd3+w9GaeVUss5W4v/SLy3UW00vP+6iNF2SdnfiBoLy4bTqVdkftNGTUeOFVsbA==", + "dev": true, + "engines": { + "node": ">=6.5.0", + "npm": ">=3" + } + }, "node_modules/is-hexadecimal": { "version": "2.0.1", "resolved": "https://registry.npmjs.org/is-hexadecimal/-/is-hexadecimal-2.0.1.tgz", @@ -11668,6 +13906,15 @@ "url": "https://github.com/sponsors/wooorm" } }, + "node_modules/is-interactive": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/is-interactive/-/is-interactive-1.0.0.tgz", + "integrity": "sha512-2HvIEKRoqS62guEC+qBjpvRubdX910WCMuJTZ+I9yvqKU2/12eSL549HMwtabb4oupdj2sMP50k+XJfB/8JE6w==", + "dev": true, + "engines": { + "node": ">=8" + } + }, "node_modules/is-module": { "version": "1.0.0", "resolved": "https://registry.npmjs.org/is-module/-/is-module-1.0.0.tgz", @@ -11746,6 +13993,12 @@ "node": ">=0.10.0" } }, + "node_modules/is-potential-custom-element-name": { + "version": "1.0.1", + "resolved": "https://registry.npmjs.org/is-potential-custom-element-name/-/is-potential-custom-element-name-1.0.1.tgz", + "integrity": "sha512-bCYeRA2rVibKZd+s2625gGnGF/t7DSqDs4dP7CrLA1m7jKWz6pps0LpYLJN8Q64HtmPKJ1hrN3nzPNKFEKOUiQ==", + "dev": true + }, "node_modules/is-primitive": { "version": "3.0.1", "resolved": "https://registry.npmjs.org/is-primitive/-/is-primitive-3.0.1.tgz", @@ -11864,6 +14117,18 @@ "url": "https://github.com/sponsors/ljharb" } }, + "node_modules/is-unicode-supported": { + "version": "0.1.0", + "resolved": "https://registry.npmjs.org/is-unicode-supported/-/is-unicode-supported-0.1.0.tgz", + "integrity": "sha512-knxG2q4UC3u8stRGyAVJCOdxFmv5DZiRcdlIaAQXAbSfJya+OhopNotLQrstBhququ4ZpuKbDc/8S6mgXgPFPw==", + "dev": true, + "engines": { + "node": ">=10" + }, + "funding": { + "url": "https://github.com/sponsors/sindresorhus" + } + }, "node_modules/is-weakref": { "version": "1.0.2", "dev": true, @@ -11916,6 +14181,142 @@ "version": "2.0.0", "license": "ISC" }, + "node_modules/isomorphic-fetch": { + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/isomorphic-fetch/-/isomorphic-fetch-3.0.0.tgz", + "integrity": "sha512-qvUtwJ3j6qwsF3jLxkZ72qCgjMysPzDfeV240JHiGZsANBYd+EEuu35v7dfrJ9Up0Ak07D7GGSkGhCHTqg/5wA==", + "dev": true, + "dependencies": { + "node-fetch": "^2.6.1", + "whatwg-fetch": "^3.4.1" + } + }, + "node_modules/istanbul-lib-coverage": { + "version": "3.2.2", + "resolved": "https://registry.npmjs.org/istanbul-lib-coverage/-/istanbul-lib-coverage-3.2.2.tgz", + "integrity": "sha512-O8dpsF+r0WV/8MNRKfnmrtCWhuKjxrq2w+jpzBL5UZKTi2LeVWnWOmWRxFlesJONmc+wLAGvKQZEOanko0LFTg==", + "dev": true, + "engines": { + "node": ">=8" + } + }, + "node_modules/istanbul-lib-instrument": { + "version": "6.0.1", + "resolved": "https://registry.npmjs.org/istanbul-lib-instrument/-/istanbul-lib-instrument-6.0.1.tgz", + "integrity": "sha512-EAMEJBsYuyyztxMxW3g7ugGPkrZsV57v0Hmv3mm1uQsmB+QnZuepg731CRaIgeUVSdmsTngOkSnauNF8p7FIhA==", + "dev": true, + "dependencies": { + "@babel/core": "^7.12.3", + "@babel/parser": "^7.14.7", + "@istanbuljs/schema": "^0.1.2", + "istanbul-lib-coverage": "^3.2.0", + "semver": "^7.5.4" + }, + "engines": { + "node": ">=10" + } + }, + "node_modules/istanbul-lib-report": { + "version": "3.0.1", + "resolved": "https://registry.npmjs.org/istanbul-lib-report/-/istanbul-lib-report-3.0.1.tgz", + "integrity": "sha512-GCfE1mtsHGOELCU8e/Z7YWzpmybrx/+dSTfLrvY8qRmaY6zXTKWn6WQIjaAFw069icm6GVMNkgu0NzI4iPZUNw==", + "dev": true, + "dependencies": { + "istanbul-lib-coverage": "^3.0.0", + "make-dir": "^4.0.0", + "supports-color": "^7.1.0" + }, + "engines": { + "node": ">=10" + } + }, + "node_modules/istanbul-lib-report/node_modules/make-dir": { + "version": "4.0.0", + "resolved": "https://registry.npmjs.org/make-dir/-/make-dir-4.0.0.tgz", + "integrity": "sha512-hXdUTZYIVOt1Ex//jAQi+wTZZpUpwBj/0QsOzqegb3rGMMeJiSEu5xLHnYfBrRV4RH2+OCSOO95Is/7x1WJ4bw==", + "dev": true, + "dependencies": { + "semver": "^7.5.3" + }, + "engines": { + "node": ">=10" + }, + "funding": { + "url": "https://github.com/sponsors/sindresorhus" + } + }, + "node_modules/istanbul-lib-source-maps": { + "version": "4.0.1", + "resolved": "https://registry.npmjs.org/istanbul-lib-source-maps/-/istanbul-lib-source-maps-4.0.1.tgz", + "integrity": "sha512-n3s8EwkdFIJCG3BPKBYvskgXGoy88ARzvegkitk60NxRdwltLOTaH7CUiMRXvwYorl0Q712iEjcWB+fK/MrWVw==", + "dev": true, + "dependencies": { + "debug": "^4.1.1", + "istanbul-lib-coverage": "^3.0.0", + "source-map": "^0.6.1" + }, + "engines": { + "node": ">=10" + } + }, + "node_modules/istanbul-reports": { + "version": "3.1.6", + "resolved": "https://registry.npmjs.org/istanbul-reports/-/istanbul-reports-3.1.6.tgz", + "integrity": "sha512-TLgnMkKg3iTDsQ9PbPTdpfAK2DzjF9mqUG7RMgcQl8oFjad8ob4laGxv5XV5U9MAfx8D6tSJiUyuAwzLicaxlg==", + "dev": true, + "dependencies": { + "html-escaper": "^2.0.0", + "istanbul-lib-report": "^3.0.0" + }, + "engines": { + "node": ">=8" + } + }, + "node_modules/it-all": { + "version": "1.0.6", + "resolved": "https://registry.npmjs.org/it-all/-/it-all-1.0.6.tgz", + "integrity": "sha512-3cmCc6Heqe3uWi3CVM/k51fa/XbMFpQVzFoDsV0IZNHSQDyAXl3c4MjHkFX5kF3922OGj7Myv1nSEUgRtcuM1A==", + "dev": true + }, + "node_modules/it-batch": { + "version": "1.0.9", + "resolved": "https://registry.npmjs.org/it-batch/-/it-batch-1.0.9.tgz", + "integrity": "sha512-7Q7HXewMhNFltTsAMdSz6luNhyhkhEtGGbYek/8Xb/GiqYMtwUmopE1ocPSiJKKp3rM4Dt045sNFoUu+KZGNyA==", + "dev": true + }, + "node_modules/it-drain": { + "version": "1.0.5", + "resolved": "https://registry.npmjs.org/it-drain/-/it-drain-1.0.5.tgz", + "integrity": "sha512-r/GjkiW1bZswC04TNmUnLxa6uovme7KKwPhc+cb1hHU65E3AByypHH6Pm91WHuvqfFsm+9ws0kPtDBV3/8vmIg==", + "dev": true + }, + "node_modules/it-filter": { + "version": "1.0.3", + "resolved": "https://registry.npmjs.org/it-filter/-/it-filter-1.0.3.tgz", + "integrity": "sha512-EI3HpzUrKjTH01miLHWmhNWy3Xpbx4OXMXltgrNprL5lDpF3giVpHIouFpr5l+evXw6aOfxhnt01BIB+4VQA+w==", + "dev": true + }, + "node_modules/it-first": { + "version": "1.0.7", + "resolved": "https://registry.npmjs.org/it-first/-/it-first-1.0.7.tgz", + "integrity": "sha512-nvJKZoBpZD/6Rtde6FXqwDqDZGF1sCADmr2Zoc0hZsIvnE449gRFnGctxDf09Bzc/FWnHXAdaHVIetY6lrE0/g==", + "dev": true + }, + "node_modules/it-parallel-batch": { + "version": "1.0.11", + "resolved": "https://registry.npmjs.org/it-parallel-batch/-/it-parallel-batch-1.0.11.tgz", + "integrity": "sha512-UWsWHv/kqBpMRmyZJzlmZeoAMA0F3SZr08FBdbhtbe+MtoEBgr/ZUAKrnenhXCBrsopy76QjRH2K/V8kNdupbQ==", + "dev": true, + "dependencies": { + "it-batch": "^1.0.9" + } + }, + "node_modules/it-take": { + "version": "1.0.2", + "resolved": "https://registry.npmjs.org/it-take/-/it-take-1.0.2.tgz", + "integrity": "sha512-u7I6qhhxH7pSevcYNaMECtkvZW365ARqAIt9K+xjdK1B2WUDEjQSfETkOCT8bxFq/59LqrN3cMLUtTgmDBaygw==", + "dev": true + }, "node_modules/jackspeak": { "version": "2.3.6", "resolved": "https://registry.npmjs.org/jackspeak/-/jackspeak-2.3.6.tgz", @@ -11933,6 +14334,832 @@ "@pkgjs/parseargs": "^0.11.0" } }, + "node_modules/jest": { + "version": "29.7.0", + "resolved": "https://registry.npmjs.org/jest/-/jest-29.7.0.tgz", + "integrity": "sha512-NIy3oAFp9shda19hy4HK0HRTWKtPJmGdnvywu01nOqNC2vZg+Z+fvJDxpMQA88eb2I9EcafcdjYgsDthnYTvGw==", + "dev": true, + "dependencies": { + "@jest/core": "^29.7.0", + "@jest/types": "^29.6.3", + "import-local": "^3.0.2", + "jest-cli": "^29.7.0" + }, + "bin": { + "jest": "bin/jest.js" + }, + "engines": { + "node": "^14.15.0 || ^16.10.0 || >=18.0.0" + }, + "peerDependencies": { + "node-notifier": "^8.0.1 || ^9.0.0 || ^10.0.0" + }, + "peerDependenciesMeta": { + "node-notifier": { + "optional": true + } + } + }, + "node_modules/jest-changed-files": { + "version": "29.7.0", + "resolved": "https://registry.npmjs.org/jest-changed-files/-/jest-changed-files-29.7.0.tgz", + "integrity": "sha512-fEArFiwf1BpQ+4bXSprcDc3/x4HSzL4al2tozwVpDFpsxALjLYdyiIK4e5Vz66GQJIbXJ82+35PtysofptNX2w==", + "dev": true, + "dependencies": { + "execa": "^5.0.0", + "jest-util": "^29.7.0", + "p-limit": "^3.1.0" + }, + "engines": { + "node": "^14.15.0 || ^16.10.0 || >=18.0.0" + } + }, + "node_modules/jest-circus": { + "version": "29.7.0", + "resolved": "https://registry.npmjs.org/jest-circus/-/jest-circus-29.7.0.tgz", + "integrity": "sha512-3E1nCMgipcTkCocFwM90XXQab9bS+GMsjdpmPrlelaxwD93Ad8iVEjX/vvHPdLPnFf+L40u+5+iutRdA1N9myw==", + "dev": true, + "dependencies": { + "@jest/environment": "^29.7.0", + "@jest/expect": "^29.7.0", + "@jest/test-result": "^29.7.0", + "@jest/types": "^29.6.3", + "@types/node": "*", + "chalk": "^4.0.0", + "co": "^4.6.0", + "dedent": "^1.0.0", + "is-generator-fn": "^2.0.0", + "jest-each": "^29.7.0", + "jest-matcher-utils": "^29.7.0", + "jest-message-util": "^29.7.0", + "jest-runtime": "^29.7.0", + "jest-snapshot": "^29.7.0", + "jest-util": "^29.7.0", + "p-limit": "^3.1.0", + "pretty-format": "^29.7.0", + "pure-rand": "^6.0.0", + "slash": "^3.0.0", + "stack-utils": "^2.0.3" + }, + "engines": { + "node": "^14.15.0 || ^16.10.0 || >=18.0.0" + } + }, + "node_modules/jest-circus/node_modules/ansi-styles": { + "version": "5.2.0", + "resolved": "https://registry.npmjs.org/ansi-styles/-/ansi-styles-5.2.0.tgz", + "integrity": "sha512-Cxwpt2SfTzTtXcfOlzGEee8O+c+MmUgGrNiBcXnuWxuFJHe6a5Hz7qwhwe5OgaSYI0IJvkLqWX1ASG+cJOkEiA==", + "dev": true, + "engines": { + "node": ">=10" + }, + "funding": { + "url": "https://github.com/chalk/ansi-styles?sponsor=1" + } + }, + "node_modules/jest-circus/node_modules/pretty-format": { + "version": "29.7.0", + "resolved": "https://registry.npmjs.org/pretty-format/-/pretty-format-29.7.0.tgz", + "integrity": "sha512-Pdlw/oPxN+aXdmM9R00JVC9WVFoCLTKJvDVLgmJ+qAffBMxsV85l/Lu7sNx4zSzPyoL2euImuEwHhOXdEgNFZQ==", + "dev": true, + "dependencies": { + "@jest/schemas": "^29.6.3", + "ansi-styles": "^5.0.0", + "react-is": "^18.0.0" + }, + "engines": { + "node": "^14.15.0 || ^16.10.0 || >=18.0.0" + } + }, + "node_modules/jest-cli": { + "version": "29.7.0", + "resolved": "https://registry.npmjs.org/jest-cli/-/jest-cli-29.7.0.tgz", + "integrity": "sha512-OVVobw2IubN/GSYsxETi+gOe7Ka59EFMR/twOU3Jb2GnKKeMGJB5SGUUrEz3SFVmJASUdZUzy83sLNNQ2gZslg==", + "dev": true, + "dependencies": { + "@jest/core": "^29.7.0", + "@jest/test-result": "^29.7.0", + "@jest/types": "^29.6.3", + "chalk": "^4.0.0", + "create-jest": "^29.7.0", + "exit": "^0.1.2", + "import-local": "^3.0.2", + "jest-config": "^29.7.0", + "jest-util": "^29.7.0", + "jest-validate": "^29.7.0", + "yargs": "^17.3.1" + }, + "bin": { + "jest": "bin/jest.js" + }, + "engines": { + "node": "^14.15.0 || ^16.10.0 || >=18.0.0" + }, + "peerDependencies": { + "node-notifier": "^8.0.1 || ^9.0.0 || ^10.0.0" + }, + "peerDependenciesMeta": { + "node-notifier": { + "optional": true + } + } + }, + "node_modules/jest-config": { + "version": "29.7.0", + "resolved": "https://registry.npmjs.org/jest-config/-/jest-config-29.7.0.tgz", + "integrity": "sha512-uXbpfeQ7R6TZBqI3/TxCU4q4ttk3u0PJeC+E0zbfSoSjq6bJ7buBPxzQPL0ifrkY4DNu4JUdk0ImlBUYi840eQ==", + "dev": true, + "dependencies": { + "@babel/core": "^7.11.6", + "@jest/test-sequencer": "^29.7.0", + "@jest/types": "^29.6.3", + "babel-jest": "^29.7.0", + "chalk": "^4.0.0", + "ci-info": "^3.2.0", + "deepmerge": "^4.2.2", + "glob": "^7.1.3", + "graceful-fs": "^4.2.9", + "jest-circus": "^29.7.0", + "jest-environment-node": "^29.7.0", + "jest-get-type": "^29.6.3", + "jest-regex-util": "^29.6.3", + "jest-resolve": "^29.7.0", + "jest-runner": "^29.7.0", + "jest-util": "^29.7.0", + "jest-validate": "^29.7.0", + "micromatch": "^4.0.4", + "parse-json": "^5.2.0", + "pretty-format": "^29.7.0", + "slash": "^3.0.0", + "strip-json-comments": "^3.1.1" + }, + "engines": { + "node": "^14.15.0 || ^16.10.0 || >=18.0.0" + }, + "peerDependencies": { + "@types/node": "*", + "ts-node": ">=9.0.0" + }, + "peerDependenciesMeta": { + "@types/node": { + "optional": true + }, + "ts-node": { + "optional": true + } + } + }, + "node_modules/jest-config/node_modules/ansi-styles": { + "version": "5.2.0", + "resolved": "https://registry.npmjs.org/ansi-styles/-/ansi-styles-5.2.0.tgz", + "integrity": "sha512-Cxwpt2SfTzTtXcfOlzGEee8O+c+MmUgGrNiBcXnuWxuFJHe6a5Hz7qwhwe5OgaSYI0IJvkLqWX1ASG+cJOkEiA==", + "dev": true, + "engines": { + "node": ">=10" + }, + "funding": { + "url": "https://github.com/chalk/ansi-styles?sponsor=1" + } + }, + "node_modules/jest-config/node_modules/pretty-format": { + "version": "29.7.0", + "resolved": "https://registry.npmjs.org/pretty-format/-/pretty-format-29.7.0.tgz", + "integrity": "sha512-Pdlw/oPxN+aXdmM9R00JVC9WVFoCLTKJvDVLgmJ+qAffBMxsV85l/Lu7sNx4zSzPyoL2euImuEwHhOXdEgNFZQ==", + "dev": true, + "dependencies": { + "@jest/schemas": "^29.6.3", + "ansi-styles": "^5.0.0", + "react-is": "^18.0.0" + }, + "engines": { + "node": "^14.15.0 || ^16.10.0 || >=18.0.0" + } + }, + "node_modules/jest-diff": { + "version": "29.7.0", + "resolved": "https://registry.npmjs.org/jest-diff/-/jest-diff-29.7.0.tgz", + "integrity": "sha512-LMIgiIrhigmPrs03JHpxUh2yISK3vLFPkAodPeo0+BuF7wA2FoQbkEg1u8gBYBThncu7e1oEDUfIXVuTqLRUjw==", + "dev": true, + "dependencies": { + "chalk": "^4.0.0", + "diff-sequences": "^29.6.3", + "jest-get-type": "^29.6.3", + "pretty-format": "^29.7.0" + }, + "engines": { + "node": "^14.15.0 || ^16.10.0 || >=18.0.0" + } + }, + "node_modules/jest-diff/node_modules/ansi-styles": { + "version": "5.2.0", + "resolved": "https://registry.npmjs.org/ansi-styles/-/ansi-styles-5.2.0.tgz", + "integrity": "sha512-Cxwpt2SfTzTtXcfOlzGEee8O+c+MmUgGrNiBcXnuWxuFJHe6a5Hz7qwhwe5OgaSYI0IJvkLqWX1ASG+cJOkEiA==", + "dev": true, + "engines": { + "node": ">=10" + }, + "funding": { + "url": "https://github.com/chalk/ansi-styles?sponsor=1" + } + }, + "node_modules/jest-diff/node_modules/pretty-format": { + "version": "29.7.0", + "resolved": "https://registry.npmjs.org/pretty-format/-/pretty-format-29.7.0.tgz", + "integrity": "sha512-Pdlw/oPxN+aXdmM9R00JVC9WVFoCLTKJvDVLgmJ+qAffBMxsV85l/Lu7sNx4zSzPyoL2euImuEwHhOXdEgNFZQ==", + "dev": true, + "dependencies": { + "@jest/schemas": "^29.6.3", + "ansi-styles": "^5.0.0", + "react-is": "^18.0.0" + }, + "engines": { + "node": "^14.15.0 || ^16.10.0 || >=18.0.0" + } + }, + "node_modules/jest-docblock": { + "version": "29.7.0", + "resolved": "https://registry.npmjs.org/jest-docblock/-/jest-docblock-29.7.0.tgz", + "integrity": "sha512-q617Auw3A612guyaFgsbFeYpNP5t2aoUNLwBUbc/0kD1R4t9ixDbyFTHd1nok4epoVFpr7PmeWHrhvuV3XaJ4g==", + "dev": true, + "dependencies": { + "detect-newline": "^3.0.0" + }, + "engines": { + "node": "^14.15.0 || ^16.10.0 || >=18.0.0" + } + }, + "node_modules/jest-each": { + "version": "29.7.0", + "resolved": "https://registry.npmjs.org/jest-each/-/jest-each-29.7.0.tgz", + "integrity": "sha512-gns+Er14+ZrEoC5fhOfYCY1LOHHr0TI+rQUHZS8Ttw2l7gl+80eHc/gFf2Ktkw0+SIACDTeWvpFcv3B04VembQ==", + "dev": true, + "dependencies": { + "@jest/types": "^29.6.3", + "chalk": "^4.0.0", + "jest-get-type": "^29.6.3", + "jest-util": "^29.7.0", + "pretty-format": "^29.7.0" + }, + "engines": { + "node": "^14.15.0 || ^16.10.0 || >=18.0.0" + } + }, + "node_modules/jest-each/node_modules/ansi-styles": { + "version": "5.2.0", + "resolved": "https://registry.npmjs.org/ansi-styles/-/ansi-styles-5.2.0.tgz", + "integrity": "sha512-Cxwpt2SfTzTtXcfOlzGEee8O+c+MmUgGrNiBcXnuWxuFJHe6a5Hz7qwhwe5OgaSYI0IJvkLqWX1ASG+cJOkEiA==", + "dev": true, + "engines": { + "node": ">=10" + }, + "funding": { + "url": "https://github.com/chalk/ansi-styles?sponsor=1" + } + }, + "node_modules/jest-each/node_modules/pretty-format": { + "version": "29.7.0", + "resolved": "https://registry.npmjs.org/pretty-format/-/pretty-format-29.7.0.tgz", + "integrity": "sha512-Pdlw/oPxN+aXdmM9R00JVC9WVFoCLTKJvDVLgmJ+qAffBMxsV85l/Lu7sNx4zSzPyoL2euImuEwHhOXdEgNFZQ==", + "dev": true, + "dependencies": { + "@jest/schemas": "^29.6.3", + "ansi-styles": "^5.0.0", + "react-is": "^18.0.0" + }, + "engines": { + "node": "^14.15.0 || ^16.10.0 || >=18.0.0" + } + }, + "node_modules/jest-environment-node": { + "version": "29.7.0", + "resolved": "https://registry.npmjs.org/jest-environment-node/-/jest-environment-node-29.7.0.tgz", + "integrity": "sha512-DOSwCRqXirTOyheM+4d5YZOrWcdu0LNZ87ewUoywbcb2XR4wKgqiG8vNeYwhjFMbEkfju7wx2GYH0P2gevGvFw==", + "dev": true, + "dependencies": { + "@jest/environment": "^29.7.0", + "@jest/fake-timers": "^29.7.0", + "@jest/types": "^29.6.3", + "@types/node": "*", + "jest-mock": "^29.7.0", + "jest-util": "^29.7.0" + }, + "engines": { + "node": "^14.15.0 || ^16.10.0 || >=18.0.0" + } + }, + "node_modules/jest-get-type": { + "version": "29.6.3", + "resolved": "https://registry.npmjs.org/jest-get-type/-/jest-get-type-29.6.3.tgz", + "integrity": "sha512-zrteXnqYxfQh7l5FHyL38jL39di8H8rHoecLH3JNxH3BwOrBsNeabdap5e0I23lD4HHI8W5VFBZqG4Eaq5LNcw==", + "dev": true, + "engines": { + "node": "^14.15.0 || ^16.10.0 || >=18.0.0" + } + }, + "node_modules/jest-haste-map": { + "version": "29.7.0", + "resolved": "https://registry.npmjs.org/jest-haste-map/-/jest-haste-map-29.7.0.tgz", + "integrity": "sha512-fP8u2pyfqx0K1rGn1R9pyE0/KTn+G7PxktWidOBTqFPLYX0b9ksaMFkhK5vrS3DVun09pckLdlx90QthlW7AmA==", + "dev": true, + "dependencies": { + "@jest/types": "^29.6.3", + "@types/graceful-fs": "^4.1.3", + "@types/node": "*", + "anymatch": "^3.0.3", + "fb-watchman": "^2.0.0", + "graceful-fs": "^4.2.9", + "jest-regex-util": "^29.6.3", + "jest-util": "^29.7.0", + "jest-worker": "^29.7.0", + "micromatch": "^4.0.4", + "walker": "^1.0.8" + }, + "engines": { + "node": "^14.15.0 || ^16.10.0 || >=18.0.0" + }, + "optionalDependencies": { + "fsevents": "^2.3.2" + } + }, + "node_modules/jest-haste-map/node_modules/jest-worker": { + "version": "29.7.0", + "resolved": "https://registry.npmjs.org/jest-worker/-/jest-worker-29.7.0.tgz", + "integrity": "sha512-eIz2msL/EzL9UFTFFx7jBTkeZfku0yUAyZZZmJ93H2TYEiroIx2PQjEXcwYtYl8zXCxb+PAmA2hLIt/6ZEkPHw==", + "dev": true, + "dependencies": { + "@types/node": "*", + "jest-util": "^29.7.0", + "merge-stream": "^2.0.0", + "supports-color": "^8.0.0" + }, + "engines": { + "node": "^14.15.0 || ^16.10.0 || >=18.0.0" + } + }, + "node_modules/jest-haste-map/node_modules/supports-color": { + "version": "8.1.1", + "resolved": "https://registry.npmjs.org/supports-color/-/supports-color-8.1.1.tgz", + "integrity": "sha512-MpUEN2OodtUzxvKQl72cUF7RQ5EiHsGvSsVG0ia9c5RbWGL2CI4C7EpPS8UTBIplnlzZiNuV56w+FuNxy3ty2Q==", + "dev": true, + "dependencies": { + "has-flag": "^4.0.0" + }, + "engines": { + "node": ">=10" + }, + "funding": { + "url": "https://github.com/chalk/supports-color?sponsor=1" + } + }, + "node_modules/jest-leak-detector": { + "version": "29.7.0", + "resolved": "https://registry.npmjs.org/jest-leak-detector/-/jest-leak-detector-29.7.0.tgz", + "integrity": "sha512-kYA8IJcSYtST2BY9I+SMC32nDpBT3J2NvWJx8+JCuCdl/CR1I4EKUJROiP8XtCcxqgTTBGJNdbB1A8XRKbTetw==", + "dev": true, + "dependencies": { + "jest-get-type": "^29.6.3", + "pretty-format": "^29.7.0" + }, + "engines": { + "node": "^14.15.0 || ^16.10.0 || >=18.0.0" + } + }, + "node_modules/jest-leak-detector/node_modules/ansi-styles": { + "version": "5.2.0", + "resolved": "https://registry.npmjs.org/ansi-styles/-/ansi-styles-5.2.0.tgz", + "integrity": "sha512-Cxwpt2SfTzTtXcfOlzGEee8O+c+MmUgGrNiBcXnuWxuFJHe6a5Hz7qwhwe5OgaSYI0IJvkLqWX1ASG+cJOkEiA==", + "dev": true, + "engines": { + "node": ">=10" + }, + "funding": { + "url": "https://github.com/chalk/ansi-styles?sponsor=1" + } + }, + "node_modules/jest-leak-detector/node_modules/pretty-format": { + "version": "29.7.0", + "resolved": "https://registry.npmjs.org/pretty-format/-/pretty-format-29.7.0.tgz", + "integrity": "sha512-Pdlw/oPxN+aXdmM9R00JVC9WVFoCLTKJvDVLgmJ+qAffBMxsV85l/Lu7sNx4zSzPyoL2euImuEwHhOXdEgNFZQ==", + "dev": true, + "dependencies": { + "@jest/schemas": "^29.6.3", + "ansi-styles": "^5.0.0", + "react-is": "^18.0.0" + }, + "engines": { + "node": "^14.15.0 || ^16.10.0 || >=18.0.0" + } + }, + "node_modules/jest-matcher-utils": { + "version": "29.7.0", + "resolved": "https://registry.npmjs.org/jest-matcher-utils/-/jest-matcher-utils-29.7.0.tgz", + "integrity": "sha512-sBkD+Xi9DtcChsI3L3u0+N0opgPYnCRPtGcQYrgXmR+hmt/fYfWAL0xRXYU8eWOdfuLgBe0YCW3AFtnRLagq/g==", + "dev": true, + "dependencies": { + "chalk": "^4.0.0", + "jest-diff": "^29.7.0", + "jest-get-type": "^29.6.3", + "pretty-format": "^29.7.0" + }, + "engines": { + "node": "^14.15.0 || ^16.10.0 || >=18.0.0" + } + }, + "node_modules/jest-matcher-utils/node_modules/ansi-styles": { + "version": "5.2.0", + "resolved": "https://registry.npmjs.org/ansi-styles/-/ansi-styles-5.2.0.tgz", + "integrity": "sha512-Cxwpt2SfTzTtXcfOlzGEee8O+c+MmUgGrNiBcXnuWxuFJHe6a5Hz7qwhwe5OgaSYI0IJvkLqWX1ASG+cJOkEiA==", + "dev": true, + "engines": { + "node": ">=10" + }, + "funding": { + "url": "https://github.com/chalk/ansi-styles?sponsor=1" + } + }, + "node_modules/jest-matcher-utils/node_modules/pretty-format": { + "version": "29.7.0", + "resolved": "https://registry.npmjs.org/pretty-format/-/pretty-format-29.7.0.tgz", + "integrity": "sha512-Pdlw/oPxN+aXdmM9R00JVC9WVFoCLTKJvDVLgmJ+qAffBMxsV85l/Lu7sNx4zSzPyoL2euImuEwHhOXdEgNFZQ==", + "dev": true, + "dependencies": { + "@jest/schemas": "^29.6.3", + "ansi-styles": "^5.0.0", + "react-is": "^18.0.0" + }, + "engines": { + "node": "^14.15.0 || ^16.10.0 || >=18.0.0" + } + }, + "node_modules/jest-message-util": { + "version": "29.7.0", + "resolved": "https://registry.npmjs.org/jest-message-util/-/jest-message-util-29.7.0.tgz", + "integrity": "sha512-GBEV4GRADeP+qtB2+6u61stea8mGcOT4mCtrYISZwfu9/ISHFJ/5zOMXYbpBE9RsS5+Gb63DW4FgmnKJ79Kf6w==", + "dev": true, + "dependencies": { + "@babel/code-frame": "^7.12.13", + "@jest/types": "^29.6.3", + "@types/stack-utils": "^2.0.0", + "chalk": "^4.0.0", + "graceful-fs": "^4.2.9", + "micromatch": "^4.0.4", + "pretty-format": "^29.7.0", + "slash": "^3.0.0", + "stack-utils": "^2.0.3" + }, + "engines": { + "node": "^14.15.0 || ^16.10.0 || >=18.0.0" + } + }, + "node_modules/jest-message-util/node_modules/ansi-styles": { + "version": "5.2.0", + "resolved": "https://registry.npmjs.org/ansi-styles/-/ansi-styles-5.2.0.tgz", + "integrity": "sha512-Cxwpt2SfTzTtXcfOlzGEee8O+c+MmUgGrNiBcXnuWxuFJHe6a5Hz7qwhwe5OgaSYI0IJvkLqWX1ASG+cJOkEiA==", + "dev": true, + "engines": { + "node": ">=10" + }, + "funding": { + "url": "https://github.com/chalk/ansi-styles?sponsor=1" + } + }, + "node_modules/jest-message-util/node_modules/pretty-format": { + "version": "29.7.0", + "resolved": "https://registry.npmjs.org/pretty-format/-/pretty-format-29.7.0.tgz", + "integrity": "sha512-Pdlw/oPxN+aXdmM9R00JVC9WVFoCLTKJvDVLgmJ+qAffBMxsV85l/Lu7sNx4zSzPyoL2euImuEwHhOXdEgNFZQ==", + "dev": true, + "dependencies": { + "@jest/schemas": "^29.6.3", + "ansi-styles": "^5.0.0", + "react-is": "^18.0.0" + }, + "engines": { + "node": "^14.15.0 || ^16.10.0 || >=18.0.0" + } + }, + "node_modules/jest-mock": { + "version": "29.7.0", + "resolved": "https://registry.npmjs.org/jest-mock/-/jest-mock-29.7.0.tgz", + "integrity": "sha512-ITOMZn+UkYS4ZFh83xYAOzWStloNzJFO2s8DWrE4lhtGD+AorgnbkiKERe4wQVBydIGPx059g6riW5Btp6Llnw==", + "dev": true, + "dependencies": { + "@jest/types": "^29.6.3", + "@types/node": "*", + "jest-util": "^29.7.0" + }, + "engines": { + "node": "^14.15.0 || ^16.10.0 || >=18.0.0" + } + }, + "node_modules/jest-pnp-resolver": { + "version": "1.2.3", + "resolved": "https://registry.npmjs.org/jest-pnp-resolver/-/jest-pnp-resolver-1.2.3.tgz", + "integrity": "sha512-+3NpwQEnRoIBtx4fyhblQDPgJI0H1IEIkX7ShLUjPGA7TtUTvI1oiKi3SR4oBR0hQhQR80l4WAe5RrXBwWMA8w==", + "dev": true, + "engines": { + "node": ">=6" + }, + "peerDependencies": { + "jest-resolve": "*" + }, + "peerDependenciesMeta": { + "jest-resolve": { + "optional": true + } + } + }, + "node_modules/jest-regex-util": { + "version": "29.6.3", + "resolved": "https://registry.npmjs.org/jest-regex-util/-/jest-regex-util-29.6.3.tgz", + "integrity": "sha512-KJJBsRCyyLNWCNBOvZyRDnAIfUiRJ8v+hOBQYGn8gDyF3UegwiP4gwRR3/SDa42g1YbVycTidUF3rKjyLFDWbg==", + "dev": true, + "engines": { + "node": "^14.15.0 || ^16.10.0 || >=18.0.0" + } + }, + "node_modules/jest-resolve": { + "version": "29.7.0", + "resolved": "https://registry.npmjs.org/jest-resolve/-/jest-resolve-29.7.0.tgz", + "integrity": "sha512-IOVhZSrg+UvVAshDSDtHyFCCBUl/Q3AAJv8iZ6ZjnZ74xzvwuzLXid9IIIPgTnY62SJjfuupMKZsZQRsCvxEgA==", + "dev": true, + "dependencies": { + "chalk": "^4.0.0", + "graceful-fs": "^4.2.9", + "jest-haste-map": "^29.7.0", + "jest-pnp-resolver": "^1.2.2", + "jest-util": "^29.7.0", + "jest-validate": "^29.7.0", + "resolve": "^1.20.0", + "resolve.exports": "^2.0.0", + "slash": "^3.0.0" + }, + "engines": { + "node": "^14.15.0 || ^16.10.0 || >=18.0.0" + } + }, + "node_modules/jest-resolve-dependencies": { + "version": "29.7.0", + "resolved": "https://registry.npmjs.org/jest-resolve-dependencies/-/jest-resolve-dependencies-29.7.0.tgz", + "integrity": "sha512-un0zD/6qxJ+S0et7WxeI3H5XSe9lTBBR7bOHCHXkKR6luG5mwDDlIzVQ0V5cZCuoTgEdcdwzTghYkTWfubi+nA==", + "dev": true, + "dependencies": { + "jest-regex-util": "^29.6.3", + "jest-snapshot": "^29.7.0" + }, + "engines": { + "node": "^14.15.0 || ^16.10.0 || >=18.0.0" + } + }, + "node_modules/jest-runner": { + "version": "29.7.0", + "resolved": "https://registry.npmjs.org/jest-runner/-/jest-runner-29.7.0.tgz", + "integrity": "sha512-fsc4N6cPCAahybGBfTRcq5wFR6fpLznMg47sY5aDpsoejOcVYFb07AHuSnR0liMcPTgBsA3ZJL6kFOjPdoNipQ==", + "dev": true, + "dependencies": { + "@jest/console": "^29.7.0", + "@jest/environment": "^29.7.0", + "@jest/test-result": "^29.7.0", + "@jest/transform": "^29.7.0", + "@jest/types": "^29.6.3", + "@types/node": "*", + "chalk": "^4.0.0", + "emittery": "^0.13.1", + "graceful-fs": "^4.2.9", + "jest-docblock": "^29.7.0", + "jest-environment-node": "^29.7.0", + "jest-haste-map": "^29.7.0", + "jest-leak-detector": "^29.7.0", + "jest-message-util": "^29.7.0", + "jest-resolve": "^29.7.0", + "jest-runtime": "^29.7.0", + "jest-util": "^29.7.0", + "jest-watcher": "^29.7.0", + "jest-worker": "^29.7.0", + "p-limit": "^3.1.0", + "source-map-support": "0.5.13" + }, + "engines": { + "node": "^14.15.0 || ^16.10.0 || >=18.0.0" + } + }, + "node_modules/jest-runner/node_modules/jest-worker": { + "version": "29.7.0", + "resolved": "https://registry.npmjs.org/jest-worker/-/jest-worker-29.7.0.tgz", + "integrity": "sha512-eIz2msL/EzL9UFTFFx7jBTkeZfku0yUAyZZZmJ93H2TYEiroIx2PQjEXcwYtYl8zXCxb+PAmA2hLIt/6ZEkPHw==", + "dev": true, + "dependencies": { + "@types/node": "*", + "jest-util": "^29.7.0", + "merge-stream": "^2.0.0", + "supports-color": "^8.0.0" + }, + "engines": { + "node": "^14.15.0 || ^16.10.0 || >=18.0.0" + } + }, + "node_modules/jest-runner/node_modules/source-map-support": { + "version": "0.5.13", + "resolved": "https://registry.npmjs.org/source-map-support/-/source-map-support-0.5.13.tgz", + "integrity": "sha512-SHSKFHadjVA5oR4PPqhtAVdcBWwRYVd6g6cAXnIbRiIwc2EhPrTuKUBdSLvlEKyIP3GCf89fltvcZiP9MMFA1w==", + "dev": true, + "dependencies": { + "buffer-from": "^1.0.0", + "source-map": "^0.6.0" + } + }, + "node_modules/jest-runner/node_modules/supports-color": { + "version": "8.1.1", + "resolved": "https://registry.npmjs.org/supports-color/-/supports-color-8.1.1.tgz", + "integrity": "sha512-MpUEN2OodtUzxvKQl72cUF7RQ5EiHsGvSsVG0ia9c5RbWGL2CI4C7EpPS8UTBIplnlzZiNuV56w+FuNxy3ty2Q==", + "dev": true, + "dependencies": { + "has-flag": "^4.0.0" + }, + "engines": { + "node": ">=10" + }, + "funding": { + "url": "https://github.com/chalk/supports-color?sponsor=1" + } + }, + "node_modules/jest-runtime": { + "version": "29.7.0", + "resolved": "https://registry.npmjs.org/jest-runtime/-/jest-runtime-29.7.0.tgz", + "integrity": "sha512-gUnLjgwdGqW7B4LvOIkbKs9WGbn+QLqRQQ9juC6HndeDiezIwhDP+mhMwHWCEcfQ5RUXa6OPnFF8BJh5xegwwQ==", + "dev": true, + "dependencies": { + "@jest/environment": "^29.7.0", + "@jest/fake-timers": "^29.7.0", + "@jest/globals": "^29.7.0", + "@jest/source-map": "^29.6.3", + "@jest/test-result": "^29.7.0", + "@jest/transform": "^29.7.0", + "@jest/types": "^29.6.3", + "@types/node": "*", + "chalk": "^4.0.0", + "cjs-module-lexer": "^1.0.0", + "collect-v8-coverage": "^1.0.0", + "glob": "^7.1.3", + "graceful-fs": "^4.2.9", + "jest-haste-map": "^29.7.0", + "jest-message-util": "^29.7.0", + "jest-mock": "^29.7.0", + "jest-regex-util": "^29.6.3", + "jest-resolve": "^29.7.0", + "jest-snapshot": "^29.7.0", + "jest-util": "^29.7.0", + "slash": "^3.0.0", + "strip-bom": "^4.0.0" + }, + "engines": { + "node": "^14.15.0 || ^16.10.0 || >=18.0.0" + } + }, + "node_modules/jest-runtime/node_modules/strip-bom": { + "version": "4.0.0", + "resolved": "https://registry.npmjs.org/strip-bom/-/strip-bom-4.0.0.tgz", + "integrity": "sha512-3xurFv5tEgii33Zi8Jtp55wEIILR9eh34FAW00PZf+JnSsTmV/ioewSgQl97JHvgjoRGwPShsWm+IdrxB35d0w==", + "dev": true, + "engines": { + "node": ">=8" + } + }, + "node_modules/jest-snapshot": { + "version": "29.7.0", + "resolved": "https://registry.npmjs.org/jest-snapshot/-/jest-snapshot-29.7.0.tgz", + "integrity": "sha512-Rm0BMWtxBcioHr1/OX5YCP8Uov4riHvKPknOGs804Zg9JGZgmIBkbtlxJC/7Z4msKYVbIJtfU+tKb8xlYNfdkw==", + "dev": true, + "dependencies": { + "@babel/core": "^7.11.6", + "@babel/generator": "^7.7.2", + "@babel/plugin-syntax-jsx": "^7.7.2", + "@babel/plugin-syntax-typescript": "^7.7.2", + "@babel/types": "^7.3.3", + "@jest/expect-utils": "^29.7.0", + "@jest/transform": "^29.7.0", + "@jest/types": "^29.6.3", + "babel-preset-current-node-syntax": "^1.0.0", + "chalk": "^4.0.0", + "expect": "^29.7.0", + "graceful-fs": "^4.2.9", + "jest-diff": "^29.7.0", + "jest-get-type": "^29.6.3", + "jest-matcher-utils": "^29.7.0", + "jest-message-util": "^29.7.0", + "jest-util": "^29.7.0", + "natural-compare": "^1.4.0", + "pretty-format": "^29.7.0", + "semver": "^7.5.3" + }, + "engines": { + "node": "^14.15.0 || ^16.10.0 || >=18.0.0" + } + }, + "node_modules/jest-snapshot/node_modules/ansi-styles": { + "version": "5.2.0", + "resolved": "https://registry.npmjs.org/ansi-styles/-/ansi-styles-5.2.0.tgz", + "integrity": "sha512-Cxwpt2SfTzTtXcfOlzGEee8O+c+MmUgGrNiBcXnuWxuFJHe6a5Hz7qwhwe5OgaSYI0IJvkLqWX1ASG+cJOkEiA==", + "dev": true, + "engines": { + "node": ">=10" + }, + "funding": { + "url": "https://github.com/chalk/ansi-styles?sponsor=1" + } + }, + "node_modules/jest-snapshot/node_modules/pretty-format": { + "version": "29.7.0", + "resolved": "https://registry.npmjs.org/pretty-format/-/pretty-format-29.7.0.tgz", + "integrity": "sha512-Pdlw/oPxN+aXdmM9R00JVC9WVFoCLTKJvDVLgmJ+qAffBMxsV85l/Lu7sNx4zSzPyoL2euImuEwHhOXdEgNFZQ==", + "dev": true, + "dependencies": { + "@jest/schemas": "^29.6.3", + "ansi-styles": "^5.0.0", + "react-is": "^18.0.0" + }, + "engines": { + "node": "^14.15.0 || ^16.10.0 || >=18.0.0" + } + }, + "node_modules/jest-util": { + "version": "29.7.0", + "resolved": "https://registry.npmjs.org/jest-util/-/jest-util-29.7.0.tgz", + "integrity": "sha512-z6EbKajIpqGKU56y5KBUgy1dt1ihhQJgWzUlZHArA/+X2ad7Cb5iF+AK1EWVL/Bo7Rz9uurpqw6SiBCefUbCGA==", + "dev": true, + "dependencies": { + "@jest/types": "^29.6.3", + "@types/node": "*", + "chalk": "^4.0.0", + "ci-info": "^3.2.0", + "graceful-fs": "^4.2.9", + "picomatch": "^2.2.3" + }, + "engines": { + "node": "^14.15.0 || ^16.10.0 || >=18.0.0" + } + }, + "node_modules/jest-validate": { + "version": "29.7.0", + "resolved": "https://registry.npmjs.org/jest-validate/-/jest-validate-29.7.0.tgz", + "integrity": "sha512-ZB7wHqaRGVw/9hST/OuFUReG7M8vKeq0/J2egIGLdvjHCmYqGARhzXmtgi+gVeZ5uXFF219aOc3Ls2yLg27tkw==", + "dev": true, + "dependencies": { + "@jest/types": "^29.6.3", + "camelcase": "^6.2.0", + "chalk": "^4.0.0", + "jest-get-type": "^29.6.3", + "leven": "^3.1.0", + "pretty-format": "^29.7.0" + }, + "engines": { + "node": "^14.15.0 || ^16.10.0 || >=18.0.0" + } + }, + "node_modules/jest-validate/node_modules/ansi-styles": { + "version": "5.2.0", + "resolved": "https://registry.npmjs.org/ansi-styles/-/ansi-styles-5.2.0.tgz", + "integrity": "sha512-Cxwpt2SfTzTtXcfOlzGEee8O+c+MmUgGrNiBcXnuWxuFJHe6a5Hz7qwhwe5OgaSYI0IJvkLqWX1ASG+cJOkEiA==", + "dev": true, + "engines": { + "node": ">=10" + }, + "funding": { + "url": "https://github.com/chalk/ansi-styles?sponsor=1" + } + }, + "node_modules/jest-validate/node_modules/pretty-format": { + "version": "29.7.0", + "resolved": "https://registry.npmjs.org/pretty-format/-/pretty-format-29.7.0.tgz", + "integrity": "sha512-Pdlw/oPxN+aXdmM9R00JVC9WVFoCLTKJvDVLgmJ+qAffBMxsV85l/Lu7sNx4zSzPyoL2euImuEwHhOXdEgNFZQ==", + "dev": true, + "dependencies": { + "@jest/schemas": "^29.6.3", + "ansi-styles": "^5.0.0", + "react-is": "^18.0.0" + }, + "engines": { + "node": "^14.15.0 || ^16.10.0 || >=18.0.0" + } + }, + "node_modules/jest-watcher": { + "version": "29.7.0", + "resolved": "https://registry.npmjs.org/jest-watcher/-/jest-watcher-29.7.0.tgz", + "integrity": "sha512-49Fg7WXkU3Vl2h6LbLtMQ/HyB6rXSIX7SqvBLQmssRBGN9I0PNvPmAmCWSOY6SOvrjhI/F7/bGAv9RtnsPA03g==", + "dev": true, + "dependencies": { + "@jest/test-result": "^29.7.0", + "@jest/types": "^29.6.3", + "@types/node": "*", + "ansi-escapes": "^4.2.1", + "chalk": "^4.0.0", + "emittery": "^0.13.1", + "jest-util": "^29.7.0", + "string-length": "^4.0.1" + }, + "engines": { + "node": "^14.15.0 || ^16.10.0 || >=18.0.0" + } + }, "node_modules/jest-worker": { "version": "27.5.1", "resolved": "https://registry.npmjs.org/jest-worker/-/jest-worker-27.5.1.tgz", @@ -12059,6 +15286,133 @@ "js-yaml": "bin/js-yaml.js" } }, + "node_modules/jsdom": { + "version": "22.1.0", + "resolved": "https://registry.npmjs.org/jsdom/-/jsdom-22.1.0.tgz", + "integrity": "sha512-/9AVW7xNbsBv6GfWho4TTNjEo9fe6Zhf9O7s0Fhhr3u+awPwAJMKwAMXnkk5vBxflqLW9hTHX/0cs+P3gW+cQw==", + "dev": true, + "dependencies": { + "abab": "^2.0.6", + "cssstyle": "^3.0.0", + "data-urls": "^4.0.0", + "decimal.js": "^10.4.3", + "domexception": "^4.0.0", + "form-data": "^4.0.0", + "html-encoding-sniffer": "^3.0.0", + "http-proxy-agent": "^5.0.0", + "https-proxy-agent": "^5.0.1", + "is-potential-custom-element-name": "^1.0.1", + "nwsapi": "^2.2.4", + "parse5": "^7.1.2", + "rrweb-cssom": "^0.6.0", + "saxes": "^6.0.0", + "symbol-tree": "^3.2.4", + "tough-cookie": "^4.1.2", + "w3c-xmlserializer": "^4.0.0", + "webidl-conversions": "^7.0.0", + "whatwg-encoding": "^2.0.0", + "whatwg-mimetype": "^3.0.0", + "whatwg-url": "^12.0.1", + "ws": "^8.13.0", + "xml-name-validator": "^4.0.0" + }, + "engines": { + "node": ">=16" + }, + "peerDependencies": { + "canvas": "^2.5.0" + }, + "peerDependenciesMeta": { + "canvas": { + "optional": true + } + } + }, + "node_modules/jsdom/node_modules/agent-base": { + "version": "6.0.2", + "resolved": "https://registry.npmjs.org/agent-base/-/agent-base-6.0.2.tgz", + "integrity": "sha512-RZNwNclF7+MS/8bDg70amg32dyeZGZxiDuQmZxKLAlQjr3jGyLx+4Kkk58UO7D2QdgFIQCovuSuZESne6RG6XQ==", + "dev": true, + "dependencies": { + "debug": "4" + }, + "engines": { + "node": ">= 6.0.0" + } + }, + "node_modules/jsdom/node_modules/http-proxy-agent": { + "version": "5.0.0", + "resolved": "https://registry.npmjs.org/http-proxy-agent/-/http-proxy-agent-5.0.0.tgz", + "integrity": "sha512-n2hY8YdoRE1i7r6M0w9DIw5GgZN0G25P8zLCRQ8rjXtTU3vsNFBI/vWK/UIeE6g5MUUz6avwAPXmL6Fy9D/90w==", + "dev": true, + "dependencies": { + "@tootallnate/once": "2", + "agent-base": "6", + "debug": "4" + }, + "engines": { + "node": ">= 6" + } + }, + "node_modules/jsdom/node_modules/https-proxy-agent": { + "version": "5.0.1", + "resolved": "https://registry.npmjs.org/https-proxy-agent/-/https-proxy-agent-5.0.1.tgz", + "integrity": "sha512-dFcAjpTQFgoLMzC2VwU+C/CbS7uRL0lWmxDITmqm7C+7F0Odmj6s9l6alZc6AELXhrnggM2CeWSXHGOdX2YtwA==", + "dev": true, + "dependencies": { + "agent-base": "6", + "debug": "4" + }, + "engines": { + "node": ">= 6" + } + }, + "node_modules/jsdom/node_modules/parse5": { + "version": "7.1.2", + "resolved": "https://registry.npmjs.org/parse5/-/parse5-7.1.2.tgz", + "integrity": "sha512-Czj1WaSVpaoj0wbhMzLmWD69anp2WH7FXMB9n1Sy8/ZFF9jolSQVMu1Ij5WIyGmcBmhk7EOndpO4mIpihVqAXw==", + "dev": true, + "dependencies": { + "entities": "^4.4.0" + }, + "funding": { + "url": "https://github.com/inikulin/parse5?sponsor=1" + } + }, + "node_modules/jsdom/node_modules/tr46": { + "version": "4.1.1", + "resolved": "https://registry.npmjs.org/tr46/-/tr46-4.1.1.tgz", + "integrity": "sha512-2lv/66T7e5yNyhAAC4NaKe5nVavzuGJQVVtRYLyQ2OI8tsJ61PMLlelehb0wi2Hx6+hT/OJUWZcw8MjlSRnxvw==", + "dev": true, + "dependencies": { + "punycode": "^2.3.0" + }, + "engines": { + "node": ">=14" + } + }, + "node_modules/jsdom/node_modules/webidl-conversions": { + "version": "7.0.0", + "resolved": "https://registry.npmjs.org/webidl-conversions/-/webidl-conversions-7.0.0.tgz", + "integrity": "sha512-VwddBukDzu71offAQR975unBIGqfKZpM+8ZX6ySk8nYhVoo5CYaZyzt3YBvYtRtO+aoGlqxPg/B87NGVZ/fu6g==", + "dev": true, + "engines": { + "node": ">=12" + } + }, + "node_modules/jsdom/node_modules/whatwg-url": { + "version": "12.0.1", + "resolved": "https://registry.npmjs.org/whatwg-url/-/whatwg-url-12.0.1.tgz", + "integrity": "sha512-Ed/LrqB8EPlGxjS+TrsXcpUond1mhccS3pchLhzSgPCnTimUCKj3IZE75pAs5m6heB2U2TMerKFUXheyHY+VDQ==", + "dev": true, + "dependencies": { + "tr46": "^4.1.1", + "webidl-conversions": "^7.0.0" + }, + "engines": { + "node": ">=14" + } + }, "node_modules/jsesc": { "version": "2.5.2", "license": "MIT", @@ -12133,6 +15487,15 @@ "npm": ">=6" } }, + "node_modules/jssha": { + "version": "3.2.0", + "resolved": "https://registry.npmjs.org/jssha/-/jssha-3.2.0.tgz", + "integrity": "sha512-QuruyBENDWdN4tZwJbQq7/eAK85FqrI4oDbXjy5IBhYD+2pTJyBUWZe8ctWaCkrV0gy6AaelgOZZBMeswEa/6Q==", + "dev": true, + "engines": { + "node": "*" + } + }, "node_modules/jwa": { "version": "1.4.1", "resolved": "https://registry.npmjs.org/jwa/-/jwa-1.4.1.tgz", @@ -12407,6 +15770,15 @@ "safe-buffer": "~5.1.0" } }, + "node_modules/leven": { + "version": "3.1.0", + "resolved": "https://registry.npmjs.org/leven/-/leven-3.1.0.tgz", + "integrity": "sha512-qsda+H8jTaUaN/x5vzW2rzc+8Rw4TAQ/4KjB46IwK5VH+IlVeeeje/EoZRpiXvIqjFgK84QffqPztGI3VBLG1A==", + "dev": true, + "engines": { + "node": ">=6" + } + }, "node_modules/levn": { "version": "0.4.1", "devOptional": true, @@ -12676,6 +16048,28 @@ "resolved": "https://registry.npmjs.org/lodash.uniq/-/lodash.uniq-4.5.0.tgz", "integrity": "sha512-xfBaXQd9ryd9dlSDvnvI0lvxfLJlYAZzXomUYzLKtUeOQvOP5piqAWuGtrhWeqaXK9hhoM/iyJc5AV+XfsX3HQ==" }, + "node_modules/log-symbols": { + "version": "4.1.0", + "resolved": "https://registry.npmjs.org/log-symbols/-/log-symbols-4.1.0.tgz", + "integrity": "sha512-8XPvpAA8uyhfteu8pIvQxpJZ7SYYdpUivZpGy6sFsBuKRY/7rQGavedeB8aK+Zkyq6upMFVL/9AW6vOYzfRyLg==", + "dev": true, + "dependencies": { + "chalk": "^4.1.0", + "is-unicode-supported": "^0.1.0" + }, + "engines": { + "node": ">=10" + }, + "funding": { + "url": "https://github.com/sponsors/sindresorhus" + } + }, + "node_modules/long": { + "version": "4.0.0", + "resolved": "https://registry.npmjs.org/long/-/long-4.0.0.tgz", + "integrity": "sha512-XsP+KhQif4bjX1kbuSiySJFNAehNxgLb6hPRGJ9QsUr8ajHkuXGdrHmFUTUUXhDwVX2R5bY4JNZEwbUiMhV+MA==", + "dev": true + }, "node_modules/longest-streak": { "version": "3.1.0", "resolved": "https://registry.npmjs.org/longest-streak/-/longest-streak-3.1.0.tgz", @@ -12694,6 +16088,14 @@ "get-func-name": "^2.0.1" } }, + "node_modules/lower-case": { + "version": "2.0.2", + "resolved": "https://registry.npmjs.org/lower-case/-/lower-case-2.0.2.tgz", + "integrity": "sha512-7fm3l3NAF9WfN6W3JOmf5drwpVqX78JtoGJ3A6W0a6ZnldM41w2fV5D490psKFTpMds8TJse/eHLFFsNHHjHgg==", + "dependencies": { + "tslib": "^2.0.3" + } + }, "node_modules/lru-cache": { "version": "5.1.1", "license": "ISC", @@ -12747,9 +16149,17 @@ }, "node_modules/make-error": { "version": "1.3.6", - "license": "ISC", - "optional": true, - "peer": true + "devOptional": true, + "license": "ISC" + }, + "node_modules/makeerror": { + "version": "1.0.12", + "resolved": "https://registry.npmjs.org/makeerror/-/makeerror-1.0.12.tgz", + "integrity": "sha512-JmqCvUhmt43madlpFzG4BQzG2Z3m6tvQDNKdClZnO3VbIudJYmxsT0FNJMeiB2+JTSlTQTSbU8QdesVmwJcmLg==", + "dev": true, + "dependencies": { + "tmpl": "1.0.5" + } }, "node_modules/map-obj": { "version": "4.3.0", @@ -13673,6 +17083,36 @@ "safe-buffer": "~5.1.0" } }, + "node_modules/memorystream": { + "version": "0.3.1", + "resolved": "https://registry.npmjs.org/memorystream/-/memorystream-0.3.1.tgz", + "integrity": "sha512-S3UwM3yj5mtUSEfP41UZmt/0SCoVYUcU1rkXv+BQ5Ig8ndL4sPoJNBUJERafdPb5jjHJGuMgytgKvKIf58XNBw==", + "dev": true, + "engines": { + "node": ">= 0.10.0" + } + }, + "node_modules/merge-options": { + "version": "3.0.4", + "resolved": "https://registry.npmjs.org/merge-options/-/merge-options-3.0.4.tgz", + "integrity": "sha512-2Sug1+knBjkaMsMgf1ctR1Ujx+Ayku4EdJN4Z+C2+JzoeF7A3OZ9KM2GY0CpQS51NR61LTurMJrRKPhSs3ZRTQ==", + "dev": true, + "dependencies": { + "is-plain-obj": "^2.1.0" + }, + "engines": { + "node": ">=10" + } + }, + "node_modules/merge-options/node_modules/is-plain-obj": { + "version": "2.1.0", + "resolved": "https://registry.npmjs.org/is-plain-obj/-/is-plain-obj-2.1.0.tgz", + "integrity": "sha512-YWnfyRwxL/+SsrWYfOpUtz5b3YD+nyfkHvjbcanzk8zgyO4ASD67uVMRt8k5bM4lLMDnXfriRhOpemw+NfT1eA==", + "dev": true, + "engines": { + "node": ">=8" + } + }, "node_modules/merge-stream": { "version": "2.0.0", "license": "MIT" @@ -15391,6 +18831,27 @@ "integrity": "sha512-ckmWDJjphvd/FvZawgygcUeQCxzvohjFO5RxTjj4eq8kw359gFF3E1brjfI+viLMxss5JrHTDRHZvu2/tuy0Qg==", "devOptional": true }, + "node_modules/multiformats": { + "version": "9.9.0", + "resolved": "https://registry.npmjs.org/multiformats/-/multiformats-9.9.0.tgz", + "integrity": "sha512-HoMUjhH9T8DDBNT+6xzkrd9ga/XiBI4xLr58LJACwK6G3HTOPeMz4nB4KJs33L2BelrIJa7P0VuNaVF3hMYfjg==", + "dev": true + }, + "node_modules/murmurhash3js-revisited": { + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/murmurhash3js-revisited/-/murmurhash3js-revisited-3.0.0.tgz", + "integrity": "sha512-/sF3ee6zvScXMb1XFJ8gDsSnY+X8PbOyjIuBhtgis10W2Jx4ZjIhikUCIF9c4gpJxVnQIsPAFrSwTCuAjicP6g==", + "dev": true, + "engines": { + "node": ">=8.0.0" + } + }, + "node_modules/mute-stream": { + "version": "0.0.8", + "resolved": "https://registry.npmjs.org/mute-stream/-/mute-stream-0.0.8.tgz", + "integrity": "sha512-nnbWWOkoWyUsTjKrhgD0dcz22mdkSnpYqbEjIm2nhwhuxlSkpywJmBo8h0ZqJdkp73mb90SssHkN4rsRaBAfAA==", + "dev": true + }, "node_modules/mz": { "version": "2.7.0", "resolved": "https://registry.npmjs.org/mz/-/mz-2.7.0.tgz", @@ -15943,6 +19404,15 @@ "url": "https://github.com/sponsors/sindresorhus" } }, + "node_modules/no-case": { + "version": "3.0.4", + "resolved": "https://registry.npmjs.org/no-case/-/no-case-3.0.4.tgz", + "integrity": "sha512-fgAN3jGAh+RoxUGZHTSOLJIqUc2wmoBwGR4tbpNAKmmovFoWq0OdRkb0VkldReO2a2iBT/OEulG9XSUc10r3zg==", + "dependencies": { + "lower-case": "^2.0.2", + "tslib": "^2.0.3" + } + }, "node_modules/node-addon-api": { "version": "7.0.0", "resolved": "https://registry.npmjs.org/node-addon-api/-/node-addon-api-7.0.0.tgz", @@ -16150,6 +19620,21 @@ } } }, + "node_modules/node-inspect-extracted": { + "version": "2.0.2", + "resolved": "https://registry.npmjs.org/node-inspect-extracted/-/node-inspect-extracted-2.0.2.tgz", + "integrity": "sha512-8qm9+tu/GmbA/uWQRs6ad8KstyhH94a0pXpRVGHaJ9wHlJbetCYoCwXbKILaaMcE+wgbgpOpzcCnipkL8vTqxA==", + "dev": true, + "engines": { + "node": ">=14" + } + }, + "node_modules/node-int64": { + "version": "0.4.0", + "resolved": "https://registry.npmjs.org/node-int64/-/node-int64-0.4.0.tgz", + "integrity": "sha512-O5lz91xSOeoXP6DulyHfllpq+Eg00MWitZIbtPfoSEvqIHdl5gfcY6hYzDWnj0qD5tz52PI08u9qUvSVeUBeHw==", + "dev": true + }, "node_modules/node-releases": { "version": "2.0.13", "license": "MIT" @@ -16210,6 +19695,182 @@ "node": ">=0.10.0" } }, + "node_modules/npm-run-all2": { + "version": "6.1.1", + "resolved": "https://registry.npmjs.org/npm-run-all2/-/npm-run-all2-6.1.1.tgz", + "integrity": "sha512-lWLbkPZ5BSdXtN8lR+0rc8caKoPdymycpZksyDEC9MOBvfdwTXZ0uVhb7bMcGeXv2/BKtfQuo6Zn3zfc8rxNXA==", + "dev": true, + "dependencies": { + "ansi-styles": "^6.2.1", + "cross-spawn": "^7.0.3", + "memorystream": "^0.3.1", + "minimatch": "^9.0.0", + "pidtree": "^0.6.0", + "read-pkg": "^8.0.0", + "shell-quote": "^1.7.3" + }, + "bin": { + "npm-run-all": "bin/npm-run-all/index.js", + "npm-run-all2": "bin/npm-run-all/index.js", + "run-p": "bin/run-p/index.js", + "run-s": "bin/run-s/index.js" + }, + "engines": { + "node": "^14.18.0 || >=16.0.0", + "npm": ">= 8" + } + }, + "node_modules/npm-run-all2/node_modules/ansi-styles": { + "version": "6.2.1", + "resolved": "https://registry.npmjs.org/ansi-styles/-/ansi-styles-6.2.1.tgz", + "integrity": "sha512-bN798gFfQX+viw3R7yrGWRqnrN2oRkEkUjjl4JNn4E8GxxbjtG3FbrEIIY3l8/hrwUwIeCZvi4QuOTP4MErVug==", + "dev": true, + "engines": { + "node": ">=12" + }, + "funding": { + "url": "https://github.com/chalk/ansi-styles?sponsor=1" + } + }, + "node_modules/npm-run-all2/node_modules/brace-expansion": { + "version": "2.0.1", + "resolved": "https://registry.npmjs.org/brace-expansion/-/brace-expansion-2.0.1.tgz", + "integrity": "sha512-XnAIvQ8eM+kC6aULx6wuQiwVsnzsi9d3WxzV3FpWTGA19F621kwdbsAcFKXgKUHZWsy+mY6iL1sHTxWEFCytDA==", + "dev": true, + "dependencies": { + "balanced-match": "^1.0.0" + } + }, + "node_modules/npm-run-all2/node_modules/hosted-git-info": { + "version": "7.0.1", + "resolved": "https://registry.npmjs.org/hosted-git-info/-/hosted-git-info-7.0.1.tgz", + "integrity": "sha512-+K84LB1DYwMHoHSgaOY/Jfhw3ucPmSET5v98Ke/HdNSw4a0UktWzyW1mjhjpuxxTqOOsfWT/7iVshHmVZ4IpOA==", + "dev": true, + "dependencies": { + "lru-cache": "^10.0.1" + }, + "engines": { + "node": "^16.14.0 || >=18.0.0" + } + }, + "node_modules/npm-run-all2/node_modules/json-parse-even-better-errors": { + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/json-parse-even-better-errors/-/json-parse-even-better-errors-3.0.0.tgz", + "integrity": "sha512-iZbGHafX/59r39gPwVPRBGw0QQKnA7tte5pSMrhWOW7swGsVvVTjmfyAV9pNqk8YGT7tRCdxRu8uzcgZwoDooA==", + "dev": true, + "engines": { + "node": "^14.17.0 || ^16.13.0 || >=18.0.0" + } + }, + "node_modules/npm-run-all2/node_modules/lines-and-columns": { + "version": "2.0.4", + "resolved": "https://registry.npmjs.org/lines-and-columns/-/lines-and-columns-2.0.4.tgz", + "integrity": "sha512-wM1+Z03eypVAVUCE7QdSqpVIvelbOakn1M0bPDoA4SGWPx3sNDVUiMo3L6To6WWGClB7VyXnhQ4Sn7gxiJbE6A==", + "dev": true, + "engines": { + "node": "^12.20.0 || ^14.13.1 || >=16.0.0" + } + }, + "node_modules/npm-run-all2/node_modules/lru-cache": { + "version": "10.0.3", + "resolved": "https://registry.npmjs.org/lru-cache/-/lru-cache-10.0.3.tgz", + "integrity": "sha512-B7gr+F6MkqB3uzINHXNctGieGsRTMwIBgxkp0yq/5BwcuDzD4A8wQpHQW6vDAm1uKSLQghmRdD9sKqf2vJ1cEg==", + "dev": true, + "engines": { + "node": "14 || >=16.14" + } + }, + "node_modules/npm-run-all2/node_modules/minimatch": { + "version": "9.0.3", + "resolved": "https://registry.npmjs.org/minimatch/-/minimatch-9.0.3.tgz", + "integrity": "sha512-RHiac9mvaRw0x3AYRgDC1CxAP7HTcNrrECeA8YYJeWnpo+2Q5CegtZjaotWTWxDG3UeGA1coE05iH1mPjT/2mg==", + "dev": true, + "dependencies": { + "brace-expansion": "^2.0.1" + }, + "engines": { + "node": ">=16 || 14 >=14.17" + }, + "funding": { + "url": "https://github.com/sponsors/isaacs" + } + }, + "node_modules/npm-run-all2/node_modules/normalize-package-data": { + "version": "6.0.0", + "resolved": "https://registry.npmjs.org/normalize-package-data/-/normalize-package-data-6.0.0.tgz", + "integrity": "sha512-UL7ELRVxYBHBgYEtZCXjxuD5vPxnmvMGq0jp/dGPKKrN7tfsBh2IY7TlJ15WWwdjRWD3RJbnsygUurTK3xkPkg==", + "dev": true, + "dependencies": { + "hosted-git-info": "^7.0.0", + "is-core-module": "^2.8.1", + "semver": "^7.3.5", + "validate-npm-package-license": "^3.0.4" + }, + "engines": { + "node": "^16.14.0 || >=18.0.0" + } + }, + "node_modules/npm-run-all2/node_modules/parse-json": { + "version": "7.1.1", + "resolved": "https://registry.npmjs.org/parse-json/-/parse-json-7.1.1.tgz", + "integrity": "sha512-SgOTCX/EZXtZxBE5eJ97P4yGM5n37BwRU+YMsH4vNzFqJV/oWFXXCmwFlgWUM4PrakybVOueJJ6pwHqSVhTFDw==", + "dev": true, + "dependencies": { + "@babel/code-frame": "^7.21.4", + "error-ex": "^1.3.2", + "json-parse-even-better-errors": "^3.0.0", + "lines-and-columns": "^2.0.3", + "type-fest": "^3.8.0" + }, + "engines": { + "node": ">=16" + }, + "funding": { + "url": "https://github.com/sponsors/sindresorhus" + } + }, + "node_modules/npm-run-all2/node_modules/parse-json/node_modules/type-fest": { + "version": "3.13.1", + "resolved": "https://registry.npmjs.org/type-fest/-/type-fest-3.13.1.tgz", + "integrity": "sha512-tLq3bSNx+xSpwvAJnzrK0Ep5CLNWjvFTOp71URMaAEWBfRb9nnJiBoUe0tF8bI4ZFO3omgBR6NvnbzVUT3Ly4g==", + "dev": true, + "engines": { + "node": ">=14.16" + }, + "funding": { + "url": "https://github.com/sponsors/sindresorhus" + } + }, + "node_modules/npm-run-all2/node_modules/read-pkg": { + "version": "8.1.0", + "resolved": "https://registry.npmjs.org/read-pkg/-/read-pkg-8.1.0.tgz", + "integrity": "sha512-PORM8AgzXeskHO/WEv312k9U03B8K9JSiWF/8N9sUuFjBa+9SF2u6K7VClzXwDXab51jCd8Nd36CNM+zR97ScQ==", + "dev": true, + "dependencies": { + "@types/normalize-package-data": "^2.4.1", + "normalize-package-data": "^6.0.0", + "parse-json": "^7.0.0", + "type-fest": "^4.2.0" + }, + "engines": { + "node": ">=16" + }, + "funding": { + "url": "https://github.com/sponsors/sindresorhus" + } + }, + "node_modules/npm-run-all2/node_modules/type-fest": { + "version": "4.8.1", + "resolved": "https://registry.npmjs.org/type-fest/-/type-fest-4.8.1.tgz", + "integrity": "sha512-ShaaYnjf+0etG8W/FumARKMjjIToy/haCaTjN2dvcewOSoNqCQzdgG7m2JVOlM5qndGTHjkvsrWZs+k/2Z7E0Q==", + "dev": true, + "engines": { + "node": ">=16" + }, + "funding": { + "url": "https://github.com/sponsors/sindresorhus" + } + }, "node_modules/npm-run-path": { "version": "4.0.1", "license": "MIT", @@ -16242,6 +19903,26 @@ "url": "https://github.com/fb55/nth-check?sponsor=1" } }, + "node_modules/number-to-bn": { + "version": "1.7.0", + "resolved": "https://registry.npmjs.org/number-to-bn/-/number-to-bn-1.7.0.tgz", + "integrity": "sha512-wsJ9gfSz1/s4ZsJN01lyonwuxA1tml6X1yBDnfpMglypcBRFZZkus26EdPSlqS5GJfYddVZa22p3VNb3z5m5Ig==", + "dev": true, + "dependencies": { + "bn.js": "4.11.6", + "strip-hex-prefix": "1.0.0" + }, + "engines": { + "node": ">=6.5.0", + "npm": ">=3" + } + }, + "node_modules/number-to-bn/node_modules/bn.js": { + "version": "4.11.6", + "resolved": "https://registry.npmjs.org/bn.js/-/bn.js-4.11.6.tgz", + "integrity": "sha512-XWwnNNFCuuSQ0m3r3C4LE3EiORltHd9M05pq6FOlVeiophzRbMo50Sbz1ehl8K3Z+jw9+vmgnXefY1hz8X+2wA==", + "dev": true + }, "node_modules/nuxi": { "version": "3.6.5", "resolved": "https://registry.npmjs.org/nuxi/-/nuxi-3.6.5.tgz", @@ -16461,6 +20142,12 @@ "url": "https://github.com/sponsors/sindresorhus" } }, + "node_modules/nwsapi": { + "version": "2.2.7", + "resolved": "https://registry.npmjs.org/nwsapi/-/nwsapi-2.2.7.tgz", + "integrity": "sha512-ub5E4+FBPKwAZx0UwIQOjYWGHTEq5sPqHQNRN8Z9e4A7u3Tj1weLJsL59yH9vmvqEtBHaOmT6cYQKIZOxp35FQ==", + "dev": true + }, "node_modules/nypm": { "version": "0.2.2", "resolved": "https://registry.npmjs.org/nypm/-/nypm-0.2.2.tgz", @@ -16713,6 +20400,15 @@ "resolved": "https://registry.npmjs.org/ohash/-/ohash-1.1.3.tgz", "integrity": "sha512-zuHHiGTYTA1sYJ/wZN+t5HKZaH23i4yI1HMwbuXm24Nid7Dv0KcuRlKoNKS9UNfAVSBlnGLcuQrnOKWOZoEGaw==" }, + "node_modules/ohm-js": { + "version": "16.5.0", + "resolved": "https://registry.npmjs.org/ohm-js/-/ohm-js-16.5.0.tgz", + "integrity": "sha512-OXuB3g1cdP6vCyaGziLmihLkBrtfH9H9jmYp5nRqad093KVzkUSi062IVv5l+3SB/HIbMyDvBqhgR3Q3S+EEnw==", + "dev": true, + "engines": { + "node": ">=0.12.1" + } + }, "node_modules/on-finished": { "version": "2.4.1", "resolved": "https://registry.npmjs.org/on-finished/-/on-finished-2.4.1.tgz", @@ -16822,6 +20518,29 @@ "node": ">= 0.8.0" } }, + "node_modules/ora": { + "version": "5.4.1", + "resolved": "https://registry.npmjs.org/ora/-/ora-5.4.1.tgz", + "integrity": "sha512-5b6Y85tPxZZ7QytO+BQzysW31HJku27cRIlkbAXaNx+BdcVi+LlRFmVXzeF6a7JCwJpyw5c4b+YSVImQIrBpuQ==", + "dev": true, + "dependencies": { + "bl": "^4.1.0", + "chalk": "^4.1.0", + "cli-cursor": "^3.1.0", + "cli-spinners": "^2.5.0", + "is-interactive": "^1.0.0", + "is-unicode-supported": "^0.1.0", + "log-symbols": "^4.1.0", + "strip-ansi": "^6.0.0", + "wcwidth": "^1.0.1" + }, + "engines": { + "node": ">=10" + }, + "funding": { + "url": "https://github.com/sponsors/sindresorhus" + } + }, "node_modules/os-tmpdir": { "version": "1.0.2", "resolved": "https://registry.npmjs.org/os-tmpdir/-/os-tmpdir-1.0.2.tgz", @@ -16922,6 +20641,15 @@ "node": ">= 14" } }, + "node_modules/param-case": { + "version": "3.0.4", + "resolved": "https://registry.npmjs.org/param-case/-/param-case-3.0.4.tgz", + "integrity": "sha512-RXlj7zCYokReqWpOPH9oYivUzLYZ5vAPIfEmCTNViosC78F8F0H9y7T7gG2M39ymgutxF5gcFEsyZQSph9Bp3A==", + "dependencies": { + "dot-case": "^3.0.4", + "tslib": "^2.0.3" + } + }, "node_modules/parent-module": { "version": "1.0.1", "license": "MIT", @@ -17013,12 +20741,30 @@ "node": ">= 0.8" } }, + "node_modules/pascal-case": { + "version": "3.1.2", + "resolved": "https://registry.npmjs.org/pascal-case/-/pascal-case-3.1.2.tgz", + "integrity": "sha512-uWlGT3YSnK9x3BQJaOdcZwrnV6hPpd8jFH1/ucpiLRPh/2zCVJKS19E4GvYHvaCcACn3foXZ0cLB9Wrx1KGe5g==", + "dependencies": { + "no-case": "^3.0.4", + "tslib": "^2.0.3" + } + }, "node_modules/path-browserify": { "version": "1.0.1", "resolved": "https://registry.npmjs.org/path-browserify/-/path-browserify-1.0.1.tgz", "integrity": "sha512-b7uo2UCUOYZcnF/3ID0lulOJi/bafxa1xPe7ZPsammBSpjSWQkjNxlt635YGS2MiR9GjvuXCtz2emr3jbsz98g==", "devOptional": true }, + "node_modules/path-case": { + "version": "3.0.4", + "resolved": "https://registry.npmjs.org/path-case/-/path-case-3.0.4.tgz", + "integrity": "sha512-qO4qCFjXqVTrcbPt/hQfhTQ+VhFsqNKOPtytgNKkKxSoEp3XPUQ8ObFuePylOIok5gjn69ry8XiULxCwot3Wfg==", + "dependencies": { + "dot-case": "^3.0.4", + "tslib": "^2.0.3" + } + }, "node_modules/path-exists": { "version": "4.0.0", "license": "MIT", @@ -17040,6 +20786,15 @@ "node": ">=8" } }, + "node_modules/path-normalize": { + "version": "6.0.12", + "resolved": "https://registry.npmjs.org/path-normalize/-/path-normalize-6.0.12.tgz", + "integrity": "sha512-/lgDQDNQVtfOCKpQ9/Zr64/pT4OWmCiHDBtHCnJO/jkxXmnETI2Bes/E3y9yDbplYFMFvjRPSINfPvYxVrxEYA==", + "dev": true, + "engines": { + "node": ">=16.0.0" + } + }, "node_modules/path-parse": { "version": "1.0.7", "license": "MIT" @@ -17117,6 +20872,18 @@ "url": "https://github.com/sponsors/jonschlinkert" } }, + "node_modules/pidtree": { + "version": "0.6.0", + "resolved": "https://registry.npmjs.org/pidtree/-/pidtree-0.6.0.tgz", + "integrity": "sha512-eG2dWTVw5bzqGRztnHExczNxt5VGsE6OwTeCG3fdUf9KBsZzO3R5OIIIzWR+iZA0NtZ+RDVdaoE2dK1cn6jH4g==", + "dev": true, + "bin": { + "pidtree": "bin/pidtree.js" + }, + "engines": { + "node": ">=0.10" + } + }, "node_modules/pify": { "version": "2.3.0", "resolved": "https://registry.npmjs.org/pify/-/pify-2.3.0.tgz", @@ -18107,6 +21874,12 @@ "resolved": "https://registry.npmjs.org/postcss-value-parser/-/postcss-value-parser-4.2.0.tgz", "integrity": "sha512-1NNCs6uurfkVbeXG4S8JFT9t19m45ICnif8zWLd5oPSZ50QnwMfK+H3jv408d4jw/7Bttv5axS5IiHoLaVNHeQ==" }, + "node_modules/prando": { + "version": "6.0.1", + "resolved": "https://registry.npmjs.org/prando/-/prando-6.0.1.tgz", + "integrity": "sha512-ghUWxQ1T9IJmPu6eshc3VU0OwveUtXQ33ZLXYUcz1Oc5ppKLDXKp0TBDj6b0epwhEctzcQSNGR2iHyvQSn4W5A==", + "dev": true + }, "node_modules/preferred-pm": { "version": "3.1.2", "resolved": "https://registry.npmjs.org/preferred-pm/-/preferred-pm-3.1.2.tgz", @@ -18240,6 +22013,32 @@ "integrity": "sha512-vtK/94akxsTMhe0/cbfpR+syPuszcuwhqVjJq26CuNDgFGj682oRBXOP5MJpv2r7JtE8MsiepGIqvvOTBwn2vA==", "dev": true }, + "node_modules/protobufjs": { + "version": "6.11.4", + "resolved": "https://registry.npmjs.org/protobufjs/-/protobufjs-6.11.4.tgz", + "integrity": "sha512-5kQWPaJHi1WoCpjTGszzQ32PG2F4+wRY6BmAT4Vfw56Q2FZ4YZzK20xUYQH4YkfehY1e6QSICrJquM6xXZNcrw==", + "dev": true, + "hasInstallScript": true, + "dependencies": { + "@protobufjs/aspromise": "^1.1.2", + "@protobufjs/base64": "^1.1.2", + "@protobufjs/codegen": "^2.0.4", + "@protobufjs/eventemitter": "^1.1.0", + "@protobufjs/fetch": "^1.1.0", + "@protobufjs/float": "^1.0.2", + "@protobufjs/inquire": "^1.1.0", + "@protobufjs/path": "^1.1.2", + "@protobufjs/pool": "^1.1.0", + "@protobufjs/utf8": "^1.1.0", + "@types/long": "^4.0.1", + "@types/node": ">=13.7.0", + "long": "^4.0.0" + }, + "bin": { + "pbjs": "bin/pbjs", + "pbts": "bin/pbts" + } + }, "node_modules/protocols": { "version": "2.0.1", "resolved": "https://registry.npmjs.org/protocols/-/protocols-2.0.1.tgz", @@ -18284,6 +22083,12 @@ "integrity": "sha512-b/YwNhb8lk1Zz2+bXXpS/LK9OisiZZ1SNsSLxN1x2OXVEhW2Ckr/7mWE5vrC1ZTiJlD9g19jWszTmJsB+oEpFQ==", "dev": true }, + "node_modules/psl": { + "version": "1.9.0", + "resolved": "https://registry.npmjs.org/psl/-/psl-1.9.0.tgz", + "integrity": "sha512-E/ZsdU4HLs/68gYzgGTkMicWTLPdAftJLfJFlLUAAKZGkStNU72sZjT66SnMDVOfOWY/YAoiD7Jxa9iHvngcag==", + "dev": true + }, "node_modules/pump": { "version": "3.0.0", "resolved": "https://registry.npmjs.org/pump/-/pump-3.0.0.tgz", @@ -18366,6 +22171,52 @@ } } }, + "node_modules/pure-rand": { + "version": "6.0.4", + "resolved": "https://registry.npmjs.org/pure-rand/-/pure-rand-6.0.4.tgz", + "integrity": "sha512-LA0Y9kxMYv47GIPJy6MI84fqTd2HmYZI83W/kM/SkKfDlajnZYfmXFTxkbY+xSBPkLJxltMa9hIkmdc29eguMA==", + "dev": true, + "funding": [ + { + "type": "individual", + "url": "https://github.com/sponsors/dubzzz" + }, + { + "type": "opencollective", + "url": "https://opencollective.com/fast-check" + } + ] + }, + "node_modules/qrcode-terminal": { + "version": "0.12.0", + "resolved": "https://registry.npmjs.org/qrcode-terminal/-/qrcode-terminal-0.12.0.tgz", + "integrity": "sha512-EXtzRZmC+YGmGlDFbXKxQiMZNwCLEO6BANKXG4iCtSIM0yqc/pappSx3RIKr4r0uh5JsBckOXeKrB3Iz7mdQpQ==", + "dev": true, + "bin": { + "qrcode-terminal": "bin/qrcode-terminal.js" + } + }, + "node_modules/qs": { + "version": "6.11.2", + "resolved": "https://registry.npmjs.org/qs/-/qs-6.11.2.tgz", + "integrity": "sha512-tDNIz22aBzCDxLtVH++VnTfzxlfeK5CbqohpSqpJgj1Wg/cQbStNAz3NuqCs5vV+pjBsK4x4pN9HlVh7rcYRiA==", + "dev": true, + "dependencies": { + "side-channel": "^1.0.4" + }, + "engines": { + "node": ">=0.6" + }, + "funding": { + "url": "https://github.com/sponsors/ljharb" + } + }, + "node_modules/querystringify": { + "version": "2.2.0", + "resolved": "https://registry.npmjs.org/querystringify/-/querystringify-2.2.0.tgz", + "integrity": "sha512-FIqgj2EUvTa7R50u0rGsyTftzjYmv/a3hO345bZNrqabNqjtgiDMgmo4mkUjd+nzU5oF3dClKqFIPUKybUyqoQ==", + "dev": true + }, "node_modules/queue-microtask": { "version": "1.2.3", "funding": [ @@ -18398,6 +22249,58 @@ "node": ">=8" } }, + "node_modules/rabin-wasm": { + "version": "0.1.5", + "resolved": "https://registry.npmjs.org/rabin-wasm/-/rabin-wasm-0.1.5.tgz", + "integrity": "sha512-uWgQTo7pim1Rnj5TuWcCewRDTf0PEFTSlaUjWP4eY9EbLV9em08v89oCz/WO+wRxpYuO36XEHp4wgYQnAgOHzA==", + "dev": true, + "dependencies": { + "@assemblyscript/loader": "^0.9.4", + "bl": "^5.0.0", + "debug": "^4.3.1", + "minimist": "^1.2.5", + "node-fetch": "^2.6.1", + "readable-stream": "^3.6.0" + }, + "bin": { + "rabin-wasm": "cli/bin.js" + } + }, + "node_modules/rabin-wasm/node_modules/bl": { + "version": "5.1.0", + "resolved": "https://registry.npmjs.org/bl/-/bl-5.1.0.tgz", + "integrity": "sha512-tv1ZJHLfTDnXE6tMHv73YgSJaWR2AFuPwMntBe7XL/GBFHnT0CLnsHMogfk5+GzCDC5ZWarSCYaIGATZt9dNsQ==", + "dev": true, + "dependencies": { + "buffer": "^6.0.3", + "inherits": "^2.0.4", + "readable-stream": "^3.4.0" + } + }, + "node_modules/rabin-wasm/node_modules/buffer": { + "version": "6.0.3", + "resolved": "https://registry.npmjs.org/buffer/-/buffer-6.0.3.tgz", + "integrity": "sha512-FTiCpNxtwiZZHEZbcbTIcZjERVICn9yq/pDFkTl95/AxzD1naBctN7YO68riM/gLSDY7sdrMby8hofADYuuqOA==", + "dev": true, + "funding": [ + { + "type": "github", + "url": "https://github.com/sponsors/feross" + }, + { + "type": "patreon", + "url": "https://www.patreon.com/feross" + }, + { + "type": "consulting", + "url": "https://feross.org/support" + } + ], + "dependencies": { + "base64-js": "^1.3.1", + "ieee754": "^1.2.1" + } + }, "node_modules/radix3": { "version": "1.1.0", "resolved": "https://registry.npmjs.org/radix3/-/radix3-1.1.0.tgz", @@ -18429,6 +22332,12 @@ "flat": "^5.0.2" } }, + "node_modules/react-is": { + "version": "18.2.0", + "resolved": "https://registry.npmjs.org/react-is/-/react-is-18.2.0.tgz", + "integrity": "sha512-xWGDIW6x921xtzPkhiULtthJHoJvBbF3q26fzloPCK0hsvxtPVelvftw3zjbHWSkR2km9Z+4uxbDDK/6Zw9B8w==", + "dev": true + }, "node_modules/read-cache": { "version": "1.0.0", "resolved": "https://registry.npmjs.org/read-cache/-/read-cache-1.0.0.tgz", @@ -19416,6 +23325,12 @@ "integrity": "sha512-NKN5kMDylKuldxYLSUfrbo5Tuzh4hd+2E8NPPX02mZtn1VuREQToYe/ZdlJy+J3uCpfaiGF05e7B8W0iXbQHmg==", "dev": true }, + "node_modules/requires-port": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/requires-port/-/requires-port-1.0.0.tgz", + "integrity": "sha512-KigOCHcocU3XODJxsu8i/j8T9tzT4adHiecwORRQ0ZZFcp7ahwXuRU1m+yuO90C5ZUyGeGfocHDI14M3L3yDAQ==", + "dev": true + }, "node_modules/resolve": { "version": "1.22.8", "license": "MIT", @@ -19431,6 +23346,27 @@ "url": "https://github.com/sponsors/ljharb" } }, + "node_modules/resolve-cwd": { + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/resolve-cwd/-/resolve-cwd-3.0.0.tgz", + "integrity": "sha512-OrZaX2Mb+rJCpH/6CpSqt9xFVpN++x01XnN2ie9g6P5/3xelLAkXWVADpdz1IHD/KFfEXyE6V0U01OQ3UO2rEg==", + "dev": true, + "dependencies": { + "resolve-from": "^5.0.0" + }, + "engines": { + "node": ">=8" + } + }, + "node_modules/resolve-cwd/node_modules/resolve-from": { + "version": "5.0.0", + "resolved": "https://registry.npmjs.org/resolve-from/-/resolve-from-5.0.0.tgz", + "integrity": "sha512-qYg9KP24dD5qka9J47d0aVky0N+b4fTU89LN9iDnjB5waksiC49rvMB0PrUJQGoTmH50XPiqOvAjDfaijGxYZw==", + "dev": true, + "engines": { + "node": ">=8" + } + }, "node_modules/resolve-from": { "version": "4.0.0", "license": "MIT", @@ -19498,6 +23434,28 @@ "url": "https://github.com/privatenumber/resolve-pkg-maps?sponsor=1" } }, + "node_modules/resolve.exports": { + "version": "2.0.2", + "resolved": "https://registry.npmjs.org/resolve.exports/-/resolve.exports-2.0.2.tgz", + "integrity": "sha512-X2UW6Nw3n/aMgDVy+0rSqgHlv39WZAlZrXCdnbyEiKm17DSqHX4MmQMaST3FbeWR5FTuRcUwYAziZajji0Y7mg==", + "dev": true, + "engines": { + "node": ">=10" + } + }, + "node_modules/restore-cursor": { + "version": "3.1.0", + "resolved": "https://registry.npmjs.org/restore-cursor/-/restore-cursor-3.1.0.tgz", + "integrity": "sha512-l+sSefzHpj5qimhFSE5a8nufZYAM3sBSVMAPtYkmC+4EH2anSGaEMXSD0izRQbu9nfyQ9y5JrVmp7E8oZrUjvA==", + "dev": true, + "dependencies": { + "onetime": "^5.1.0", + "signal-exit": "^3.0.2" + }, + "engines": { + "node": ">=8" + } + }, "node_modules/reusify": { "version": "1.0.4", "license": "MIT", @@ -19594,6 +23552,21 @@ "node": ">= 8" } }, + "node_modules/rrweb-cssom": { + "version": "0.6.0", + "resolved": "https://registry.npmjs.org/rrweb-cssom/-/rrweb-cssom-0.6.0.tgz", + "integrity": "sha512-APM0Gt1KoXBz0iIkkdB/kfvGOwC4UuJFeG/c+yV7wSc7q96cG/kJ0HiYCnzivD9SB53cLV1MlHFNfOuPaadYSw==", + "dev": true + }, + "node_modules/run-async": { + "version": "2.4.1", + "resolved": "https://registry.npmjs.org/run-async/-/run-async-2.4.1.tgz", + "integrity": "sha512-tvVnVv01b8c1RrA6Ep7JkStj85Guv/YrMcwqYQnwjsAS2cTmmPGBBjAjpCW7RrSodNSoE2/qg9O4bceNvUuDgQ==", + "dev": true, + "engines": { + "node": ">=0.12.0" + } + }, "node_modules/run-parallel": { "version": "1.2.0", "funding": [ @@ -19621,6 +23594,15 @@ "integrity": "sha512-PdhdWy89SiZogBLaw42zdeqtRJ//zFd2PgQavcICDUgJT5oW10QCRKbJ6bg4r0/UY2M6BWd5tkxuGFRvCkgfHQ==", "dev": true }, + "node_modules/rxjs": { + "version": "7.8.1", + "resolved": "https://registry.npmjs.org/rxjs/-/rxjs-7.8.1.tgz", + "integrity": "sha512-AA3TVj+0A2iuIoQkWEK/tqFjBq2j+6PO6Y0zJcvzLAFhEFIO3HL0vls9hWLncZbAAbK0mar7oZ4V079I/qPMxg==", + "dev": true, + "dependencies": { + "tslib": "^2.1.0" + } + }, "node_modules/sade": { "version": "1.8.1", "resolved": "https://registry.npmjs.org/sade/-/sade-1.8.1.tgz", @@ -19699,6 +23681,18 @@ "resolved": "https://registry.npmjs.org/sax/-/sax-1.3.0.tgz", "integrity": "sha512-0s+oAmw9zLl1V1cS9BtZN7JAd0cW5e0QH4W3LWEK6a4LaLEA2OTpGYWDY+6XasBLtz6wkm3u1xRw95mRuJ59WA==" }, + "node_modules/saxes": { + "version": "6.0.0", + "resolved": "https://registry.npmjs.org/saxes/-/saxes-6.0.0.tgz", + "integrity": "sha512-xAg7SOnEhrm5zI3puOOKyy1OMcMlIJZYNJY7xLBwSze0UjhPLnWfj2GF2EpT0jmzaJKIWKHLsaSSajf35bcYnA==", + "dev": true, + "dependencies": { + "xmlchars": "^2.2.0" + }, + "engines": { + "node": ">=v12.22.7" + } + }, "node_modules/schema-utils": { "version": "3.3.0", "resolved": "https://registry.npmjs.org/schema-utils/-/schema-utils-3.3.0.tgz", @@ -19800,6 +23794,16 @@ "resolved": "https://registry.npmjs.org/ms/-/ms-2.1.3.tgz", "integrity": "sha512-6FlzubTLZG3J2a/NVCAleEhjzq5oxgHyaCU9yYXvcLsvoVaHJq/s5xXI6/XXP6tz7R9xAOtHnSO/tXtF3WRTlA==" }, + "node_modules/sentence-case": { + "version": "3.0.4", + "resolved": "https://registry.npmjs.org/sentence-case/-/sentence-case-3.0.4.tgz", + "integrity": "sha512-8LS0JInaQMCRoQ7YUytAo/xUu5W2XnQxV2HI/6uM6U7CITS1RqPElr30V6uIqyMKM9lJGRVFy5/4CuzcixNYSg==", + "dependencies": { + "no-case": "^3.0.4", + "tslib": "^2.0.3", + "upper-case-first": "^2.0.2" + } + }, "node_modules/serialize-javascript": { "version": "6.0.1", "resolved": "https://registry.npmjs.org/serialize-javascript/-/serialize-javascript-6.0.1.tgz", @@ -19883,6 +23887,15 @@ "node": ">=8" } }, + "node_modules/shell-quote": { + "version": "1.8.1", + "resolved": "https://registry.npmjs.org/shell-quote/-/shell-quote-1.8.1.tgz", + "integrity": "sha512-6j1W9l1iAs/4xYBI1SYOVZyFcCis9b4KCLQ8fgAGG07QvzaRLVVRQvAy85yNmmZSjYjg4MWh4gNvlPujU/5LpA==", + "dev": true, + "funding": { + "url": "https://github.com/sponsors/ljharb" + } + }, "node_modules/shiki-es": { "version": "0.14.0", "resolved": "https://registry.npmjs.org/shiki-es/-/shiki-es-0.14.0.tgz", @@ -20120,6 +24133,15 @@ "resolved": "https://registry.npmjs.org/smob/-/smob-1.4.1.tgz", "integrity": "sha512-9LK+E7Hv5R9u4g4C3p+jjLstaLe11MDsL21UpYaCNmapvMkYhqCV4A/f/3gyH8QjMyh6l68q9xC85vihY9ahMQ==" }, + "node_modules/snake-case": { + "version": "3.0.4", + "resolved": "https://registry.npmjs.org/snake-case/-/snake-case-3.0.4.tgz", + "integrity": "sha512-LAOh4z89bGQvl9pFfNF8V146i7o7/CqFPbqzYgP+yYzDIDeS9HaNFtXABamRW+AQzEVODcvE79ljJ+8a9YSdMg==", + "dependencies": { + "dot-case": "^3.0.4", + "tslib": "^2.0.3" + } + }, "node_modules/socket.io-client": { "version": "4.7.2", "resolved": "https://registry.npmjs.org/socket.io-client/-/socket.io-client-4.7.2.tgz", @@ -20206,6 +24228,12 @@ "url": "https://github.com/sponsors/wooorm" } }, + "node_modules/sparse-array": { + "version": "1.3.2", + "resolved": "https://registry.npmjs.org/sparse-array/-/sparse-array-1.3.2.tgz", + "integrity": "sha512-ZT711fePGn3+kQyLuv1fpd3rNSkNF8vd5Kv2D+qnOANeyKs3fx6bUMGWRPvgTTcYV64QMqZKZwcuaQSP3AZ0tg==", + "dev": true + }, "node_modules/spawndamnit": { "version": "2.0.0", "resolved": "https://registry.npmjs.org/spawndamnit/-/spawndamnit-2.0.0.tgz", @@ -20310,6 +24338,27 @@ "integrity": "sha512-D9cPgkvLlV3t3IzL0D0YLvGA9Ahk4PcvVwUbN0dSGr1aP0Nrt4AEnTUbuGvquEC0mA64Gqt1fzirlRs5ibXx8g==", "dev": true }, + "node_modules/stack-utils": { + "version": "2.0.6", + "resolved": "https://registry.npmjs.org/stack-utils/-/stack-utils-2.0.6.tgz", + "integrity": "sha512-XlkWvfIm6RmsWtNJx+uqtKLS8eqFbxUg0ZzLXqY0caEy9l7hruX8IpiDnjsLavoBgqCCR71TqWO8MaXYheJ3RQ==", + "dev": true, + "dependencies": { + "escape-string-regexp": "^2.0.0" + }, + "engines": { + "node": ">=10" + } + }, + "node_modules/stack-utils/node_modules/escape-string-regexp": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/escape-string-regexp/-/escape-string-regexp-2.0.0.tgz", + "integrity": "sha512-UpzcLCXolUWcNu5HtVMHYdXJjArjsF9C0aNnquZYY4uW/Vu0miy5YoWvbV345HauVvcAUnpRuhMMcqTcGOY2+w==", + "dev": true, + "engines": { + "node": ">=8" + } + }, "node_modules/stackback": { "version": "0.0.2", "resolved": "https://registry.npmjs.org/stackback/-/stackback-0.0.2.tgz", @@ -20368,6 +24417,19 @@ "node": ">=0.6.19" } }, + "node_modules/string-length": { + "version": "4.0.2", + "resolved": "https://registry.npmjs.org/string-length/-/string-length-4.0.2.tgz", + "integrity": "sha512-+l6rNN5fYHNhZZy41RXsYptCjA2Igmq4EG7kZAYFQI1E1VTXarr6ZPXBg6eq7Y6eK4FEhY6AJlyuFIb/v/S0VQ==", + "dev": true, + "dependencies": { + "char-regex": "^1.0.2", + "strip-ansi": "^6.0.0" + }, + "engines": { + "node": ">=10" + } + }, "node_modules/string-width": { "version": "4.2.3", "license": "MIT", @@ -20495,6 +24557,19 @@ "node": ">=6" } }, + "node_modules/strip-hex-prefix": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/strip-hex-prefix/-/strip-hex-prefix-1.0.0.tgz", + "integrity": "sha512-q8d4ue7JGEiVcypji1bALTos+0pWtyGlivAWyPuTkHzuTCJqrK9sWxYQZUq6Nq3cuyv3bm734IhHvHtGGURU6A==", + "dev": true, + "dependencies": { + "is-hex-prefixed": "1.0.0" + }, + "engines": { + "node": ">=6.5.0", + "npm": ">=3" + } + }, "node_modules/strip-indent": { "version": "3.0.0", "dev": true, @@ -20557,15 +24632,6 @@ "balanced-match": "^1.0.0" } }, - "node_modules/style-dictionary-esm/node_modules/camel-case": { - "version": "4.1.2", - "resolved": "https://registry.npmjs.org/camel-case/-/camel-case-4.1.2.tgz", - "integrity": "sha512-gxGWBrTT1JuMx6R+o5PTXMmUnhnVzLQ9SNutD4YqKtI6ap897t3tKECYla6gCWEkplXnlNybEkZg9GEGxKFCgw==", - "dependencies": { - "pascal-case": "^3.1.2", - "tslib": "^2.0.3" - } - }, "node_modules/style-dictionary-esm/node_modules/chalk": { "version": "5.3.0", "resolved": "https://registry.npmjs.org/chalk/-/chalk-5.3.0.tgz", @@ -20577,25 +24643,6 @@ "url": "https://github.com/chalk/chalk?sponsor=1" } }, - "node_modules/style-dictionary-esm/node_modules/change-case": { - "version": "4.1.2", - "resolved": "https://registry.npmjs.org/change-case/-/change-case-4.1.2.tgz", - "integrity": "sha512-bSxY2ws9OtviILG1EiY5K7NNxkqg/JnRnFxLtKQ96JaviiIxi7djMrSd0ECT9AC+lttClmYwKw53BWpOMblo7A==", - "dependencies": { - "camel-case": "^4.1.2", - "capital-case": "^1.0.4", - "constant-case": "^3.0.4", - "dot-case": "^3.0.4", - "header-case": "^2.0.4", - "no-case": "^3.0.4", - "param-case": "^3.0.4", - "pascal-case": "^3.1.2", - "path-case": "^3.0.4", - "sentence-case": "^3.0.4", - "snake-case": "^3.0.4", - "tslib": "^2.0.3" - } - }, "node_modules/style-dictionary-esm/node_modules/commander": { "version": "11.1.0", "resolved": "https://registry.npmjs.org/commander/-/commander-11.1.0.tgz", @@ -20604,25 +24651,6 @@ "node": ">=16" } }, - "node_modules/style-dictionary-esm/node_modules/constant-case": { - "version": "3.0.4", - "resolved": "https://registry.npmjs.org/constant-case/-/constant-case-3.0.4.tgz", - "integrity": "sha512-I2hSBi7Vvs7BEuJDr5dDHfzb/Ruj3FyvFyh7KLilAjNQw3Be+xgqUBA2W6scVEcL0hL1dwPRtIqEPVUCKkSsyQ==", - "dependencies": { - "no-case": "^3.0.4", - "tslib": "^2.0.3", - "upper-case": "^2.0.2" - } - }, - "node_modules/style-dictionary-esm/node_modules/dot-case": { - "version": "3.0.4", - "resolved": "https://registry.npmjs.org/dot-case/-/dot-case-3.0.4.tgz", - "integrity": "sha512-Kv5nKlh6yRrdrGvxeJ2e5y2eRUpkUosIW4A2AS38zwSz27zu7ufDwQPi5Jhs3XAlGNetl3bmnGhQsMtkKJnj3w==", - "dependencies": { - "no-case": "^3.0.4", - "tslib": "^2.0.3" - } - }, "node_modules/style-dictionary-esm/node_modules/glob": { "version": "10.3.10", "resolved": "https://registry.npmjs.org/glob/-/glob-10.3.10.tgz", @@ -20644,23 +24672,6 @@ "url": "https://github.com/sponsors/isaacs" } }, - "node_modules/style-dictionary-esm/node_modules/header-case": { - "version": "2.0.4", - "resolved": "https://registry.npmjs.org/header-case/-/header-case-2.0.4.tgz", - "integrity": "sha512-H/vuk5TEEVZwrR0lp2zed9OCo1uAILMlx0JEMgC26rzyJJ3N1v6XkwHHXJQdR2doSjcGPM6OKPYoJgf0plJ11Q==", - "dependencies": { - "capital-case": "^1.0.4", - "tslib": "^2.0.3" - } - }, - "node_modules/style-dictionary-esm/node_modules/lower-case": { - "version": "2.0.2", - "resolved": "https://registry.npmjs.org/lower-case/-/lower-case-2.0.2.tgz", - "integrity": "sha512-7fm3l3NAF9WfN6W3JOmf5drwpVqX78JtoGJ3A6W0a6ZnldM41w2fV5D490psKFTpMds8TJse/eHLFFsNHHjHgg==", - "dependencies": { - "tslib": "^2.0.3" - } - }, "node_modules/style-dictionary-esm/node_modules/minimatch": { "version": "9.0.3", "resolved": "https://registry.npmjs.org/minimatch/-/minimatch-9.0.3.tgz", @@ -20675,77 +24686,6 @@ "url": "https://github.com/sponsors/isaacs" } }, - "node_modules/style-dictionary-esm/node_modules/no-case": { - "version": "3.0.4", - "resolved": "https://registry.npmjs.org/no-case/-/no-case-3.0.4.tgz", - "integrity": "sha512-fgAN3jGAh+RoxUGZHTSOLJIqUc2wmoBwGR4tbpNAKmmovFoWq0OdRkb0VkldReO2a2iBT/OEulG9XSUc10r3zg==", - "dependencies": { - "lower-case": "^2.0.2", - "tslib": "^2.0.3" - } - }, - "node_modules/style-dictionary-esm/node_modules/param-case": { - "version": "3.0.4", - "resolved": "https://registry.npmjs.org/param-case/-/param-case-3.0.4.tgz", - "integrity": "sha512-RXlj7zCYokReqWpOPH9oYivUzLYZ5vAPIfEmCTNViosC78F8F0H9y7T7gG2M39ymgutxF5gcFEsyZQSph9Bp3A==", - "dependencies": { - "dot-case": "^3.0.4", - "tslib": "^2.0.3" - } - }, - "node_modules/style-dictionary-esm/node_modules/pascal-case": { - "version": "3.1.2", - "resolved": "https://registry.npmjs.org/pascal-case/-/pascal-case-3.1.2.tgz", - "integrity": "sha512-uWlGT3YSnK9x3BQJaOdcZwrnV6hPpd8jFH1/ucpiLRPh/2zCVJKS19E4GvYHvaCcACn3foXZ0cLB9Wrx1KGe5g==", - "dependencies": { - "no-case": "^3.0.4", - "tslib": "^2.0.3" - } - }, - "node_modules/style-dictionary-esm/node_modules/path-case": { - "version": "3.0.4", - "resolved": "https://registry.npmjs.org/path-case/-/path-case-3.0.4.tgz", - "integrity": "sha512-qO4qCFjXqVTrcbPt/hQfhTQ+VhFsqNKOPtytgNKkKxSoEp3XPUQ8ObFuePylOIok5gjn69ry8XiULxCwot3Wfg==", - "dependencies": { - "dot-case": "^3.0.4", - "tslib": "^2.0.3" - } - }, - "node_modules/style-dictionary-esm/node_modules/sentence-case": { - "version": "3.0.4", - "resolved": "https://registry.npmjs.org/sentence-case/-/sentence-case-3.0.4.tgz", - "integrity": "sha512-8LS0JInaQMCRoQ7YUytAo/xUu5W2XnQxV2HI/6uM6U7CITS1RqPElr30V6uIqyMKM9lJGRVFy5/4CuzcixNYSg==", - "dependencies": { - "no-case": "^3.0.4", - "tslib": "^2.0.3", - "upper-case-first": "^2.0.2" - } - }, - "node_modules/style-dictionary-esm/node_modules/snake-case": { - "version": "3.0.4", - "resolved": "https://registry.npmjs.org/snake-case/-/snake-case-3.0.4.tgz", - "integrity": "sha512-LAOh4z89bGQvl9pFfNF8V146i7o7/CqFPbqzYgP+yYzDIDeS9HaNFtXABamRW+AQzEVODcvE79ljJ+8a9YSdMg==", - "dependencies": { - "dot-case": "^3.0.4", - "tslib": "^2.0.3" - } - }, - "node_modules/style-dictionary-esm/node_modules/upper-case": { - "version": "2.0.2", - "resolved": "https://registry.npmjs.org/upper-case/-/upper-case-2.0.2.tgz", - "integrity": "sha512-KgdgDGJt2TpuwBUIjgG6lzw2GWFRCW9Qkfkiv0DxqHHLYJHmtmdUIKcZd8rHgFSjopVTlw6ggzCm1b8MFQwikg==", - "dependencies": { - "tslib": "^2.0.3" - } - }, - "node_modules/style-dictionary-esm/node_modules/upper-case-first": { - "version": "2.0.2", - "resolved": "https://registry.npmjs.org/upper-case-first/-/upper-case-first-2.0.2.tgz", - "integrity": "sha512-514ppYHBaKwfJRK/pNC6c/OxfGa0obSnAl106u97Ed0I625Nin96KAjttZF6ZL3e1XLtphxnqrOi9iWgm+u+bg==", - "dependencies": { - "tslib": "^2.0.3" - } - }, "node_modules/stylehacks": { "version": "6.0.0", "resolved": "https://registry.npmjs.org/stylehacks/-/stylehacks-6.0.0.tgz", @@ -20871,6 +24811,18 @@ "node": ">= 10" } }, + "node_modules/symbol-tree": { + "version": "3.2.4", + "resolved": "https://registry.npmjs.org/symbol-tree/-/symbol-tree-3.2.4.tgz", + "integrity": "sha512-9QNk5KwDF+Bvz+PyObkmSYjI5ksVUYtjW7AU22r2NKcfLJcXp96hkDWU3+XndOsUb+AQ9QhfzfCT2O+CNWT5Tw==", + "dev": true + }, + "node_modules/symbol.inspect": { + "version": "1.0.1", + "resolved": "https://registry.npmjs.org/symbol.inspect/-/symbol.inspect-1.0.1.tgz", + "integrity": "sha512-YQSL4duoHmLhsTD1Pw8RW6TZ5MaTX5rXJnqacJottr2P2LZBF/Yvrc3ku4NUpMOm8aM0KOCqM+UAkMA5HWQCzQ==", + "dev": true + }, "node_modules/tailwind-config-viewer": { "version": "1.7.3", "resolved": "https://registry.npmjs.org/tailwind-config-viewer/-/tailwind-config-viewer-1.7.3.tgz", @@ -21131,6 +25083,26 @@ "resolved": "https://registry.npmjs.org/commander/-/commander-2.20.3.tgz", "integrity": "sha512-GpVkmM8vF2vQUkj2LvZmD35JxeJOLCwJ9cUkugyk2nuhbv3+mJvpLYYt+0+USMxE+oj+ey/lJEnhZw75x/OMcQ==" }, + "node_modules/teslabot": { + "version": "1.5.0", + "resolved": "https://registry.npmjs.org/teslabot/-/teslabot-1.5.0.tgz", + "integrity": "sha512-e2MmELhCgrgZEGo7PQu/6bmYG36IDH+YrBI1iGm6jovXkeDIGa3pZ2WSqRjzkuw2vt1EqfkZoV5GpXgqL8QJVg==", + "dev": true + }, + "node_modules/test-exclude": { + "version": "6.0.0", + "resolved": "https://registry.npmjs.org/test-exclude/-/test-exclude-6.0.0.tgz", + "integrity": "sha512-cAGWPIyOHU6zlmg88jwm7VRyXnMN7iV68OGAbYDk/Mh/xC/pzVPlQtY6ngoIH/5/tciuhGfvESU8GrHrcxD56w==", + "dev": true, + "dependencies": { + "@istanbuljs/schema": "^0.1.2", + "glob": "^7.1.4", + "minimatch": "^3.0.4" + }, + "engines": { + "node": ">=8" + } + }, "node_modules/text-table": { "version": "0.2.0", "devOptional": true, @@ -21213,6 +25185,12 @@ "node": ">=0.6.0" } }, + "node_modules/tmpl": { + "version": "1.0.5", + "resolved": "https://registry.npmjs.org/tmpl/-/tmpl-1.0.5.tgz", + "integrity": "sha512-3f0uOEAQwIqGuWW2MVzYg8fV/QNnc/IpuJNG837rLuczAaLVHslWHZQj4IGiEl5Hs3kkbhwL9Ab7Hrsmuj+Smw==", + "dev": true + }, "node_modules/to-fast-properties": { "version": "2.0.0", "license": "MIT", @@ -21238,6 +25216,150 @@ "node": ">=0.6" } }, + "node_modules/ton": { + "version": "13.6.1", + "resolved": "https://registry.npmjs.org/ton/-/ton-13.6.1.tgz", + "integrity": "sha512-CZlFsmO+l+uPSI2zgnUd8zCS5XuWnUSFRVUjRGl5X5fKXYnjaVba4vMaIyFTJwel+uEMnolGMSlNP8DAa9mfVg==", + "dev": true, + "dependencies": { + "axios": "^0.25.0", + "dataloader": "^2.0.0", + "symbol.inspect": "1.0.1", + "teslabot": "^1.3.0", + "zod": "^3.21.4" + }, + "peerDependencies": { + "ton-core": ">=0.51.0", + "ton-crypto": ">=3.2.0" + } + }, + "node_modules/ton-core": { + "version": "0.51.0", + "resolved": "https://registry.npmjs.org/ton-core/-/ton-core-0.51.0.tgz", + "integrity": "sha512-FgejId/X1o7nNc5g8DBW1+9piwFolVU3e83Z8TudDCALik29YPhGOqLHSvcVYux3QV7SL0qCNaKgA3mV2nNfCA==", + "dev": true, + "dependencies": { + "symbol.inspect": "1.0.1" + }, + "peerDependencies": { + "ton-crypto": ">=3.2.0" + } + }, + "node_modules/ton-crypto": { + "version": "3.2.0", + "resolved": "https://registry.npmjs.org/ton-crypto/-/ton-crypto-3.2.0.tgz", + "integrity": "sha512-fltdBNQ45gARMuGMEOjPZWPJ5eSql8p3CA0Dj7tPv5lhU5ziT8SxXLAzDraR9HJ8YpjBHLVvYyhMLRiEwxgtMQ==", + "dev": true, + "dependencies": { + "jssha": "3.2.0", + "ton-crypto-primitives": "2.0.0", + "tweetnacl": "1.0.3" + } + }, + "node_modules/ton-crypto-primitives": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/ton-crypto-primitives/-/ton-crypto-primitives-2.0.0.tgz", + "integrity": "sha512-K+qKjpS0h9sPW6oExcpxnzuQ7nEgHEiDKwIqE/jWD25o8iFGe3FWj1gKxFNbKE9wwYKc5IV8FwrU+raF0KO5nQ==", + "dev": true, + "dependencies": { + "jssha": "3.2.0" + } + }, + "node_modules/ton-x": { + "version": "2.1.0", + "resolved": "https://registry.npmjs.org/ton-x/-/ton-x-2.1.0.tgz", + "integrity": "sha512-AJx4kRaRqPdTCQO8ik8E0aICg4NutUgTxnepbjoc7Emi3bMKoANiketmOFK07+vFX9QQO2NoJnqM8kgSsposhw==", + "dev": true, + "dependencies": { + "@types/bn.js": "^5.1.0", + "axios": "^0.27.0", + "bn.js": "^5.2.0", + "fp-ts": "^2.12.0", + "io-ts": "^2.2.16", + "teslabot": "^1.5.0", + "ton": "9.8.0", + "ton-crypto": "^3.0.0" + } + }, + "node_modules/ton-x/node_modules/axios": { + "version": "0.27.2", + "resolved": "https://registry.npmjs.org/axios/-/axios-0.27.2.tgz", + "integrity": "sha512-t+yRIyySRTp/wua5xEr+z1q60QmLq8ABsS5O9Me1AsE5dfKqgnCFzwiCZZ/cGNd1lq4/7akDWMxdhVlucjmnOQ==", + "dev": true, + "dependencies": { + "follow-redirects": "^1.14.9", + "form-data": "^4.0.0" + } + }, + "node_modules/ton-x/node_modules/bn.js": { + "version": "5.2.0", + "resolved": "https://registry.npmjs.org/bn.js/-/bn.js-5.2.0.tgz", + "integrity": "sha512-D7iWRBvnZE8ecXiLj/9wbxH7Tk79fAh8IHaTNq1RWRixsS02W+5qS+iE9yq6RYl0asXx5tw0bLhmT5pIfbSquw==", + "dev": true + }, + "node_modules/ton-x/node_modules/ton": { + "version": "9.8.0", + "resolved": "https://registry.npmjs.org/ton/-/ton-9.8.0.tgz", + "integrity": "sha512-aH/7ODiEulPRZracSfQ4KeaV6iDmzjn14+YMsZ9x0sNlzhtP4blMIFXPJFp4BOc4INb5vTrfA0u+JtOoXlBO0A==", + "dev": true, + "dependencies": { + "axios": "^0.25.0", + "bn.js": "5.2.0", + "dataloader": "^2.0.0", + "ethjs-unit": "0.1.6", + "fp-ts": "^2.11.1", + "io-ts": "^2.2.16", + "io-ts-reporters": "^2.0.0", + "symbol.inspect": "1.0.1", + "teslabot": "^1.3.0", + "ton-crypto": "2.1.0", + "tweetnacl": "1.0.3" + } + }, + "node_modules/ton-x/node_modules/ton/node_modules/axios": { + "version": "0.25.0", + "resolved": "https://registry.npmjs.org/axios/-/axios-0.25.0.tgz", + "integrity": "sha512-cD8FOb0tRH3uuEe6+evtAbgJtfxr7ly3fQjYcMcuPlgkwVS9xboaVIpcDV+cYQe+yGykgwZCs1pzjntcGa6l5g==", + "dev": true, + "dependencies": { + "follow-redirects": "^1.14.7" + } + }, + "node_modules/ton-x/node_modules/ton/node_modules/ton-crypto": { + "version": "2.1.0", + "resolved": "https://registry.npmjs.org/ton-crypto/-/ton-crypto-2.1.0.tgz", + "integrity": "sha512-PZnmCOShfgq9tCRM8E7hG8nCkpkOyZvDLPXmZN92ZEBrfTT0NKKf0imndkxG5DkgWMjc6IKfgpnEaJDH9qN6ZQ==", + "dev": true, + "dependencies": { + "jssha": "3.2.0", + "ton-crypto-primitives": "2.0.0", + "tweetnacl": "1.0.3" + } + }, + "node_modules/tough-cookie": { + "version": "4.1.3", + "resolved": "https://registry.npmjs.org/tough-cookie/-/tough-cookie-4.1.3.tgz", + "integrity": "sha512-aX/y5pVRkfRnfmuX+OdbSdXvPe6ieKX/G2s7e98f4poJHnqH3281gDPm/metm6E/WRamfx7WC4HUqkWHfQHprw==", + "dev": true, + "dependencies": { + "psl": "^1.1.33", + "punycode": "^2.1.1", + "universalify": "^0.2.0", + "url-parse": "^1.5.3" + }, + "engines": { + "node": ">=6" + } + }, + "node_modules/tough-cookie/node_modules/universalify": { + "version": "0.2.0", + "resolved": "https://registry.npmjs.org/universalify/-/universalify-0.2.0.tgz", + "integrity": "sha512-CJ1QgKmNg3CwvAv/kOFmtnEN05f0D/cn9QntgNOQlQF9dgvVTHj3t+8JPdjqawCHk7V/KA+fbUqzZ9XWhcqPUg==", + "dev": true, + "engines": { + "node": ">= 4.0.0" + } + }, "node_modules/tr46": { "version": "0.0.3", "resolved": "https://registry.npmjs.org/tr46/-/tr46-0.0.3.tgz", @@ -21295,11 +25417,53 @@ "resolved": "https://registry.npmjs.org/ts-interface-checker/-/ts-interface-checker-0.1.13.tgz", "integrity": "sha512-Y/arvbn+rrz3JCKl9C4kVNfTfSm2/mEp5FSz5EsZSANGPSlQrpRI5M4PKF+mJnE52jOO90PnPSc3Ur3bTQw0gA==" }, + "node_modules/ts-jest": { + "version": "29.1.1", + "resolved": "https://registry.npmjs.org/ts-jest/-/ts-jest-29.1.1.tgz", + "integrity": "sha512-D6xjnnbP17cC85nliwGiL+tpoKN0StpgE0TeOjXQTU6MVCfsB4v7aW05CgQ/1OywGb0x/oy9hHFnN+sczTiRaA==", + "dev": true, + "dependencies": { + "bs-logger": "0.x", + "fast-json-stable-stringify": "2.x", + "jest-util": "^29.0.0", + "json5": "^2.2.3", + "lodash.memoize": "4.x", + "make-error": "1.x", + "semver": "^7.5.3", + "yargs-parser": "^21.0.1" + }, + "bin": { + "ts-jest": "cli.js" + }, + "engines": { + "node": "^14.15.0 || ^16.10.0 || >=18.0.0" + }, + "peerDependencies": { + "@babel/core": ">=7.0.0-beta.0 <8", + "@jest/types": "^29.0.0", + "babel-jest": "^29.0.0", + "jest": "^29.0.0", + "typescript": ">=4.3 <6" + }, + "peerDependenciesMeta": { + "@babel/core": { + "optional": true + }, + "@jest/types": { + "optional": true + }, + "babel-jest": { + "optional": true + }, + "esbuild": { + "optional": true + } + } + }, "node_modules/ts-node": { "version": "10.9.1", + "devOptional": true, "license": "MIT", - "optional": true, - "peer": true, "dependencies": { "@cspotcode/source-map-support": "^0.8.0", "@tsconfig/node10": "^1.0.7", @@ -21515,6 +25679,18 @@ "win32" ] }, + "node_modules/tweetnacl": { + "version": "1.0.3", + "resolved": "https://registry.npmjs.org/tweetnacl/-/tweetnacl-1.0.3.tgz", + "integrity": "sha512-6rt+RN7aOi1nGMyC4Xa5DdYiukl2UWCbcJft7YhxReBGQD7OAM8Pbxw6YMo4r2diNEA8FEmu32YOn9rhaiE5yw==", + "dev": true + }, + "node_modules/tweetnacl-util": { + "version": "0.15.1", + "resolved": "https://registry.npmjs.org/tweetnacl-util/-/tweetnacl-util-0.15.1.tgz", + "integrity": "sha512-RKJBIj8lySrShN4w6i/BonWp2Z/uxwC3h4y7xsRrpP59ZboCd0GpEVsOnMDYLMmKBpYhb5TgHzZXy7wTfYFBRw==", + "dev": true + }, "node_modules/type-check": { "version": "0.4.0", "devOptional": true, @@ -21653,6 +25829,15 @@ "node": ">=0.8.0" } }, + "node_modules/uint8arrays": { + "version": "3.1.1", + "resolved": "https://registry.npmjs.org/uint8arrays/-/uint8arrays-3.1.1.tgz", + "integrity": "sha512-+QJa8QRnbdXVpHYjLoTpJIdCTiw9Ir62nocClWuXIq2JIh4Uta0cQsTSpFL678p2CN8B+XSApwcU+pQEqVpKWg==", + "dev": true, + "dependencies": { + "multiformats": "^9.4.2" + } + }, "node_modules/ultrahtml": { "version": "1.5.2", "resolved": "https://registry.npmjs.org/ultrahtml/-/ultrahtml-1.5.2.tgz", @@ -22226,6 +26411,12 @@ "node": ">=14.0" } }, + "node_modules/undici-types": { + "version": "5.26.5", + "resolved": "https://registry.npmjs.org/undici-types/-/undici-types-5.26.5.tgz", + "integrity": "sha512-JlCMO+ehdEIKqlFxk6IfVoAUVmgz7cU7zD/h9XZ0qzeosSHmUJVOzSQvvYSYWXkFXC+IfLKSIffhv0sVZup6pA==", + "dev": true + }, "node_modules/unenv": { "version": "1.7.4", "resolved": "https://registry.npmjs.org/unenv/-/unenv-1.7.4.tgz", @@ -22648,6 +26839,22 @@ "browserslist": ">= 4.21.0" } }, + "node_modules/upper-case": { + "version": "2.0.2", + "resolved": "https://registry.npmjs.org/upper-case/-/upper-case-2.0.2.tgz", + "integrity": "sha512-KgdgDGJt2TpuwBUIjgG6lzw2GWFRCW9Qkfkiv0DxqHHLYJHmtmdUIKcZd8rHgFSjopVTlw6ggzCm1b8MFQwikg==", + "dependencies": { + "tslib": "^2.0.3" + } + }, + "node_modules/upper-case-first": { + "version": "2.0.2", + "resolved": "https://registry.npmjs.org/upper-case-first/-/upper-case-first-2.0.2.tgz", + "integrity": "sha512-514ppYHBaKwfJRK/pNC6c/OxfGa0obSnAl106u97Ed0I625Nin96KAjttZF6ZL3e1XLtphxnqrOi9iWgm+u+bg==", + "dependencies": { + "tslib": "^2.0.3" + } + }, "node_modules/uqr": { "version": "0.1.2", "resolved": "https://registry.npmjs.org/uqr/-/uqr-0.1.2.tgz", @@ -22660,6 +26867,16 @@ "punycode": "^2.1.0" } }, + "node_modules/url-parse": { + "version": "1.5.10", + "resolved": "https://registry.npmjs.org/url-parse/-/url-parse-1.5.10.tgz", + "integrity": "sha512-WypcfiRhfeUP9vvF0j6rw0J3hrWrw6iZv3+22h6iRMJ/8z1Tj6XfLP4DsUix5MhMPnXpiHDoKyoZ/bdCkwBCiQ==", + "dev": true, + "dependencies": { + "querystringify": "^2.1.1", + "requires-port": "^1.0.0" + } + }, "node_modules/urlpattern-polyfill": { "version": "8.0.2", "resolved": "https://registry.npmjs.org/urlpattern-polyfill/-/urlpattern-polyfill-8.0.2.tgz", @@ -22729,9 +26946,22 @@ }, "node_modules/v8-compile-cache-lib": { "version": "3.0.1", - "license": "MIT", - "optional": true, - "peer": true + "devOptional": true, + "license": "MIT" + }, + "node_modules/v8-to-istanbul": { + "version": "9.1.3", + "resolved": "https://registry.npmjs.org/v8-to-istanbul/-/v8-to-istanbul-9.1.3.tgz", + "integrity": "sha512-9lDD+EVI2fjFsMWXc6dy5JJzBsVTcQ2fVkfBvncZ6xJWG9wtBhOldG+mHkSL0+V1K/xgZz0JDO5UT5hFwHUghg==", + "dev": true, + "dependencies": { + "@jridgewell/trace-mapping": "^0.3.12", + "@types/istanbul-lib-coverage": "^2.0.1", + "convert-source-map": "^2.0.0" + }, + "engines": { + "node": ">=10.12.0" + } }, "node_modules/validate-npm-package-license": { "version": "3.0.4", @@ -23294,6 +27524,27 @@ "typescript": "*" } }, + "node_modules/w3c-xmlserializer": { + "version": "4.0.0", + "resolved": "https://registry.npmjs.org/w3c-xmlserializer/-/w3c-xmlserializer-4.0.0.tgz", + "integrity": "sha512-d+BFHzbiCx6zGfz0HyQ6Rg69w9k19nviJspaj4yNscGjrHu94sVP+aRm75yEbCh+r2/yR+7q6hux9LVtbuTGBw==", + "dev": true, + "dependencies": { + "xml-name-validator": "^4.0.0" + }, + "engines": { + "node": ">=14" + } + }, + "node_modules/walker": { + "version": "1.0.8", + "resolved": "https://registry.npmjs.org/walker/-/walker-1.0.8.tgz", + "integrity": "sha512-ts/8E8l5b7kY0vlWLewOkDXMmPdLcVV4GmOQLyxuSswIJsweeFZtAsMF7k1Nszz+TYBQrlYRmzOnr398y1JemQ==", + "dev": true, + "dependencies": { + "makeerror": "1.0.12" + } + }, "node_modules/watchpack": { "version": "2.4.0", "license": "MIT", @@ -23426,6 +27677,45 @@ "node": ">=6" } }, + "node_modules/whatwg-encoding": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/whatwg-encoding/-/whatwg-encoding-2.0.0.tgz", + "integrity": "sha512-p41ogyeMUrw3jWclHWTQg1k05DSVXPLcVxRTYsXUk+ZooOCZLcoYgPZ/HL/D/N+uQPOtcp1me1WhBEaX02mhWg==", + "dev": true, + "dependencies": { + "iconv-lite": "0.6.3" + }, + "engines": { + "node": ">=12" + } + }, + "node_modules/whatwg-encoding/node_modules/iconv-lite": { + "version": "0.6.3", + "resolved": "https://registry.npmjs.org/iconv-lite/-/iconv-lite-0.6.3.tgz", + "integrity": "sha512-4fCk79wshMdzMp2rH06qWrJE4iolqLhCUH+OiuIgU++RB0+94NlDL81atO7GX55uUKueo0txHNtvEyI6D7WdMw==", + "dev": true, + "dependencies": { + "safer-buffer": ">= 2.1.2 < 3.0.0" + }, + "engines": { + "node": ">=0.10.0" + } + }, + "node_modules/whatwg-fetch": { + "version": "3.6.19", + "resolved": "https://registry.npmjs.org/whatwg-fetch/-/whatwg-fetch-3.6.19.tgz", + "integrity": "sha512-d67JP4dHSbm2TrpFj8AbO8DnL1JXL5J9u0Kq2xW6d0TFDbCA3Muhdt8orXC22utleTVj7Prqt82baN6RBvnEgw==", + "dev": true + }, + "node_modules/whatwg-mimetype": { + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/whatwg-mimetype/-/whatwg-mimetype-3.0.0.tgz", + "integrity": "sha512-nt+N2dzIutVRxARx1nghPKGv1xHikU7HKdfafKkLNLindmPU/ch3U31NOCGGA/dmPcmb1VlofO0vnKAcsm0o/Q==", + "dev": true, + "engines": { + "node": ">=12" + } + }, "node_modules/whatwg-url": { "version": "5.0.0", "resolved": "https://registry.npmjs.org/whatwg-url/-/whatwg-url-5.0.0.tgz", @@ -23562,6 +27852,19 @@ "version": "1.0.2", "license": "ISC" }, + "node_modules/write-file-atomic": { + "version": "4.0.2", + "resolved": "https://registry.npmjs.org/write-file-atomic/-/write-file-atomic-4.0.2.tgz", + "integrity": "sha512-7KxauUdBmSdWnmpaGFg+ppNjKF8uNLry8LyzjauQDOVONfFLNKrKvQOxZ/VuTIcS/gge/YNahf5RIIQWTSarlg==", + "dev": true, + "dependencies": { + "imurmurhash": "^0.1.4", + "signal-exit": "^3.0.7" + }, + "engines": { + "node": "^12.13.0 || ^14.15.0 || >=16.0.0" + } + }, "node_modules/ws": { "version": "8.14.2", "resolved": "https://registry.npmjs.org/ws/-/ws-8.14.2.tgz", @@ -23591,6 +27894,12 @@ "node": ">=12" } }, + "node_modules/xmlchars": { + "version": "2.2.0", + "resolved": "https://registry.npmjs.org/xmlchars/-/xmlchars-2.2.0.tgz", + "integrity": "sha512-JZnDKK8B0RCDw84FNdDAIpZK+JuJw+s7Lz8nksI7SIuU3UXJJslUthsi+uWBUYOwPFwW7W7PRLRfUKpxjtjFCw==", + "dev": true + }, "node_modules/xmlhttprequest-ssl": { "version": "2.0.0", "resolved": "https://registry.npmjs.org/xmlhttprequest-ssl/-/xmlhttprequest-ssl-2.0.0.tgz", @@ -23671,9 +27980,8 @@ }, "node_modules/yn": { "version": "3.1.1", + "devOptional": true, "license": "MIT", - "optional": true, - "peer": true, "engines": { "node": ">=6" } @@ -23740,6 +28048,15 @@ "node": ">= 12.0.0" } }, + "node_modules/zod": { + "version": "3.22.4", + "resolved": "https://registry.npmjs.org/zod/-/zod-3.22.4.tgz", + "integrity": "sha512-iC+8Io04lddc+mVqQ9AZ7OQ2MrUKGN+oIQyq1vemgt46jwCwLfhq7/pwnBnNXXXZb8VTVLKwp9EDkx+ryxIWmg==", + "dev": true, + "funding": { + "url": "https://github.com/sponsors/colinhacks" + } + }, "node_modules/zwitch": { "version": "2.0.4", "resolved": "https://registry.npmjs.org/zwitch/-/zwitch-2.0.4.tgz", @@ -23899,7 +28216,7 @@ }, "packages/esprit-design": { "name": "@d0rich/esprit-design", - "version": "0.0.0", + "version": "0.1.0", "dependencies": { "@iconify/vue": "^4.1.1", "gsap": "^3.12.2", @@ -24056,7 +28373,7 @@ }, "packages/nuxt-content-mermaid": { "name": "@d0rich/nuxt-content-mermaid", - "version": "0.1.5", + "version": "0.2.0", "devDependencies": { "@nuxt/content": "^2.5.2", "@nuxtjs/color-mode": "^3.2.0", @@ -24102,6 +28419,12 @@ "@jridgewell/trace-mapping": "^0.3.9" } }, + "@assemblyscript/loader": { + "version": "0.9.4", + "resolved": "https://registry.npmjs.org/@assemblyscript/loader/-/loader-0.9.4.tgz", + "integrity": "sha512-HazVq9zwTVwGmqdwYzu7WyQ6FQVZ7SwET0KKQuKm55jD0IfUpZgN0OPIiZG3zV1iSrVYcN0bdwLRXI/VNCYsUA==", + "dev": true + }, "@babel/code-frame": { "version": "7.22.13", "requires": { @@ -24377,6 +28700,51 @@ "@babel/parser": { "version": "7.23.0" }, + "@babel/plugin-syntax-async-generators": { + "version": "7.8.4", + "resolved": "https://registry.npmjs.org/@babel/plugin-syntax-async-generators/-/plugin-syntax-async-generators-7.8.4.tgz", + "integrity": "sha512-tycmZxkGfZaxhMRbXlPXuVFpdWlXpir2W4AMhSJgRKzk/eDlIXOhb2LHWoLpDF7TEHylV5zNhykX6KAgHJmTNw==", + "dev": true, + "requires": { + "@babel/helper-plugin-utils": "^7.8.0" + } + }, + "@babel/plugin-syntax-bigint": { + "version": "7.8.3", + "resolved": "https://registry.npmjs.org/@babel/plugin-syntax-bigint/-/plugin-syntax-bigint-7.8.3.tgz", + "integrity": "sha512-wnTnFlG+YxQm3vDxpGE57Pj0srRU4sHE/mDkt1qv2YJJSeUAec2ma4WLUnUPeKjyrfntVwe/N6dCXpU+zL3Npg==", + "dev": true, + "requires": { + "@babel/helper-plugin-utils": "^7.8.0" + } + }, + "@babel/plugin-syntax-class-properties": { + "version": "7.12.13", + "resolved": "https://registry.npmjs.org/@babel/plugin-syntax-class-properties/-/plugin-syntax-class-properties-7.12.13.tgz", + "integrity": "sha512-fm4idjKla0YahUNgFNLCB0qySdsoPiZP3iQE3rky0mBUtMZ23yDJ9SJdg6dXTSDnulOVqiF3Hgr9nbXvXTQZYA==", + "dev": true, + "requires": { + "@babel/helper-plugin-utils": "^7.12.13" + } + }, + "@babel/plugin-syntax-import-meta": { + "version": "7.10.4", + "resolved": "https://registry.npmjs.org/@babel/plugin-syntax-import-meta/-/plugin-syntax-import-meta-7.10.4.tgz", + "integrity": "sha512-Yqfm+XDx0+Prh3VSeEQCPU81yC+JWZ2pDPFSS4ZdpfZhp4MkFMaDC1UqseovEKwSUpnIL7+vK+Clp7bfh0iD7g==", + "dev": true, + "requires": { + "@babel/helper-plugin-utils": "^7.10.4" + } + }, + "@babel/plugin-syntax-json-strings": { + "version": "7.8.3", + "resolved": "https://registry.npmjs.org/@babel/plugin-syntax-json-strings/-/plugin-syntax-json-strings-7.8.3.tgz", + "integrity": "sha512-lY6kdGpWHvjoe2vk4WrAapEuBR69EMxZl+RoGRhrFGNYVK8mOPAW8VfbT/ZgrFbXlDNiiaxQnAtgVCZ6jv30EA==", + "dev": true, + "requires": { + "@babel/helper-plugin-utils": "^7.8.0" + } + }, "@babel/plugin-syntax-jsx": { "version": "7.22.5", "resolved": "https://registry.npmjs.org/@babel/plugin-syntax-jsx/-/plugin-syntax-jsx-7.22.5.tgz", @@ -24385,6 +28753,69 @@ "@babel/helper-plugin-utils": "^7.22.5" } }, + "@babel/plugin-syntax-logical-assignment-operators": { + "version": "7.10.4", + "resolved": "https://registry.npmjs.org/@babel/plugin-syntax-logical-assignment-operators/-/plugin-syntax-logical-assignment-operators-7.10.4.tgz", + "integrity": "sha512-d8waShlpFDinQ5MtvGU9xDAOzKH47+FFoney2baFIoMr952hKOLp1HR7VszoZvOsV/4+RRszNY7D17ba0te0ig==", + "dev": true, + "requires": { + "@babel/helper-plugin-utils": "^7.10.4" + } + }, + "@babel/plugin-syntax-nullish-coalescing-operator": { + "version": "7.8.3", + "resolved": "https://registry.npmjs.org/@babel/plugin-syntax-nullish-coalescing-operator/-/plugin-syntax-nullish-coalescing-operator-7.8.3.tgz", + "integrity": "sha512-aSff4zPII1u2QD7y+F8oDsz19ew4IGEJg9SVW+bqwpwtfFleiQDMdzA/R+UlWDzfnHFCxxleFT0PMIrR36XLNQ==", + "dev": true, + "requires": { + "@babel/helper-plugin-utils": "^7.8.0" + } + }, + "@babel/plugin-syntax-numeric-separator": { + "version": "7.10.4", + "resolved": "https://registry.npmjs.org/@babel/plugin-syntax-numeric-separator/-/plugin-syntax-numeric-separator-7.10.4.tgz", + "integrity": "sha512-9H6YdfkcK/uOnY/K7/aA2xpzaAgkQn37yzWUMRK7OaPOqOpGS1+n0H5hxT9AUw9EsSjPW8SVyMJwYRtWs3X3ug==", + "dev": true, + "requires": { + "@babel/helper-plugin-utils": "^7.10.4" + } + }, + "@babel/plugin-syntax-object-rest-spread": { + "version": "7.8.3", + "resolved": "https://registry.npmjs.org/@babel/plugin-syntax-object-rest-spread/-/plugin-syntax-object-rest-spread-7.8.3.tgz", + "integrity": "sha512-XoqMijGZb9y3y2XskN+P1wUGiVwWZ5JmoDRwx5+3GmEplNyVM2s2Dg8ILFQm8rWM48orGy5YpI5Bl8U1y7ydlA==", + "dev": true, + "requires": { + "@babel/helper-plugin-utils": "^7.8.0" + } + }, + "@babel/plugin-syntax-optional-catch-binding": { + "version": "7.8.3", + "resolved": "https://registry.npmjs.org/@babel/plugin-syntax-optional-catch-binding/-/plugin-syntax-optional-catch-binding-7.8.3.tgz", + "integrity": "sha512-6VPD0Pc1lpTqw0aKoeRTMiB+kWhAoT24PA+ksWSBrFtl5SIRVpZlwN3NNPQjehA2E/91FV3RjLWoVTglWcSV3Q==", + "dev": true, + "requires": { + "@babel/helper-plugin-utils": "^7.8.0" + } + }, + "@babel/plugin-syntax-optional-chaining": { + "version": "7.8.3", + "resolved": "https://registry.npmjs.org/@babel/plugin-syntax-optional-chaining/-/plugin-syntax-optional-chaining-7.8.3.tgz", + "integrity": "sha512-KoK9ErH1MBlCPxV0VANkXW2/dw4vlbGDrFgz8bmUsBGYkFRcbRwMh6cIJubdPrkxRwuGdtCk0v/wPTKbQgBjkg==", + "dev": true, + "requires": { + "@babel/helper-plugin-utils": "^7.8.0" + } + }, + "@babel/plugin-syntax-top-level-await": { + "version": "7.14.5", + "resolved": "https://registry.npmjs.org/@babel/plugin-syntax-top-level-await/-/plugin-syntax-top-level-await-7.14.5.tgz", + "integrity": "sha512-hx++upLv5U1rgYfwe1xBQUhRmU41NEvpUvrp8jkrSCdvGSnM5/qdRMtylJ6PG5OFkBaHkbTAKTnd3/YyESRHFw==", + "dev": true, + "requires": { + "@babel/helper-plugin-utils": "^7.14.5" + } + }, "@babel/plugin-syntax-typescript": { "version": "7.22.5", "resolved": "https://registry.npmjs.org/@babel/plugin-syntax-typescript/-/plugin-syntax-typescript-7.22.5.tgz", @@ -24454,6 +28885,12 @@ "to-fast-properties": "^2.0.0" } }, + "@bcoe/v8-coverage": { + "version": "0.2.3", + "resolved": "https://registry.npmjs.org/@bcoe/v8-coverage/-/v8-coverage-0.2.3.tgz", + "integrity": "sha512-0hYQ8SB4Db5zvZB4axdMHGwEaQjkZzFjQiN9LVYvIFB2nSUHW9tYpxWriPrWDASIxiaXax83REcLxuSdnGPZtw==", + "dev": true + }, "@braintree/sanitize-url": { "version": "6.0.4", "resolved": "https://registry.npmjs.org/@braintree/sanitize-url/-/sanitize-url-6.0.4.tgz", @@ -25200,16 +29637,14 @@ }, "@cspotcode/source-map-support": { "version": "0.8.1", - "optional": true, - "peer": true, + "devOptional": true, "requires": { "@jridgewell/trace-mapping": "0.3.9" }, "dependencies": { "@jridgewell/trace-mapping": { "version": "0.3.9", - "optional": true, - "peer": true, + "devOptional": true, "requires": { "@jridgewell/resolve-uri": "^3.0.3", "@jridgewell/sourcemap-codec": "^1.4.10" @@ -25240,6 +29675,30 @@ "integrity": "sha512-hBI9tfBtuPIi885ZsZ32IMEU/5nlZH/KOVYJCOh7gyMxaVLGmLedYqFN6Ui1LXkI8JlC8IsuC0rF0btcRZKd5g==", "requires": {} }, + "@d0rich/contracts": { + "version": "file:contracts", + "requires": { + "@ton-community/blueprint": "^0.12.0", + "@ton-community/sandbox": "^0.11.0", + "@ton-community/test-utils": "^0.3.0", + "@types/jest": "^29.5.0", + "@types/node": "^20.2.5", + "ton": "~13.6.0", + "ton-core": "^0.51.0", + "ton-crypto": "^3.2.0" + }, + "dependencies": { + "@types/node": { + "version": "20.9.0", + "resolved": "https://registry.npmjs.org/@types/node/-/node-20.9.0.tgz", + "integrity": "sha512-nekiGu2NDb1BcVofVcEKMIwzlx4NjHlcjhoxxKBNLtz15Y1z7MYf549DFvkHSId02Ax6kGwWntIBPC3l/JZcmw==", + "dev": true, + "requires": { + "undici-types": "~5.26.4" + } + } + } + }, "@d0rich/esprit-design": { "version": "file:packages/esprit-design", "requires": { @@ -25616,6 +30075,15 @@ "resolved": "https://registry.npmjs.org/@ioredis/commands/-/commands-1.2.0.tgz", "integrity": "sha512-Sx1pU8EM64o2BrqNpEO1CNLtKQwyhuXuqyfH7oGKCk+1a33d2r5saW8zNwm3j6BTExtjrv2BxTgzzkMwts6vGg==" }, + "@ipld/dag-pb": { + "version": "2.1.18", + "resolved": "https://registry.npmjs.org/@ipld/dag-pb/-/dag-pb-2.1.18.tgz", + "integrity": "sha512-ZBnf2fuX9y3KccADURG5vb9FaOeMjFkCrNysB0PtftME/4iCTjxfaLoNq/IAh5fTqUOMXvryN6Jyka4ZGuMLIg==", + "dev": true, + "requires": { + "multiformats": "^9.5.4" + } + }, "@isaacs/cliui": { "version": "8.0.2", "resolved": "https://registry.npmjs.org/@isaacs/cliui/-/cliui-8.0.2.tgz", @@ -25669,6 +30137,357 @@ } } }, + "@istanbuljs/load-nyc-config": { + "version": "1.1.0", + "resolved": "https://registry.npmjs.org/@istanbuljs/load-nyc-config/-/load-nyc-config-1.1.0.tgz", + "integrity": "sha512-VjeHSlIzpv/NyD3N0YuHfXOPDIixcA1q2ZV98wsMqcYlPmv2n3Yb2lYP9XMElnaFVXg5A7YLTeLu6V84uQDjmQ==", + "dev": true, + "requires": { + "camelcase": "^5.3.1", + "find-up": "^4.1.0", + "get-package-type": "^0.1.0", + "js-yaml": "^3.13.1", + "resolve-from": "^5.0.0" + }, + "dependencies": { + "argparse": { + "version": "1.0.10", + "resolved": "https://registry.npmjs.org/argparse/-/argparse-1.0.10.tgz", + "integrity": "sha512-o5Roy6tNG4SL/FOkCAN6RzjiakZS25RLYFrcMttJqbdd8BWrnA+fGz57iN5Pb06pvBGvl5gQ0B48dJlslXvoTg==", + "dev": true, + "requires": { + "sprintf-js": "~1.0.2" + } + }, + "camelcase": { + "version": "5.3.1", + "resolved": "https://registry.npmjs.org/camelcase/-/camelcase-5.3.1.tgz", + "integrity": "sha512-L28STB170nwWS63UjtlEOE3dldQApaJXZkOI1uMFfzf3rRuPegHaHesyee+YxQ+W6SvRDQV6UrdOdRiR153wJg==", + "dev": true + }, + "find-up": { + "version": "4.1.0", + "resolved": "https://registry.npmjs.org/find-up/-/find-up-4.1.0.tgz", + "integrity": "sha512-PpOwAdQ/YlXQ2vj8a3h8IipDuYRi3wceVQQGYWxNINccq40Anw7BlsEXCMbt1Zt+OLA6Fq9suIpIWD0OsnISlw==", + "dev": true, + "requires": { + "locate-path": "^5.0.0", + "path-exists": "^4.0.0" + } + }, + "js-yaml": { + "version": "3.14.1", + "resolved": "https://registry.npmjs.org/js-yaml/-/js-yaml-3.14.1.tgz", + "integrity": "sha512-okMH7OXXJ7YrN9Ok3/SXrnu4iX9yOk+25nqX4imS2npuvTYDmo/QEZoqwZkYaIDk3jVvBOTOIEgEhaLOynBS9g==", + "dev": true, + "requires": { + "argparse": "^1.0.7", + "esprima": "^4.0.0" + } + }, + "locate-path": { + "version": "5.0.0", + "resolved": "https://registry.npmjs.org/locate-path/-/locate-path-5.0.0.tgz", + "integrity": "sha512-t7hw9pI+WvuwNJXwk5zVHpyhIqzg2qTlklJOf0mVxGSbe3Fp2VieZcduNYjaLDoy6p9uGpQEGWG87WpMKlNq8g==", + "dev": true, + "requires": { + "p-locate": "^4.1.0" + } + }, + "p-limit": { + "version": "2.3.0", + "resolved": "https://registry.npmjs.org/p-limit/-/p-limit-2.3.0.tgz", + "integrity": "sha512-//88mFWSJx8lxCzwdAABTJL2MyWB12+eIY7MDL2SqLmAkeKU9qxRvWuSyTjm3FUmpBEMuFfckAIqEaVGUDxb6w==", + "dev": true, + "requires": { + "p-try": "^2.0.0" + } + }, + "p-locate": { + "version": "4.1.0", + "resolved": "https://registry.npmjs.org/p-locate/-/p-locate-4.1.0.tgz", + "integrity": "sha512-R79ZZ/0wAxKGu3oYMlz8jy/kbhsNrS7SKZ7PxEHBgJ5+F2mtFW2fK2cOtBh1cHYkQsbzFV7I+EoRKe6Yt0oK7A==", + "dev": true, + "requires": { + "p-limit": "^2.2.0" + } + }, + "resolve-from": { + "version": "5.0.0", + "resolved": "https://registry.npmjs.org/resolve-from/-/resolve-from-5.0.0.tgz", + "integrity": "sha512-qYg9KP24dD5qka9J47d0aVky0N+b4fTU89LN9iDnjB5waksiC49rvMB0PrUJQGoTmH50XPiqOvAjDfaijGxYZw==", + "dev": true + } + } + }, + "@istanbuljs/schema": { + "version": "0.1.3", + "resolved": "https://registry.npmjs.org/@istanbuljs/schema/-/schema-0.1.3.tgz", + "integrity": "sha512-ZXRY4jNvVgSVQ8DL3LTcakaAtXwTVUxE81hslsyD2AtoXW/wVob10HkOJ1X/pAlcI7D+2YoZKg5do8G/w6RYgA==", + "dev": true + }, + "@jest/console": { + "version": "29.7.0", + "resolved": "https://registry.npmjs.org/@jest/console/-/console-29.7.0.tgz", + "integrity": "sha512-5Ni4CU7XHQi32IJ398EEP4RrB8eV09sXP2ROqD4bksHrnTree52PsxvX8tpL8LvTZ3pFzXyPbNQReSN41CAhOg==", + "dev": true, + "requires": { + "@jest/types": "^29.6.3", + "@types/node": "*", + "chalk": "^4.0.0", + "jest-message-util": "^29.7.0", + "jest-util": "^29.7.0", + "slash": "^3.0.0" + } + }, + "@jest/core": { + "version": "29.7.0", + "resolved": "https://registry.npmjs.org/@jest/core/-/core-29.7.0.tgz", + "integrity": "sha512-n7aeXWKMnGtDA48y8TLWJPJmLmmZ642Ceo78cYWEpiD7FzDgmNDV/GCVRorPABdXLJZ/9wzzgZAlHjXjxDHGsg==", + "dev": true, + "requires": { + "@jest/console": "^29.7.0", + "@jest/reporters": "^29.7.0", + "@jest/test-result": "^29.7.0", + "@jest/transform": "^29.7.0", + "@jest/types": "^29.6.3", + "@types/node": "*", + "ansi-escapes": "^4.2.1", + "chalk": "^4.0.0", + "ci-info": "^3.2.0", + "exit": "^0.1.2", + "graceful-fs": "^4.2.9", + "jest-changed-files": "^29.7.0", + "jest-config": "^29.7.0", + "jest-haste-map": "^29.7.0", + "jest-message-util": "^29.7.0", + "jest-regex-util": "^29.6.3", + "jest-resolve": "^29.7.0", + "jest-resolve-dependencies": "^29.7.0", + "jest-runner": "^29.7.0", + "jest-runtime": "^29.7.0", + "jest-snapshot": "^29.7.0", + "jest-util": "^29.7.0", + "jest-validate": "^29.7.0", + "jest-watcher": "^29.7.0", + "micromatch": "^4.0.4", + "pretty-format": "^29.7.0", + "slash": "^3.0.0", + "strip-ansi": "^6.0.0" + }, + "dependencies": { + "ansi-styles": { + "version": "5.2.0", + "resolved": "https://registry.npmjs.org/ansi-styles/-/ansi-styles-5.2.0.tgz", + "integrity": "sha512-Cxwpt2SfTzTtXcfOlzGEee8O+c+MmUgGrNiBcXnuWxuFJHe6a5Hz7qwhwe5OgaSYI0IJvkLqWX1ASG+cJOkEiA==", + "dev": true + }, + "pretty-format": { + "version": "29.7.0", + "resolved": "https://registry.npmjs.org/pretty-format/-/pretty-format-29.7.0.tgz", + "integrity": "sha512-Pdlw/oPxN+aXdmM9R00JVC9WVFoCLTKJvDVLgmJ+qAffBMxsV85l/Lu7sNx4zSzPyoL2euImuEwHhOXdEgNFZQ==", + "dev": true, + "requires": { + "@jest/schemas": "^29.6.3", + "ansi-styles": "^5.0.0", + "react-is": "^18.0.0" + } + } + } + }, + "@jest/environment": { + "version": "29.7.0", + "resolved": "https://registry.npmjs.org/@jest/environment/-/environment-29.7.0.tgz", + "integrity": "sha512-aQIfHDq33ExsN4jP1NWGXhxgQ/wixs60gDiKO+XVMd8Mn0NWPWgc34ZQDTb2jKaUWQ7MuwoitXAsN2XVXNMpAw==", + "dev": true, + "requires": { + "@jest/fake-timers": "^29.7.0", + "@jest/types": "^29.6.3", + "@types/node": "*", + "jest-mock": "^29.7.0" + } + }, + "@jest/expect": { + "version": "29.7.0", + "resolved": "https://registry.npmjs.org/@jest/expect/-/expect-29.7.0.tgz", + "integrity": "sha512-8uMeAMycttpva3P1lBHB8VciS9V0XAr3GymPpipdyQXbBcuhkLQOSe8E/p92RyAdToS6ZD1tFkX+CkhoECE0dQ==", + "dev": true, + "requires": { + "expect": "^29.7.0", + "jest-snapshot": "^29.7.0" + } + }, + "@jest/expect-utils": { + "version": "29.7.0", + "resolved": "https://registry.npmjs.org/@jest/expect-utils/-/expect-utils-29.7.0.tgz", + "integrity": "sha512-GlsNBWiFQFCVi9QVSx7f5AgMeLxe9YCCs5PuP2O2LdjDAA8Jh9eX7lA1Jq/xdXw3Wb3hyvlFNfZIfcRetSzYcA==", + "dev": true, + "requires": { + "jest-get-type": "^29.6.3" + } + }, + "@jest/fake-timers": { + "version": "29.7.0", + "resolved": "https://registry.npmjs.org/@jest/fake-timers/-/fake-timers-29.7.0.tgz", + "integrity": "sha512-q4DH1Ha4TTFPdxLsqDXK1d3+ioSL7yL5oCMJZgDYm6i+6CygW5E5xVr/D1HdsGxjt1ZWSfUAs9OxSB/BNelWrQ==", + "dev": true, + "requires": { + "@jest/types": "^29.6.3", + "@sinonjs/fake-timers": "^10.0.2", + "@types/node": "*", + "jest-message-util": "^29.7.0", + "jest-mock": "^29.7.0", + "jest-util": "^29.7.0" + } + }, + "@jest/globals": { + "version": "29.7.0", + "resolved": "https://registry.npmjs.org/@jest/globals/-/globals-29.7.0.tgz", + "integrity": "sha512-mpiz3dutLbkW2MNFubUGUEVLkTGiqW6yLVTA+JbP6fI6J5iL9Y0Nlg8k95pcF8ctKwCS7WVxteBs29hhfAotzQ==", + "dev": true, + "requires": { + "@jest/environment": "^29.7.0", + "@jest/expect": "^29.7.0", + "@jest/types": "^29.6.3", + "jest-mock": "^29.7.0" + } + }, + "@jest/reporters": { + "version": "29.7.0", + "resolved": "https://registry.npmjs.org/@jest/reporters/-/reporters-29.7.0.tgz", + "integrity": "sha512-DApq0KJbJOEzAFYjHADNNxAE3KbhxQB1y5Kplb5Waqw6zVbuWatSnMjE5gs8FUgEPmNsnZA3NCWl9NG0ia04Pg==", + "dev": true, + "requires": { + "@bcoe/v8-coverage": "^0.2.3", + "@jest/console": "^29.7.0", + "@jest/test-result": "^29.7.0", + "@jest/transform": "^29.7.0", + "@jest/types": "^29.6.3", + "@jridgewell/trace-mapping": "^0.3.18", + "@types/node": "*", + "chalk": "^4.0.0", + "collect-v8-coverage": "^1.0.0", + "exit": "^0.1.2", + "glob": "^7.1.3", + "graceful-fs": "^4.2.9", + "istanbul-lib-coverage": "^3.0.0", + "istanbul-lib-instrument": "^6.0.0", + "istanbul-lib-report": "^3.0.0", + "istanbul-lib-source-maps": "^4.0.0", + "istanbul-reports": "^3.1.3", + "jest-message-util": "^29.7.0", + "jest-util": "^29.7.0", + "jest-worker": "^29.7.0", + "slash": "^3.0.0", + "string-length": "^4.0.1", + "strip-ansi": "^6.0.0", + "v8-to-istanbul": "^9.0.1" + }, + "dependencies": { + "jest-worker": { + "version": "29.7.0", + "resolved": "https://registry.npmjs.org/jest-worker/-/jest-worker-29.7.0.tgz", + "integrity": "sha512-eIz2msL/EzL9UFTFFx7jBTkeZfku0yUAyZZZmJ93H2TYEiroIx2PQjEXcwYtYl8zXCxb+PAmA2hLIt/6ZEkPHw==", + "dev": true, + "requires": { + "@types/node": "*", + "jest-util": "^29.7.0", + "merge-stream": "^2.0.0", + "supports-color": "^8.0.0" + } + }, + "supports-color": { + "version": "8.1.1", + "resolved": "https://registry.npmjs.org/supports-color/-/supports-color-8.1.1.tgz", + "integrity": "sha512-MpUEN2OodtUzxvKQl72cUF7RQ5EiHsGvSsVG0ia9c5RbWGL2CI4C7EpPS8UTBIplnlzZiNuV56w+FuNxy3ty2Q==", + "dev": true, + "requires": { + "has-flag": "^4.0.0" + } + } + } + }, + "@jest/schemas": { + "version": "29.6.3", + "resolved": "https://registry.npmjs.org/@jest/schemas/-/schemas-29.6.3.tgz", + "integrity": "sha512-mo5j5X+jIZmJQveBKeS/clAueipV7KgiX1vMgCxam1RNYiqE1w62n0/tJJnHtjW8ZHcQco5gY85jA3mi0L+nSA==", + "dev": true, + "requires": { + "@sinclair/typebox": "^0.27.8" + } + }, + "@jest/source-map": { + "version": "29.6.3", + "resolved": "https://registry.npmjs.org/@jest/source-map/-/source-map-29.6.3.tgz", + "integrity": "sha512-MHjT95QuipcPrpLM+8JMSzFx6eHp5Bm+4XeFDJlwsvVBjmKNiIAvasGK2fxz2WbGRlnvqehFbh07MMa7n3YJnw==", + "dev": true, + "requires": { + "@jridgewell/trace-mapping": "^0.3.18", + "callsites": "^3.0.0", + "graceful-fs": "^4.2.9" + } + }, + "@jest/test-result": { + "version": "29.7.0", + "resolved": "https://registry.npmjs.org/@jest/test-result/-/test-result-29.7.0.tgz", + "integrity": "sha512-Fdx+tv6x1zlkJPcWXmMDAG2HBnaR9XPSd5aDWQVsfrZmLVT3lU1cwyxLgRmXR9yrq4NBoEm9BMsfgFzTQAbJYA==", + "dev": true, + "requires": { + "@jest/console": "^29.7.0", + "@jest/types": "^29.6.3", + "@types/istanbul-lib-coverage": "^2.0.0", + "collect-v8-coverage": "^1.0.0" + } + }, + "@jest/test-sequencer": { + "version": "29.7.0", + "resolved": "https://registry.npmjs.org/@jest/test-sequencer/-/test-sequencer-29.7.0.tgz", + "integrity": "sha512-GQwJ5WZVrKnOJuiYiAF52UNUJXgTZx1NHjFSEB0qEMmSZKAkdMoIzw/Cj6x6NF4AvV23AUqDpFzQkN/eYCYTxw==", + "dev": true, + "requires": { + "@jest/test-result": "^29.7.0", + "graceful-fs": "^4.2.9", + "jest-haste-map": "^29.7.0", + "slash": "^3.0.0" + } + }, + "@jest/transform": { + "version": "29.7.0", + "resolved": "https://registry.npmjs.org/@jest/transform/-/transform-29.7.0.tgz", + "integrity": "sha512-ok/BTPFzFKVMwO5eOHRrvnBVHdRy9IrsrW1GpMaQ9MCnilNLXQKmAX8s1YXDFaai9xJpac2ySzV0YeRRECr2Vw==", + "dev": true, + "requires": { + "@babel/core": "^7.11.6", + "@jest/types": "^29.6.3", + "@jridgewell/trace-mapping": "^0.3.18", + "babel-plugin-istanbul": "^6.1.1", + "chalk": "^4.0.0", + "convert-source-map": "^2.0.0", + "fast-json-stable-stringify": "^2.1.0", + "graceful-fs": "^4.2.9", + "jest-haste-map": "^29.7.0", + "jest-regex-util": "^29.6.3", + "jest-util": "^29.7.0", + "micromatch": "^4.0.4", + "pirates": "^4.0.4", + "slash": "^3.0.0", + "write-file-atomic": "^4.0.2" + } + }, + "@jest/types": { + "version": "29.6.3", + "resolved": "https://registry.npmjs.org/@jest/types/-/types-29.6.3.tgz", + "integrity": "sha512-u3UPsIilWKOM3F9CXtrG8LEJmNxwoCQC/XVj4IKYXvvpx7QIi/Kg1LI5uDmDpKlac62NUtX7eLjRh+jVZcLOzw==", + "dev": true, + "requires": { + "@jest/schemas": "^29.6.3", + "@types/istanbul-lib-coverage": "^2.0.0", + "@types/istanbul-reports": "^3.0.0", + "@types/node": "*", + "@types/yargs": "^17.0.8", + "chalk": "^4.0.0" + } + }, "@jridgewell/gen-mapping": { "version": "0.3.3", "requires": { @@ -25962,6 +30781,16 @@ } } }, + "@multiformats/murmur3": { + "version": "1.1.3", + "resolved": "https://registry.npmjs.org/@multiformats/murmur3/-/murmur3-1.1.3.tgz", + "integrity": "sha512-wAPLUErGR8g6Lt+bAZn6218k9YQPym+sjszsXL6o4zfxbA22P+gxWZuuD9wDbwL55xrKO5idpcuQUX7/E3oHcw==", + "dev": true, + "requires": { + "multiformats": "^9.5.4", + "murmurhash3js-revisited": "^3.0.0" + } + }, "@netlify/functions": { "version": "2.3.0", "resolved": "https://registry.npmjs.org/@netlify/functions/-/functions-2.3.0.tgz", @@ -26170,11 +30999,6 @@ "std-env": "^3.4.3" }, "dependencies": { - "dotenv": { - "version": "16.3.1", - "resolved": "https://registry.npmjs.org/dotenv/-/dotenv-16.3.1.tgz", - "integrity": "sha512-IPzF4w4/Rd94bA9imS68tZBaYyBWSCE47V1RGuMrB94iyTOIEwRmVL2x/4An+6mETpLrKJ5hQkB8W4kFAadeIQ==" - }, "nanoid": { "version": "4.0.2", "resolved": "https://registry.npmjs.org/nanoid/-/nanoid-4.0.2.tgz", @@ -27024,6 +31848,15 @@ "integrity": "sha512-XuySG1E38YScSJoMlqovLru4KTUNSjgVTIjyh7qMX6aNN5HY5Ct5LhRJdxO79JtTzKfzV/bnWpz+zquYrISsvw==", "dev": true }, + "@orbs-network/ton-access": { + "version": "2.3.3", + "resolved": "https://registry.npmjs.org/@orbs-network/ton-access/-/ton-access-2.3.3.tgz", + "integrity": "sha512-b1miCPts7wBG9JKYgzXIRZQm/LMy5Uk1mNK8NzlcXHL3HRHJkkFbuYJGuj3IkWCiIicW3Ipp4sYnn3Fwo4oB0g==", + "dev": true, + "requires": { + "isomorphic-fetch": "^3.0.0" + } + }, "@parcel/watcher": { "version": "2.3.0", "resolved": "https://registry.npmjs.org/@parcel/watcher/-/watcher-2.3.0.tgz", @@ -27141,6 +31974,70 @@ "integrity": "sha512-+1VkjdD0QBLPodGrJUeqarH8VAIvQODIbwh9XpP5Syisf7YoQgsJKPNFoqqLQlu+VQ/tVSshMR6loPMn8U+dPg==", "optional": true }, + "@protobufjs/aspromise": { + "version": "1.1.2", + "resolved": "https://registry.npmjs.org/@protobufjs/aspromise/-/aspromise-1.1.2.tgz", + "integrity": "sha512-j+gKExEuLmKwvz3OgROXtrJ2UG2x8Ch2YZUxahh+s1F2HZ+wAceUNLkvy6zKCPVRkU++ZWQrdxsUeQXmcg4uoQ==", + "dev": true + }, + "@protobufjs/base64": { + "version": "1.1.2", + "resolved": "https://registry.npmjs.org/@protobufjs/base64/-/base64-1.1.2.tgz", + "integrity": "sha512-AZkcAA5vnN/v4PDqKyMR5lx7hZttPDgClv83E//FMNhR2TMcLUhfRUBHCmSl0oi9zMgDDqRUJkSxO3wm85+XLg==", + "dev": true + }, + "@protobufjs/codegen": { + "version": "2.0.4", + "resolved": "https://registry.npmjs.org/@protobufjs/codegen/-/codegen-2.0.4.tgz", + "integrity": "sha512-YyFaikqM5sH0ziFZCN3xDC7zeGaB/d0IUb9CATugHWbd1FRFwWwt4ld4OYMPWu5a3Xe01mGAULCdqhMlPl29Jg==", + "dev": true + }, + "@protobufjs/eventemitter": { + "version": "1.1.0", + "resolved": "https://registry.npmjs.org/@protobufjs/eventemitter/-/eventemitter-1.1.0.tgz", + "integrity": "sha512-j9ednRT81vYJ9OfVuXG6ERSTdEL1xVsNgqpkxMsbIabzSo3goCjDIveeGv5d03om39ML71RdmrGNjG5SReBP/Q==", + "dev": true + }, + "@protobufjs/fetch": { + "version": "1.1.0", + "resolved": "https://registry.npmjs.org/@protobufjs/fetch/-/fetch-1.1.0.tgz", + "integrity": "sha512-lljVXpqXebpsijW71PZaCYeIcE5on1w5DlQy5WH6GLbFryLUrBD4932W/E2BSpfRJWseIL4v/KPgBFxDOIdKpQ==", + "dev": true, + "requires": { + "@protobufjs/aspromise": "^1.1.1", + "@protobufjs/inquire": "^1.1.0" + } + }, + "@protobufjs/float": { + "version": "1.0.2", + "resolved": "https://registry.npmjs.org/@protobufjs/float/-/float-1.0.2.tgz", + "integrity": "sha512-Ddb+kVXlXst9d+R9PfTIxh1EdNkgoRe5tOX6t01f1lYWOvJnSPDBlG241QLzcyPdoNTsblLUdujGSE4RzrTZGQ==", + "dev": true + }, + "@protobufjs/inquire": { + "version": "1.1.0", + "resolved": "https://registry.npmjs.org/@protobufjs/inquire/-/inquire-1.1.0.tgz", + "integrity": "sha512-kdSefcPdruJiFMVSbn801t4vFK7KB/5gd2fYvrxhuJYg8ILrmn9SKSX2tZdV6V+ksulWqS7aXjBcRXl3wHoD9Q==", + "dev": true + }, + "@protobufjs/path": { + "version": "1.1.2", + "resolved": "https://registry.npmjs.org/@protobufjs/path/-/path-1.1.2.tgz", + "integrity": "sha512-6JOcJ5Tm08dOHAbdR3GrvP+yUUfkjG5ePsHYczMFLq3ZmMkAD98cDgcT2iA1lJ9NVwFd4tH/iSSoe44YWkltEA==", + "dev": true + }, + "@protobufjs/pool": { + "version": "1.1.0", + "resolved": "https://registry.npmjs.org/@protobufjs/pool/-/pool-1.1.0.tgz", + "integrity": "sha512-0kELaGSIDBKvcgS4zkjz1PeddatrjYcmMWOlAuAPwAeccUrPHdUqo/J6LiymHHEiJT5NrF1UVwxY14f+fy4WQw==", + "dev": true + }, + "@protobufjs/utf8": { + "version": "1.1.0", + "resolved": "https://registry.npmjs.org/@protobufjs/utf8/-/utf8-1.1.0.tgz", + "integrity": "sha512-Vvn3zZrhQZkkBE8LSuW3em98c0FwgO4nxzv6OdSxPKJIEKY2bGbHn+mhGIPerzI4twdxaP8/0+06HBpwf345Lw==", + "dev": true + }, "@puppeteer/browsers": { "version": "1.8.0", "resolved": "https://registry.npmjs.org/@puppeteer/browsers/-/browsers-1.8.0.tgz", @@ -27376,16 +32273,90 @@ } } }, + "@scarf/scarf": { + "version": "1.3.0", + "resolved": "https://registry.npmjs.org/@scarf/scarf/-/scarf-1.3.0.tgz", + "integrity": "sha512-lHKK8M5CTcpFj2hZDB3wIjb0KAbEOgDmiJGDv1WBRfQgRm/a8/XMEkG/N1iM01xgbUDsPQwi42D+dFo1XPAKew==", + "dev": true + }, + "@sinclair/typebox": { + "version": "0.27.8", + "resolved": "https://registry.npmjs.org/@sinclair/typebox/-/typebox-0.27.8.tgz", + "integrity": "sha512-+Fj43pSMwJs4KRrH/938Uf+uAELIgVBmQzg/q1YG10djyfA3TnrU8N8XzqCh/okZdszqBQTZf96idMfE5lnwTA==", + "dev": true + }, "@sindresorhus/is": { "version": "3.1.2", "resolved": "https://registry.npmjs.org/@sindresorhus/is/-/is-3.1.2.tgz", "integrity": "sha512-JiX9vxoKMmu8Y3Zr2RVathBL1Cdu4Nt4MuNWemt1Nc06A0RAin9c5FArkhGsyMBWfCu4zj+9b+GxtjAnE4qqLQ==" }, + "@sinonjs/commons": { + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/@sinonjs/commons/-/commons-3.0.0.tgz", + "integrity": "sha512-jXBtWAF4vmdNmZgD5FoKsVLv3rPgDnLgPbU84LIJ3otV44vJlDRokVng5v8NFJdCf/da9legHcKaRuZs4L7faA==", + "dev": true, + "requires": { + "type-detect": "4.0.8" + } + }, + "@sinonjs/fake-timers": { + "version": "10.3.0", + "resolved": "https://registry.npmjs.org/@sinonjs/fake-timers/-/fake-timers-10.3.0.tgz", + "integrity": "sha512-V4BG07kuYSUkTCSBHG8G8TNhM+F19jXFWnQtzj+we8DrkpSBCee9Z3Ms8yiGer/dlmhe35/Xdgyo3/0rQKg7YA==", + "dev": true, + "requires": { + "@sinonjs/commons": "^3.0.0" + } + }, "@socket.io/component-emitter": { "version": "3.1.0", "resolved": "https://registry.npmjs.org/@socket.io/component-emitter/-/component-emitter-3.1.0.tgz", "integrity": "sha512-+9jVqKhRSpsc591z5vX+X5Yyw+he/HCB4iQ/RYxw35CEPaY1gnsNE43nf9n9AaYjAQrTiI/mOwKUKdUs9vf7Xg==" }, + "@tact-lang/compiler": { + "version": "1.1.4", + "resolved": "https://registry.npmjs.org/@tact-lang/compiler/-/compiler-1.1.4.tgz", + "integrity": "sha512-yrwrQBV1uDc3vl6fmKhfrGxsPkHrE7kVduennhq1cKzToftObwdyIHufKROkWtdJevBGFOqA8ZL8rkCP18zK4w==", + "dev": true, + "requires": { + "@ipld/dag-pb": "2.1.18", + "@tact-lang/opcode": "^0.0.13", + "arg": "^5.0.2", + "blockstore-core": "1.0.5", + "change-case": "^4.1.2", + "ipfs-unixfs-importer": "9.0.10", + "mkdirp": "^2.1.3", + "multiformats": "9.9.0", + "ohm-js": "16.5.0", + "path-normalize": "^6.0.10", + "prando": "^6.0.1", + "qs": "^6.11.0", + "ton-core": ">=0.49.0", + "ton-crypto": "^3.2.0", + "zod": "^3.20.2" + }, + "dependencies": { + "arg": { + "version": "5.0.2", + "resolved": "https://registry.npmjs.org/arg/-/arg-5.0.2.tgz", + "integrity": "sha512-PYjyFOLKQ9y57JvQ6QLo8dAgNqswh8M1RMJYdQduT6xbWSgK36P/Z/v+p888pM69jMMfS8Xd8F6I1kQ/I9HUGg==", + "dev": true + }, + "mkdirp": { + "version": "2.1.6", + "resolved": "https://registry.npmjs.org/mkdirp/-/mkdirp-2.1.6.tgz", + "integrity": "sha512-+hEnITedc8LAtIP9u3HJDFIdcLV2vXP33sqLLIzkv1Db1zO/1OxbvYf0Y1OC/S/Qo5dxHXepofhmxL02PsKe+A==", + "dev": true + } + } + }, + "@tact-lang/opcode": { + "version": "0.0.13", + "resolved": "https://registry.npmjs.org/@tact-lang/opcode/-/opcode-0.0.13.tgz", + "integrity": "sha512-4FGp1p3ahVrXr2QbyD2FqmnvXTMYapTlRJSPhj4O1L2yIq7dp0CkFL9EdKOCUfyirT0X5en78PHLfj0CuQGD7A==", + "dev": true, + "requires": {} + }, "@tailwindcss/typography": { "version": "0.5.10", "resolved": "https://registry.npmjs.org/@tailwindcss/typography/-/typography-0.5.10.tgz", @@ -27408,6 +32379,118 @@ } } }, + "@ton-community/blueprint": { + "version": "0.12.0", + "resolved": "https://registry.npmjs.org/@ton-community/blueprint/-/blueprint-0.12.0.tgz", + "integrity": "sha512-QytcjOQCKtmaseEuEeuBGiKuQ649nwXGw4U3aGw7zz/SOd3SidMoTKAK3KE2VL84L8WRlw9HZx6wumJUkWPF7Q==", + "dev": true, + "requires": { + "@orbs-network/ton-access": "^2.3.3", + "@tact-lang/compiler": "^1.1.3", + "@ton-community/func-js": "^0.6.2", + "@tonconnect/sdk": "^2.1.3", + "arg": "^5.0.2", + "chalk": "^4.1.0", + "dotenv": "^16.1.4", + "inquirer": "^8.2.5", + "qrcode-terminal": "^0.12.0", + "ton-x": "^2.1.0", + "ts-node": "^10.9.1" + }, + "dependencies": { + "arg": { + "version": "5.0.2", + "resolved": "https://registry.npmjs.org/arg/-/arg-5.0.2.tgz", + "integrity": "sha512-PYjyFOLKQ9y57JvQ6QLo8dAgNqswh8M1RMJYdQduT6xbWSgK36P/Z/v+p888pM69jMMfS8Xd8F6I1kQ/I9HUGg==", + "dev": true + } + } + }, + "@ton-community/func-js": { + "version": "0.6.2", + "resolved": "https://registry.npmjs.org/@ton-community/func-js/-/func-js-0.6.2.tgz", + "integrity": "sha512-5bewe8APG2TVgIPLUV5atQfAy+NtdjjGBfsWUeRdVUclzQ5H2wZ8aJsVNLiDBpKSNEKdOAP/1PownOFeodpQHg==", + "dev": true, + "requires": { + "@ton-community/func-js-bin": "0.4.4", + "arg": "^5.0.2" + }, + "dependencies": { + "arg": { + "version": "5.0.2", + "resolved": "https://registry.npmjs.org/arg/-/arg-5.0.2.tgz", + "integrity": "sha512-PYjyFOLKQ9y57JvQ6QLo8dAgNqswh8M1RMJYdQduT6xbWSgK36P/Z/v+p888pM69jMMfS8Xd8F6I1kQ/I9HUGg==", + "dev": true + } + } + }, + "@ton-community/func-js-bin": { + "version": "0.4.4", + "resolved": "https://registry.npmjs.org/@ton-community/func-js-bin/-/func-js-bin-0.4.4.tgz", + "integrity": "sha512-zCSVXmh+rFMgouzTbWkSVDIt1Z5i36u9rws/Kuqn89/a0vhA1aEoJJ3oJypz0TjWKJQveU4doJsPlqu7UT2zkw==", + "dev": true + }, + "@ton-community/sandbox": { + "version": "0.11.0", + "resolved": "https://registry.npmjs.org/@ton-community/sandbox/-/sandbox-0.11.0.tgz", + "integrity": "sha512-3tlSprRBTSu9m0tJTC3cl4MXQep1vfNMPqk9+JAXSRJu9ToEvIUVpqO6MQNkbz9LkKDuOEBs5vyqT37DlKKcWw==", + "dev": true, + "requires": {} + }, + "@ton-community/test-utils": { + "version": "0.3.0", + "resolved": "https://registry.npmjs.org/@ton-community/test-utils/-/test-utils-0.3.0.tgz", + "integrity": "sha512-eCw1c6a0TcKwiYEA4fmzPq+7dJtUx0UFYu+UEoRznIxEOcpEb8Ssjb9yMeiJEzbtUVMCkhEtpztdKt75ngDRWg==", + "dev": true, + "requires": { + "node-inspect-extracted": "^2.0.0" + } + }, + "@tonconnect/isomorphic-eventsource": { + "version": "0.0.1", + "resolved": "https://registry.npmjs.org/@tonconnect/isomorphic-eventsource/-/isomorphic-eventsource-0.0.1.tgz", + "integrity": "sha512-ODk48pMlqLSOvu3fM0R1sdlz/Cv2y4hSfwtXmLq9ky9+H7ZQfw/16ElpIJ69B4lUvHycxrueNgrRtF9PJHoGMw==", + "dev": true, + "requires": { + "eventsource": "^2.0.2" + } + }, + "@tonconnect/isomorphic-fetch": { + "version": "0.0.2", + "resolved": "https://registry.npmjs.org/@tonconnect/isomorphic-fetch/-/isomorphic-fetch-0.0.2.tgz", + "integrity": "sha512-DAyA4oL7MqbBo9k8+8E+YiWsGCYi6UMhDTcsZjhgzhESkBNG6b+NBkpb1KH4oi0xDZQoknFtY9XogJLuQtSMQQ==", + "dev": true, + "requires": { + "node-fetch": "^2.6.9" + } + }, + "@tonconnect/protocol": { + "version": "2.2.6", + "resolved": "https://registry.npmjs.org/@tonconnect/protocol/-/protocol-2.2.6.tgz", + "integrity": "sha512-kyoDz5EqgsycYP+A+JbVsAUYHNT059BCrK+m0pqxykMODwpziuSAXfwAZmHcg8v7NB9VKYbdFY55xKeXOuEd0w==", + "dev": true, + "requires": { + "tweetnacl": "^1.0.3", + "tweetnacl-util": "^0.15.1" + } + }, + "@tonconnect/sdk": { + "version": "2.2.0", + "resolved": "https://registry.npmjs.org/@tonconnect/sdk/-/sdk-2.2.0.tgz", + "integrity": "sha512-8plnAXzaLhapUnt47ZqAOQSIQ8NHSvgTSR74QVJdPWqg8128smgGM4cDYewKdBfTD6Lup0odT1WMMrJu+rE4NQ==", + "dev": true, + "requires": { + "@tonconnect/isomorphic-eventsource": "^0.0.1", + "@tonconnect/isomorphic-fetch": "^0.0.2", + "@tonconnect/protocol": "^2.2.5" + } + }, + "@tootallnate/once": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/@tootallnate/once/-/once-2.0.0.tgz", + "integrity": "sha512-XCuKFP5PS55gnMVu3dty8KPatLqUoy/ZYzDzAGCQ8JNFCkLXzmI7vNHCR+XpbZaMWQK/vQubr7PkYq8g470J/A==", + "dev": true + }, "@tootallnate/quickjs-emscripten": { "version": "0.23.0" }, @@ -27418,23 +32501,25 @@ }, "@tsconfig/node10": { "version": "1.0.9", - "optional": true, - "peer": true + "devOptional": true }, "@tsconfig/node12": { "version": "1.0.11", - "optional": true, - "peer": true + "devOptional": true }, "@tsconfig/node14": { "version": "1.0.3", - "optional": true, - "peer": true + "devOptional": true }, "@tsconfig/node16": { "version": "1.0.4", - "optional": true, - "peer": true + "devOptional": true + }, + "@tsconfig/node18": { + "version": "18.2.2", + "resolved": "https://registry.npmjs.org/@tsconfig/node18/-/node18-18.2.2.tgz", + "integrity": "sha512-d6McJeGsuoRlwWZmVIeE8CUA27lu6jLjvv1JzqmpsytOYYbVi1tHZEnwCNVOXnj4pyLvneZlFlpXUK+X9wBWyw==", + "dev": true }, "@types/argparse": { "version": "1.0.38", @@ -27447,6 +32532,56 @@ "resolved": "https://registry.npmjs.org/@types/aws-lambda/-/aws-lambda-8.10.125.tgz", "integrity": "sha512-Vqw/WMlV4O1fJT6capim01v7VLDZkcX1n6Yhb52E7IfnMqYbNfwHfyDV8rRN42NLBtdDvfaqcCqs2K0fr5ljZw==" }, + "@types/babel__core": { + "version": "7.20.4", + "resolved": "https://registry.npmjs.org/@types/babel__core/-/babel__core-7.20.4.tgz", + "integrity": "sha512-mLnSC22IC4vcWiuObSRjrLd9XcBTGf59vUSoq2jkQDJ/QQ8PMI9rSuzE+aEV8karUMbskw07bKYoUJCKTUaygg==", + "dev": true, + "requires": { + "@babel/parser": "^7.20.7", + "@babel/types": "^7.20.7", + "@types/babel__generator": "*", + "@types/babel__template": "*", + "@types/babel__traverse": "*" + } + }, + "@types/babel__generator": { + "version": "7.6.7", + "resolved": "https://registry.npmjs.org/@types/babel__generator/-/babel__generator-7.6.7.tgz", + "integrity": "sha512-6Sfsq+EaaLrw4RmdFWE9Onp63TOUue71AWb4Gpa6JxzgTYtimbM086WnYTy2U67AofR++QKCo08ZP6pwx8YFHQ==", + "dev": true, + "requires": { + "@babel/types": "^7.0.0" + } + }, + "@types/babel__template": { + "version": "7.4.4", + "resolved": "https://registry.npmjs.org/@types/babel__template/-/babel__template-7.4.4.tgz", + "integrity": "sha512-h/NUaSyG5EyxBIp8YRxo4RMe2/qQgvyowRwVMzhYhBCONbW8PUsg4lkFMrhgZhUe5z3L3MiLDuvyJ/CaPa2A8A==", + "dev": true, + "requires": { + "@babel/parser": "^7.1.0", + "@babel/types": "^7.0.0" + } + }, + "@types/babel__traverse": { + "version": "7.20.4", + "resolved": "https://registry.npmjs.org/@types/babel__traverse/-/babel__traverse-7.20.4.tgz", + "integrity": "sha512-mSM/iKUk5fDDrEV/e83qY+Cr3I1+Q3qqTuEn++HAWYjEa1+NxZr6CNrcJGf2ZTnq4HoFGC3zaTPZTobCzCFukA==", + "dev": true, + "requires": { + "@babel/types": "^7.20.7" + } + }, + "@types/bn.js": { + "version": "5.1.5", + "resolved": "https://registry.npmjs.org/@types/bn.js/-/bn.js-5.1.5.tgz", + "integrity": "sha512-V46N0zwKRF5Q00AZ6hWtN0T8gGmDUaUzLWQvHFo5yThtVwK/VCenFY3wXVbOvNfajEpsTfQM4IN9k/d6gUVX3A==", + "dev": true, + "requires": { + "@types/node": "*" + } + }, "@types/btoa-lite": { "version": "1.0.1", "resolved": "https://registry.npmjs.org/@types/btoa-lite/-/btoa-lite-1.0.1.tgz", @@ -27527,6 +32662,15 @@ "resolved": "https://registry.npmjs.org/@types/estree/-/estree-1.0.4.tgz", "integrity": "sha512-2JwWnHK9H+wUZNorf2Zr6ves96WHoWDJIftkcxPKsS7Djta6Zu519LarhRNljPXkpsZR2ZMwNCPeW7omW07BJw==" }, + "@types/graceful-fs": { + "version": "4.1.9", + "resolved": "https://registry.npmjs.org/@types/graceful-fs/-/graceful-fs-4.1.9.tgz", + "integrity": "sha512-olP3sd1qOEe5dXTSaFvQG+02VdRXcdytWLAZsAq1PecU8uqQAhkrnbli7DagjtXKW/Bl7YJbUsa8MPcuc8LHEQ==", + "dev": true, + "requires": { + "@types/node": "*" + } + }, "@types/hast": { "version": "3.0.2", "resolved": "https://registry.npmjs.org/@types/hast/-/hast-3.0.2.tgz", @@ -27552,6 +32696,81 @@ "ci-info": "^3.1.0" } }, + "@types/istanbul-lib-coverage": { + "version": "2.0.6", + "resolved": "https://registry.npmjs.org/@types/istanbul-lib-coverage/-/istanbul-lib-coverage-2.0.6.tgz", + "integrity": "sha512-2QF/t/auWm0lsy8XtKVPG19v3sSOQlJe/YHZgfjb/KBBHOGSV+J2q/S671rcq9uTBrLAXmZpqJiaQbMT+zNU1w==", + "dev": true + }, + "@types/istanbul-lib-report": { + "version": "3.0.3", + "resolved": "https://registry.npmjs.org/@types/istanbul-lib-report/-/istanbul-lib-report-3.0.3.tgz", + "integrity": "sha512-NQn7AHQnk/RSLOxrBbGyJM/aVQ+pjj5HCgasFxc0K/KhoATfQ/47AyUl15I2yBUpihjmas+a+VJBOqecrFH+uA==", + "dev": true, + "requires": { + "@types/istanbul-lib-coverage": "*" + } + }, + "@types/istanbul-reports": { + "version": "3.0.4", + "resolved": "https://registry.npmjs.org/@types/istanbul-reports/-/istanbul-reports-3.0.4.tgz", + "integrity": "sha512-pk2B1NWalF9toCRu6gjBzR69syFjP4Od8WRAX+0mmf9lAjCRicLOWc+ZrxZHx/0XRjotgkF9t6iaMJ+aXcOdZQ==", + "dev": true, + "requires": { + "@types/istanbul-lib-report": "*" + } + }, + "@types/jest": { + "version": "29.5.8", + "resolved": "https://registry.npmjs.org/@types/jest/-/jest-29.5.8.tgz", + "integrity": "sha512-fXEFTxMV2Co8ZF5aYFJv+YeA08RTYJfhtN5c9JSv/mFEMe+xxjufCb+PHL+bJcMs/ebPUsBu+UNTEz+ydXrR6g==", + "dev": true, + "requires": { + "expect": "^29.0.0", + "pretty-format": "^29.0.0" + }, + "dependencies": { + "ansi-styles": { + "version": "5.2.0", + "resolved": "https://registry.npmjs.org/ansi-styles/-/ansi-styles-5.2.0.tgz", + "integrity": "sha512-Cxwpt2SfTzTtXcfOlzGEee8O+c+MmUgGrNiBcXnuWxuFJHe6a5Hz7qwhwe5OgaSYI0IJvkLqWX1ASG+cJOkEiA==", + "dev": true + }, + "pretty-format": { + "version": "29.7.0", + "resolved": "https://registry.npmjs.org/pretty-format/-/pretty-format-29.7.0.tgz", + "integrity": "sha512-Pdlw/oPxN+aXdmM9R00JVC9WVFoCLTKJvDVLgmJ+qAffBMxsV85l/Lu7sNx4zSzPyoL2euImuEwHhOXdEgNFZQ==", + "dev": true, + "requires": { + "@jest/schemas": "^29.6.3", + "ansi-styles": "^5.0.0", + "react-is": "^18.0.0" + } + } + } + }, + "@types/jsdom": { + "version": "21.1.6", + "resolved": "https://registry.npmjs.org/@types/jsdom/-/jsdom-21.1.6.tgz", + "integrity": "sha512-/7kkMsC+/kMs7gAYmmBR9P0vGTnOoLhQhyhQJSlXGI5bzTHp6xdo0TtKWQAsz6pmSAeVqKSbqeyP6hytqr9FDw==", + "dev": true, + "requires": { + "@types/node": "*", + "@types/tough-cookie": "*", + "parse5": "^7.0.0" + }, + "dependencies": { + "parse5": { + "version": "7.1.2", + "resolved": "https://registry.npmjs.org/parse5/-/parse5-7.1.2.tgz", + "integrity": "sha512-Czj1WaSVpaoj0wbhMzLmWD69anp2WH7FXMB9n1Sy8/ZFF9jolSQVMu1Ij5WIyGmcBmhk7EOndpO4mIpihVqAXw==", + "dev": true, + "requires": { + "entities": "^4.4.0" + } + } + } + }, "@types/json-schema": { "version": "7.0.14" }, @@ -27567,6 +32786,12 @@ "@types/node": "*" } }, + "@types/long": { + "version": "4.0.2", + "resolved": "https://registry.npmjs.org/@types/long/-/long-4.0.2.tgz", + "integrity": "sha512-MqTGEo5bj5t157U6fA/BiDynNkn0YknVdh48CMPkTSpFTVmvao5UQmm7uEF6xBEo7qIMAlY/JSleYaE6VOdpaA==", + "dev": true + }, "@types/mdast": { "version": "4.0.2", "resolved": "https://registry.npmjs.org/@types/mdast/-/mdast-4.0.2.tgz", @@ -27629,6 +32854,18 @@ "version": "7.5.4", "dev": true }, + "@types/stack-utils": { + "version": "2.0.3", + "resolved": "https://registry.npmjs.org/@types/stack-utils/-/stack-utils-2.0.3.tgz", + "integrity": "sha512-9aEbYZ3TbYMznPdcdr3SmIrLXwC/AKZXQeCf9Pgao5CKb8CyHuEX5jzWPTkvregvhRJHcpRO6BFoGW9ycaOkYw==", + "dev": true + }, + "@types/tough-cookie": { + "version": "4.0.5", + "resolved": "https://registry.npmjs.org/@types/tough-cookie/-/tough-cookie-4.0.5.tgz", + "integrity": "sha512-/Ad8+nIOV7Rl++6f1BdKxFSMgmoqEoYbHRpPcx3JEfv8VRsQe9Z4mCXeJBzxs7mbHY/XOZZuXlRNfhpVPbs6ZA==", + "dev": true + }, "@types/unist": { "version": "3.0.1", "resolved": "https://registry.npmjs.org/@types/unist/-/unist-3.0.1.tgz", @@ -27639,6 +32876,21 @@ "resolved": "https://registry.npmjs.org/@types/web-bluetooth/-/web-bluetooth-0.0.18.tgz", "integrity": "sha512-v/ZHEj9xh82usl8LMR3GarzFY1IrbXJw5L4QfQhokjRV91q+SelFqxQWSep1ucXEZ22+dSTwLFkXeur25sPIbw==" }, + "@types/yargs": { + "version": "17.0.31", + "resolved": "https://registry.npmjs.org/@types/yargs/-/yargs-17.0.31.tgz", + "integrity": "sha512-bocYSx4DI8TmdlvxqGpVNXOgCNR1Jj0gNPhhAY+iz1rgKDAaYrAYdFYnhDV1IFuiuVc9HkOwyDcFxaTElF3/wg==", + "dev": true, + "requires": { + "@types/yargs-parser": "*" + } + }, + "@types/yargs-parser": { + "version": "21.0.3", + "resolved": "https://registry.npmjs.org/@types/yargs-parser/-/yargs-parser-21.0.3.tgz", + "integrity": "sha512-I4q9QU9MQv4oEOz4tAHJtNz1cwuLxn2F3xcc2iV5WdqLPpUnj30aUuxt1mAxYTG+oe8CZMV/+6rU4S4gRDzqtQ==", + "dev": true + }, "@types/yauzl": { "version": "2.10.2", "resolved": "https://registry.npmjs.org/@types/yauzl/-/yauzl-2.10.2.tgz", @@ -28200,6 +33452,12 @@ "vue-component-type-helpers": "1.8.4" } }, + "@vue/tsconfig": { + "version": "0.4.0", + "resolved": "https://registry.npmjs.org/@vue/tsconfig/-/tsconfig-0.4.0.tgz", + "integrity": "sha512-CPuIReonid9+zOG/CGTT05FXrPYATEqoDGNrEaqS4hwcw5BUNM2FguC0mOwJD4Jr16UpRVl9N0pY3P+srIbqmg==", + "dev": true + }, "@vueuse/core": { "version": "10.5.0", "resolved": "https://registry.npmjs.org/@vueuse/core/-/core-10.5.0.tgz", @@ -28409,6 +33667,12 @@ "integrity": "sha512-NuHqBY1PB/D8xU6s/thBgOAiAP7HOYDQ32+BFZILJ8ivkUkAHQnWfn6WhL79Owj1qmUnoN/YPhktdIoucipkAQ==", "peer": true }, + "abab": { + "version": "2.0.6", + "resolved": "https://registry.npmjs.org/abab/-/abab-2.0.6.tgz", + "integrity": "sha512-j2afSsaIENvHZN2B8GOpF566vZ5WVk5opAiMTvWgaQT8DkbOqsTfvNAvHoRGU2zzP8cPoqys+xHTRDWW8L+/BA==", + "dev": true + }, "abbrev": { "version": "1.1.1", "resolved": "https://registry.npmjs.org/abbrev/-/abbrev-1.1.1.tgz", @@ -28591,8 +33855,7 @@ }, "arg": { "version": "4.1.3", - "optional": true, - "peer": true + "devOptional": true }, "argparse": { "version": "2.0.1" @@ -28723,6 +33986,12 @@ "resolved": "https://registry.npmjs.org/async-sema/-/async-sema-3.1.1.tgz", "integrity": "sha512-tLRNUXati5MFePdAk8dw7Qt7DpxPB60ofAgn8WRhW6a2rcimZnYBP9oxHiv0OHy+Wz7kPMG+t4LGdt31+4EmGg==" }, + "asynckit": { + "version": "0.4.0", + "resolved": "https://registry.npmjs.org/asynckit/-/asynckit-0.4.0.tgz", + "integrity": "sha512-Oei9OH4tRh0YqU3GxhX79dM/mwVgvbZJaSNaRk+bshkj0S5cfHcgYakreBjrHwatXKbz+IoIdYLxrKim2MjW0Q==", + "dev": true + }, "at-least-node": { "version": "1.0.0", "resolved": "https://registry.npmjs.org/at-least-node/-/at-least-node-1.0.0.tgz", @@ -28744,11 +34013,111 @@ "available-typed-arrays": { "version": "1.0.5" }, + "axios": { + "version": "0.25.0", + "resolved": "https://registry.npmjs.org/axios/-/axios-0.25.0.tgz", + "integrity": "sha512-cD8FOb0tRH3uuEe6+evtAbgJtfxr7ly3fQjYcMcuPlgkwVS9xboaVIpcDV+cYQe+yGykgwZCs1pzjntcGa6l5g==", + "dev": true, + "requires": { + "follow-redirects": "^1.14.7" + } + }, "b4a": { "version": "1.6.4", "resolved": "https://registry.npmjs.org/b4a/-/b4a-1.6.4.tgz", "integrity": "sha512-fpWrvyVHEKyeEvbKZTVOeZF3VSKKWtJxFIxX/jaVPf+cLbGUSitjb49pHLqPV2BUNNZ0LcoeEGfE/YCpyDYHIw==" }, + "babel-jest": { + "version": "29.7.0", + "resolved": "https://registry.npmjs.org/babel-jest/-/babel-jest-29.7.0.tgz", + "integrity": "sha512-BrvGY3xZSwEcCzKvKsCi2GgHqDqsYkOP4/by5xCgIwGXQxIEh+8ew3gmrE1y7XRR6LHZIj6yLYnUi/mm2KXKBg==", + "dev": true, + "requires": { + "@jest/transform": "^29.7.0", + "@types/babel__core": "^7.1.14", + "babel-plugin-istanbul": "^6.1.1", + "babel-preset-jest": "^29.6.3", + "chalk": "^4.0.0", + "graceful-fs": "^4.2.9", + "slash": "^3.0.0" + } + }, + "babel-plugin-istanbul": { + "version": "6.1.1", + "resolved": "https://registry.npmjs.org/babel-plugin-istanbul/-/babel-plugin-istanbul-6.1.1.tgz", + "integrity": "sha512-Y1IQok9821cC9onCx5otgFfRm7Lm+I+wwxOx738M/WLPZ9Q42m4IG5W0FNX8WLL2gYMZo3JkuXIH2DOpWM+qwA==", + "dev": true, + "requires": { + "@babel/helper-plugin-utils": "^7.0.0", + "@istanbuljs/load-nyc-config": "^1.0.0", + "@istanbuljs/schema": "^0.1.2", + "istanbul-lib-instrument": "^5.0.4", + "test-exclude": "^6.0.0" + }, + "dependencies": { + "istanbul-lib-instrument": { + "version": "5.2.1", + "resolved": "https://registry.npmjs.org/istanbul-lib-instrument/-/istanbul-lib-instrument-5.2.1.tgz", + "integrity": "sha512-pzqtp31nLv/XFOzXGuvhCb8qhjmTVo5vjVk19XE4CRlSWz0KoeJ3bw9XsA7nOp9YBf4qHjwBxkDzKcME/J29Yg==", + "dev": true, + "requires": { + "@babel/core": "^7.12.3", + "@babel/parser": "^7.14.7", + "@istanbuljs/schema": "^0.1.2", + "istanbul-lib-coverage": "^3.2.0", + "semver": "^6.3.0" + } + }, + "semver": { + "version": "6.3.1", + "resolved": "https://registry.npmjs.org/semver/-/semver-6.3.1.tgz", + "integrity": "sha512-BR7VvDCVHO+q2xBEWskxS6DJE1qRnb7DxzUrogb71CWoSficBxYsiAGd+Kl0mmq/MprG9yArRkyrQxTO6XjMzA==", + "dev": true + } + } + }, + "babel-plugin-jest-hoist": { + "version": "29.6.3", + "resolved": "https://registry.npmjs.org/babel-plugin-jest-hoist/-/babel-plugin-jest-hoist-29.6.3.tgz", + "integrity": "sha512-ESAc/RJvGTFEzRwOTT4+lNDk/GNHMkKbNzsvT0qKRfDyyYTskxB5rnU2njIDYVxXCBHHEI1c0YwHob3WaYujOg==", + "dev": true, + "requires": { + "@babel/template": "^7.3.3", + "@babel/types": "^7.3.3", + "@types/babel__core": "^7.1.14", + "@types/babel__traverse": "^7.0.6" + } + }, + "babel-preset-current-node-syntax": { + "version": "1.0.1", + "resolved": "https://registry.npmjs.org/babel-preset-current-node-syntax/-/babel-preset-current-node-syntax-1.0.1.tgz", + "integrity": "sha512-M7LQ0bxarkxQoN+vz5aJPsLBn77n8QgTFmo8WK0/44auK2xlCXrYcUxHFxgU7qW5Yzw/CjmLRK2uJzaCd7LvqQ==", + "dev": true, + "requires": { + "@babel/plugin-syntax-async-generators": "^7.8.4", + "@babel/plugin-syntax-bigint": "^7.8.3", + "@babel/plugin-syntax-class-properties": "^7.8.3", + "@babel/plugin-syntax-import-meta": "^7.8.3", + "@babel/plugin-syntax-json-strings": "^7.8.3", + "@babel/plugin-syntax-logical-assignment-operators": "^7.8.3", + "@babel/plugin-syntax-nullish-coalescing-operator": "^7.8.3", + "@babel/plugin-syntax-numeric-separator": "^7.8.3", + "@babel/plugin-syntax-object-rest-spread": "^7.8.3", + "@babel/plugin-syntax-optional-catch-binding": "^7.8.3", + "@babel/plugin-syntax-optional-chaining": "^7.8.3", + "@babel/plugin-syntax-top-level-await": "^7.8.3" + } + }, + "babel-preset-jest": { + "version": "29.6.3", + "resolved": "https://registry.npmjs.org/babel-preset-jest/-/babel-preset-jest-29.6.3.tgz", + "integrity": "sha512-0B3bhxR6snWXJZtR/RliHTDPRgn1sNHOR0yVtq/IiQFyuOVjFS+wuio/R4gSNkyYmKmJB4wGZv2NZanmKmTnNA==", + "dev": true, + "requires": { + "babel-plugin-jest-hoist": "^29.6.3", + "babel-preset-current-node-syntax": "^1.0.0" + } + }, "bail": { "version": "2.0.2", "resolved": "https://registry.npmjs.org/bail/-/bail-2.0.2.tgz", @@ -28803,6 +34172,22 @@ "readable-stream": "^3.4.0" } }, + "blockstore-core": { + "version": "1.0.5", + "resolved": "https://registry.npmjs.org/blockstore-core/-/blockstore-core-1.0.5.tgz", + "integrity": "sha512-i/9CUMMvBALVbtSqUIuiWB3tk//a4Q2I2CEWiBuYNnhJvk/DWplXjLt8Sqc5VGkRVXVPSsEuH8fUtqJt5UFYcA==", + "dev": true, + "requires": { + "err-code": "^3.0.1", + "interface-blockstore": "^2.0.2", + "interface-store": "^2.0.1", + "it-all": "^1.0.4", + "it-drain": "^1.0.4", + "it-filter": "^1.0.2", + "it-take": "^1.0.1", + "multiformats": "^9.4.7" + } + }, "blueimp-md5": { "version": "2.19.0", "resolved": "https://registry.npmjs.org/blueimp-md5/-/blueimp-md5-2.19.0.tgz", @@ -28850,6 +34235,24 @@ "update-browserslist-db": "^1.0.13" } }, + "bs-logger": { + "version": "0.2.6", + "resolved": "https://registry.npmjs.org/bs-logger/-/bs-logger-0.2.6.tgz", + "integrity": "sha512-pd8DCoxmbgc7hyPKOvxtqNcjYoOsABPQdcCUjGp3d42VR2CX1ORhk2A87oqqu5R1kk+76nsxZupkmyd+MVtCog==", + "dev": true, + "requires": { + "fast-json-stable-stringify": "2.x" + } + }, + "bser": { + "version": "2.1.1", + "resolved": "https://registry.npmjs.org/bser/-/bser-2.1.1.tgz", + "integrity": "sha512-gQxTNE/GAfIIrmHLUE3oJyp5FO6HRBfhjnw4/wMmA63ZGDJnWBmgY/lyQBpnDUkGmAhbSe39tx2d/iTOAfglwQ==", + "dev": true, + "requires": { + "node-int64": "^0.4.0" + } + }, "btoa-lite": { "version": "1.0.0", "resolved": "https://registry.npmjs.org/btoa-lite/-/btoa-lite-1.0.0.tgz", @@ -28903,13 +34306,6 @@ "perfect-debounce": "^1.0.0", "pkg-types": "^1.0.3", "rc9": "^2.1.1" - }, - "dependencies": { - "dotenv": { - "version": "16.3.1", - "resolved": "https://registry.npmjs.org/dotenv/-/dotenv-16.3.1.tgz", - "integrity": "sha512-IPzF4w4/Rd94bA9imS68tZBaYyBWSCE47V1RGuMrB94iyTOIEwRmVL2x/4An+6mETpLrKJ5hQkB8W4kFAadeIQ==" - } } }, "cac": { @@ -28937,6 +34333,15 @@ "callsites": { "version": "3.1.0" }, + "camel-case": { + "version": "4.1.2", + "resolved": "https://registry.npmjs.org/camel-case/-/camel-case-4.1.2.tgz", + "integrity": "sha512-gxGWBrTT1JuMx6R+o5PTXMmUnhnVzLQ9SNutD4YqKtI6ap897t3tKECYla6gCWEkplXnlNybEkZg9GEGxKFCgw==", + "requires": { + "pascal-case": "^3.1.2", + "tslib": "^2.0.3" + } + }, "camelcase": { "version": "6.3.0", "resolved": "https://registry.npmjs.org/camelcase/-/camelcase-6.3.0.tgz", @@ -28988,33 +34393,6 @@ "no-case": "^3.0.4", "tslib": "^2.0.3", "upper-case-first": "^2.0.2" - }, - "dependencies": { - "lower-case": { - "version": "2.0.2", - "resolved": "https://registry.npmjs.org/lower-case/-/lower-case-2.0.2.tgz", - "integrity": "sha512-7fm3l3NAF9WfN6W3JOmf5drwpVqX78JtoGJ3A6W0a6ZnldM41w2fV5D490psKFTpMds8TJse/eHLFFsNHHjHgg==", - "requires": { - "tslib": "^2.0.3" - } - }, - "no-case": { - "version": "3.0.4", - "resolved": "https://registry.npmjs.org/no-case/-/no-case-3.0.4.tgz", - "integrity": "sha512-fgAN3jGAh+RoxUGZHTSOLJIqUc2wmoBwGR4tbpNAKmmovFoWq0OdRkb0VkldReO2a2iBT/OEulG9XSUc10r3zg==", - "requires": { - "lower-case": "^2.0.2", - "tslib": "^2.0.3" - } - }, - "upper-case-first": { - "version": "2.0.2", - "resolved": "https://registry.npmjs.org/upper-case-first/-/upper-case-first-2.0.2.tgz", - "integrity": "sha512-514ppYHBaKwfJRK/pNC6c/OxfGa0obSnAl106u97Ed0I625Nin96KAjttZF6ZL3e1XLtphxnqrOi9iWgm+u+bg==", - "requires": { - "tslib": "^2.0.3" - } - } } }, "ccount": { @@ -29044,6 +34422,25 @@ "supports-color": "^7.1.0" } }, + "change-case": { + "version": "4.1.2", + "resolved": "https://registry.npmjs.org/change-case/-/change-case-4.1.2.tgz", + "integrity": "sha512-bSxY2ws9OtviILG1EiY5K7NNxkqg/JnRnFxLtKQ96JaviiIxi7djMrSd0ECT9AC+lttClmYwKw53BWpOMblo7A==", + "requires": { + "camel-case": "^4.1.2", + "capital-case": "^1.0.4", + "constant-case": "^3.0.4", + "dot-case": "^3.0.4", + "header-case": "^2.0.4", + "no-case": "^3.0.4", + "param-case": "^3.0.4", + "pascal-case": "^3.1.2", + "path-case": "^3.0.4", + "sentence-case": "^3.0.4", + "snake-case": "^3.0.4", + "tslib": "^2.0.3" + } + }, "char-regex": { "version": "1.0.2", "resolved": "https://registry.npmjs.org/char-regex/-/char-regex-1.0.2.tgz", @@ -29152,6 +34549,12 @@ "consola": "^3.2.3" } }, + "cjs-module-lexer": { + "version": "1.2.3", + "resolved": "https://registry.npmjs.org/cjs-module-lexer/-/cjs-module-lexer-1.2.3.tgz", + "integrity": "sha512-0TNiGstbQmCFwt4akjjBg5pLRTSyj/PkWQ1ZoO2zntmg9yLqSRxwEa4iCfQLGjqhiqBfOJa7W/E8wfGrTDmlZQ==", + "dev": true + }, "clean-regexp": { "version": "1.0.0", "dev": true, @@ -29197,6 +34600,27 @@ } } }, + "cli-cursor": { + "version": "3.1.0", + "resolved": "https://registry.npmjs.org/cli-cursor/-/cli-cursor-3.1.0.tgz", + "integrity": "sha512-I/zHAwsKf9FqGoXM4WWRACob9+SNukZTd94DWF57E4toouRulbCxcUh6RKUEOQlYTHJnzkPMySvPNaaSLNfLZw==", + "dev": true, + "requires": { + "restore-cursor": "^3.1.0" + } + }, + "cli-spinners": { + "version": "2.9.1", + "resolved": "https://registry.npmjs.org/cli-spinners/-/cli-spinners-2.9.1.tgz", + "integrity": "sha512-jHgecW0pxkonBJdrKsqxgRX9AcG+u/5k0Q7WPDfi8AogLAdwxEkyYYNWwZ5GvVFoFx2uiY1eNcSK00fh+1+FyQ==", + "dev": true + }, + "cli-width": { + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/cli-width/-/cli-width-3.0.0.tgz", + "integrity": "sha512-FxqpkPPwu1HjuN93Omfm4h8uIanXofW0RxVEW3k5RKx+mJJYSthzNhp32Kzxxy3YAEZ/Dc/EWN1vZRY0+kOhbw==", + "dev": true + }, "clipboardy": { "version": "3.0.0", "resolved": "https://registry.npmjs.org/clipboardy/-/clipboardy-3.0.0.tgz", @@ -29245,6 +34669,12 @@ "resolved": "https://registry.npmjs.org/co/-/co-4.6.0.tgz", "integrity": "sha512-QVb0dM5HvG+uaxitm8wONl7jltx8dqhfU33DcqtOZcLSVIKSDDLDi7+0LbAKiyI8hD9u42m2YxXSkMGWThaecQ==" }, + "collect-v8-coverage": { + "version": "1.0.2", + "resolved": "https://registry.npmjs.org/collect-v8-coverage/-/collect-v8-coverage-1.0.2.tgz", + "integrity": "sha512-lHl4d5/ONEbLlJvaJNtsF/Lz+WvB07u2ycqTYbdrq7UypDXailES4valYb2eWiJFxZlVmpGekfqoxQhzyFdT4Q==", + "dev": true + }, "color-convert": { "version": "2.0.1", "requires": { @@ -29275,6 +34705,15 @@ "integrity": "sha512-erNRLao/Y3Fv54qUa0LBB+//Uf3YwMUmdJinN20yMXm9zdKKqH9wt7R9IIVZ+K7ShzfpLV/Zg8+VyrBJYB4lpg==", "dev": true }, + "combined-stream": { + "version": "1.0.8", + "resolved": "https://registry.npmjs.org/combined-stream/-/combined-stream-1.0.8.tgz", + "integrity": "sha512-FQN4MRfuJeHf7cBbBMJFXhKSDq+2kAArBlmRBvcvFE5BB1HZKXtSFASDhdlz9zOYwxh8lDdnvmMOe/+5cdoEdg==", + "dev": true, + "requires": { + "delayed-stream": "~1.0.0" + } + }, "comma-separated-tokens": { "version": "2.0.3", "resolved": "https://registry.npmjs.org/comma-separated-tokens/-/comma-separated-tokens-2.0.3.tgz", @@ -29345,6 +34784,16 @@ "resolved": "https://registry.npmjs.org/console-control-strings/-/console-control-strings-1.1.0.tgz", "integrity": "sha512-ty/fTekppD2fIwRvnZAVdeOiGd1c7YXEixbgJTNzqcxJWKQnjJ/V1bNEEE6hygpM3WjwHFUVK6HTjWSzV4a8sQ==" }, + "constant-case": { + "version": "3.0.4", + "resolved": "https://registry.npmjs.org/constant-case/-/constant-case-3.0.4.tgz", + "integrity": "sha512-I2hSBi7Vvs7BEuJDr5dDHfzb/Ruj3FyvFyh7KLilAjNQw3Be+xgqUBA2W6scVEcL0hL1dwPRtIqEPVUCKkSsyQ==", + "requires": { + "no-case": "^3.0.4", + "tslib": "^2.0.3", + "upper-case": "^2.0.2" + } + }, "content-disposition": { "version": "0.5.4", "resolved": "https://registry.npmjs.org/content-disposition/-/content-disposition-0.5.4.tgz", @@ -29415,6 +34864,21 @@ "readable-stream": "^3.4.0" } }, + "create-jest": { + "version": "29.7.0", + "resolved": "https://registry.npmjs.org/create-jest/-/create-jest-29.7.0.tgz", + "integrity": "sha512-Adz2bdH0Vq3F53KEMJOoftQFutWCukm6J24wbPWRO4k1kMY7gS7ds/uoJkNuV8wDCtWWnuwGcJwpWcih+zEW1Q==", + "dev": true, + "requires": { + "@jest/types": "^29.6.3", + "chalk": "^4.0.0", + "exit": "^0.1.2", + "graceful-fs": "^4.2.9", + "jest-config": "^29.7.0", + "jest-util": "^29.7.0", + "prompts": "^2.0.1" + } + }, "create-require": { "version": "1.1.1" }, @@ -29563,6 +35027,15 @@ } } }, + "cssstyle": { + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/cssstyle/-/cssstyle-3.0.0.tgz", + "integrity": "sha512-N4u2ABATi3Qplzf0hWbVCdjenim8F3ojEXpBDF5hBpjzW182MjNGLqfmQ0SkSPeQ+V86ZXgeH8aXj6kayd4jgg==", + "dev": true, + "requires": { + "rrweb-cssom": "^0.6.0" + } + }, "csstype": { "version": "3.1.2" }, @@ -29646,6 +35119,192 @@ } } }, + "d.d0rich.me": { + "version": "file:apps/d.d0rich.me", + "requires": { + "@d0rich/contracts": "*", + "@tsconfig/node18": "^18.2.2", + "@types/jsdom": "^21.1.3", + "@types/node": "^18.18.5", + "@vitejs/plugin-vue": "^4.4.0", + "@vue/test-utils": "^2.4.1", + "@vue/tsconfig": "^0.4.0", + "jsdom": "^22.1.0", + "npm-run-all2": "^6.1.1", + "pinia": "^2.1.7", + "typescript": "~5.2.0", + "vite": "^4.4.11", + "vitest": "^0.34.6", + "vue": "^3.3.4", + "vue-router": "^4.2.5", + "vue-tsc": "^1.8.19" + }, + "dependencies": { + "@types/node": { + "version": "18.18.11", + "resolved": "https://registry.npmjs.org/@types/node/-/node-18.18.11.tgz", + "integrity": "sha512-c1vku6qnTeujJneYH94/4aq73XrVcsJe35UPyAsSok1ijiKrkRzK+AxQPSpNMUnC03roWBBwJx/9I8V7lQoxmA==", + "dev": true, + "requires": { + "undici-types": "~5.26.4" + } + }, + "@vitest/expect": { + "version": "0.34.6", + "resolved": "https://registry.npmjs.org/@vitest/expect/-/expect-0.34.6.tgz", + "integrity": "sha512-QUzKpUQRc1qC7qdGo7rMK3AkETI7w18gTCUrsNnyjjJKYiuUB9+TQK3QnR1unhCnWRC0AbKv2omLGQDF/mIjOw==", + "dev": true, + "requires": { + "@vitest/spy": "0.34.6", + "@vitest/utils": "0.34.6", + "chai": "^4.3.10" + } + }, + "@vitest/runner": { + "version": "0.34.6", + "resolved": "https://registry.npmjs.org/@vitest/runner/-/runner-0.34.6.tgz", + "integrity": "sha512-1CUQgtJSLF47NnhN+F9X2ycxUP0kLHQ/JWvNHbeBfwW8CzEGgeskzNnHDyv1ieKTltuR6sdIHV+nmR6kPxQqzQ==", + "dev": true, + "requires": { + "@vitest/utils": "0.34.6", + "p-limit": "^4.0.0", + "pathe": "^1.1.1" + } + }, + "@vitest/snapshot": { + "version": "0.34.6", + "resolved": "https://registry.npmjs.org/@vitest/snapshot/-/snapshot-0.34.6.tgz", + "integrity": "sha512-B3OZqYn6k4VaN011D+ve+AA4whM4QkcwcrwaKwAbyyvS/NB1hCWjFIBQxAQQSQir9/RtyAAGuq+4RJmbn2dH4w==", + "dev": true, + "requires": { + "magic-string": "^0.30.1", + "pathe": "^1.1.1", + "pretty-format": "^29.5.0" + } + }, + "@vitest/spy": { + "version": "0.34.6", + "resolved": "https://registry.npmjs.org/@vitest/spy/-/spy-0.34.6.tgz", + "integrity": "sha512-xaCvneSaeBw/cz8ySmF7ZwGvL0lBjfvqc1LpQ/vcdHEvpLn3Ff1vAvjw+CoGn0802l++5L/pxb7whwcWAw+DUQ==", + "dev": true, + "requires": { + "tinyspy": "^2.1.1" + } + }, + "@vitest/utils": { + "version": "0.34.6", + "resolved": "https://registry.npmjs.org/@vitest/utils/-/utils-0.34.6.tgz", + "integrity": "sha512-IG5aDD8S6zlvloDsnzHw0Ut5xczlF+kv2BOTo+iXfPr54Yhi5qbVOgGB1hZaVq4iJ4C/MZ2J0y15IlsV/ZcI0A==", + "dev": true, + "requires": { + "diff-sequences": "^29.4.3", + "loupe": "^2.3.6", + "pretty-format": "^29.5.0" + } + }, + "ansi-styles": { + "version": "5.2.0", + "resolved": "https://registry.npmjs.org/ansi-styles/-/ansi-styles-5.2.0.tgz", + "integrity": "sha512-Cxwpt2SfTzTtXcfOlzGEee8O+c+MmUgGrNiBcXnuWxuFJHe6a5Hz7qwhwe5OgaSYI0IJvkLqWX1ASG+cJOkEiA==", + "dev": true + }, + "p-limit": { + "version": "4.0.0", + "resolved": "https://registry.npmjs.org/p-limit/-/p-limit-4.0.0.tgz", + "integrity": "sha512-5b0R4txpzjPWVw/cXXUResoD4hb6U/x9BH08L7nw+GN1sezDzPdxeRvpc9c433fZhBan/wusjbCsqwqm4EIBIQ==", + "dev": true, + "requires": { + "yocto-queue": "^1.0.0" + } + }, + "pinia": { + "version": "2.1.7", + "resolved": "https://registry.npmjs.org/pinia/-/pinia-2.1.7.tgz", + "integrity": "sha512-+C2AHFtcFqjPih0zpYuvof37SFxMQ7OEG2zV9jRI12i9BOy3YQVAHwdKtyyc8pDcDyIc33WCIsZaCFWU7WWxGQ==", + "requires": { + "@vue/devtools-api": "^6.5.0", + "vue-demi": ">=0.14.5" + }, + "dependencies": { + "vue-demi": { + "version": "0.14.6", + "resolved": "https://registry.npmjs.org/vue-demi/-/vue-demi-0.14.6.tgz", + "integrity": "sha512-8QA7wrYSHKaYgUxDA5ZC24w+eHm3sYCbp0EzcDwKqN3p6HqtTCGR/GVsPyZW92unff4UlcSh++lmqDWN3ZIq4w==", + "requires": {} + } + } + }, + "pretty-format": { + "version": "29.7.0", + "resolved": "https://registry.npmjs.org/pretty-format/-/pretty-format-29.7.0.tgz", + "integrity": "sha512-Pdlw/oPxN+aXdmM9R00JVC9WVFoCLTKJvDVLgmJ+qAffBMxsV85l/Lu7sNx4zSzPyoL2euImuEwHhOXdEgNFZQ==", + "dev": true, + "requires": { + "@jest/schemas": "^29.6.3", + "ansi-styles": "^5.0.0", + "react-is": "^18.0.0" + } + }, + "tinypool": { + "version": "0.7.0", + "resolved": "https://registry.npmjs.org/tinypool/-/tinypool-0.7.0.tgz", + "integrity": "sha512-zSYNUlYSMhJ6Zdou4cJwo/p7w5nmAH17GRfU/ui3ctvjXFErXXkruT4MWW6poDeXgCaIBlGLrfU6TbTXxyGMww==", + "dev": true + }, + "vite-node": { + "version": "0.34.6", + "resolved": "https://registry.npmjs.org/vite-node/-/vite-node-0.34.6.tgz", + "integrity": "sha512-nlBMJ9x6n7/Amaz6F3zJ97EBwR2FkzhBRxF5e+jE6LA3yi6Wtc2lyTij1OnDMIr34v5g/tVQtsVAzhT0jc5ygA==", + "dev": true, + "requires": { + "cac": "^6.7.14", + "debug": "^4.3.4", + "mlly": "^1.4.0", + "pathe": "^1.1.1", + "picocolors": "^1.0.0", + "vite": "^3.0.0 || ^4.0.0 || ^5.0.0-0" + } + }, + "vitest": { + "version": "0.34.6", + "resolved": "https://registry.npmjs.org/vitest/-/vitest-0.34.6.tgz", + "integrity": "sha512-+5CALsOvbNKnS+ZHMXtuUC7nL8/7F1F2DnHGjSsszX8zCjWSSviphCb/NuS9Nzf4Q03KyyDRBAXhF/8lffME4Q==", + "dev": true, + "requires": { + "@types/chai": "^4.3.5", + "@types/chai-subset": "^1.3.3", + "@types/node": "*", + "@vitest/expect": "0.34.6", + "@vitest/runner": "0.34.6", + "@vitest/snapshot": "0.34.6", + "@vitest/spy": "0.34.6", + "@vitest/utils": "0.34.6", + "acorn": "^8.9.0", + "acorn-walk": "^8.2.0", + "cac": "^6.7.14", + "chai": "^4.3.10", + "debug": "^4.3.4", + "local-pkg": "^0.4.3", + "magic-string": "^0.30.1", + "pathe": "^1.1.1", + "picocolors": "^1.0.0", + "std-env": "^3.3.3", + "strip-literal": "^1.0.1", + "tinybench": "^2.5.0", + "tinypool": "^0.7.0", + "vite": "^3.1.0 || ^4.0.0 || ^5.0.0-0", + "vite-node": "0.34.6", + "why-is-node-running": "^2.2.2" + } + }, + "yocto-queue": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/yocto-queue/-/yocto-queue-1.0.0.tgz", + "integrity": "sha512-9bnSc/HEW2uRy67wc+T8UwauLuPJVn28jb+GtJY16iiKWyvmYJRXVT4UamsAEGQfPohgr2q4Tq0sQbQlxTfi1g==", + "dev": true + } + } + }, "d0rich.me": { "version": "file:apps/d0rich.me", "requires": { @@ -30149,6 +35808,50 @@ "data-uri-to-buffer": { "version": "6.0.1" }, + "data-urls": { + "version": "4.0.0", + "resolved": "https://registry.npmjs.org/data-urls/-/data-urls-4.0.0.tgz", + "integrity": "sha512-/mMTei/JXPqvFqQtfyTowxmJVwr2PVAeCcDxyFf6LhoOu/09TX2OX3kb2wzi4DMXcfj4OItwDOnhl5oziPnT6g==", + "dev": true, + "requires": { + "abab": "^2.0.6", + "whatwg-mimetype": "^3.0.0", + "whatwg-url": "^12.0.0" + }, + "dependencies": { + "tr46": { + "version": "4.1.1", + "resolved": "https://registry.npmjs.org/tr46/-/tr46-4.1.1.tgz", + "integrity": "sha512-2lv/66T7e5yNyhAAC4NaKe5nVavzuGJQVVtRYLyQ2OI8tsJ61PMLlelehb0wi2Hx6+hT/OJUWZcw8MjlSRnxvw==", + "dev": true, + "requires": { + "punycode": "^2.3.0" + } + }, + "webidl-conversions": { + "version": "7.0.0", + "resolved": "https://registry.npmjs.org/webidl-conversions/-/webidl-conversions-7.0.0.tgz", + "integrity": "sha512-VwddBukDzu71offAQR975unBIGqfKZpM+8ZX6ySk8nYhVoo5CYaZyzt3YBvYtRtO+aoGlqxPg/B87NGVZ/fu6g==", + "dev": true + }, + "whatwg-url": { + "version": "12.0.1", + "resolved": "https://registry.npmjs.org/whatwg-url/-/whatwg-url-12.0.1.tgz", + "integrity": "sha512-Ed/LrqB8EPlGxjS+TrsXcpUond1mhccS3pchLhzSgPCnTimUCKj3IZE75pAs5m6heB2U2TMerKFUXheyHY+VDQ==", + "dev": true, + "requires": { + "tr46": "^4.1.1", + "webidl-conversions": "^7.0.0" + } + } + } + }, + "dataloader": { + "version": "2.2.2", + "resolved": "https://registry.npmjs.org/dataloader/-/dataloader-2.2.2.tgz", + "integrity": "sha512-8YnDaaf7N3k/q5HnTJVuzSyLETjoZjVmHc4AeKAzOvKHEFQKcn64OKBfzHYtE9zGjctNM7V9I0MfnUVLpi7M5g==", + "dev": true + }, "date-time": { "version": "3.1.0", "resolved": "https://registry.npmjs.org/date-time/-/date-time-3.1.0.tgz", @@ -30204,6 +35907,12 @@ } } }, + "decimal.js": { + "version": "10.4.3", + "resolved": "https://registry.npmjs.org/decimal.js/-/decimal.js-10.4.3.tgz", + "integrity": "sha512-VBBaLc1MgL5XpzgIP7ny5Z6Nx3UrRkIViUkPUdtl9aya5amy3De1gsUUSB1g3+3sExYNjCAsAznmukyxCb1GRA==", + "dev": true + }, "decode-named-character-reference": { "version": "1.0.2", "resolved": "https://registry.npmjs.org/decode-named-character-reference/-/decode-named-character-reference-1.0.2.tgz", @@ -30212,6 +35921,13 @@ "character-entities": "^2.0.0" } }, + "dedent": { + "version": "1.5.1", + "resolved": "https://registry.npmjs.org/dedent/-/dedent-1.5.1.tgz", + "integrity": "sha512-+LxW+KLWxu3HW3M2w2ympwtqPrqYRzU8fqi6Fhd18fBALe15blJPI/I4+UHveMVG6lJqB4JNd4UG0S5cnVHwIg==", + "dev": true, + "requires": {} + }, "deep-eql": { "version": "4.1.3", "resolved": "https://registry.npmjs.org/deep-eql/-/deep-eql-4.1.3.tgz", @@ -30287,6 +36003,12 @@ "robust-predicates": "^3.0.0" } }, + "delayed-stream": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/delayed-stream/-/delayed-stream-1.0.0.tgz", + "integrity": "sha512-ZySD7Nf91aLB0RxL4KGrKHBXl7Eds1DAmEdcoVawXnLD7SDhpNgtuII2aAkg7a7QS41jxPSZ17p4VdGnMHk3MQ==", + "dev": true + }, "delegates": { "version": "1.0.0", "resolved": "https://registry.npmjs.org/delegates/-/delegates-1.0.0.tgz", @@ -30344,6 +36066,12 @@ "resolved": "https://registry.npmjs.org/detect-libc/-/detect-libc-1.0.3.tgz", "integrity": "sha512-pGjwhsmsp4kL2RTz08wcOlGN83otlqHeD/Z5T8GXZB+/YcpQ/dgo+lbU8ZsGxV0HIvqqxo9l7mqYwyYMD9bKDg==" }, + "detect-newline": { + "version": "3.1.0", + "resolved": "https://registry.npmjs.org/detect-newline/-/detect-newline-3.1.0.tgz", + "integrity": "sha512-TLz+x/vEXm/Y7P7wn1EJFNLxYpUD4TgMosxY6fAVJUnJMbupHBOncxyWUG9OpTaH9EBD7uFI5LfEgmMOc54DsA==", + "dev": true + }, "devalue": { "version": "4.3.2", "resolved": "https://registry.npmjs.org/devalue/-/devalue-4.3.2.tgz", @@ -30369,8 +36097,13 @@ }, "diff": { "version": "4.0.2", - "optional": true, - "peer": true + "devOptional": true + }, + "diff-sequences": { + "version": "29.6.3", + "resolved": "https://registry.npmjs.org/diff-sequences/-/diff-sequences-29.6.3.tgz", + "integrity": "sha512-EjePK1srD3P08o2j4f0ExnylqRs5B9tJjcp9t1krH2qRi8CCdsYfwe9JgSLurFBWwq4uOlipzfk5fHNvwFKr8Q==", + "dev": true }, "dir-glob": { "version": "3.0.1", @@ -30405,6 +36138,23 @@ "resolved": "https://registry.npmjs.org/domelementtype/-/domelementtype-2.3.0.tgz", "integrity": "sha512-OLETBj6w0OsagBwdXnPdN0cnMfF9opN69co+7ZrbfPGrdpPVNBUj02spi6B1N7wChLQiPn4CSH/zJvXw56gmHw==" }, + "domexception": { + "version": "4.0.0", + "resolved": "https://registry.npmjs.org/domexception/-/domexception-4.0.0.tgz", + "integrity": "sha512-A2is4PLG+eeSfoTMA95/s4pvAoSo2mKtiM5jlHkAVewmiO8ISFTFKZjH7UAM1Atli/OT/7JHOrJRJiMKUZKYBw==", + "dev": true, + "requires": { + "webidl-conversions": "^7.0.0" + }, + "dependencies": { + "webidl-conversions": { + "version": "7.0.0", + "resolved": "https://registry.npmjs.org/webidl-conversions/-/webidl-conversions-7.0.0.tgz", + "integrity": "sha512-VwddBukDzu71offAQR975unBIGqfKZpM+8ZX6ySk8nYhVoo5CYaZyzt3YBvYtRtO+aoGlqxPg/B87NGVZ/fu6g==", + "dev": true + } + } + }, "domhandler": { "version": "5.0.3", "resolved": "https://registry.npmjs.org/domhandler/-/domhandler-5.0.3.tgz", @@ -30429,6 +36179,15 @@ "domhandler": "^5.0.3" } }, + "dot-case": { + "version": "3.0.4", + "resolved": "https://registry.npmjs.org/dot-case/-/dot-case-3.0.4.tgz", + "integrity": "sha512-Kv5nKlh6yRrdrGvxeJ2e5y2eRUpkUosIW4A2AS38zwSz27zu7ufDwQPi5Jhs3XAlGNetl3bmnGhQsMtkKJnj3w==", + "requires": { + "no-case": "^3.0.4", + "tslib": "^2.0.3" + } + }, "dot-prop": { "version": "8.0.2", "resolved": "https://registry.npmjs.org/dot-prop/-/dot-prop-8.0.2.tgz", @@ -30444,6 +36203,11 @@ } } }, + "dotenv": { + "version": "16.3.1", + "resolved": "https://registry.npmjs.org/dotenv/-/dotenv-16.3.1.tgz", + "integrity": "sha512-IPzF4w4/Rd94bA9imS68tZBaYyBWSCE47V1RGuMrB94iyTOIEwRmVL2x/4An+6mETpLrKJ5hQkB8W4kFAadeIQ==" + }, "duplexer": { "version": "0.1.2", "resolved": "https://registry.npmjs.org/duplexer/-/duplexer-0.1.2.tgz", @@ -30508,6 +36272,12 @@ "integrity": "sha512-L6uRgvZTH+4OF5NE/MBbzQx/WYpru1xCBE9respNj6qznEewGUIfhzmm7horWWxbNO2M0WckQypGctR8lH79xQ==", "dev": true }, + "emittery": { + "version": "0.13.1", + "resolved": "https://registry.npmjs.org/emittery/-/emittery-0.13.1.tgz", + "integrity": "sha512-DeWwawk6r5yR9jFgnDKYt4sLS0LmHJJi3ZOnb5/JdbYwj3nW+FxQnHIjhBKz8YLC7oRNPVM9NQ47I3CVx34eqQ==", + "dev": true + }, "emoji-regex": { "version": "9.2.2" }, @@ -30608,6 +36378,12 @@ "resolved": "https://registry.npmjs.org/entities/-/entities-4.5.0.tgz", "integrity": "sha512-V0hjH4dGPh9Ao5p0MoRY6BVqtwCjhz6vI5LT8AJ55H+4g9/4vbHx1I54fS0XuclLhDHArPQCiMjDxjaL8fPxhw==" }, + "err-code": { + "version": "3.0.1", + "resolved": "https://registry.npmjs.org/err-code/-/err-code-3.0.1.tgz", + "integrity": "sha512-GiaH0KJUewYok+eeY05IIgjtAe4Yltygk9Wqp1V5yVWLdhf0hYZchRjNIT9bb0mSwRcIusT3cx7PJUf3zEIfUA==", + "dev": true + }, "errno": { "version": "0.1.8", "resolved": "https://registry.npmjs.org/errno/-/errno-0.1.8.tgz", @@ -31204,12 +36980,36 @@ "resolved": "https://registry.npmjs.org/etag/-/etag-1.8.1.tgz", "integrity": "sha512-aIL5Fx7mawVa300al2BnEE4iNvo1qETxLrPI/o05L7z6go7fCw1J6EQmbK4FmJ2AS7kgVF/KEZWufBfdClMcPg==" }, + "ethjs-unit": { + "version": "0.1.6", + "resolved": "https://registry.npmjs.org/ethjs-unit/-/ethjs-unit-0.1.6.tgz", + "integrity": "sha512-/Sn9Y0oKl0uqQuvgFk/zQgR7aw1g36qX/jzSQ5lSwlO0GigPymk4eGQfeNTD03w1dPOqfz8V77Cy43jH56pagw==", + "dev": true, + "requires": { + "bn.js": "4.11.6", + "number-to-bn": "1.7.0" + }, + "dependencies": { + "bn.js": { + "version": "4.11.6", + "resolved": "https://registry.npmjs.org/bn.js/-/bn.js-4.11.6.tgz", + "integrity": "sha512-XWwnNNFCuuSQ0m3r3C4LE3EiORltHd9M05pq6FOlVeiophzRbMo50Sbz1ehl8K3Z+jw9+vmgnXefY1hz8X+2wA==", + "dev": true + } + } + }, "events": { "version": "3.3.0", "resolved": "https://registry.npmjs.org/events/-/events-3.3.0.tgz", "integrity": "sha512-mQw+2fkQbALzQ7V0MY0IqdnXNOeTtP4r0lN9z7AAawCXgqea7bDii20AYrIBrFd/Hx0M2Ocz6S111CaFkUcb0Q==", "peer": true }, + "eventsource": { + "version": "2.0.2", + "resolved": "https://registry.npmjs.org/eventsource/-/eventsource-2.0.2.tgz", + "integrity": "sha512-IzUmBGPR3+oUG9dUeXynyNmf91/3zUSJg1lCktzKw47OXuhco54U3r9B7O4XX+Rb1Itm9OZ2b0RkTs10bICOxA==", + "dev": true + }, "execa": { "version": "5.1.1", "requires": { @@ -31224,6 +37024,25 @@ "strip-final-newline": "^2.0.0" } }, + "exit": { + "version": "0.1.2", + "resolved": "https://registry.npmjs.org/exit/-/exit-0.1.2.tgz", + "integrity": "sha512-Zk/eNKV2zbjpKzrsQ+n1G6poVbErQxJ0LBOJXaKZ1EViLzH+hrLu9cdXI4zw9dBQJslwBEpbQ2P1oS7nDxs6jQ==", + "dev": true + }, + "expect": { + "version": "29.7.0", + "resolved": "https://registry.npmjs.org/expect/-/expect-29.7.0.tgz", + "integrity": "sha512-2Zks0hf1VLFYI1kbh0I5jP3KHHyCHpkfyHBzsSXRFgl/Bg9mWYfMW8oD+PdMPlEwy5HNsR9JutYy6pMeOh61nw==", + "dev": true, + "requires": { + "@jest/expect-utils": "^29.7.0", + "jest-get-type": "^29.6.3", + "jest-matcher-utils": "^29.7.0", + "jest-message-util": "^29.7.0", + "jest-util": "^29.7.0" + } + }, "extend": { "version": "3.0.2", "resolved": "https://registry.npmjs.org/extend/-/extend-3.0.2.tgz", @@ -31323,6 +37142,15 @@ "reusify": "^1.0.4" } }, + "fb-watchman": { + "version": "2.0.2", + "resolved": "https://registry.npmjs.org/fb-watchman/-/fb-watchman-2.0.2.tgz", + "integrity": "sha512-p5161BqbuCaSnB8jIbzQHOlpgsPmK5rJVDfDKO91Axs5NC1uu3HRQm6wt9cd9/+GtQQIO53JdGXXoyDpTAsgYA==", + "dev": true, + "requires": { + "bser": "2.1.1" + } + }, "fd-slicer": { "version": "1.1.0", "resolved": "https://registry.npmjs.org/fd-slicer/-/fd-slicer-1.1.0.tgz", @@ -31331,6 +37159,23 @@ "pend": "~1.2.0" } }, + "figures": { + "version": "3.2.0", + "resolved": "https://registry.npmjs.org/figures/-/figures-3.2.0.tgz", + "integrity": "sha512-yaduQFRKLXYOGgEn6AZau90j3ggSOyiqXU0F9JZfeXYhNa+Jk4X+s45A2zg5jns87GAFa34BBm2kXw4XpNcbdg==", + "dev": true, + "requires": { + "escape-string-regexp": "^1.0.5" + }, + "dependencies": { + "escape-string-regexp": { + "version": "1.0.5", + "resolved": "https://registry.npmjs.org/escape-string-regexp/-/escape-string-regexp-1.0.5.tgz", + "integrity": "sha512-vbRorB5FUQWvla16U8R/qgaFIya2qGzwDrNmCZuYKrbdSUMG6I1ZCGQRefkRVhuOkIGVne7BQ35DSfo1qvJqFg==", + "dev": true + } + } + }, "file-entry-cache": { "version": "6.0.1", "devOptional": true, @@ -31385,6 +37230,12 @@ "version": "3.2.9", "devOptional": true }, + "follow-redirects": { + "version": "1.15.3", + "resolved": "https://registry.npmjs.org/follow-redirects/-/follow-redirects-1.15.3.tgz", + "integrity": "sha512-1VzOtuEM8pC9SFU1E+8KfTjZyMztRsgEfwQl44z8A25uy13jSzTj6dyK2Df52iV0vgHCfBwLhDWevLn95w5v6Q==", + "dev": true + }, "for-each": { "version": "0.3.3", "requires": { @@ -31407,6 +37258,23 @@ } } }, + "form-data": { + "version": "4.0.0", + "resolved": "https://registry.npmjs.org/form-data/-/form-data-4.0.0.tgz", + "integrity": "sha512-ETEklSGi5t0QMZuiXoA/Q6vcnxcLQP5vdugSpuAyi6SVGi2clPPp+xgEhuMaHC+zGgn31Kd235W35f7Hykkaww==", + "dev": true, + "requires": { + "asynckit": "^0.4.0", + "combined-stream": "^1.0.8", + "mime-types": "^2.1.12" + } + }, + "fp-ts": { + "version": "2.16.1", + "resolved": "https://registry.npmjs.org/fp-ts/-/fp-ts-2.16.1.tgz", + "integrity": "sha512-by7U5W8dkIzcvDofUcO42yl9JbnHTEDBrzu3pt5fKT+Z4Oy85I21K80EYJYdjQGC2qum4Vo55Ag57iiIK4FYuA==", + "dev": true + }, "fraction.js": { "version": "4.3.7", "resolved": "https://registry.npmjs.org/fraction.js/-/fraction.js-4.3.7.tgz", @@ -31520,6 +37388,12 @@ "hasown": "^2.0.0" } }, + "get-package-type": { + "version": "0.1.0", + "resolved": "https://registry.npmjs.org/get-package-type/-/get-package-type-0.1.0.tgz", + "integrity": "sha512-pjzuKtY64GYfWizNAJ0fr9VqttZkNiK2iS430LtIHzjBEr6bX8Am2zm4sW4Ro5wjWW5cAlRL1qAMTcXbjNAO2Q==", + "dev": true + }, "get-port-please": { "version": "3.1.1", "resolved": "https://registry.npmjs.org/get-port-please/-/get-port-please-3.1.1.tgz", @@ -31724,6 +37598,16 @@ } } }, + "hamt-sharding": { + "version": "2.0.1", + "resolved": "https://registry.npmjs.org/hamt-sharding/-/hamt-sharding-2.0.1.tgz", + "integrity": "sha512-vnjrmdXG9dDs1m/H4iJ6z0JFI2NtgsW5keRkTcM85NGak69Mkf5PHUqBz+Xs0T4sg0ppvj9O5EGAJo40FTxmmA==", + "dev": true, + "requires": { + "sparse-array": "^1.3.1", + "uint8arrays": "^3.0.0" + } + }, "handlebars": { "version": "4.7.8", "requires": { @@ -32107,6 +37991,15 @@ "resolved": "https://registry.npmjs.org/he/-/he-1.2.0.tgz", "integrity": "sha512-F/1DnUGPopORZi0ni+CvrCgHQ5FyEAHRLSApuYWMmrbSwoN2Mn/7k+Gl38gJnR7yyDZk6WLXwiGod1JOWNDKGw==" }, + "header-case": { + "version": "2.0.4", + "resolved": "https://registry.npmjs.org/header-case/-/header-case-2.0.4.tgz", + "integrity": "sha512-H/vuk5TEEVZwrR0lp2zed9OCo1uAILMlx0JEMgC26rzyJJ3N1v6XkwHHXJQdR2doSjcGPM6OKPYoJgf0plJ11Q==", + "requires": { + "capital-case": "^1.0.4", + "tslib": "^2.0.3" + } + }, "heap": { "version": "0.2.7", "resolved": "https://registry.npmjs.org/heap/-/heap-0.2.7.tgz", @@ -32122,6 +38015,21 @@ "version": "2.8.9", "dev": true }, + "html-encoding-sniffer": { + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/html-encoding-sniffer/-/html-encoding-sniffer-3.0.0.tgz", + "integrity": "sha512-oWv4T4yJ52iKrufjnyZPkrN0CH3QnrUqdB6In1g5Fe1mia8GmF36gnfNySxoZtxD5+NmYw1EElVXiBk93UeskA==", + "dev": true, + "requires": { + "whatwg-encoding": "^2.0.0" + } + }, + "html-escaper": { + "version": "2.0.2", + "resolved": "https://registry.npmjs.org/html-escaper/-/html-escaper-2.0.2.tgz", + "integrity": "sha512-H2iMtd0I4Mt5eYiapRdIDjp+XzelXQ0tFE4JS7YFwFevXXMmOp9myNrUvCg0D6ws8iqkRPBfKHgbwig1SmlLfg==", + "dev": true + }, "html-tags": { "version": "3.3.1", "resolved": "https://registry.npmjs.org/html-tags/-/html-tags-3.3.1.tgz", @@ -32244,6 +38152,16 @@ "integrity": "sha512-rKtvo6a868b5Hu3heneU+L4yEQ4jYKLtjpnPeUdK7h0yzXGmyBTypknlkCvHFBqfX9YlorEiMM6Dnq/5atfHkw==", "dev": true }, + "import-local": { + "version": "3.1.0", + "resolved": "https://registry.npmjs.org/import-local/-/import-local-3.1.0.tgz", + "integrity": "sha512-ASB07uLtnDs1o6EHjKpX34BKYDSqnFerfTOJL2HvMqF70LnxpjkzDB8J44oT9pu4AMPkQwf8jl6szgvNd2tRIg==", + "dev": true, + "requires": { + "pkg-dir": "^4.2.0", + "resolve-cwd": "^3.0.0" + } + }, "imurmurhash": { "version": "0.1.4", "devOptional": true @@ -32264,6 +38182,45 @@ "ini": { "version": "1.3.8" }, + "inquirer": { + "version": "8.2.6", + "resolved": "https://registry.npmjs.org/inquirer/-/inquirer-8.2.6.tgz", + "integrity": "sha512-M1WuAmb7pn9zdFRtQYk26ZBoY043Sse0wVDdk4Bppr+JOXyQYybdtvK+l9wUibhtjdjvtoiNy8tk+EgsYIUqKg==", + "dev": true, + "requires": { + "ansi-escapes": "^4.2.1", + "chalk": "^4.1.1", + "cli-cursor": "^3.1.0", + "cli-width": "^3.0.0", + "external-editor": "^3.0.3", + "figures": "^3.0.0", + "lodash": "^4.17.21", + "mute-stream": "0.0.8", + "ora": "^5.4.1", + "run-async": "^2.4.0", + "rxjs": "^7.5.5", + "string-width": "^4.1.0", + "strip-ansi": "^6.0.0", + "through": "^2.3.6", + "wrap-ansi": "^6.0.1" + } + }, + "interface-blockstore": { + "version": "2.0.3", + "resolved": "https://registry.npmjs.org/interface-blockstore/-/interface-blockstore-2.0.3.tgz", + "integrity": "sha512-OwVUnlNcx7H5HloK0Myv6c/C1q9cNG11HX6afdeU6q6kbuNj8jKCwVnmJHhC94LZaJ+9hvVOk4IUstb3Esg81w==", + "dev": true, + "requires": { + "interface-store": "^2.0.2", + "multiformats": "^9.0.4" + } + }, + "interface-store": { + "version": "2.0.2", + "resolved": "https://registry.npmjs.org/interface-store/-/interface-store-2.0.2.tgz", + "integrity": "sha512-rScRlhDcz6k199EkHqT8NpM87ebN89ICOzILoBHgaG36/WX50N32BnU/kpZgCGPLhARRAWUUX5/cyaIjt7Kipg==", + "dev": true + }, "internal-slot": { "version": "1.0.6", "dev": true, @@ -32279,6 +38236,22 @@ "integrity": "sha512-5Hh7Y1wQbvY5ooGgPbDaL5iYLAPzMTUrjMulskHLH6wnv/A+1q5rgEaiuqEjB+oxGXIVZs1FF+R/KPN3ZSQYYg==", "dev": true }, + "io-ts": { + "version": "2.2.20", + "resolved": "https://registry.npmjs.org/io-ts/-/io-ts-2.2.20.tgz", + "integrity": "sha512-Rq2BsYmtwS5vVttie4rqrOCIfHCS9TgpRLFpKQCM1wZBBRY9nWVGmEvm2FnDbSE2un1UE39DvFpTR5UL47YDcA==", + "dev": true, + "requires": {} + }, + "io-ts-reporters": { + "version": "2.0.1", + "resolved": "https://registry.npmjs.org/io-ts-reporters/-/io-ts-reporters-2.0.1.tgz", + "integrity": "sha512-RVpLstYBsmTGgCW9wJ5KVyN/eRnRUDp87Flt4D1O3aJ7oAnd8csq8aXuu7ZeNK8qEDKmjUl9oUuzfwikaNAMKQ==", + "dev": true, + "requires": { + "@scarf/scarf": "^1.1.1" + } + }, "ioredis": { "version": "5.3.2", "resolved": "https://registry.npmjs.org/ioredis/-/ioredis-5.3.2.tgz", @@ -32298,6 +38271,62 @@ "ip": { "version": "1.1.8" }, + "ipfs-unixfs": { + "version": "6.0.9", + "resolved": "https://registry.npmjs.org/ipfs-unixfs/-/ipfs-unixfs-6.0.9.tgz", + "integrity": "sha512-0DQ7p0/9dRB6XCb0mVCTli33GzIzSVx5udpJuVM47tGcD+W+Bl4LsnoLswd3ggNnNEakMv1FdoFITiEnchXDqQ==", + "dev": true, + "requires": { + "err-code": "^3.0.1", + "protobufjs": "^6.10.2" + } + }, + "ipfs-unixfs-importer": { + "version": "9.0.10", + "resolved": "https://registry.npmjs.org/ipfs-unixfs-importer/-/ipfs-unixfs-importer-9.0.10.tgz", + "integrity": "sha512-W+tQTVcSmXtFh7FWYWwPBGXJ1xDgREbIyI1E5JzDcimZLIyT5gGMfxR3oKPxxWj+GKMpP5ilvMQrbsPzWcm3Fw==", + "dev": true, + "requires": { + "@ipld/dag-pb": "^2.0.2", + "@multiformats/murmur3": "^1.0.3", + "bl": "^5.0.0", + "err-code": "^3.0.1", + "hamt-sharding": "^2.0.0", + "interface-blockstore": "^2.0.3", + "ipfs-unixfs": "^6.0.0", + "it-all": "^1.0.5", + "it-batch": "^1.0.8", + "it-first": "^1.0.6", + "it-parallel-batch": "^1.0.9", + "merge-options": "^3.0.4", + "multiformats": "^9.4.2", + "rabin-wasm": "^0.1.4", + "uint8arrays": "^3.0.0" + }, + "dependencies": { + "bl": { + "version": "5.1.0", + "resolved": "https://registry.npmjs.org/bl/-/bl-5.1.0.tgz", + "integrity": "sha512-tv1ZJHLfTDnXE6tMHv73YgSJaWR2AFuPwMntBe7XL/GBFHnT0CLnsHMogfk5+GzCDC5ZWarSCYaIGATZt9dNsQ==", + "dev": true, + "requires": { + "buffer": "^6.0.3", + "inherits": "^2.0.4", + "readable-stream": "^3.4.0" + } + }, + "buffer": { + "version": "6.0.3", + "resolved": "https://registry.npmjs.org/buffer/-/buffer-6.0.3.tgz", + "integrity": "sha512-FTiCpNxtwiZZHEZbcbTIcZjERVICn9yq/pDFkTl95/AxzD1naBctN7YO68riM/gLSDY7sdrMby8hofADYuuqOA==", + "dev": true, + "requires": { + "base64-js": "^1.3.1", + "ieee754": "^1.2.1" + } + } + } + }, "iron-webcrypto": { "version": "1.0.0", "resolved": "https://registry.npmjs.org/iron-webcrypto/-/iron-webcrypto-1.0.0.tgz", @@ -32416,6 +38445,12 @@ "is-fullwidth-code-point": { "version": "3.0.0" }, + "is-generator-fn": { + "version": "2.1.0", + "resolved": "https://registry.npmjs.org/is-generator-fn/-/is-generator-fn-2.1.0.tgz", + "integrity": "sha512-cTIB4yPYL/Grw0EaSzASzg6bBy9gqCofvWN8okThAYIxKJZC+udlRAmGbM0XLeniEJSs8uEgHPGuHSe1XsOLSQ==", + "dev": true + }, "is-generator-function": { "version": "1.0.10", "requires": { @@ -32428,11 +38463,23 @@ "is-extglob": "^2.1.1" } }, + "is-hex-prefixed": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/is-hex-prefixed/-/is-hex-prefixed-1.0.0.tgz", + "integrity": "sha512-WvtOiug1VFrE9v1Cydwm+FnXd3+w9GaeVUss5W4v/SLy3UW00vP+6iNF2SdnfiBoLy4bTqVdkftNGTUeOFVsbA==", + "dev": true + }, "is-hexadecimal": { "version": "2.0.1", "resolved": "https://registry.npmjs.org/is-hexadecimal/-/is-hexadecimal-2.0.1.tgz", "integrity": "sha512-DgZQp241c8oO6cA1SbTEWiXeoxV42vlcJxgH+B3hi1AiqqKruZR3ZGF8In3fj4+/y/7rHvlOZLZtgJ/4ttYGZg==" }, + "is-interactive": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/is-interactive/-/is-interactive-1.0.0.tgz", + "integrity": "sha512-2HvIEKRoqS62guEC+qBjpvRubdX910WCMuJTZ+I9yvqKU2/12eSL549HMwtabb4oupdj2sMP50k+XJfB/8JE6w==", + "dev": true + }, "is-module": { "version": "1.0.0", "resolved": "https://registry.npmjs.org/is-module/-/is-module-1.0.0.tgz", @@ -32473,6 +38520,12 @@ "resolved": "https://registry.npmjs.org/is-plain-object/-/is-plain-object-5.0.0.tgz", "integrity": "sha512-VRSzKkbMm5jMDoKLbltAkFQ5Qr7VDiTFGXxYFXXowVj387GeGNOCsOH6Msy00SGZ3Fp84b1Naa1psqgcCIEP5Q==" }, + "is-potential-custom-element-name": { + "version": "1.0.1", + "resolved": "https://registry.npmjs.org/is-potential-custom-element-name/-/is-potential-custom-element-name-1.0.1.tgz", + "integrity": "sha512-bCYeRA2rVibKZd+s2625gGnGF/t7DSqDs4dP7CrLA1m7jKWz6pps0LpYLJN8Q64HtmPKJ1hrN3nzPNKFEKOUiQ==", + "dev": true + }, "is-primitive": { "version": "3.0.1", "resolved": "https://registry.npmjs.org/is-primitive/-/is-primitive-3.0.1.tgz", @@ -32546,6 +38599,12 @@ "which-typed-array": "^1.1.11" } }, + "is-unicode-supported": { + "version": "0.1.0", + "resolved": "https://registry.npmjs.org/is-unicode-supported/-/is-unicode-supported-0.1.0.tgz", + "integrity": "sha512-knxG2q4UC3u8stRGyAVJCOdxFmv5DZiRcdlIaAQXAbSfJya+OhopNotLQrstBhququ4ZpuKbDc/8S6mgXgPFPw==", + "dev": true + }, "is-weakref": { "version": "1.0.2", "dev": true, @@ -32577,6 +38636,123 @@ "isexe": { "version": "2.0.0" }, + "isomorphic-fetch": { + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/isomorphic-fetch/-/isomorphic-fetch-3.0.0.tgz", + "integrity": "sha512-qvUtwJ3j6qwsF3jLxkZ72qCgjMysPzDfeV240JHiGZsANBYd+EEuu35v7dfrJ9Up0Ak07D7GGSkGhCHTqg/5wA==", + "dev": true, + "requires": { + "node-fetch": "^2.6.1", + "whatwg-fetch": "^3.4.1" + } + }, + "istanbul-lib-coverage": { + "version": "3.2.2", + "resolved": "https://registry.npmjs.org/istanbul-lib-coverage/-/istanbul-lib-coverage-3.2.2.tgz", + "integrity": "sha512-O8dpsF+r0WV/8MNRKfnmrtCWhuKjxrq2w+jpzBL5UZKTi2LeVWnWOmWRxFlesJONmc+wLAGvKQZEOanko0LFTg==", + "dev": true + }, + "istanbul-lib-instrument": { + "version": "6.0.1", + "resolved": "https://registry.npmjs.org/istanbul-lib-instrument/-/istanbul-lib-instrument-6.0.1.tgz", + "integrity": "sha512-EAMEJBsYuyyztxMxW3g7ugGPkrZsV57v0Hmv3mm1uQsmB+QnZuepg731CRaIgeUVSdmsTngOkSnauNF8p7FIhA==", + "dev": true, + "requires": { + "@babel/core": "^7.12.3", + "@babel/parser": "^7.14.7", + "@istanbuljs/schema": "^0.1.2", + "istanbul-lib-coverage": "^3.2.0", + "semver": "^7.5.4" + } + }, + "istanbul-lib-report": { + "version": "3.0.1", + "resolved": "https://registry.npmjs.org/istanbul-lib-report/-/istanbul-lib-report-3.0.1.tgz", + "integrity": "sha512-GCfE1mtsHGOELCU8e/Z7YWzpmybrx/+dSTfLrvY8qRmaY6zXTKWn6WQIjaAFw069icm6GVMNkgu0NzI4iPZUNw==", + "dev": true, + "requires": { + "istanbul-lib-coverage": "^3.0.0", + "make-dir": "^4.0.0", + "supports-color": "^7.1.0" + }, + "dependencies": { + "make-dir": { + "version": "4.0.0", + "resolved": "https://registry.npmjs.org/make-dir/-/make-dir-4.0.0.tgz", + "integrity": "sha512-hXdUTZYIVOt1Ex//jAQi+wTZZpUpwBj/0QsOzqegb3rGMMeJiSEu5xLHnYfBrRV4RH2+OCSOO95Is/7x1WJ4bw==", + "dev": true, + "requires": { + "semver": "^7.5.3" + } + } + } + }, + "istanbul-lib-source-maps": { + "version": "4.0.1", + "resolved": "https://registry.npmjs.org/istanbul-lib-source-maps/-/istanbul-lib-source-maps-4.0.1.tgz", + "integrity": "sha512-n3s8EwkdFIJCG3BPKBYvskgXGoy88ARzvegkitk60NxRdwltLOTaH7CUiMRXvwYorl0Q712iEjcWB+fK/MrWVw==", + "dev": true, + "requires": { + "debug": "^4.1.1", + "istanbul-lib-coverage": "^3.0.0", + "source-map": "^0.6.1" + } + }, + "istanbul-reports": { + "version": "3.1.6", + "resolved": "https://registry.npmjs.org/istanbul-reports/-/istanbul-reports-3.1.6.tgz", + "integrity": "sha512-TLgnMkKg3iTDsQ9PbPTdpfAK2DzjF9mqUG7RMgcQl8oFjad8ob4laGxv5XV5U9MAfx8D6tSJiUyuAwzLicaxlg==", + "dev": true, + "requires": { + "html-escaper": "^2.0.0", + "istanbul-lib-report": "^3.0.0" + } + }, + "it-all": { + "version": "1.0.6", + "resolved": "https://registry.npmjs.org/it-all/-/it-all-1.0.6.tgz", + "integrity": "sha512-3cmCc6Heqe3uWi3CVM/k51fa/XbMFpQVzFoDsV0IZNHSQDyAXl3c4MjHkFX5kF3922OGj7Myv1nSEUgRtcuM1A==", + "dev": true + }, + "it-batch": { + "version": "1.0.9", + "resolved": "https://registry.npmjs.org/it-batch/-/it-batch-1.0.9.tgz", + "integrity": "sha512-7Q7HXewMhNFltTsAMdSz6luNhyhkhEtGGbYek/8Xb/GiqYMtwUmopE1ocPSiJKKp3rM4Dt045sNFoUu+KZGNyA==", + "dev": true + }, + "it-drain": { + "version": "1.0.5", + "resolved": "https://registry.npmjs.org/it-drain/-/it-drain-1.0.5.tgz", + "integrity": "sha512-r/GjkiW1bZswC04TNmUnLxa6uovme7KKwPhc+cb1hHU65E3AByypHH6Pm91WHuvqfFsm+9ws0kPtDBV3/8vmIg==", + "dev": true + }, + "it-filter": { + "version": "1.0.3", + "resolved": "https://registry.npmjs.org/it-filter/-/it-filter-1.0.3.tgz", + "integrity": "sha512-EI3HpzUrKjTH01miLHWmhNWy3Xpbx4OXMXltgrNprL5lDpF3giVpHIouFpr5l+evXw6aOfxhnt01BIB+4VQA+w==", + "dev": true + }, + "it-first": { + "version": "1.0.7", + "resolved": "https://registry.npmjs.org/it-first/-/it-first-1.0.7.tgz", + "integrity": "sha512-nvJKZoBpZD/6Rtde6FXqwDqDZGF1sCADmr2Zoc0hZsIvnE449gRFnGctxDf09Bzc/FWnHXAdaHVIetY6lrE0/g==", + "dev": true + }, + "it-parallel-batch": { + "version": "1.0.11", + "resolved": "https://registry.npmjs.org/it-parallel-batch/-/it-parallel-batch-1.0.11.tgz", + "integrity": "sha512-UWsWHv/kqBpMRmyZJzlmZeoAMA0F3SZr08FBdbhtbe+MtoEBgr/ZUAKrnenhXCBrsopy76QjRH2K/V8kNdupbQ==", + "dev": true, + "requires": { + "it-batch": "^1.0.9" + } + }, + "it-take": { + "version": "1.0.2", + "resolved": "https://registry.npmjs.org/it-take/-/it-take-1.0.2.tgz", + "integrity": "sha512-u7I6qhhxH7pSevcYNaMECtkvZW365ARqAIt9K+xjdK1B2WUDEjQSfETkOCT8bxFq/59LqrN3cMLUtTgmDBaygw==", + "dev": true + }, "jackspeak": { "version": "2.3.6", "resolved": "https://registry.npmjs.org/jackspeak/-/jackspeak-2.3.6.tgz", @@ -32586,6 +38762,636 @@ "@pkgjs/parseargs": "^0.11.0" } }, + "jest": { + "version": "29.7.0", + "resolved": "https://registry.npmjs.org/jest/-/jest-29.7.0.tgz", + "integrity": "sha512-NIy3oAFp9shda19hy4HK0HRTWKtPJmGdnvywu01nOqNC2vZg+Z+fvJDxpMQA88eb2I9EcafcdjYgsDthnYTvGw==", + "dev": true, + "requires": { + "@jest/core": "^29.7.0", + "@jest/types": "^29.6.3", + "import-local": "^3.0.2", + "jest-cli": "^29.7.0" + } + }, + "jest-changed-files": { + "version": "29.7.0", + "resolved": "https://registry.npmjs.org/jest-changed-files/-/jest-changed-files-29.7.0.tgz", + "integrity": "sha512-fEArFiwf1BpQ+4bXSprcDc3/x4HSzL4al2tozwVpDFpsxALjLYdyiIK4e5Vz66GQJIbXJ82+35PtysofptNX2w==", + "dev": true, + "requires": { + "execa": "^5.0.0", + "jest-util": "^29.7.0", + "p-limit": "^3.1.0" + } + }, + "jest-circus": { + "version": "29.7.0", + "resolved": "https://registry.npmjs.org/jest-circus/-/jest-circus-29.7.0.tgz", + "integrity": "sha512-3E1nCMgipcTkCocFwM90XXQab9bS+GMsjdpmPrlelaxwD93Ad8iVEjX/vvHPdLPnFf+L40u+5+iutRdA1N9myw==", + "dev": true, + "requires": { + "@jest/environment": "^29.7.0", + "@jest/expect": "^29.7.0", + "@jest/test-result": "^29.7.0", + "@jest/types": "^29.6.3", + "@types/node": "*", + "chalk": "^4.0.0", + "co": "^4.6.0", + "dedent": "^1.0.0", + "is-generator-fn": "^2.0.0", + "jest-each": "^29.7.0", + "jest-matcher-utils": "^29.7.0", + "jest-message-util": "^29.7.0", + "jest-runtime": "^29.7.0", + "jest-snapshot": "^29.7.0", + "jest-util": "^29.7.0", + "p-limit": "^3.1.0", + "pretty-format": "^29.7.0", + "pure-rand": "^6.0.0", + "slash": "^3.0.0", + "stack-utils": "^2.0.3" + }, + "dependencies": { + "ansi-styles": { + "version": "5.2.0", + "resolved": "https://registry.npmjs.org/ansi-styles/-/ansi-styles-5.2.0.tgz", + "integrity": "sha512-Cxwpt2SfTzTtXcfOlzGEee8O+c+MmUgGrNiBcXnuWxuFJHe6a5Hz7qwhwe5OgaSYI0IJvkLqWX1ASG+cJOkEiA==", + "dev": true + }, + "pretty-format": { + "version": "29.7.0", + "resolved": "https://registry.npmjs.org/pretty-format/-/pretty-format-29.7.0.tgz", + "integrity": "sha512-Pdlw/oPxN+aXdmM9R00JVC9WVFoCLTKJvDVLgmJ+qAffBMxsV85l/Lu7sNx4zSzPyoL2euImuEwHhOXdEgNFZQ==", + "dev": true, + "requires": { + "@jest/schemas": "^29.6.3", + "ansi-styles": "^5.0.0", + "react-is": "^18.0.0" + } + } + } + }, + "jest-cli": { + "version": "29.7.0", + "resolved": "https://registry.npmjs.org/jest-cli/-/jest-cli-29.7.0.tgz", + "integrity": "sha512-OVVobw2IubN/GSYsxETi+gOe7Ka59EFMR/twOU3Jb2GnKKeMGJB5SGUUrEz3SFVmJASUdZUzy83sLNNQ2gZslg==", + "dev": true, + "requires": { + "@jest/core": "^29.7.0", + "@jest/test-result": "^29.7.0", + "@jest/types": "^29.6.3", + "chalk": "^4.0.0", + "create-jest": "^29.7.0", + "exit": "^0.1.2", + "import-local": "^3.0.2", + "jest-config": "^29.7.0", + "jest-util": "^29.7.0", + "jest-validate": "^29.7.0", + "yargs": "^17.3.1" + } + }, + "jest-config": { + "version": "29.7.0", + "resolved": "https://registry.npmjs.org/jest-config/-/jest-config-29.7.0.tgz", + "integrity": "sha512-uXbpfeQ7R6TZBqI3/TxCU4q4ttk3u0PJeC+E0zbfSoSjq6bJ7buBPxzQPL0ifrkY4DNu4JUdk0ImlBUYi840eQ==", + "dev": true, + "requires": { + "@babel/core": "^7.11.6", + "@jest/test-sequencer": "^29.7.0", + "@jest/types": "^29.6.3", + "babel-jest": "^29.7.0", + "chalk": "^4.0.0", + "ci-info": "^3.2.0", + "deepmerge": "^4.2.2", + "glob": "^7.1.3", + "graceful-fs": "^4.2.9", + "jest-circus": "^29.7.0", + "jest-environment-node": "^29.7.0", + "jest-get-type": "^29.6.3", + "jest-regex-util": "^29.6.3", + "jest-resolve": "^29.7.0", + "jest-runner": "^29.7.0", + "jest-util": "^29.7.0", + "jest-validate": "^29.7.0", + "micromatch": "^4.0.4", + "parse-json": "^5.2.0", + "pretty-format": "^29.7.0", + "slash": "^3.0.0", + "strip-json-comments": "^3.1.1" + }, + "dependencies": { + "ansi-styles": { + "version": "5.2.0", + "resolved": "https://registry.npmjs.org/ansi-styles/-/ansi-styles-5.2.0.tgz", + "integrity": "sha512-Cxwpt2SfTzTtXcfOlzGEee8O+c+MmUgGrNiBcXnuWxuFJHe6a5Hz7qwhwe5OgaSYI0IJvkLqWX1ASG+cJOkEiA==", + "dev": true + }, + "pretty-format": { + "version": "29.7.0", + "resolved": "https://registry.npmjs.org/pretty-format/-/pretty-format-29.7.0.tgz", + "integrity": "sha512-Pdlw/oPxN+aXdmM9R00JVC9WVFoCLTKJvDVLgmJ+qAffBMxsV85l/Lu7sNx4zSzPyoL2euImuEwHhOXdEgNFZQ==", + "dev": true, + "requires": { + "@jest/schemas": "^29.6.3", + "ansi-styles": "^5.0.0", + "react-is": "^18.0.0" + } + } + } + }, + "jest-diff": { + "version": "29.7.0", + "resolved": "https://registry.npmjs.org/jest-diff/-/jest-diff-29.7.0.tgz", + "integrity": "sha512-LMIgiIrhigmPrs03JHpxUh2yISK3vLFPkAodPeo0+BuF7wA2FoQbkEg1u8gBYBThncu7e1oEDUfIXVuTqLRUjw==", + "dev": true, + "requires": { + "chalk": "^4.0.0", + "diff-sequences": "^29.6.3", + "jest-get-type": "^29.6.3", + "pretty-format": "^29.7.0" + }, + "dependencies": { + "ansi-styles": { + "version": "5.2.0", + "resolved": "https://registry.npmjs.org/ansi-styles/-/ansi-styles-5.2.0.tgz", + "integrity": "sha512-Cxwpt2SfTzTtXcfOlzGEee8O+c+MmUgGrNiBcXnuWxuFJHe6a5Hz7qwhwe5OgaSYI0IJvkLqWX1ASG+cJOkEiA==", + "dev": true + }, + "pretty-format": { + "version": "29.7.0", + "resolved": "https://registry.npmjs.org/pretty-format/-/pretty-format-29.7.0.tgz", + "integrity": "sha512-Pdlw/oPxN+aXdmM9R00JVC9WVFoCLTKJvDVLgmJ+qAffBMxsV85l/Lu7sNx4zSzPyoL2euImuEwHhOXdEgNFZQ==", + "dev": true, + "requires": { + "@jest/schemas": "^29.6.3", + "ansi-styles": "^5.0.0", + "react-is": "^18.0.0" + } + } + } + }, + "jest-docblock": { + "version": "29.7.0", + "resolved": "https://registry.npmjs.org/jest-docblock/-/jest-docblock-29.7.0.tgz", + "integrity": "sha512-q617Auw3A612guyaFgsbFeYpNP5t2aoUNLwBUbc/0kD1R4t9ixDbyFTHd1nok4epoVFpr7PmeWHrhvuV3XaJ4g==", + "dev": true, + "requires": { + "detect-newline": "^3.0.0" + } + }, + "jest-each": { + "version": "29.7.0", + "resolved": "https://registry.npmjs.org/jest-each/-/jest-each-29.7.0.tgz", + "integrity": "sha512-gns+Er14+ZrEoC5fhOfYCY1LOHHr0TI+rQUHZS8Ttw2l7gl+80eHc/gFf2Ktkw0+SIACDTeWvpFcv3B04VembQ==", + "dev": true, + "requires": { + "@jest/types": "^29.6.3", + "chalk": "^4.0.0", + "jest-get-type": "^29.6.3", + "jest-util": "^29.7.0", + "pretty-format": "^29.7.0" + }, + "dependencies": { + "ansi-styles": { + "version": "5.2.0", + "resolved": "https://registry.npmjs.org/ansi-styles/-/ansi-styles-5.2.0.tgz", + "integrity": "sha512-Cxwpt2SfTzTtXcfOlzGEee8O+c+MmUgGrNiBcXnuWxuFJHe6a5Hz7qwhwe5OgaSYI0IJvkLqWX1ASG+cJOkEiA==", + "dev": true + }, + "pretty-format": { + "version": "29.7.0", + "resolved": "https://registry.npmjs.org/pretty-format/-/pretty-format-29.7.0.tgz", + "integrity": "sha512-Pdlw/oPxN+aXdmM9R00JVC9WVFoCLTKJvDVLgmJ+qAffBMxsV85l/Lu7sNx4zSzPyoL2euImuEwHhOXdEgNFZQ==", + "dev": true, + "requires": { + "@jest/schemas": "^29.6.3", + "ansi-styles": "^5.0.0", + "react-is": "^18.0.0" + } + } + } + }, + "jest-environment-node": { + "version": "29.7.0", + "resolved": "https://registry.npmjs.org/jest-environment-node/-/jest-environment-node-29.7.0.tgz", + "integrity": "sha512-DOSwCRqXirTOyheM+4d5YZOrWcdu0LNZ87ewUoywbcb2XR4wKgqiG8vNeYwhjFMbEkfju7wx2GYH0P2gevGvFw==", + "dev": true, + "requires": { + "@jest/environment": "^29.7.0", + "@jest/fake-timers": "^29.7.0", + "@jest/types": "^29.6.3", + "@types/node": "*", + "jest-mock": "^29.7.0", + "jest-util": "^29.7.0" + } + }, + "jest-get-type": { + "version": "29.6.3", + "resolved": "https://registry.npmjs.org/jest-get-type/-/jest-get-type-29.6.3.tgz", + "integrity": "sha512-zrteXnqYxfQh7l5FHyL38jL39di8H8rHoecLH3JNxH3BwOrBsNeabdap5e0I23lD4HHI8W5VFBZqG4Eaq5LNcw==", + "dev": true + }, + "jest-haste-map": { + "version": "29.7.0", + "resolved": "https://registry.npmjs.org/jest-haste-map/-/jest-haste-map-29.7.0.tgz", + "integrity": "sha512-fP8u2pyfqx0K1rGn1R9pyE0/KTn+G7PxktWidOBTqFPLYX0b9ksaMFkhK5vrS3DVun09pckLdlx90QthlW7AmA==", + "dev": true, + "requires": { + "@jest/types": "^29.6.3", + "@types/graceful-fs": "^4.1.3", + "@types/node": "*", + "anymatch": "^3.0.3", + "fb-watchman": "^2.0.0", + "fsevents": "^2.3.2", + "graceful-fs": "^4.2.9", + "jest-regex-util": "^29.6.3", + "jest-util": "^29.7.0", + "jest-worker": "^29.7.0", + "micromatch": "^4.0.4", + "walker": "^1.0.8" + }, + "dependencies": { + "jest-worker": { + "version": "29.7.0", + "resolved": "https://registry.npmjs.org/jest-worker/-/jest-worker-29.7.0.tgz", + "integrity": "sha512-eIz2msL/EzL9UFTFFx7jBTkeZfku0yUAyZZZmJ93H2TYEiroIx2PQjEXcwYtYl8zXCxb+PAmA2hLIt/6ZEkPHw==", + "dev": true, + "requires": { + "@types/node": "*", + "jest-util": "^29.7.0", + "merge-stream": "^2.0.0", + "supports-color": "^8.0.0" + } + }, + "supports-color": { + "version": "8.1.1", + "resolved": "https://registry.npmjs.org/supports-color/-/supports-color-8.1.1.tgz", + "integrity": "sha512-MpUEN2OodtUzxvKQl72cUF7RQ5EiHsGvSsVG0ia9c5RbWGL2CI4C7EpPS8UTBIplnlzZiNuV56w+FuNxy3ty2Q==", + "dev": true, + "requires": { + "has-flag": "^4.0.0" + } + } + } + }, + "jest-leak-detector": { + "version": "29.7.0", + "resolved": "https://registry.npmjs.org/jest-leak-detector/-/jest-leak-detector-29.7.0.tgz", + "integrity": "sha512-kYA8IJcSYtST2BY9I+SMC32nDpBT3J2NvWJx8+JCuCdl/CR1I4EKUJROiP8XtCcxqgTTBGJNdbB1A8XRKbTetw==", + "dev": true, + "requires": { + "jest-get-type": "^29.6.3", + "pretty-format": "^29.7.0" + }, + "dependencies": { + "ansi-styles": { + "version": "5.2.0", + "resolved": "https://registry.npmjs.org/ansi-styles/-/ansi-styles-5.2.0.tgz", + "integrity": "sha512-Cxwpt2SfTzTtXcfOlzGEee8O+c+MmUgGrNiBcXnuWxuFJHe6a5Hz7qwhwe5OgaSYI0IJvkLqWX1ASG+cJOkEiA==", + "dev": true + }, + "pretty-format": { + "version": "29.7.0", + "resolved": "https://registry.npmjs.org/pretty-format/-/pretty-format-29.7.0.tgz", + "integrity": "sha512-Pdlw/oPxN+aXdmM9R00JVC9WVFoCLTKJvDVLgmJ+qAffBMxsV85l/Lu7sNx4zSzPyoL2euImuEwHhOXdEgNFZQ==", + "dev": true, + "requires": { + "@jest/schemas": "^29.6.3", + "ansi-styles": "^5.0.0", + "react-is": "^18.0.0" + } + } + } + }, + "jest-matcher-utils": { + "version": "29.7.0", + "resolved": "https://registry.npmjs.org/jest-matcher-utils/-/jest-matcher-utils-29.7.0.tgz", + "integrity": "sha512-sBkD+Xi9DtcChsI3L3u0+N0opgPYnCRPtGcQYrgXmR+hmt/fYfWAL0xRXYU8eWOdfuLgBe0YCW3AFtnRLagq/g==", + "dev": true, + "requires": { + "chalk": "^4.0.0", + "jest-diff": "^29.7.0", + "jest-get-type": "^29.6.3", + "pretty-format": "^29.7.0" + }, + "dependencies": { + "ansi-styles": { + "version": "5.2.0", + "resolved": "https://registry.npmjs.org/ansi-styles/-/ansi-styles-5.2.0.tgz", + "integrity": "sha512-Cxwpt2SfTzTtXcfOlzGEee8O+c+MmUgGrNiBcXnuWxuFJHe6a5Hz7qwhwe5OgaSYI0IJvkLqWX1ASG+cJOkEiA==", + "dev": true + }, + "pretty-format": { + "version": "29.7.0", + "resolved": "https://registry.npmjs.org/pretty-format/-/pretty-format-29.7.0.tgz", + "integrity": "sha512-Pdlw/oPxN+aXdmM9R00JVC9WVFoCLTKJvDVLgmJ+qAffBMxsV85l/Lu7sNx4zSzPyoL2euImuEwHhOXdEgNFZQ==", + "dev": true, + "requires": { + "@jest/schemas": "^29.6.3", + "ansi-styles": "^5.0.0", + "react-is": "^18.0.0" + } + } + } + }, + "jest-message-util": { + "version": "29.7.0", + "resolved": "https://registry.npmjs.org/jest-message-util/-/jest-message-util-29.7.0.tgz", + "integrity": "sha512-GBEV4GRADeP+qtB2+6u61stea8mGcOT4mCtrYISZwfu9/ISHFJ/5zOMXYbpBE9RsS5+Gb63DW4FgmnKJ79Kf6w==", + "dev": true, + "requires": { + "@babel/code-frame": "^7.12.13", + "@jest/types": "^29.6.3", + "@types/stack-utils": "^2.0.0", + "chalk": "^4.0.0", + "graceful-fs": "^4.2.9", + "micromatch": "^4.0.4", + "pretty-format": "^29.7.0", + "slash": "^3.0.0", + "stack-utils": "^2.0.3" + }, + "dependencies": { + "ansi-styles": { + "version": "5.2.0", + "resolved": "https://registry.npmjs.org/ansi-styles/-/ansi-styles-5.2.0.tgz", + "integrity": "sha512-Cxwpt2SfTzTtXcfOlzGEee8O+c+MmUgGrNiBcXnuWxuFJHe6a5Hz7qwhwe5OgaSYI0IJvkLqWX1ASG+cJOkEiA==", + "dev": true + }, + "pretty-format": { + "version": "29.7.0", + "resolved": "https://registry.npmjs.org/pretty-format/-/pretty-format-29.7.0.tgz", + "integrity": "sha512-Pdlw/oPxN+aXdmM9R00JVC9WVFoCLTKJvDVLgmJ+qAffBMxsV85l/Lu7sNx4zSzPyoL2euImuEwHhOXdEgNFZQ==", + "dev": true, + "requires": { + "@jest/schemas": "^29.6.3", + "ansi-styles": "^5.0.0", + "react-is": "^18.0.0" + } + } + } + }, + "jest-mock": { + "version": "29.7.0", + "resolved": "https://registry.npmjs.org/jest-mock/-/jest-mock-29.7.0.tgz", + "integrity": "sha512-ITOMZn+UkYS4ZFh83xYAOzWStloNzJFO2s8DWrE4lhtGD+AorgnbkiKERe4wQVBydIGPx059g6riW5Btp6Llnw==", + "dev": true, + "requires": { + "@jest/types": "^29.6.3", + "@types/node": "*", + "jest-util": "^29.7.0" + } + }, + "jest-pnp-resolver": { + "version": "1.2.3", + "resolved": "https://registry.npmjs.org/jest-pnp-resolver/-/jest-pnp-resolver-1.2.3.tgz", + "integrity": "sha512-+3NpwQEnRoIBtx4fyhblQDPgJI0H1IEIkX7ShLUjPGA7TtUTvI1oiKi3SR4oBR0hQhQR80l4WAe5RrXBwWMA8w==", + "dev": true, + "requires": {} + }, + "jest-regex-util": { + "version": "29.6.3", + "resolved": "https://registry.npmjs.org/jest-regex-util/-/jest-regex-util-29.6.3.tgz", + "integrity": "sha512-KJJBsRCyyLNWCNBOvZyRDnAIfUiRJ8v+hOBQYGn8gDyF3UegwiP4gwRR3/SDa42g1YbVycTidUF3rKjyLFDWbg==", + "dev": true + }, + "jest-resolve": { + "version": "29.7.0", + "resolved": "https://registry.npmjs.org/jest-resolve/-/jest-resolve-29.7.0.tgz", + "integrity": "sha512-IOVhZSrg+UvVAshDSDtHyFCCBUl/Q3AAJv8iZ6ZjnZ74xzvwuzLXid9IIIPgTnY62SJjfuupMKZsZQRsCvxEgA==", + "dev": true, + "requires": { + "chalk": "^4.0.0", + "graceful-fs": "^4.2.9", + "jest-haste-map": "^29.7.0", + "jest-pnp-resolver": "^1.2.2", + "jest-util": "^29.7.0", + "jest-validate": "^29.7.0", + "resolve": "^1.20.0", + "resolve.exports": "^2.0.0", + "slash": "^3.0.0" + } + }, + "jest-resolve-dependencies": { + "version": "29.7.0", + "resolved": "https://registry.npmjs.org/jest-resolve-dependencies/-/jest-resolve-dependencies-29.7.0.tgz", + "integrity": "sha512-un0zD/6qxJ+S0et7WxeI3H5XSe9lTBBR7bOHCHXkKR6luG5mwDDlIzVQ0V5cZCuoTgEdcdwzTghYkTWfubi+nA==", + "dev": true, + "requires": { + "jest-regex-util": "^29.6.3", + "jest-snapshot": "^29.7.0" + } + }, + "jest-runner": { + "version": "29.7.0", + "resolved": "https://registry.npmjs.org/jest-runner/-/jest-runner-29.7.0.tgz", + "integrity": "sha512-fsc4N6cPCAahybGBfTRcq5wFR6fpLznMg47sY5aDpsoejOcVYFb07AHuSnR0liMcPTgBsA3ZJL6kFOjPdoNipQ==", + "dev": true, + "requires": { + "@jest/console": "^29.7.0", + "@jest/environment": "^29.7.0", + "@jest/test-result": "^29.7.0", + "@jest/transform": "^29.7.0", + "@jest/types": "^29.6.3", + "@types/node": "*", + "chalk": "^4.0.0", + "emittery": "^0.13.1", + "graceful-fs": "^4.2.9", + "jest-docblock": "^29.7.0", + "jest-environment-node": "^29.7.0", + "jest-haste-map": "^29.7.0", + "jest-leak-detector": "^29.7.0", + "jest-message-util": "^29.7.0", + "jest-resolve": "^29.7.0", + "jest-runtime": "^29.7.0", + "jest-util": "^29.7.0", + "jest-watcher": "^29.7.0", + "jest-worker": "^29.7.0", + "p-limit": "^3.1.0", + "source-map-support": "0.5.13" + }, + "dependencies": { + "jest-worker": { + "version": "29.7.0", + "resolved": "https://registry.npmjs.org/jest-worker/-/jest-worker-29.7.0.tgz", + "integrity": "sha512-eIz2msL/EzL9UFTFFx7jBTkeZfku0yUAyZZZmJ93H2TYEiroIx2PQjEXcwYtYl8zXCxb+PAmA2hLIt/6ZEkPHw==", + "dev": true, + "requires": { + "@types/node": "*", + "jest-util": "^29.7.0", + "merge-stream": "^2.0.0", + "supports-color": "^8.0.0" + } + }, + "source-map-support": { + "version": "0.5.13", + "resolved": "https://registry.npmjs.org/source-map-support/-/source-map-support-0.5.13.tgz", + "integrity": "sha512-SHSKFHadjVA5oR4PPqhtAVdcBWwRYVd6g6cAXnIbRiIwc2EhPrTuKUBdSLvlEKyIP3GCf89fltvcZiP9MMFA1w==", + "dev": true, + "requires": { + "buffer-from": "^1.0.0", + "source-map": "^0.6.0" + } + }, + "supports-color": { + "version": "8.1.1", + "resolved": "https://registry.npmjs.org/supports-color/-/supports-color-8.1.1.tgz", + "integrity": "sha512-MpUEN2OodtUzxvKQl72cUF7RQ5EiHsGvSsVG0ia9c5RbWGL2CI4C7EpPS8UTBIplnlzZiNuV56w+FuNxy3ty2Q==", + "dev": true, + "requires": { + "has-flag": "^4.0.0" + } + } + } + }, + "jest-runtime": { + "version": "29.7.0", + "resolved": "https://registry.npmjs.org/jest-runtime/-/jest-runtime-29.7.0.tgz", + "integrity": "sha512-gUnLjgwdGqW7B4LvOIkbKs9WGbn+QLqRQQ9juC6HndeDiezIwhDP+mhMwHWCEcfQ5RUXa6OPnFF8BJh5xegwwQ==", + "dev": true, + "requires": { + "@jest/environment": "^29.7.0", + "@jest/fake-timers": "^29.7.0", + "@jest/globals": "^29.7.0", + "@jest/source-map": "^29.6.3", + "@jest/test-result": "^29.7.0", + "@jest/transform": "^29.7.0", + "@jest/types": "^29.6.3", + "@types/node": "*", + "chalk": "^4.0.0", + "cjs-module-lexer": "^1.0.0", + "collect-v8-coverage": "^1.0.0", + "glob": "^7.1.3", + "graceful-fs": "^4.2.9", + "jest-haste-map": "^29.7.0", + "jest-message-util": "^29.7.0", + "jest-mock": "^29.7.0", + "jest-regex-util": "^29.6.3", + "jest-resolve": "^29.7.0", + "jest-snapshot": "^29.7.0", + "jest-util": "^29.7.0", + "slash": "^3.0.0", + "strip-bom": "^4.0.0" + }, + "dependencies": { + "strip-bom": { + "version": "4.0.0", + "resolved": "https://registry.npmjs.org/strip-bom/-/strip-bom-4.0.0.tgz", + "integrity": "sha512-3xurFv5tEgii33Zi8Jtp55wEIILR9eh34FAW00PZf+JnSsTmV/ioewSgQl97JHvgjoRGwPShsWm+IdrxB35d0w==", + "dev": true + } + } + }, + "jest-snapshot": { + "version": "29.7.0", + "resolved": "https://registry.npmjs.org/jest-snapshot/-/jest-snapshot-29.7.0.tgz", + "integrity": "sha512-Rm0BMWtxBcioHr1/OX5YCP8Uov4riHvKPknOGs804Zg9JGZgmIBkbtlxJC/7Z4msKYVbIJtfU+tKb8xlYNfdkw==", + "dev": true, + "requires": { + "@babel/core": "^7.11.6", + "@babel/generator": "^7.7.2", + "@babel/plugin-syntax-jsx": "^7.7.2", + "@babel/plugin-syntax-typescript": "^7.7.2", + "@babel/types": "^7.3.3", + "@jest/expect-utils": "^29.7.0", + "@jest/transform": "^29.7.0", + "@jest/types": "^29.6.3", + "babel-preset-current-node-syntax": "^1.0.0", + "chalk": "^4.0.0", + "expect": "^29.7.0", + "graceful-fs": "^4.2.9", + "jest-diff": "^29.7.0", + "jest-get-type": "^29.6.3", + "jest-matcher-utils": "^29.7.0", + "jest-message-util": "^29.7.0", + "jest-util": "^29.7.0", + "natural-compare": "^1.4.0", + "pretty-format": "^29.7.0", + "semver": "^7.5.3" + }, + "dependencies": { + "ansi-styles": { + "version": "5.2.0", + "resolved": "https://registry.npmjs.org/ansi-styles/-/ansi-styles-5.2.0.tgz", + "integrity": "sha512-Cxwpt2SfTzTtXcfOlzGEee8O+c+MmUgGrNiBcXnuWxuFJHe6a5Hz7qwhwe5OgaSYI0IJvkLqWX1ASG+cJOkEiA==", + "dev": true + }, + "pretty-format": { + "version": "29.7.0", + "resolved": "https://registry.npmjs.org/pretty-format/-/pretty-format-29.7.0.tgz", + "integrity": "sha512-Pdlw/oPxN+aXdmM9R00JVC9WVFoCLTKJvDVLgmJ+qAffBMxsV85l/Lu7sNx4zSzPyoL2euImuEwHhOXdEgNFZQ==", + "dev": true, + "requires": { + "@jest/schemas": "^29.6.3", + "ansi-styles": "^5.0.0", + "react-is": "^18.0.0" + } + } + } + }, + "jest-util": { + "version": "29.7.0", + "resolved": "https://registry.npmjs.org/jest-util/-/jest-util-29.7.0.tgz", + "integrity": "sha512-z6EbKajIpqGKU56y5KBUgy1dt1ihhQJgWzUlZHArA/+X2ad7Cb5iF+AK1EWVL/Bo7Rz9uurpqw6SiBCefUbCGA==", + "dev": true, + "requires": { + "@jest/types": "^29.6.3", + "@types/node": "*", + "chalk": "^4.0.0", + "ci-info": "^3.2.0", + "graceful-fs": "^4.2.9", + "picomatch": "^2.2.3" + } + }, + "jest-validate": { + "version": "29.7.0", + "resolved": "https://registry.npmjs.org/jest-validate/-/jest-validate-29.7.0.tgz", + "integrity": "sha512-ZB7wHqaRGVw/9hST/OuFUReG7M8vKeq0/J2egIGLdvjHCmYqGARhzXmtgi+gVeZ5uXFF219aOc3Ls2yLg27tkw==", + "dev": true, + "requires": { + "@jest/types": "^29.6.3", + "camelcase": "^6.2.0", + "chalk": "^4.0.0", + "jest-get-type": "^29.6.3", + "leven": "^3.1.0", + "pretty-format": "^29.7.0" + }, + "dependencies": { + "ansi-styles": { + "version": "5.2.0", + "resolved": "https://registry.npmjs.org/ansi-styles/-/ansi-styles-5.2.0.tgz", + "integrity": "sha512-Cxwpt2SfTzTtXcfOlzGEee8O+c+MmUgGrNiBcXnuWxuFJHe6a5Hz7qwhwe5OgaSYI0IJvkLqWX1ASG+cJOkEiA==", + "dev": true + }, + "pretty-format": { + "version": "29.7.0", + "resolved": "https://registry.npmjs.org/pretty-format/-/pretty-format-29.7.0.tgz", + "integrity": "sha512-Pdlw/oPxN+aXdmM9R00JVC9WVFoCLTKJvDVLgmJ+qAffBMxsV85l/Lu7sNx4zSzPyoL2euImuEwHhOXdEgNFZQ==", + "dev": true, + "requires": { + "@jest/schemas": "^29.6.3", + "ansi-styles": "^5.0.0", + "react-is": "^18.0.0" + } + } + } + }, + "jest-watcher": { + "version": "29.7.0", + "resolved": "https://registry.npmjs.org/jest-watcher/-/jest-watcher-29.7.0.tgz", + "integrity": "sha512-49Fg7WXkU3Vl2h6LbLtMQ/HyB6rXSIX7SqvBLQmssRBGN9I0PNvPmAmCWSOY6SOvrjhI/F7/bGAv9RtnsPA03g==", + "dev": true, + "requires": { + "@jest/test-result": "^29.7.0", + "@jest/types": "^29.6.3", + "@types/node": "*", + "ansi-escapes": "^4.2.1", + "chalk": "^4.0.0", + "emittery": "^0.13.1", + "jest-util": "^29.7.0", + "string-length": "^4.0.1" + } + }, "jest-worker": { "version": "27.5.1", "resolved": "https://registry.npmjs.org/jest-worker/-/jest-worker-27.5.1.tgz", @@ -32679,6 +39485,103 @@ "argparse": "^2.0.1" } }, + "jsdom": { + "version": "22.1.0", + "resolved": "https://registry.npmjs.org/jsdom/-/jsdom-22.1.0.tgz", + "integrity": "sha512-/9AVW7xNbsBv6GfWho4TTNjEo9fe6Zhf9O7s0Fhhr3u+awPwAJMKwAMXnkk5vBxflqLW9hTHX/0cs+P3gW+cQw==", + "dev": true, + "requires": { + "abab": "^2.0.6", + "cssstyle": "^3.0.0", + "data-urls": "^4.0.0", + "decimal.js": "^10.4.3", + "domexception": "^4.0.0", + "form-data": "^4.0.0", + "html-encoding-sniffer": "^3.0.0", + "http-proxy-agent": "^5.0.0", + "https-proxy-agent": "^5.0.1", + "is-potential-custom-element-name": "^1.0.1", + "nwsapi": "^2.2.4", + "parse5": "^7.1.2", + "rrweb-cssom": "^0.6.0", + "saxes": "^6.0.0", + "symbol-tree": "^3.2.4", + "tough-cookie": "^4.1.2", + "w3c-xmlserializer": "^4.0.0", + "webidl-conversions": "^7.0.0", + "whatwg-encoding": "^2.0.0", + "whatwg-mimetype": "^3.0.0", + "whatwg-url": "^12.0.1", + "ws": "^8.13.0", + "xml-name-validator": "^4.0.0" + }, + "dependencies": { + "agent-base": { + "version": "6.0.2", + "resolved": "https://registry.npmjs.org/agent-base/-/agent-base-6.0.2.tgz", + "integrity": "sha512-RZNwNclF7+MS/8bDg70amg32dyeZGZxiDuQmZxKLAlQjr3jGyLx+4Kkk58UO7D2QdgFIQCovuSuZESne6RG6XQ==", + "dev": true, + "requires": { + "debug": "4" + } + }, + "http-proxy-agent": { + "version": "5.0.0", + "resolved": "https://registry.npmjs.org/http-proxy-agent/-/http-proxy-agent-5.0.0.tgz", + "integrity": "sha512-n2hY8YdoRE1i7r6M0w9DIw5GgZN0G25P8zLCRQ8rjXtTU3vsNFBI/vWK/UIeE6g5MUUz6avwAPXmL6Fy9D/90w==", + "dev": true, + "requires": { + "@tootallnate/once": "2", + "agent-base": "6", + "debug": "4" + } + }, + "https-proxy-agent": { + "version": "5.0.1", + "resolved": "https://registry.npmjs.org/https-proxy-agent/-/https-proxy-agent-5.0.1.tgz", + "integrity": "sha512-dFcAjpTQFgoLMzC2VwU+C/CbS7uRL0lWmxDITmqm7C+7F0Odmj6s9l6alZc6AELXhrnggM2CeWSXHGOdX2YtwA==", + "dev": true, + "requires": { + "agent-base": "6", + "debug": "4" + } + }, + "parse5": { + "version": "7.1.2", + "resolved": "https://registry.npmjs.org/parse5/-/parse5-7.1.2.tgz", + "integrity": "sha512-Czj1WaSVpaoj0wbhMzLmWD69anp2WH7FXMB9n1Sy8/ZFF9jolSQVMu1Ij5WIyGmcBmhk7EOndpO4mIpihVqAXw==", + "dev": true, + "requires": { + "entities": "^4.4.0" + } + }, + "tr46": { + "version": "4.1.1", + "resolved": "https://registry.npmjs.org/tr46/-/tr46-4.1.1.tgz", + "integrity": "sha512-2lv/66T7e5yNyhAAC4NaKe5nVavzuGJQVVtRYLyQ2OI8tsJ61PMLlelehb0wi2Hx6+hT/OJUWZcw8MjlSRnxvw==", + "dev": true, + "requires": { + "punycode": "^2.3.0" + } + }, + "webidl-conversions": { + "version": "7.0.0", + "resolved": "https://registry.npmjs.org/webidl-conversions/-/webidl-conversions-7.0.0.tgz", + "integrity": "sha512-VwddBukDzu71offAQR975unBIGqfKZpM+8ZX6ySk8nYhVoo5CYaZyzt3YBvYtRtO+aoGlqxPg/B87NGVZ/fu6g==", + "dev": true + }, + "whatwg-url": { + "version": "12.0.1", + "resolved": "https://registry.npmjs.org/whatwg-url/-/whatwg-url-12.0.1.tgz", + "integrity": "sha512-Ed/LrqB8EPlGxjS+TrsXcpUond1mhccS3pchLhzSgPCnTimUCKj3IZE75pAs5m6heB2U2TMerKFUXheyHY+VDQ==", + "dev": true, + "requires": { + "tr46": "^4.1.1", + "webidl-conversions": "^7.0.0" + } + } + } + }, "jsesc": { "version": "2.5.2" }, @@ -32728,6 +39631,12 @@ "semver": "^7.5.4" } }, + "jssha": { + "version": "3.2.0", + "resolved": "https://registry.npmjs.org/jssha/-/jssha-3.2.0.tgz", + "integrity": "sha512-QuruyBENDWdN4tZwJbQq7/eAK85FqrI4oDbXjy5IBhYD+2pTJyBUWZe8ctWaCkrV0gy6AaelgOZZBMeswEa/6Q==", + "dev": true + }, "jwa": { "version": "1.4.1", "resolved": "https://registry.npmjs.org/jwa/-/jwa-1.4.1.tgz", @@ -32966,6 +39875,12 @@ } } }, + "leven": { + "version": "3.1.0", + "resolved": "https://registry.npmjs.org/leven/-/leven-3.1.0.tgz", + "integrity": "sha512-qsda+H8jTaUaN/x5vzW2rzc+8Rw4TAQ/4KjB46IwK5VH+IlVeeeje/EoZRpiXvIqjFgK84QffqPztGI3VBLG1A==", + "dev": true + }, "levn": { "version": "0.4.1", "devOptional": true, @@ -33195,6 +40110,22 @@ "resolved": "https://registry.npmjs.org/lodash.uniq/-/lodash.uniq-4.5.0.tgz", "integrity": "sha512-xfBaXQd9ryd9dlSDvnvI0lvxfLJlYAZzXomUYzLKtUeOQvOP5piqAWuGtrhWeqaXK9hhoM/iyJc5AV+XfsX3HQ==" }, + "log-symbols": { + "version": "4.1.0", + "resolved": "https://registry.npmjs.org/log-symbols/-/log-symbols-4.1.0.tgz", + "integrity": "sha512-8XPvpAA8uyhfteu8pIvQxpJZ7SYYdpUivZpGy6sFsBuKRY/7rQGavedeB8aK+Zkyq6upMFVL/9AW6vOYzfRyLg==", + "dev": true, + "requires": { + "chalk": "^4.1.0", + "is-unicode-supported": "^0.1.0" + } + }, + "long": { + "version": "4.0.0", + "resolved": "https://registry.npmjs.org/long/-/long-4.0.0.tgz", + "integrity": "sha512-XsP+KhQif4bjX1kbuSiySJFNAehNxgLb6hPRGJ9QsUr8ajHkuXGdrHmFUTUUXhDwVX2R5bY4JNZEwbUiMhV+MA==", + "dev": true + }, "longest-streak": { "version": "3.1.0", "resolved": "https://registry.npmjs.org/longest-streak/-/longest-streak-3.1.0.tgz", @@ -33209,6 +40140,14 @@ "get-func-name": "^2.0.1" } }, + "lower-case": { + "version": "2.0.2", + "resolved": "https://registry.npmjs.org/lower-case/-/lower-case-2.0.2.tgz", + "integrity": "sha512-7fm3l3NAF9WfN6W3JOmf5drwpVqX78JtoGJ3A6W0a6ZnldM41w2fV5D490psKFTpMds8TJse/eHLFFsNHHjHgg==", + "requires": { + "tslib": "^2.0.3" + } + }, "lru-cache": { "version": "5.1.1", "requires": { @@ -33248,8 +40187,16 @@ }, "make-error": { "version": "1.3.6", - "optional": true, - "peer": true + "devOptional": true + }, + "makeerror": { + "version": "1.0.12", + "resolved": "https://registry.npmjs.org/makeerror/-/makeerror-1.0.12.tgz", + "integrity": "sha512-JmqCvUhmt43madlpFzG4BQzG2Z3m6tvQDNKdClZnO3VbIudJYmxsT0FNJMeiB2+JTSlTQTSbU8QdesVmwJcmLg==", + "dev": true, + "requires": { + "tmpl": "1.0.5" + } }, "map-obj": { "version": "4.3.0", @@ -33892,6 +40839,29 @@ } } }, + "memorystream": { + "version": "0.3.1", + "resolved": "https://registry.npmjs.org/memorystream/-/memorystream-0.3.1.tgz", + "integrity": "sha512-S3UwM3yj5mtUSEfP41UZmt/0SCoVYUcU1rkXv+BQ5Ig8ndL4sPoJNBUJERafdPb5jjHJGuMgytgKvKIf58XNBw==", + "dev": true + }, + "merge-options": { + "version": "3.0.4", + "resolved": "https://registry.npmjs.org/merge-options/-/merge-options-3.0.4.tgz", + "integrity": "sha512-2Sug1+knBjkaMsMgf1ctR1Ujx+Ayku4EdJN4Z+C2+JzoeF7A3OZ9KM2GY0CpQS51NR61LTurMJrRKPhSs3ZRTQ==", + "dev": true, + "requires": { + "is-plain-obj": "^2.1.0" + }, + "dependencies": { + "is-plain-obj": { + "version": "2.1.0", + "resolved": "https://registry.npmjs.org/is-plain-obj/-/is-plain-obj-2.1.0.tgz", + "integrity": "sha512-YWnfyRwxL/+SsrWYfOpUtz5b3YD+nyfkHvjbcanzk8zgyO4ASD67uVMRt8k5bM4lLMDnXfriRhOpemw+NfT1eA==", + "dev": true + } + } + }, "merge-stream": { "version": "2.0.0" }, @@ -34823,6 +41793,24 @@ "integrity": "sha512-ckmWDJjphvd/FvZawgygcUeQCxzvohjFO5RxTjj4eq8kw359gFF3E1brjfI+viLMxss5JrHTDRHZvu2/tuy0Qg==", "devOptional": true }, + "multiformats": { + "version": "9.9.0", + "resolved": "https://registry.npmjs.org/multiformats/-/multiformats-9.9.0.tgz", + "integrity": "sha512-HoMUjhH9T8DDBNT+6xzkrd9ga/XiBI4xLr58LJACwK6G3HTOPeMz4nB4KJs33L2BelrIJa7P0VuNaVF3hMYfjg==", + "dev": true + }, + "murmurhash3js-revisited": { + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/murmurhash3js-revisited/-/murmurhash3js-revisited-3.0.0.tgz", + "integrity": "sha512-/sF3ee6zvScXMb1XFJ8gDsSnY+X8PbOyjIuBhtgis10W2Jx4ZjIhikUCIF9c4gpJxVnQIsPAFrSwTCuAjicP6g==", + "dev": true + }, + "mute-stream": { + "version": "0.0.8", + "resolved": "https://registry.npmjs.org/mute-stream/-/mute-stream-0.0.8.tgz", + "integrity": "sha512-nnbWWOkoWyUsTjKrhgD0dcz22mdkSnpYqbEjIm2nhwhuxlSkpywJmBo8h0ZqJdkp73mb90SssHkN4rsRaBAfAA==", + "dev": true + }, "mz": { "version": "2.7.0", "resolved": "https://registry.npmjs.org/mz/-/mz-2.7.0.tgz", @@ -35111,6 +42099,15 @@ } } }, + "no-case": { + "version": "3.0.4", + "resolved": "https://registry.npmjs.org/no-case/-/no-case-3.0.4.tgz", + "integrity": "sha512-fgAN3jGAh+RoxUGZHTSOLJIqUc2wmoBwGR4tbpNAKmmovFoWq0OdRkb0VkldReO2a2iBT/OEulG9XSUc10r3zg==", + "requires": { + "lower-case": "^2.0.2", + "tslib": "^2.0.3" + } + }, "node-addon-api": { "version": "7.0.0", "resolved": "https://registry.npmjs.org/node-addon-api/-/node-addon-api-7.0.0.tgz", @@ -35262,6 +42259,18 @@ } } }, + "node-inspect-extracted": { + "version": "2.0.2", + "resolved": "https://registry.npmjs.org/node-inspect-extracted/-/node-inspect-extracted-2.0.2.tgz", + "integrity": "sha512-8qm9+tu/GmbA/uWQRs6ad8KstyhH94a0pXpRVGHaJ9wHlJbetCYoCwXbKILaaMcE+wgbgpOpzcCnipkL8vTqxA==", + "dev": true + }, + "node-int64": { + "version": "0.4.0", + "resolved": "https://registry.npmjs.org/node-int64/-/node-int64-0.4.0.tgz", + "integrity": "sha512-O5lz91xSOeoXP6DulyHfllpq+Eg00MWitZIbtPfoSEvqIHdl5gfcY6hYzDWnj0qD5tz52PI08u9qUvSVeUBeHw==", + "dev": true + }, "node-releases": { "version": "2.0.13" }, @@ -35306,6 +42315,125 @@ "resolved": "https://registry.npmjs.org/normalize-range/-/normalize-range-0.1.2.tgz", "integrity": "sha512-bdok/XvKII3nUpklnV6P2hxtMNrCboOjAcyBuQnWEhO665FwrSNRxU+AqpsyvO6LgGYPspN+lu5CLtw4jPRKNA==" }, + "npm-run-all2": { + "version": "6.1.1", + "resolved": "https://registry.npmjs.org/npm-run-all2/-/npm-run-all2-6.1.1.tgz", + "integrity": "sha512-lWLbkPZ5BSdXtN8lR+0rc8caKoPdymycpZksyDEC9MOBvfdwTXZ0uVhb7bMcGeXv2/BKtfQuo6Zn3zfc8rxNXA==", + "dev": true, + "requires": { + "ansi-styles": "^6.2.1", + "cross-spawn": "^7.0.3", + "memorystream": "^0.3.1", + "minimatch": "^9.0.0", + "pidtree": "^0.6.0", + "read-pkg": "^8.0.0", + "shell-quote": "^1.7.3" + }, + "dependencies": { + "ansi-styles": { + "version": "6.2.1", + "resolved": "https://registry.npmjs.org/ansi-styles/-/ansi-styles-6.2.1.tgz", + "integrity": "sha512-bN798gFfQX+viw3R7yrGWRqnrN2oRkEkUjjl4JNn4E8GxxbjtG3FbrEIIY3l8/hrwUwIeCZvi4QuOTP4MErVug==", + "dev": true + }, + "brace-expansion": { + "version": "2.0.1", + "resolved": "https://registry.npmjs.org/brace-expansion/-/brace-expansion-2.0.1.tgz", + "integrity": "sha512-XnAIvQ8eM+kC6aULx6wuQiwVsnzsi9d3WxzV3FpWTGA19F621kwdbsAcFKXgKUHZWsy+mY6iL1sHTxWEFCytDA==", + "dev": true, + "requires": { + "balanced-match": "^1.0.0" + } + }, + "hosted-git-info": { + "version": "7.0.1", + "resolved": "https://registry.npmjs.org/hosted-git-info/-/hosted-git-info-7.0.1.tgz", + "integrity": "sha512-+K84LB1DYwMHoHSgaOY/Jfhw3ucPmSET5v98Ke/HdNSw4a0UktWzyW1mjhjpuxxTqOOsfWT/7iVshHmVZ4IpOA==", + "dev": true, + "requires": { + "lru-cache": "^10.0.1" + } + }, + "json-parse-even-better-errors": { + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/json-parse-even-better-errors/-/json-parse-even-better-errors-3.0.0.tgz", + "integrity": "sha512-iZbGHafX/59r39gPwVPRBGw0QQKnA7tte5pSMrhWOW7swGsVvVTjmfyAV9pNqk8YGT7tRCdxRu8uzcgZwoDooA==", + "dev": true + }, + "lines-and-columns": { + "version": "2.0.4", + "resolved": "https://registry.npmjs.org/lines-and-columns/-/lines-and-columns-2.0.4.tgz", + "integrity": "sha512-wM1+Z03eypVAVUCE7QdSqpVIvelbOakn1M0bPDoA4SGWPx3sNDVUiMo3L6To6WWGClB7VyXnhQ4Sn7gxiJbE6A==", + "dev": true + }, + "lru-cache": { + "version": "10.0.3", + "resolved": "https://registry.npmjs.org/lru-cache/-/lru-cache-10.0.3.tgz", + "integrity": "sha512-B7gr+F6MkqB3uzINHXNctGieGsRTMwIBgxkp0yq/5BwcuDzD4A8wQpHQW6vDAm1uKSLQghmRdD9sKqf2vJ1cEg==", + "dev": true + }, + "minimatch": { + "version": "9.0.3", + "resolved": "https://registry.npmjs.org/minimatch/-/minimatch-9.0.3.tgz", + "integrity": "sha512-RHiac9mvaRw0x3AYRgDC1CxAP7HTcNrrECeA8YYJeWnpo+2Q5CegtZjaotWTWxDG3UeGA1coE05iH1mPjT/2mg==", + "dev": true, + "requires": { + "brace-expansion": "^2.0.1" + } + }, + "normalize-package-data": { + "version": "6.0.0", + "resolved": "https://registry.npmjs.org/normalize-package-data/-/normalize-package-data-6.0.0.tgz", + "integrity": "sha512-UL7ELRVxYBHBgYEtZCXjxuD5vPxnmvMGq0jp/dGPKKrN7tfsBh2IY7TlJ15WWwdjRWD3RJbnsygUurTK3xkPkg==", + "dev": true, + "requires": { + "hosted-git-info": "^7.0.0", + "is-core-module": "^2.8.1", + "semver": "^7.3.5", + "validate-npm-package-license": "^3.0.4" + } + }, + "parse-json": { + "version": "7.1.1", + "resolved": "https://registry.npmjs.org/parse-json/-/parse-json-7.1.1.tgz", + "integrity": "sha512-SgOTCX/EZXtZxBE5eJ97P4yGM5n37BwRU+YMsH4vNzFqJV/oWFXXCmwFlgWUM4PrakybVOueJJ6pwHqSVhTFDw==", + "dev": true, + "requires": { + "@babel/code-frame": "^7.21.4", + "error-ex": "^1.3.2", + "json-parse-even-better-errors": "^3.0.0", + "lines-and-columns": "^2.0.3", + "type-fest": "^3.8.0" + }, + "dependencies": { + "type-fest": { + "version": "3.13.1", + "resolved": "https://registry.npmjs.org/type-fest/-/type-fest-3.13.1.tgz", + "integrity": "sha512-tLq3bSNx+xSpwvAJnzrK0Ep5CLNWjvFTOp71URMaAEWBfRb9nnJiBoUe0tF8bI4ZFO3omgBR6NvnbzVUT3Ly4g==", + "dev": true + } + } + }, + "read-pkg": { + "version": "8.1.0", + "resolved": "https://registry.npmjs.org/read-pkg/-/read-pkg-8.1.0.tgz", + "integrity": "sha512-PORM8AgzXeskHO/WEv312k9U03B8K9JSiWF/8N9sUuFjBa+9SF2u6K7VClzXwDXab51jCd8Nd36CNM+zR97ScQ==", + "dev": true, + "requires": { + "@types/normalize-package-data": "^2.4.1", + "normalize-package-data": "^6.0.0", + "parse-json": "^7.0.0", + "type-fest": "^4.2.0" + } + }, + "type-fest": { + "version": "4.8.1", + "resolved": "https://registry.npmjs.org/type-fest/-/type-fest-4.8.1.tgz", + "integrity": "sha512-ShaaYnjf+0etG8W/FumARKMjjIToy/haCaTjN2dvcewOSoNqCQzdgG7m2JVOlM5qndGTHjkvsrWZs+k/2Z7E0Q==", + "dev": true + } + } + }, "npm-run-path": { "version": "4.0.1", "requires": { @@ -35331,6 +42459,24 @@ "boolbase": "^1.0.0" } }, + "number-to-bn": { + "version": "1.7.0", + "resolved": "https://registry.npmjs.org/number-to-bn/-/number-to-bn-1.7.0.tgz", + "integrity": "sha512-wsJ9gfSz1/s4ZsJN01lyonwuxA1tml6X1yBDnfpMglypcBRFZZkus26EdPSlqS5GJfYddVZa22p3VNb3z5m5Ig==", + "dev": true, + "requires": { + "bn.js": "4.11.6", + "strip-hex-prefix": "1.0.0" + }, + "dependencies": { + "bn.js": { + "version": "4.11.6", + "resolved": "https://registry.npmjs.org/bn.js/-/bn.js-4.11.6.tgz", + "integrity": "sha512-XWwnNNFCuuSQ0m3r3C4LE3EiORltHd9M05pq6FOlVeiophzRbMo50Sbz1ehl8K3Z+jw9+vmgnXefY1hz8X+2wA==", + "dev": true + } + } + }, "nuxi": { "version": "3.6.5", "resolved": "https://registry.npmjs.org/nuxi/-/nuxi-3.6.5.tgz", @@ -35500,6 +42646,12 @@ "@nuxt/kit": "^3.6.1" } }, + "nwsapi": { + "version": "2.2.7", + "resolved": "https://registry.npmjs.org/nwsapi/-/nwsapi-2.2.7.tgz", + "integrity": "sha512-ub5E4+FBPKwAZx0UwIQOjYWGHTEq5sPqHQNRN8Z9e4A7u3Tj1weLJsL59yH9vmvqEtBHaOmT6cYQKIZOxp35FQ==", + "dev": true + }, "nypm": { "version": "0.2.2", "resolved": "https://registry.npmjs.org/nypm/-/nypm-0.2.2.tgz", @@ -35660,6 +42812,12 @@ "resolved": "https://registry.npmjs.org/ohash/-/ohash-1.1.3.tgz", "integrity": "sha512-zuHHiGTYTA1sYJ/wZN+t5HKZaH23i4yI1HMwbuXm24Nid7Dv0KcuRlKoNKS9UNfAVSBlnGLcuQrnOKWOZoEGaw==" }, + "ohm-js": { + "version": "16.5.0", + "resolved": "https://registry.npmjs.org/ohm-js/-/ohm-js-16.5.0.tgz", + "integrity": "sha512-OXuB3g1cdP6vCyaGziLmihLkBrtfH9H9jmYp5nRqad093KVzkUSi062IVv5l+3SB/HIbMyDvBqhgR3Q3S+EEnw==", + "dev": true + }, "on-finished": { "version": "2.4.1", "resolved": "https://registry.npmjs.org/on-finished/-/on-finished-2.4.1.tgz", @@ -35734,6 +42892,23 @@ "type-check": "^0.4.0" } }, + "ora": { + "version": "5.4.1", + "resolved": "https://registry.npmjs.org/ora/-/ora-5.4.1.tgz", + "integrity": "sha512-5b6Y85tPxZZ7QytO+BQzysW31HJku27cRIlkbAXaNx+BdcVi+LlRFmVXzeF6a7JCwJpyw5c4b+YSVImQIrBpuQ==", + "dev": true, + "requires": { + "bl": "^4.1.0", + "chalk": "^4.1.0", + "cli-cursor": "^3.1.0", + "cli-spinners": "^2.5.0", + "is-interactive": "^1.0.0", + "is-unicode-supported": "^0.1.0", + "log-symbols": "^4.1.0", + "strip-ansi": "^6.0.0", + "wcwidth": "^1.0.1" + } + }, "os-tmpdir": { "version": "1.0.2", "resolved": "https://registry.npmjs.org/os-tmpdir/-/os-tmpdir-1.0.2.tgz", @@ -35801,6 +42976,15 @@ "netmask": "^2.0.2" } }, + "param-case": { + "version": "3.0.4", + "resolved": "https://registry.npmjs.org/param-case/-/param-case-3.0.4.tgz", + "integrity": "sha512-RXlj7zCYokReqWpOPH9oYivUzLYZ5vAPIfEmCTNViosC78F8F0H9y7T7gG2M39ymgutxF5gcFEsyZQSph9Bp3A==", + "requires": { + "dot-case": "^3.0.4", + "tslib": "^2.0.3" + } + }, "parent-module": { "version": "1.0.1", "requires": { @@ -35873,12 +43057,30 @@ "resolved": "https://registry.npmjs.org/parseurl/-/parseurl-1.3.3.tgz", "integrity": "sha512-CiyeOxFT/JZyN5m0z9PfXw4SCBJ6Sygz1Dpl0wqjlhDEGGBP1GnsUVEL0p63hoG1fcj3fHynXi9NYO4nWOL+qQ==" }, + "pascal-case": { + "version": "3.1.2", + "resolved": "https://registry.npmjs.org/pascal-case/-/pascal-case-3.1.2.tgz", + "integrity": "sha512-uWlGT3YSnK9x3BQJaOdcZwrnV6hPpd8jFH1/ucpiLRPh/2zCVJKS19E4GvYHvaCcACn3foXZ0cLB9Wrx1KGe5g==", + "requires": { + "no-case": "^3.0.4", + "tslib": "^2.0.3" + } + }, "path-browserify": { "version": "1.0.1", "resolved": "https://registry.npmjs.org/path-browserify/-/path-browserify-1.0.1.tgz", "integrity": "sha512-b7uo2UCUOYZcnF/3ID0lulOJi/bafxa1xPe7ZPsammBSpjSWQkjNxlt635YGS2MiR9GjvuXCtz2emr3jbsz98g==", "devOptional": true }, + "path-case": { + "version": "3.0.4", + "resolved": "https://registry.npmjs.org/path-case/-/path-case-3.0.4.tgz", + "integrity": "sha512-qO4qCFjXqVTrcbPt/hQfhTQ+VhFsqNKOPtytgNKkKxSoEp3XPUQ8ObFuePylOIok5gjn69ry8XiULxCwot3Wfg==", + "requires": { + "dot-case": "^3.0.4", + "tslib": "^2.0.3" + } + }, "path-exists": { "version": "4.0.0" }, @@ -35888,6 +43090,12 @@ "path-key": { "version": "3.1.1" }, + "path-normalize": { + "version": "6.0.12", + "resolved": "https://registry.npmjs.org/path-normalize/-/path-normalize-6.0.12.tgz", + "integrity": "sha512-/lgDQDNQVtfOCKpQ9/Zr64/pT4OWmCiHDBtHCnJO/jkxXmnETI2Bes/E3y9yDbplYFMFvjRPSINfPvYxVrxEYA==", + "dev": true + }, "path-parse": { "version": "1.0.7" }, @@ -35942,6 +43150,12 @@ "picomatch": { "version": "2.3.1" }, + "pidtree": { + "version": "0.6.0", + "resolved": "https://registry.npmjs.org/pidtree/-/pidtree-0.6.0.tgz", + "integrity": "sha512-eG2dWTVw5bzqGRztnHExczNxt5VGsE6OwTeCG3fdUf9KBsZzO3R5OIIIzWR+iZA0NtZ+RDVdaoE2dK1cn6jH4g==", + "dev": true + }, "pify": { "version": "2.3.0", "resolved": "https://registry.npmjs.org/pify/-/pify-2.3.0.tgz", @@ -36536,6 +43750,12 @@ "resolved": "https://registry.npmjs.org/postcss-value-parser/-/postcss-value-parser-4.2.0.tgz", "integrity": "sha512-1NNCs6uurfkVbeXG4S8JFT9t19m45ICnif8zWLd5oPSZ50QnwMfK+H3jv408d4jw/7Bttv5axS5IiHoLaVNHeQ==" }, + "prando": { + "version": "6.0.1", + "resolved": "https://registry.npmjs.org/prando/-/prando-6.0.1.tgz", + "integrity": "sha512-ghUWxQ1T9IJmPu6eshc3VU0OwveUtXQ33ZLXYUcz1Oc5ppKLDXKp0TBDj6b0epwhEctzcQSNGR2iHyvQSn4W5A==", + "dev": true + }, "preferred-pm": { "version": "3.1.2", "resolved": "https://registry.npmjs.org/preferred-pm/-/preferred-pm-3.1.2.tgz", @@ -36627,6 +43847,27 @@ "integrity": "sha512-vtK/94akxsTMhe0/cbfpR+syPuszcuwhqVjJq26CuNDgFGj682oRBXOP5MJpv2r7JtE8MsiepGIqvvOTBwn2vA==", "dev": true }, + "protobufjs": { + "version": "6.11.4", + "resolved": "https://registry.npmjs.org/protobufjs/-/protobufjs-6.11.4.tgz", + "integrity": "sha512-5kQWPaJHi1WoCpjTGszzQ32PG2F4+wRY6BmAT4Vfw56Q2FZ4YZzK20xUYQH4YkfehY1e6QSICrJquM6xXZNcrw==", + "dev": true, + "requires": { + "@protobufjs/aspromise": "^1.1.2", + "@protobufjs/base64": "^1.1.2", + "@protobufjs/codegen": "^2.0.4", + "@protobufjs/eventemitter": "^1.1.0", + "@protobufjs/fetch": "^1.1.0", + "@protobufjs/float": "^1.0.2", + "@protobufjs/inquire": "^1.1.0", + "@protobufjs/path": "^1.1.2", + "@protobufjs/pool": "^1.1.0", + "@protobufjs/utf8": "^1.1.0", + "@types/long": "^4.0.1", + "@types/node": ">=13.7.0", + "long": "^4.0.0" + } + }, "protocols": { "version": "2.0.1", "resolved": "https://registry.npmjs.org/protocols/-/protocols-2.0.1.tgz", @@ -36664,6 +43905,12 @@ "integrity": "sha512-b/YwNhb8lk1Zz2+bXXpS/LK9OisiZZ1SNsSLxN1x2OXVEhW2Ckr/7mWE5vrC1ZTiJlD9g19jWszTmJsB+oEpFQ==", "dev": true }, + "psl": { + "version": "1.9.0", + "resolved": "https://registry.npmjs.org/psl/-/psl-1.9.0.tgz", + "integrity": "sha512-E/ZsdU4HLs/68gYzgGTkMicWTLPdAftJLfJFlLUAAKZGkStNU72sZjT66SnMDVOfOWY/YAoiD7Jxa9iHvngcag==", + "dev": true + }, "pump": { "version": "3.0.0", "resolved": "https://registry.npmjs.org/pump/-/pump-3.0.0.tgz", @@ -36720,6 +43967,33 @@ "ws": "8.14.2" } }, + "pure-rand": { + "version": "6.0.4", + "resolved": "https://registry.npmjs.org/pure-rand/-/pure-rand-6.0.4.tgz", + "integrity": "sha512-LA0Y9kxMYv47GIPJy6MI84fqTd2HmYZI83W/kM/SkKfDlajnZYfmXFTxkbY+xSBPkLJxltMa9hIkmdc29eguMA==", + "dev": true + }, + "qrcode-terminal": { + "version": "0.12.0", + "resolved": "https://registry.npmjs.org/qrcode-terminal/-/qrcode-terminal-0.12.0.tgz", + "integrity": "sha512-EXtzRZmC+YGmGlDFbXKxQiMZNwCLEO6BANKXG4iCtSIM0yqc/pappSx3RIKr4r0uh5JsBckOXeKrB3Iz7mdQpQ==", + "dev": true + }, + "qs": { + "version": "6.11.2", + "resolved": "https://registry.npmjs.org/qs/-/qs-6.11.2.tgz", + "integrity": "sha512-tDNIz22aBzCDxLtVH++VnTfzxlfeK5CbqohpSqpJgj1Wg/cQbStNAz3NuqCs5vV+pjBsK4x4pN9HlVh7rcYRiA==", + "dev": true, + "requires": { + "side-channel": "^1.0.4" + } + }, + "querystringify": { + "version": "2.2.0", + "resolved": "https://registry.npmjs.org/querystringify/-/querystringify-2.2.0.tgz", + "integrity": "sha512-FIqgj2EUvTa7R50u0rGsyTftzjYmv/a3hO345bZNrqabNqjtgiDMgmo4mkUjd+nzU5oF3dClKqFIPUKybUyqoQ==", + "dev": true + }, "queue-microtask": { "version": "1.2.3" }, @@ -36734,6 +44008,43 @@ "integrity": "sha512-ARhCpm70fzdcvNQfPoy49IaanKkTlRWF2JMzqhcJbhSFRZv7nPTvZJdcY7301IPmvW+/p0RgIWnQDLJxifsQ7g==", "dev": true }, + "rabin-wasm": { + "version": "0.1.5", + "resolved": "https://registry.npmjs.org/rabin-wasm/-/rabin-wasm-0.1.5.tgz", + "integrity": "sha512-uWgQTo7pim1Rnj5TuWcCewRDTf0PEFTSlaUjWP4eY9EbLV9em08v89oCz/WO+wRxpYuO36XEHp4wgYQnAgOHzA==", + "dev": true, + "requires": { + "@assemblyscript/loader": "^0.9.4", + "bl": "^5.0.0", + "debug": "^4.3.1", + "minimist": "^1.2.5", + "node-fetch": "^2.6.1", + "readable-stream": "^3.6.0" + }, + "dependencies": { + "bl": { + "version": "5.1.0", + "resolved": "https://registry.npmjs.org/bl/-/bl-5.1.0.tgz", + "integrity": "sha512-tv1ZJHLfTDnXE6tMHv73YgSJaWR2AFuPwMntBe7XL/GBFHnT0CLnsHMogfk5+GzCDC5ZWarSCYaIGATZt9dNsQ==", + "dev": true, + "requires": { + "buffer": "^6.0.3", + "inherits": "^2.0.4", + "readable-stream": "^3.4.0" + } + }, + "buffer": { + "version": "6.0.3", + "resolved": "https://registry.npmjs.org/buffer/-/buffer-6.0.3.tgz", + "integrity": "sha512-FTiCpNxtwiZZHEZbcbTIcZjERVICn9yq/pDFkTl95/AxzD1naBctN7YO68riM/gLSDY7sdrMby8hofADYuuqOA==", + "dev": true, + "requires": { + "base64-js": "^1.3.1", + "ieee754": "^1.2.1" + } + } + } + }, "radix3": { "version": "1.1.0", "resolved": "https://registry.npmjs.org/radix3/-/radix3-1.1.0.tgz", @@ -36762,6 +44073,12 @@ "flat": "^5.0.2" } }, + "react-is": { + "version": "18.2.0", + "resolved": "https://registry.npmjs.org/react-is/-/react-is-18.2.0.tgz", + "integrity": "sha512-xWGDIW6x921xtzPkhiULtthJHoJvBbF3q26fzloPCK0hsvxtPVelvftw3zjbHWSkR2km9Z+4uxbDDK/6Zw9B8w==", + "dev": true + }, "read-cache": { "version": "1.0.0", "resolved": "https://registry.npmjs.org/read-cache/-/read-cache-1.0.0.tgz", @@ -37493,6 +44810,12 @@ "integrity": "sha512-NKN5kMDylKuldxYLSUfrbo5Tuzh4hd+2E8NPPX02mZtn1VuREQToYe/ZdlJy+J3uCpfaiGF05e7B8W0iXbQHmg==", "dev": true }, + "requires-port": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/requires-port/-/requires-port-1.0.0.tgz", + "integrity": "sha512-KigOCHcocU3XODJxsu8i/j8T9tzT4adHiecwORRQ0ZZFcp7ahwXuRU1m+yuO90C5ZUyGeGfocHDI14M3L3yDAQ==", + "dev": true + }, "resolve": { "version": "1.22.8", "requires": { @@ -37501,6 +44824,23 @@ "supports-preserve-symlinks-flag": "^1.0.0" } }, + "resolve-cwd": { + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/resolve-cwd/-/resolve-cwd-3.0.0.tgz", + "integrity": "sha512-OrZaX2Mb+rJCpH/6CpSqt9xFVpN++x01XnN2ie9g6P5/3xelLAkXWVADpdz1IHD/KFfEXyE6V0U01OQ3UO2rEg==", + "dev": true, + "requires": { + "resolve-from": "^5.0.0" + }, + "dependencies": { + "resolve-from": { + "version": "5.0.0", + "resolved": "https://registry.npmjs.org/resolve-from/-/resolve-from-5.0.0.tgz", + "integrity": "sha512-qYg9KP24dD5qka9J47d0aVky0N+b4fTU89LN9iDnjB5waksiC49rvMB0PrUJQGoTmH50XPiqOvAjDfaijGxYZw==", + "dev": true + } + } + }, "resolve-from": { "version": "4.0.0" }, @@ -37550,6 +44890,22 @@ "version": "1.0.0", "dev": true }, + "resolve.exports": { + "version": "2.0.2", + "resolved": "https://registry.npmjs.org/resolve.exports/-/resolve.exports-2.0.2.tgz", + "integrity": "sha512-X2UW6Nw3n/aMgDVy+0rSqgHlv39WZAlZrXCdnbyEiKm17DSqHX4MmQMaST3FbeWR5FTuRcUwYAziZajji0Y7mg==", + "dev": true + }, + "restore-cursor": { + "version": "3.1.0", + "resolved": "https://registry.npmjs.org/restore-cursor/-/restore-cursor-3.1.0.tgz", + "integrity": "sha512-l+sSefzHpj5qimhFSE5a8nufZYAM3sBSVMAPtYkmC+4EH2anSGaEMXSD0izRQbu9nfyQ9y5JrVmp7E8oZrUjvA==", + "dev": true, + "requires": { + "onetime": "^5.1.0", + "signal-exit": "^3.0.2" + } + }, "reusify": { "version": "1.0.4" }, @@ -37600,6 +44956,18 @@ } } }, + "rrweb-cssom": { + "version": "0.6.0", + "resolved": "https://registry.npmjs.org/rrweb-cssom/-/rrweb-cssom-0.6.0.tgz", + "integrity": "sha512-APM0Gt1KoXBz0iIkkdB/kfvGOwC4UuJFeG/c+yV7wSc7q96cG/kJ0HiYCnzivD9SB53cLV1MlHFNfOuPaadYSw==", + "dev": true + }, + "run-async": { + "version": "2.4.1", + "resolved": "https://registry.npmjs.org/run-async/-/run-async-2.4.1.tgz", + "integrity": "sha512-tvVnVv01b8c1RrA6Ep7JkStj85Guv/YrMcwqYQnwjsAS2cTmmPGBBjAjpCW7RrSodNSoE2/qg9O4bceNvUuDgQ==", + "dev": true + }, "run-parallel": { "version": "1.2.0", "requires": { @@ -37612,6 +44980,15 @@ "integrity": "sha512-PdhdWy89SiZogBLaw42zdeqtRJ//zFd2PgQavcICDUgJT5oW10QCRKbJ6bg4r0/UY2M6BWd5tkxuGFRvCkgfHQ==", "dev": true }, + "rxjs": { + "version": "7.8.1", + "resolved": "https://registry.npmjs.org/rxjs/-/rxjs-7.8.1.tgz", + "integrity": "sha512-AA3TVj+0A2iuIoQkWEK/tqFjBq2j+6PO6Y0zJcvzLAFhEFIO3HL0vls9hWLncZbAAbK0mar7oZ4V079I/qPMxg==", + "dev": true, + "requires": { + "tslib": "^2.1.0" + } + }, "sade": { "version": "1.8.1", "resolved": "https://registry.npmjs.org/sade/-/sade-1.8.1.tgz", @@ -37660,6 +45037,15 @@ "resolved": "https://registry.npmjs.org/sax/-/sax-1.3.0.tgz", "integrity": "sha512-0s+oAmw9zLl1V1cS9BtZN7JAd0cW5e0QH4W3LWEK6a4LaLEA2OTpGYWDY+6XasBLtz6wkm3u1xRw95mRuJ59WA==" }, + "saxes": { + "version": "6.0.0", + "resolved": "https://registry.npmjs.org/saxes/-/saxes-6.0.0.tgz", + "integrity": "sha512-xAg7SOnEhrm5zI3puOOKyy1OMcMlIJZYNJY7xLBwSze0UjhPLnWfj2GF2EpT0jmzaJKIWKHLsaSSajf35bcYnA==", + "dev": true, + "requires": { + "xmlchars": "^2.2.0" + } + }, "schema-utils": { "version": "3.3.0", "resolved": "https://registry.npmjs.org/schema-utils/-/schema-utils-3.3.0.tgz", @@ -37739,6 +45125,16 @@ } } }, + "sentence-case": { + "version": "3.0.4", + "resolved": "https://registry.npmjs.org/sentence-case/-/sentence-case-3.0.4.tgz", + "integrity": "sha512-8LS0JInaQMCRoQ7YUytAo/xUu5W2XnQxV2HI/6uM6U7CITS1RqPElr30V6uIqyMKM9lJGRVFy5/4CuzcixNYSg==", + "requires": { + "no-case": "^3.0.4", + "tslib": "^2.0.3", + "upper-case-first": "^2.0.2" + } + }, "serialize-javascript": { "version": "6.0.1", "resolved": "https://registry.npmjs.org/serialize-javascript/-/serialize-javascript-6.0.1.tgz", @@ -37803,6 +45199,12 @@ "shebang-regex": { "version": "3.0.0" }, + "shell-quote": { + "version": "1.8.1", + "resolved": "https://registry.npmjs.org/shell-quote/-/shell-quote-1.8.1.tgz", + "integrity": "sha512-6j1W9l1iAs/4xYBI1SYOVZyFcCis9b4KCLQ8fgAGG07QvzaRLVVRQvAy85yNmmZSjYjg4MWh4gNvlPujU/5LpA==", + "dev": true + }, "shiki-es": { "version": "0.14.0", "resolved": "https://registry.npmjs.org/shiki-es/-/shiki-es-0.14.0.tgz", @@ -37987,6 +45389,15 @@ "resolved": "https://registry.npmjs.org/smob/-/smob-1.4.1.tgz", "integrity": "sha512-9LK+E7Hv5R9u4g4C3p+jjLstaLe11MDsL21UpYaCNmapvMkYhqCV4A/f/3gyH8QjMyh6l68q9xC85vihY9ahMQ==" }, + "snake-case": { + "version": "3.0.4", + "resolved": "https://registry.npmjs.org/snake-case/-/snake-case-3.0.4.tgz", + "integrity": "sha512-LAOh4z89bGQvl9pFfNF8V146i7o7/CqFPbqzYgP+yYzDIDeS9HaNFtXABamRW+AQzEVODcvE79ljJ+8a9YSdMg==", + "requires": { + "dot-case": "^3.0.4", + "tslib": "^2.0.3" + } + }, "socket.io-client": { "version": "4.7.2", "resolved": "https://registry.npmjs.org/socket.io-client/-/socket.io-client-4.7.2.tgz", @@ -38047,6 +45458,12 @@ "resolved": "https://registry.npmjs.org/space-separated-tokens/-/space-separated-tokens-2.0.2.tgz", "integrity": "sha512-PEGlAwrG8yXGXRjW32fGbg66JAlOAwbObuqVoJpv/mRgoWDQfgH1wDPvtzWyUSNAXBGSk8h755YDbbcEy3SH2Q==" }, + "sparse-array": { + "version": "1.3.2", + "resolved": "https://registry.npmjs.org/sparse-array/-/sparse-array-1.3.2.tgz", + "integrity": "sha512-ZT711fePGn3+kQyLuv1fpd3rNSkNF8vd5Kv2D+qnOANeyKs3fx6bUMGWRPvgTTcYV64QMqZKZwcuaQSP3AZ0tg==", + "dev": true + }, "spawndamnit": { "version": "2.0.0", "resolved": "https://registry.npmjs.org/spawndamnit/-/spawndamnit-2.0.0.tgz", @@ -38140,6 +45557,23 @@ "integrity": "sha512-D9cPgkvLlV3t3IzL0D0YLvGA9Ahk4PcvVwUbN0dSGr1aP0Nrt4AEnTUbuGvquEC0mA64Gqt1fzirlRs5ibXx8g==", "dev": true }, + "stack-utils": { + "version": "2.0.6", + "resolved": "https://registry.npmjs.org/stack-utils/-/stack-utils-2.0.6.tgz", + "integrity": "sha512-XlkWvfIm6RmsWtNJx+uqtKLS8eqFbxUg0ZzLXqY0caEy9l7hruX8IpiDnjsLavoBgqCCR71TqWO8MaXYheJ3RQ==", + "dev": true, + "requires": { + "escape-string-regexp": "^2.0.0" + }, + "dependencies": { + "escape-string-regexp": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/escape-string-regexp/-/escape-string-regexp-2.0.0.tgz", + "integrity": "sha512-UpzcLCXolUWcNu5HtVMHYdXJjArjsF9C0aNnquZYY4uW/Vu0miy5YoWvbV345HauVvcAUnpRuhMMcqTcGOY2+w==", + "dev": true + } + } + }, "stackback": { "version": "0.0.2", "resolved": "https://registry.npmjs.org/stackback/-/stackback-0.0.2.tgz", @@ -38191,6 +45625,16 @@ "integrity": "sha512-aqD2Q0144Z+/RqG52NeHEkZauTAUWJO8c6yTftGJKO3Tja5tUgIfmIl6kExvhtxSDP7fXB6DvzkfMpCd/F3G+Q==", "dev": true }, + "string-length": { + "version": "4.0.2", + "resolved": "https://registry.npmjs.org/string-length/-/string-length-4.0.2.tgz", + "integrity": "sha512-+l6rNN5fYHNhZZy41RXsYptCjA2Igmq4EG7kZAYFQI1E1VTXarr6ZPXBg6eq7Y6eK4FEhY6AJlyuFIb/v/S0VQ==", + "dev": true, + "requires": { + "char-regex": "^1.0.2", + "strip-ansi": "^6.0.0" + } + }, "string-width": { "version": "4.2.3", "requires": { @@ -38278,6 +45722,15 @@ "strip-final-newline": { "version": "2.0.0" }, + "strip-hex-prefix": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/strip-hex-prefix/-/strip-hex-prefix-1.0.0.tgz", + "integrity": "sha512-q8d4ue7JGEiVcypji1bALTos+0pWtyGlivAWyPuTkHzuTCJqrK9sWxYQZUq6Nq3cuyv3bm734IhHvHtGGURU6A==", + "dev": true, + "requires": { + "is-hex-prefixed": "1.0.0" + } + }, "strip-indent": { "version": "3.0.0", "dev": true, @@ -38323,63 +45776,16 @@ "balanced-match": "^1.0.0" } }, - "camel-case": { - "version": "4.1.2", - "resolved": "https://registry.npmjs.org/camel-case/-/camel-case-4.1.2.tgz", - "integrity": "sha512-gxGWBrTT1JuMx6R+o5PTXMmUnhnVzLQ9SNutD4YqKtI6ap897t3tKECYla6gCWEkplXnlNybEkZg9GEGxKFCgw==", - "requires": { - "pascal-case": "^3.1.2", - "tslib": "^2.0.3" - } - }, "chalk": { "version": "5.3.0", "resolved": "https://registry.npmjs.org/chalk/-/chalk-5.3.0.tgz", "integrity": "sha512-dLitG79d+GV1Nb/VYcCDFivJeK1hiukt9QjRNVOsUtTy1rR1YJsmpGGTZ3qJos+uw7WmWF4wUwBd9jxjocFC2w==" }, - "change-case": { - "version": "4.1.2", - "resolved": "https://registry.npmjs.org/change-case/-/change-case-4.1.2.tgz", - "integrity": "sha512-bSxY2ws9OtviILG1EiY5K7NNxkqg/JnRnFxLtKQ96JaviiIxi7djMrSd0ECT9AC+lttClmYwKw53BWpOMblo7A==", - "requires": { - "camel-case": "^4.1.2", - "capital-case": "^1.0.4", - "constant-case": "^3.0.4", - "dot-case": "^3.0.4", - "header-case": "^2.0.4", - "no-case": "^3.0.4", - "param-case": "^3.0.4", - "pascal-case": "^3.1.2", - "path-case": "^3.0.4", - "sentence-case": "^3.0.4", - "snake-case": "^3.0.4", - "tslib": "^2.0.3" - } - }, "commander": { "version": "11.1.0", "resolved": "https://registry.npmjs.org/commander/-/commander-11.1.0.tgz", "integrity": "sha512-yPVavfyCcRhmorC7rWlkHn15b4wDVgVmBA7kV4QVBsF7kv/9TKJAbAXVTxvTnwP8HHKjRCJDClKbciiYS7p0DQ==" }, - "constant-case": { - "version": "3.0.4", - "resolved": "https://registry.npmjs.org/constant-case/-/constant-case-3.0.4.tgz", - "integrity": "sha512-I2hSBi7Vvs7BEuJDr5dDHfzb/Ruj3FyvFyh7KLilAjNQw3Be+xgqUBA2W6scVEcL0hL1dwPRtIqEPVUCKkSsyQ==", - "requires": { - "no-case": "^3.0.4", - "tslib": "^2.0.3", - "upper-case": "^2.0.2" - } - }, - "dot-case": { - "version": "3.0.4", - "resolved": "https://registry.npmjs.org/dot-case/-/dot-case-3.0.4.tgz", - "integrity": "sha512-Kv5nKlh6yRrdrGvxeJ2e5y2eRUpkUosIW4A2AS38zwSz27zu7ufDwQPi5Jhs3XAlGNetl3bmnGhQsMtkKJnj3w==", - "requires": { - "no-case": "^3.0.4", - "tslib": "^2.0.3" - } - }, "glob": { "version": "10.3.10", "resolved": "https://registry.npmjs.org/glob/-/glob-10.3.10.tgz", @@ -38392,23 +45798,6 @@ "path-scurry": "^1.10.1" } }, - "header-case": { - "version": "2.0.4", - "resolved": "https://registry.npmjs.org/header-case/-/header-case-2.0.4.tgz", - "integrity": "sha512-H/vuk5TEEVZwrR0lp2zed9OCo1uAILMlx0JEMgC26rzyJJ3N1v6XkwHHXJQdR2doSjcGPM6OKPYoJgf0plJ11Q==", - "requires": { - "capital-case": "^1.0.4", - "tslib": "^2.0.3" - } - }, - "lower-case": { - "version": "2.0.2", - "resolved": "https://registry.npmjs.org/lower-case/-/lower-case-2.0.2.tgz", - "integrity": "sha512-7fm3l3NAF9WfN6W3JOmf5drwpVqX78JtoGJ3A6W0a6ZnldM41w2fV5D490psKFTpMds8TJse/eHLFFsNHHjHgg==", - "requires": { - "tslib": "^2.0.3" - } - }, "minimatch": { "version": "9.0.3", "resolved": "https://registry.npmjs.org/minimatch/-/minimatch-9.0.3.tgz", @@ -38416,77 +45805,6 @@ "requires": { "brace-expansion": "^2.0.1" } - }, - "no-case": { - "version": "3.0.4", - "resolved": "https://registry.npmjs.org/no-case/-/no-case-3.0.4.tgz", - "integrity": "sha512-fgAN3jGAh+RoxUGZHTSOLJIqUc2wmoBwGR4tbpNAKmmovFoWq0OdRkb0VkldReO2a2iBT/OEulG9XSUc10r3zg==", - "requires": { - "lower-case": "^2.0.2", - "tslib": "^2.0.3" - } - }, - "param-case": { - "version": "3.0.4", - "resolved": "https://registry.npmjs.org/param-case/-/param-case-3.0.4.tgz", - "integrity": "sha512-RXlj7zCYokReqWpOPH9oYivUzLYZ5vAPIfEmCTNViosC78F8F0H9y7T7gG2M39ymgutxF5gcFEsyZQSph9Bp3A==", - "requires": { - "dot-case": "^3.0.4", - "tslib": "^2.0.3" - } - }, - "pascal-case": { - "version": "3.1.2", - "resolved": "https://registry.npmjs.org/pascal-case/-/pascal-case-3.1.2.tgz", - "integrity": "sha512-uWlGT3YSnK9x3BQJaOdcZwrnV6hPpd8jFH1/ucpiLRPh/2zCVJKS19E4GvYHvaCcACn3foXZ0cLB9Wrx1KGe5g==", - "requires": { - "no-case": "^3.0.4", - "tslib": "^2.0.3" - } - }, - "path-case": { - "version": "3.0.4", - "resolved": "https://registry.npmjs.org/path-case/-/path-case-3.0.4.tgz", - "integrity": "sha512-qO4qCFjXqVTrcbPt/hQfhTQ+VhFsqNKOPtytgNKkKxSoEp3XPUQ8ObFuePylOIok5gjn69ry8XiULxCwot3Wfg==", - "requires": { - "dot-case": "^3.0.4", - "tslib": "^2.0.3" - } - }, - "sentence-case": { - "version": "3.0.4", - "resolved": "https://registry.npmjs.org/sentence-case/-/sentence-case-3.0.4.tgz", - "integrity": "sha512-8LS0JInaQMCRoQ7YUytAo/xUu5W2XnQxV2HI/6uM6U7CITS1RqPElr30V6uIqyMKM9lJGRVFy5/4CuzcixNYSg==", - "requires": { - "no-case": "^3.0.4", - "tslib": "^2.0.3", - "upper-case-first": "^2.0.2" - } - }, - "snake-case": { - "version": "3.0.4", - "resolved": "https://registry.npmjs.org/snake-case/-/snake-case-3.0.4.tgz", - "integrity": "sha512-LAOh4z89bGQvl9pFfNF8V146i7o7/CqFPbqzYgP+yYzDIDeS9HaNFtXABamRW+AQzEVODcvE79ljJ+8a9YSdMg==", - "requires": { - "dot-case": "^3.0.4", - "tslib": "^2.0.3" - } - }, - "upper-case": { - "version": "2.0.2", - "resolved": "https://registry.npmjs.org/upper-case/-/upper-case-2.0.2.tgz", - "integrity": "sha512-KgdgDGJt2TpuwBUIjgG6lzw2GWFRCW9Qkfkiv0DxqHHLYJHmtmdUIKcZd8rHgFSjopVTlw6ggzCm1b8MFQwikg==", - "requires": { - "tslib": "^2.0.3" - } - }, - "upper-case-first": { - "version": "2.0.2", - "resolved": "https://registry.npmjs.org/upper-case-first/-/upper-case-first-2.0.2.tgz", - "integrity": "sha512-514ppYHBaKwfJRK/pNC6c/OxfGa0obSnAl106u97Ed0I625Nin96KAjttZF6ZL3e1XLtphxnqrOi9iWgm+u+bg==", - "requires": { - "tslib": "^2.0.3" - } } } }, @@ -38573,6 +45891,18 @@ } } }, + "symbol-tree": { + "version": "3.2.4", + "resolved": "https://registry.npmjs.org/symbol-tree/-/symbol-tree-3.2.4.tgz", + "integrity": "sha512-9QNk5KwDF+Bvz+PyObkmSYjI5ksVUYtjW7AU22r2NKcfLJcXp96hkDWU3+XndOsUb+AQ9QhfzfCT2O+CNWT5Tw==", + "dev": true + }, + "symbol.inspect": { + "version": "1.0.1", + "resolved": "https://registry.npmjs.org/symbol.inspect/-/symbol.inspect-1.0.1.tgz", + "integrity": "sha512-YQSL4duoHmLhsTD1Pw8RW6TZ5MaTX5rXJnqacJottr2P2LZBF/Yvrc3ku4NUpMOm8aM0KOCqM+UAkMA5HWQCzQ==", + "dev": true + }, "tailwind-config-viewer": { "version": "1.7.3", "resolved": "https://registry.npmjs.org/tailwind-config-viewer/-/tailwind-config-viewer-1.7.3.tgz", @@ -38751,6 +46081,23 @@ "terser": "^5.16.8" } }, + "teslabot": { + "version": "1.5.0", + "resolved": "https://registry.npmjs.org/teslabot/-/teslabot-1.5.0.tgz", + "integrity": "sha512-e2MmELhCgrgZEGo7PQu/6bmYG36IDH+YrBI1iGm6jovXkeDIGa3pZ2WSqRjzkuw2vt1EqfkZoV5GpXgqL8QJVg==", + "dev": true + }, + "test-exclude": { + "version": "6.0.0", + "resolved": "https://registry.npmjs.org/test-exclude/-/test-exclude-6.0.0.tgz", + "integrity": "sha512-cAGWPIyOHU6zlmg88jwm7VRyXnMN7iV68OGAbYDk/Mh/xC/pzVPlQtY6ngoIH/5/tciuhGfvESU8GrHrcxD56w==", + "dev": true, + "requires": { + "@istanbuljs/schema": "^0.1.2", + "glob": "^7.1.4", + "minimatch": "^3.0.4" + } + }, "text-table": { "version": "0.2.0", "devOptional": true @@ -38815,6 +46162,12 @@ "os-tmpdir": "~1.0.2" } }, + "tmpl": { + "version": "1.0.5", + "resolved": "https://registry.npmjs.org/tmpl/-/tmpl-1.0.5.tgz", + "integrity": "sha512-3f0uOEAQwIqGuWW2MVzYg8fV/QNnc/IpuJNG837rLuczAaLVHslWHZQj4IGiEl5Hs3kkbhwL9Ab7Hrsmuj+Smw==", + "dev": true + }, "to-fast-properties": { "version": "2.0.0" }, @@ -38829,6 +46182,143 @@ "resolved": "https://registry.npmjs.org/toidentifier/-/toidentifier-1.0.1.tgz", "integrity": "sha512-o5sSPKEkg/DIQNmH43V0/uerLrpzVedkUh8tGNvaeXpfpuwjKenlSox/2O/BTlZUtEe+JG7s5YhEz608PlAHRA==" }, + "ton": { + "version": "13.6.1", + "resolved": "https://registry.npmjs.org/ton/-/ton-13.6.1.tgz", + "integrity": "sha512-CZlFsmO+l+uPSI2zgnUd8zCS5XuWnUSFRVUjRGl5X5fKXYnjaVba4vMaIyFTJwel+uEMnolGMSlNP8DAa9mfVg==", + "dev": true, + "requires": { + "axios": "^0.25.0", + "dataloader": "^2.0.0", + "symbol.inspect": "1.0.1", + "teslabot": "^1.3.0", + "zod": "^3.21.4" + } + }, + "ton-core": { + "version": "0.51.0", + "resolved": "https://registry.npmjs.org/ton-core/-/ton-core-0.51.0.tgz", + "integrity": "sha512-FgejId/X1o7nNc5g8DBW1+9piwFolVU3e83Z8TudDCALik29YPhGOqLHSvcVYux3QV7SL0qCNaKgA3mV2nNfCA==", + "dev": true, + "requires": { + "symbol.inspect": "1.0.1" + } + }, + "ton-crypto": { + "version": "3.2.0", + "resolved": "https://registry.npmjs.org/ton-crypto/-/ton-crypto-3.2.0.tgz", + "integrity": "sha512-fltdBNQ45gARMuGMEOjPZWPJ5eSql8p3CA0Dj7tPv5lhU5ziT8SxXLAzDraR9HJ8YpjBHLVvYyhMLRiEwxgtMQ==", + "dev": true, + "requires": { + "jssha": "3.2.0", + "ton-crypto-primitives": "2.0.0", + "tweetnacl": "1.0.3" + } + }, + "ton-crypto-primitives": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/ton-crypto-primitives/-/ton-crypto-primitives-2.0.0.tgz", + "integrity": "sha512-K+qKjpS0h9sPW6oExcpxnzuQ7nEgHEiDKwIqE/jWD25o8iFGe3FWj1gKxFNbKE9wwYKc5IV8FwrU+raF0KO5nQ==", + "dev": true, + "requires": { + "jssha": "3.2.0" + } + }, + "ton-x": { + "version": "2.1.0", + "resolved": "https://registry.npmjs.org/ton-x/-/ton-x-2.1.0.tgz", + "integrity": "sha512-AJx4kRaRqPdTCQO8ik8E0aICg4NutUgTxnepbjoc7Emi3bMKoANiketmOFK07+vFX9QQO2NoJnqM8kgSsposhw==", + "dev": true, + "requires": { + "@types/bn.js": "^5.1.0", + "axios": "^0.27.0", + "bn.js": "^5.2.0", + "fp-ts": "^2.12.0", + "io-ts": "^2.2.16", + "teslabot": "^1.5.0", + "ton": "9.8.0", + "ton-crypto": "^3.0.0" + }, + "dependencies": { + "axios": { + "version": "0.27.2", + "resolved": "https://registry.npmjs.org/axios/-/axios-0.27.2.tgz", + "integrity": "sha512-t+yRIyySRTp/wua5xEr+z1q60QmLq8ABsS5O9Me1AsE5dfKqgnCFzwiCZZ/cGNd1lq4/7akDWMxdhVlucjmnOQ==", + "dev": true, + "requires": { + "follow-redirects": "^1.14.9", + "form-data": "^4.0.0" + } + }, + "bn.js": { + "version": "5.2.0", + "resolved": "https://registry.npmjs.org/bn.js/-/bn.js-5.2.0.tgz", + "integrity": "sha512-D7iWRBvnZE8ecXiLj/9wbxH7Tk79fAh8IHaTNq1RWRixsS02W+5qS+iE9yq6RYl0asXx5tw0bLhmT5pIfbSquw==", + "dev": true + }, + "ton": { + "version": "9.8.0", + "resolved": "https://registry.npmjs.org/ton/-/ton-9.8.0.tgz", + "integrity": "sha512-aH/7ODiEulPRZracSfQ4KeaV6iDmzjn14+YMsZ9x0sNlzhtP4blMIFXPJFp4BOc4INb5vTrfA0u+JtOoXlBO0A==", + "dev": true, + "requires": { + "axios": "^0.25.0", + "bn.js": "5.2.0", + "dataloader": "^2.0.0", + "ethjs-unit": "0.1.6", + "fp-ts": "^2.11.1", + "io-ts": "^2.2.16", + "io-ts-reporters": "^2.0.0", + "symbol.inspect": "1.0.1", + "teslabot": "^1.3.0", + "ton-crypto": "2.1.0", + "tweetnacl": "1.0.3" + }, + "dependencies": { + "axios": { + "version": "0.25.0", + "resolved": "https://registry.npmjs.org/axios/-/axios-0.25.0.tgz", + "integrity": "sha512-cD8FOb0tRH3uuEe6+evtAbgJtfxr7ly3fQjYcMcuPlgkwVS9xboaVIpcDV+cYQe+yGykgwZCs1pzjntcGa6l5g==", + "dev": true, + "requires": { + "follow-redirects": "^1.14.7" + } + }, + "ton-crypto": { + "version": "2.1.0", + "resolved": "https://registry.npmjs.org/ton-crypto/-/ton-crypto-2.1.0.tgz", + "integrity": "sha512-PZnmCOShfgq9tCRM8E7hG8nCkpkOyZvDLPXmZN92ZEBrfTT0NKKf0imndkxG5DkgWMjc6IKfgpnEaJDH9qN6ZQ==", + "dev": true, + "requires": { + "jssha": "3.2.0", + "ton-crypto-primitives": "2.0.0", + "tweetnacl": "1.0.3" + } + } + } + } + } + }, + "tough-cookie": { + "version": "4.1.3", + "resolved": "https://registry.npmjs.org/tough-cookie/-/tough-cookie-4.1.3.tgz", + "integrity": "sha512-aX/y5pVRkfRnfmuX+OdbSdXvPe6ieKX/G2s7e98f4poJHnqH3281gDPm/metm6E/WRamfx7WC4HUqkWHfQHprw==", + "dev": true, + "requires": { + "psl": "^1.1.33", + "punycode": "^2.1.1", + "universalify": "^0.2.0", + "url-parse": "^1.5.3" + }, + "dependencies": { + "universalify": { + "version": "0.2.0", + "resolved": "https://registry.npmjs.org/universalify/-/universalify-0.2.0.tgz", + "integrity": "sha512-CJ1QgKmNg3CwvAv/kOFmtnEN05f0D/cn9QntgNOQlQF9dgvVTHj3t+8JPdjqawCHk7V/KA+fbUqzZ9XWhcqPUg==", + "dev": true + } + } + }, "tr46": { "version": "0.0.3", "resolved": "https://registry.npmjs.org/tr46/-/tr46-0.0.3.tgz", @@ -38866,10 +46356,25 @@ "resolved": "https://registry.npmjs.org/ts-interface-checker/-/ts-interface-checker-0.1.13.tgz", "integrity": "sha512-Y/arvbn+rrz3JCKl9C4kVNfTfSm2/mEp5FSz5EsZSANGPSlQrpRI5M4PKF+mJnE52jOO90PnPSc3Ur3bTQw0gA==" }, + "ts-jest": { + "version": "29.1.1", + "resolved": "https://registry.npmjs.org/ts-jest/-/ts-jest-29.1.1.tgz", + "integrity": "sha512-D6xjnnbP17cC85nliwGiL+tpoKN0StpgE0TeOjXQTU6MVCfsB4v7aW05CgQ/1OywGb0x/oy9hHFnN+sczTiRaA==", + "dev": true, + "requires": { + "bs-logger": "0.x", + "fast-json-stable-stringify": "2.x", + "jest-util": "^29.0.0", + "json5": "^2.2.3", + "lodash.memoize": "4.x", + "make-error": "1.x", + "semver": "^7.5.3", + "yargs-parser": "^21.0.1" + } + }, "ts-node": { "version": "10.9.1", - "optional": true, - "peer": true, + "devOptional": true, "requires": { "@cspotcode/source-map-support": "^0.8.0", "@tsconfig/node10": "^1.0.7", @@ -39003,6 +46508,18 @@ "dev": true, "optional": true }, + "tweetnacl": { + "version": "1.0.3", + "resolved": "https://registry.npmjs.org/tweetnacl/-/tweetnacl-1.0.3.tgz", + "integrity": "sha512-6rt+RN7aOi1nGMyC4Xa5DdYiukl2UWCbcJft7YhxReBGQD7OAM8Pbxw6YMo4r2diNEA8FEmu32YOn9rhaiE5yw==", + "dev": true + }, + "tweetnacl-util": { + "version": "0.15.1", + "resolved": "https://registry.npmjs.org/tweetnacl-util/-/tweetnacl-util-0.15.1.tgz", + "integrity": "sha512-RKJBIj8lySrShN4w6i/BonWp2Z/uxwC3h4y7xsRrpP59ZboCd0GpEVsOnMDYLMmKBpYhb5TgHzZXy7wTfYFBRw==", + "dev": true + }, "type-check": { "version": "0.4.0", "devOptional": true, @@ -39088,6 +46605,15 @@ "version": "3.17.4", "optional": true }, + "uint8arrays": { + "version": "3.1.1", + "resolved": "https://registry.npmjs.org/uint8arrays/-/uint8arrays-3.1.1.tgz", + "integrity": "sha512-+QJa8QRnbdXVpHYjLoTpJIdCTiw9Ir62nocClWuXIq2JIh4Uta0cQsTSpFL678p2CN8B+XSApwcU+pQEqVpKWg==", + "dev": true, + "requires": { + "multiformats": "^9.4.2" + } + }, "ultrahtml": { "version": "1.5.2", "resolved": "https://registry.npmjs.org/ultrahtml/-/ultrahtml-1.5.2.tgz", @@ -39409,6 +46935,12 @@ "@fastify/busboy": "^2.0.0" } }, + "undici-types": { + "version": "5.26.5", + "resolved": "https://registry.npmjs.org/undici-types/-/undici-types-5.26.5.tgz", + "integrity": "sha512-JlCMO+ehdEIKqlFxk6IfVoAUVmgz7cU7zD/h9XZ0qzeosSHmUJVOzSQvvYSYWXkFXC+IfLKSIffhv0sVZup6pA==", + "dev": true + }, "unenv": { "version": "1.7.4", "resolved": "https://registry.npmjs.org/unenv/-/unenv-1.7.4.tgz", @@ -39688,6 +47220,22 @@ "picocolors": "^1.0.0" } }, + "upper-case": { + "version": "2.0.2", + "resolved": "https://registry.npmjs.org/upper-case/-/upper-case-2.0.2.tgz", + "integrity": "sha512-KgdgDGJt2TpuwBUIjgG6lzw2GWFRCW9Qkfkiv0DxqHHLYJHmtmdUIKcZd8rHgFSjopVTlw6ggzCm1b8MFQwikg==", + "requires": { + "tslib": "^2.0.3" + } + }, + "upper-case-first": { + "version": "2.0.2", + "resolved": "https://registry.npmjs.org/upper-case-first/-/upper-case-first-2.0.2.tgz", + "integrity": "sha512-514ppYHBaKwfJRK/pNC6c/OxfGa0obSnAl106u97Ed0I625Nin96KAjttZF6ZL3e1XLtphxnqrOi9iWgm+u+bg==", + "requires": { + "tslib": "^2.0.3" + } + }, "uqr": { "version": "0.1.2", "resolved": "https://registry.npmjs.org/uqr/-/uqr-0.1.2.tgz", @@ -39699,6 +47247,16 @@ "punycode": "^2.1.0" } }, + "url-parse": { + "version": "1.5.10", + "resolved": "https://registry.npmjs.org/url-parse/-/url-parse-1.5.10.tgz", + "integrity": "sha512-WypcfiRhfeUP9vvF0j6rw0J3hrWrw6iZv3+22h6iRMJ/8z1Tj6XfLP4DsUix5MhMPnXpiHDoKyoZ/bdCkwBCiQ==", + "dev": true, + "requires": { + "querystringify": "^2.1.1", + "requires-port": "^1.0.0" + } + }, "urlpattern-polyfill": { "version": "8.0.2", "resolved": "https://registry.npmjs.org/urlpattern-polyfill/-/urlpattern-polyfill-8.0.2.tgz", @@ -39750,8 +47308,18 @@ }, "v8-compile-cache-lib": { "version": "3.0.1", - "optional": true, - "peer": true + "devOptional": true + }, + "v8-to-istanbul": { + "version": "9.1.3", + "resolved": "https://registry.npmjs.org/v8-to-istanbul/-/v8-to-istanbul-9.1.3.tgz", + "integrity": "sha512-9lDD+EVI2fjFsMWXc6dy5JJzBsVTcQ2fVkfBvncZ6xJWG9wtBhOldG+mHkSL0+V1K/xgZz0JDO5UT5hFwHUghg==", + "dev": true, + "requires": { + "@jridgewell/trace-mapping": "^0.3.12", + "@types/istanbul-lib-coverage": "^2.0.1", + "convert-source-map": "^2.0.0" + } }, "validate-npm-package-license": { "version": "3.0.4", @@ -40097,6 +47665,24 @@ "semver": "^7.5.4" } }, + "w3c-xmlserializer": { + "version": "4.0.0", + "resolved": "https://registry.npmjs.org/w3c-xmlserializer/-/w3c-xmlserializer-4.0.0.tgz", + "integrity": "sha512-d+BFHzbiCx6zGfz0HyQ6Rg69w9k19nviJspaj4yNscGjrHu94sVP+aRm75yEbCh+r2/yR+7q6hux9LVtbuTGBw==", + "dev": true, + "requires": { + "xml-name-validator": "^4.0.0" + } + }, + "walker": { + "version": "1.0.8", + "resolved": "https://registry.npmjs.org/walker/-/walker-1.0.8.tgz", + "integrity": "sha512-ts/8E8l5b7kY0vlWLewOkDXMmPdLcVV4GmOQLyxuSswIJsweeFZtAsMF7k1Nszz+TYBQrlYRmzOnr398y1JemQ==", + "dev": true, + "requires": { + "makeerror": "1.0.12" + } + }, "watchpack": { "version": "2.4.0", "peer": true, @@ -40196,6 +47782,38 @@ "integrity": "sha512-ZMjC3ho+KXo0BfJb7JgtQ5IBuvnShdlACNkKkdsqBmYw3bPAaJfPeYUo6tLUaT5tG/Gkh7xkpBhKRQ9e7pyg9Q==", "dev": true }, + "whatwg-encoding": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/whatwg-encoding/-/whatwg-encoding-2.0.0.tgz", + "integrity": "sha512-p41ogyeMUrw3jWclHWTQg1k05DSVXPLcVxRTYsXUk+ZooOCZLcoYgPZ/HL/D/N+uQPOtcp1me1WhBEaX02mhWg==", + "dev": true, + "requires": { + "iconv-lite": "0.6.3" + }, + "dependencies": { + "iconv-lite": { + "version": "0.6.3", + "resolved": "https://registry.npmjs.org/iconv-lite/-/iconv-lite-0.6.3.tgz", + "integrity": "sha512-4fCk79wshMdzMp2rH06qWrJE4iolqLhCUH+OiuIgU++RB0+94NlDL81atO7GX55uUKueo0txHNtvEyI6D7WdMw==", + "dev": true, + "requires": { + "safer-buffer": ">= 2.1.2 < 3.0.0" + } + } + } + }, + "whatwg-fetch": { + "version": "3.6.19", + "resolved": "https://registry.npmjs.org/whatwg-fetch/-/whatwg-fetch-3.6.19.tgz", + "integrity": "sha512-d67JP4dHSbm2TrpFj8AbO8DnL1JXL5J9u0Kq2xW6d0TFDbCA3Muhdt8orXC22utleTVj7Prqt82baN6RBvnEgw==", + "dev": true + }, + "whatwg-mimetype": { + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/whatwg-mimetype/-/whatwg-mimetype-3.0.0.tgz", + "integrity": "sha512-nt+N2dzIutVRxARx1nghPKGv1xHikU7HKdfafKkLNLindmPU/ch3U31NOCGGA/dmPcmb1VlofO0vnKAcsm0o/Q==", + "dev": true + }, "whatwg-url": { "version": "5.0.0", "resolved": "https://registry.npmjs.org/whatwg-url/-/whatwg-url-5.0.0.tgz", @@ -40293,6 +47911,16 @@ "wrappy": { "version": "1.0.2" }, + "write-file-atomic": { + "version": "4.0.2", + "resolved": "https://registry.npmjs.org/write-file-atomic/-/write-file-atomic-4.0.2.tgz", + "integrity": "sha512-7KxauUdBmSdWnmpaGFg+ppNjKF8uNLry8LyzjauQDOVONfFLNKrKvQOxZ/VuTIcS/gge/YNahf5RIIQWTSarlg==", + "dev": true, + "requires": { + "imurmurhash": "^0.1.4", + "signal-exit": "^3.0.7" + } + }, "ws": { "version": "8.14.2", "resolved": "https://registry.npmjs.org/ws/-/ws-8.14.2.tgz", @@ -40305,6 +47933,12 @@ "integrity": "sha512-ICP2e+jsHvAj2E2lIHxa5tjXRlKDJo4IdvPvCXbXQGdzSfmSpNVyIKMvoZHjDY9DP0zV17iI85o90vRFXNccRw==", "dev": true }, + "xmlchars": { + "version": "2.2.0", + "resolved": "https://registry.npmjs.org/xmlchars/-/xmlchars-2.2.0.tgz", + "integrity": "sha512-JZnDKK8B0RCDw84FNdDAIpZK+JuJw+s7Lz8nksI7SIuU3UXJJslUthsi+uWBUYOwPFwW7W7PRLRfUKpxjtjFCw==", + "dev": true + }, "xmlhttprequest-ssl": { "version": "2.0.0", "resolved": "https://registry.npmjs.org/xmlhttprequest-ssl/-/xmlhttprequest-ssl-2.0.0.tgz", @@ -40366,8 +48000,7 @@ }, "yn": { "version": "3.1.1", - "optional": true, - "peer": true + "devOptional": true }, "yocto-queue": { "version": "0.1.0", @@ -40409,6 +48042,12 @@ "readable-stream": "^3.6.0" } }, + "zod": { + "version": "3.22.4", + "resolved": "https://registry.npmjs.org/zod/-/zod-3.22.4.tgz", + "integrity": "sha512-iC+8Io04lddc+mVqQ9AZ7OQ2MrUKGN+oIQyq1vemgt46jwCwLfhq7/pwnBnNXXXZb8VTVLKwp9EDkx+ryxIWmg==", + "dev": true + }, "zwitch": { "version": "2.0.4", "resolved": "https://registry.npmjs.org/zwitch/-/zwitch-2.0.4.tgz", diff --git a/package.json b/package.json index 17fa9ac0..b97f5aec 100644 --- a/package.json +++ b/package.json @@ -3,11 +3,13 @@ "private": true, "workspaces": [ "apps/*", - "packages/*" + "packages/*", + "contracts" ], "scripts": { "prepare": "turbo run prepare", "generate": "turbo run generate", + "build": "turbo run build", "dev:d0rich.me": "turbo run d0rich.me#dev", "dev:design.d0rich.me": "turbo run design.d0rich.me#dev", "dev:d0xigen.d0rich.me": "turbo run d0xigen.d0rich.me#dev", @@ -30,6 +32,9 @@ "eslint-plugin-prettier": "^4.2.1", "eslint-plugin-unicorn": "^49.0.0", "eslint-plugin-vitest": "^0.1.4", + "jest": "^29.5.0", + "ts-jest": "^29.0.5", + "ts-node": "^10.9.1", "playwright": "^1.32.1", "prettier": "^2.8.4", "turbo": "latest", diff --git a/turbo.json b/turbo.json index 312c706f..5cc9cdbf 100644 --- a/turbo.json +++ b/turbo.json @@ -12,8 +12,22 @@ "dependsOn": ["^generate"], "outputs": ["dist"] }, + "build": { + "dependsOn": ["prepare"], + "outputs": ["dist"] + }, + "@d0rich/contracts#build": { + "outputs": ["dist"] + }, + "d.d0rich.me#build": { + "dependsOn": ["@d0rich/contracts#build", "@d0rich/esprit-design#build"], + "outputs": ["dist"] + }, "typecheck": {}, "test": {}, + "@d0rich/contracts#test": { + "dependsOn": ["@d0rich/contracts#build"] + }, "dev": { "cache": false, "persistent": true