diff --git a/.config/LICENSE b/.config/LICENSE new file mode 100644 index 0000000000..cb57aef954 --- /dev/null +++ b/.config/LICENSE @@ -0,0 +1,13 @@ +Copyright 2023 Firefish + +Licensed under the Apache License, Version 2.0 (the "License"); +you may not use this file except in compliance with the License. +You may obtain a copy of the License at + + http://www.apache.org/licenses/LICENSE-2.0 + +Unless required by applicable law or agreed to in writing, software +distributed under the License is distributed on an "AS IS" BASIS, +WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. +See the License for the specific language governing permissions and +limitations under the License. diff --git a/.config/ci.yml b/.config/ci.yml index 0f5be623bc..5534e26590 100644 --- a/.config/ci.yml +++ b/.config/ci.yml @@ -1,5 +1,5 @@ #━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━ -# Calckey configuration +# Firefish configuration #━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━ # ┌─────┐ @@ -34,7 +34,7 @@ port: 3000 #───┘ PostgreSQL configuration └──────────────────────────────── db: - host: database + host: postgres port: 5432 # Database name diff --git a/.config/devenv.yml b/.config/devenv.yml index 6c60f338ae..65b819b569 100644 --- a/.config/devenv.yml +++ b/.config/devenv.yml @@ -5,10 +5,10 @@ db: host: 127.0.0.1 port: 5432 - db: calckey + db: firefish - user: calckey - pass: calckey + user: firefish + pass: firefish redis: host: localhost diff --git a/.config/docker_ci.env b/.config/docker_ci.env new file mode 100644 index 0000000000..437b8eb5ed --- /dev/null +++ b/.config/docker_ci.env @@ -0,0 +1,4 @@ +# db settings +POSTGRES_PASSWORD=test +POSTGRES_USER=postgres +POSTGRES_DB=postgres diff --git a/.config/docker_example.env b/.config/docker_example.env index fdd7e31088..25314d7edc 100644 --- a/.config/docker_example.env +++ b/.config/docker_example.env @@ -1,4 +1,4 @@ # db settings -POSTGRES_PASSWORD=example-calckey-pass -POSTGRES_USER=example-calckey-user -POSTGRES_DB=calckey +POSTGRES_PASSWORD=example-firefish-pass +POSTGRES_USER=example-firefish-user +POSTGRES_DB=firefish diff --git a/.config/example.yml b/.config/example.yml index ba74df8a59..49922d65ae 100644 --- a/.config/example.yml +++ b/.config/example.yml @@ -1,5 +1,5 @@ #━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━ -# Calckey configuration +# Firefish configuration #━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━ # After starting your server, please don't change the URL! Doing so will break federation. @@ -14,11 +14,11 @@ url: https://example.com/ #───┘ Port and TLS settings └─────────────────────────────────── # -# Calckey requires a reverse proxy to support HTTPS connections. +# Firefish requires a reverse proxy to support HTTPS connections. # # +----- https://example.com/ ------------+ # +------+ |+-------------+ +----------------+| -# | User | ---> || Proxy (443) | ---> | Calckey (3000) || +# | User | ---> || Proxy (443) | ---> | Firefish (3000) || # +------+ |+-------------+ +----------------+| # +---------------------------------------+ # @@ -26,9 +26,13 @@ url: https://example.com/ # An encrypted connection with HTTPS is highly recommended # because tokens may be transferred in GET requests. -# The port that your Calckey server should listen on. +# The port that your Firefish server should listen on. port: 3000 +# The bind host your Firefish server should listen on. +# If unspecified, the wildcard address will be used. +#bind: 127.0.0.1 + # ┌──────────────────────────┐ #───┘ PostgreSQL configuration └──────────────────────────────── @@ -37,11 +41,11 @@ db: port: 5432 #ssl: false # Database name - db: calckey + db: firefish # Auth - user: example-calckey-user - pass: example-calckey-pass + user: example-firefish-user + pass: example-firefish-pass # Whether disable Caching queries #disableCache: true @@ -121,7 +125,7 @@ redis: # ┌─────────────────────┐ #───┘ Other configuration └───────────────────────────────────── -# Maximum length of a post (default 3000, max 8192) +# Maximum length of a post (default 3000, max 100000) #maxNoteLength: 3000 # Maximum length of an image caption (default 1500, max 8192) @@ -139,11 +143,11 @@ reservedUsernames: [ # Whether disable HSTS #disableHsts: true -# Number of worker processes -#clusterLimit: 1 - -# Worker only mode -#onlyQueueProcessor: 1 +# Number of worker processes by type. +# The sum must not exceed the number of available cores. +#clusterLimits: +# web: 1 +# queue: 1 # Job concurrency per worker # deliverJobConcurrency: 128 @@ -157,6 +161,9 @@ reservedUsernames: [ # deliverJobMaxAttempts: 12 # inboxJobMaxAttempts: 8 +# Local address used for outgoing requests +#outgoingAddress: 127.0.0.1 + # IP address family used for outgoing request (ipv4, ipv6 or dual) #outgoingAddressFamily: ipv4 @@ -200,7 +207,7 @@ reservedUsernames: [ #━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━ # Congrats, you've reached the end of the config file needed for most deployments! -# Enjoy your Calckey server! +# Enjoy your Firefish server! #━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━ diff --git a/.config/helm_values_example.yml b/.config/helm_values_example.yml index b600eb8aa9..5c86acca3e 100644 --- a/.config/helm_values_example.yml +++ b/.config/helm_values_example.yml @@ -8,7 +8,7 @@ resources: cpu: 1 memory: 1Gi -calckey: +firefish: domain: example.tld smtp: from_address: noreply@example.tld diff --git a/.gitignore b/.gitignore index 29377540d8..3c55ec0d78 100644 --- a/.gitignore +++ b/.gitignore @@ -1,6 +1,7 @@ # Visual Studio Code /.vscode !/.vscode/extensions.json +!/.vscode/launch.json # Intelij-IDEA /.idea @@ -24,11 +25,16 @@ coverage !/.config/example.yml !/.config/devenv.yml !/.config/docker_example.env +!/.config/docker_ci.env !/.config/helm_values_example.yml +!/.config/LICENSE -#docker dev config +# docker dev config /dev/docker-compose.yml +# ESLint +.eslintcache + # misskey built db @@ -41,12 +47,15 @@ api-docs.json *.log *.code-workspace .DS_Store -files +files/ ormconfig.json packages/backend/assets/instance.css packages/backend/assets/sounds/None.mp3 +packages/backend/assets/LICENSE -!packages/backend/src/db +!/packages/backend/queue/processors/db +!/packages/backend/src/db +!/packages/backend/src/server/api/endpoints/drive/files packages/megalodon/lib packages/megalodon/.idea diff --git a/.gitlab-ci.yml b/.gitlab-ci.yml new file mode 100644 index 0000000000..caf4a3f670 --- /dev/null +++ b/.gitlab-ci.yml @@ -0,0 +1,94 @@ +# This file is a template, and might need editing before it works on your project. +# You can copy and paste this template into a new `.gitlab-ci.yml` file. +# You should not add this template to an existing `.gitlab-ci.yml` file by using the `include:` keyword. +# +# To contribute improvements to CI/CD templates, please follow the Development guide at: +# https://docs.gitlab.com/ee/development/cicd/templates.html +# This specific template is located at: +# https://gitlab.com/gitlab-org/gitlab/-/blob/master/lib/gitlab/ci/templates/Nodejs.gitlab-ci.yml + +# Official framework image. Look for the different tagged releases at: +# https://hub.docker.com/r/library/node/tags/ + +stages: + - build + - deploy + +testCommit: + stage: build + image: node:latest + # Pick zero or more services to be used on all builds. + # Only needed when using a docker container to run your tests in. + # Check out: https://docs.gitlab.com/ee/ci/services/index.html + services: + - postgres:15 + - redis + variables: + POSTGRES_PASSWORD: test + # POSTGRES_DB: $POSTGRES_DB + # POSTGRES_USER: $POSTGRES_USER + # POSTGRES_PASSWORD: $POSTGRES_PASSWORD + # POSTGRES_HOST_AUTH_METHOD: trust + script: + - apt-get update && apt-get install -y git wget curl build-essential python3 musl + - curl https://sh.rustup.rs -sSf | sh -s -- -y + - source "$HOME/.cargo/env" + - ln -s /lib/x86_64-linux-musl/libc.so /lib/libc.musl-x86_64.so.1 + - cp .config/ci.yml .config/default.yml + - corepack enable + - corepack prepare pnpm@latest --activate + - pnpm i --frozen-lockfile + - pnpm run build:debug + - pnpm run migrate + cache: + key: build + policy: pull-push + when: on_success + paths: + - node_modules/ + - packages/*/node_modules/ + - packages/backend/native-utils/node_modules/ + only: + - main + - beta + - develop + - /^feature\/.*$/ + +getImageTag: + stage: deploy + image: busybox + script: + - | + if test -n "$CI_COMMIT_TAG"; then + tag="$CI_COMMIT_TAG" + elif test "$CI_COMMIT_BRANCH" == "main"; then + tag="latest" + else + tag="$CI_COMMIT_BRANCH" + fi + - echo "REGISTRY_PUSH_TAG=$tag" | tee build.env + # parse tag to the build and merge jobs. + # See: https://docs.gitlab.com/ee/ci/variables/#pass-an-environment-variable-to-another-job + artifacts: + reports: + dotenv: build.env + only: + - main + - beta + - tags + +dockerBuild: + stage: deploy + needs: ["getImageTag"] + image: + name: gcr.io/kaniko-project/executor:debug + entrypoint: [""] + script: + - /kaniko/executor + --context "${CI_PROJECT_DIR}" + --dockerfile "${CI_PROJECT_DIR}/Dockerfile" + --destination "${CI_REGISTRY_IMAGE}:${REGISTRY_PUSH_TAG}" + only: + - main + - beta + - tags diff --git a/.gitlab/issue_templates/bug.md b/.gitlab/issue_templates/bug.md new file mode 100644 index 0000000000..3bf5ee07ca --- /dev/null +++ b/.gitlab/issue_templates/bug.md @@ -0,0 +1,29 @@ + + +**What happened?** _(Please give us a brief description of what happened.)_ + +**What did you expect to happen?** _(Please give us a brief description of what you expected to happen.)_ + +**Version** _(What version of firefish is your instance running? You can find this by clicking your instance's logo at the bottom left and then clicking instance information.)_ + +**Instance** _(What instance of firefish are you using?)_ + +**What type of issue is this?** _(If this happens on your device and has to do with the user interface, it's client-side. If this happens on either with the API or the backend, or you got a server-side error in the client, it's server-side.)_ + +**What browser are you using? (Client-side issues only)** + +**What operating system are you using? (Client-side issues only)** + +**How do you deploy Firefish on your server? (Server-side issues only)** + +**What operating system are you using? (Server-side issues only)** + +**Relevant log output** _(Please copy and paste any relevant log output. You can find your log by inspecting the page, and going to the "console" tab. This will be automatically formatted into code, so no need for backticks.)_ + +**Contribution Guidelines** +By submitting this issue, you agree to follow our [Contribution Guidelines](https://git.joinfirefish.org/firefish/firefish/-/blob/develop/CONTRIBUTING.md) +- [ ] I agree to follow this project's Contribution Guidelines +- [ ] I have searched the issue tracker for similar issues, and this is not a duplicate. diff --git a/.gitlab/issue_templates/feature.md b/.gitlab/issue_templates/feature.md new file mode 100644 index 0000000000..1b714f9d3a --- /dev/null +++ b/.gitlab/issue_templates/feature.md @@ -0,0 +1,17 @@ + + +**What feature would you like implemented?** _(Please give us a brief description of what you'd like.)_ + +**Why should we add this feature?** _(Please give us a brief description of why your feature is important.)_ + +**Version** _(What version of firefish is your instance running? You can find this by clicking your instance's logo at the bottom left and then clicking instance information.)_ + +**Instance** _(What instance of firefish are you using?)_ + +**Contribution Guidelines** +By submitting this issue, you agree to follow our [Contribution Guidelines](https://git.joinfirefish.org/firefish/firefish/-/blob/develop/CONTRIBUTING.md) +- [ ] I agree to follow this project's Contribution Guidelines +- [ ] I have searched the issue tracker for similar requests, and this is not a duplicate. diff --git a/.gitlab/merge_request_templates/default.md b/.gitlab/merge_request_templates/default.md new file mode 100644 index 0000000000..401688dc61 --- /dev/null +++ b/.gitlab/merge_request_templates/default.md @@ -0,0 +1,15 @@ + + +**What does this PR do?** _(Please give us a brief description of what this PR does.)_ + +**Contribution Guidelines** +By submitting this merge request, you agree to follow our [Contribution Guidelines](https://git.joinfirefish.org/firefish/firefish/-/blob/develop/CONTRIBUTING.md) +- [ ] I agree to follow this project's Contribution Guidelines +- [ ] I have made sure to test this pull request +- [ ] I have made sure to run `pnpm run format` before submitting this pull request + +If this merge request makes changes to the Firefish API, please update `docs/api-change.md` +- [ ] I updated the documentation + + + diff --git a/.vscode/extensions.json b/.vscode/extensions.json index 785d6e13ef..ac8124f48a 100644 --- a/.vscode/extensions.json +++ b/.vscode/extensions.json @@ -1,11 +1,18 @@ { "recommendations": [ "editorconfig.editorconfig", - "eg2.vscode-npm-script", - "rome.rome", - "Vue.volar", - "Vue.vscode-typescript-vue-plugin", + "vue.volar", + "vue.vscode-typescript-vue-plugin", "arcanis.vscode-zipfs", - "Orta.vscode-twoslash-queries" + "orta.vscode-twoslash-queries", + "antfu.iconify", + "vivaxy.vscode-conventional-commits", + "ms-azuretools.vscode-docker", + "gitlab.gitlab-workflow", + "mrmlnc.vscode-json5", + "esbenp.prettier-vscode", + "redhat.vscode-yaml", + "yoavbls.pretty-ts-errors", + "biomejs.biome" ] } diff --git a/.vscode/launch.json b/.vscode/launch.json new file mode 100644 index 0000000000..84ce98609a --- /dev/null +++ b/.vscode/launch.json @@ -0,0 +1,20 @@ +{ + // Use IntelliSense to learn about possible attributes. + // Hover to view descriptions of existing attributes. + // For more information, visit: https://go.microsoft.com/fwlink/?linkid=830387 + "version": "0.2.0", + "configurations": [ + { + "type": "node", + "request": "launch", + "name": "Launch PNPM Debug Script", + "skipFiles": [ + "/**" + ], + "runtimeExecutable": "pnpm", + "runtimeArgs": [ + "run", "debug" + ] + } + ] +} diff --git a/.weblate b/.weblate index 18f45edbbd..56430a1bb0 100644 --- a/.weblate +++ b/.weblate @@ -1,3 +1,3 @@ [weblate] url = https://hosted.weblate.org/api/ -translation = calckey/locales +translation = firefish/locales diff --git a/.woodpecker/commit.yml b/.woodpecker/commit.yml deleted file mode 100644 index f57fd9d1e6..0000000000 --- a/.woodpecker/commit.yml +++ /dev/null @@ -1,22 +0,0 @@ -pipeline: - testCommit: - image: node:alpine - commands: - - apk add --no-cache cargo python3 make g++ - - cp .config/ci.yml .config/default.yml - - corepack enable - - corepack prepare pnpm@latest --activate - - pnpm i --frozen-lockfile - - pnpm run build - - pnpm run migrate - -services: - database: - image: postgres:15 - environment: - - POSTGRES_PASSWORD=test - redis: - image: redis - -branches: - include: [ main, beta, develop, feature/* ] diff --git a/.woodpecker/dockerHubRelease.yml b/.woodpecker/dockerHubRelease.yml deleted file mode 100644 index bcb6df4904..0000000000 --- a/.woodpecker/dockerHubRelease.yml +++ /dev/null @@ -1,15 +0,0 @@ -pipeline: - publish-docker-latest: - image: plugins/kaniko - settings: - repo: thatonecalculator/calckey - tags: latest - dockerfile: Dockerfile - username: - # Secret 'docker_username' needs to be set in the CI settings - from_secret: docker_username - password: - # Secret 'docker_password' needs to be set in the CI settings - from_secret: docker_password - -branches: main diff --git a/.woodpecker/dockerHubReleaseCandidate.yml b/.woodpecker/dockerHubReleaseCandidate.yml deleted file mode 100644 index 48bd39525f..0000000000 --- a/.woodpecker/dockerHubReleaseCandidate.yml +++ /dev/null @@ -1,14 +0,0 @@ -pipeline: - publish-docker-latest: - image: plugins/kaniko - settings: - repo: thatonecalculator/calckey - tags: rc - dockerfile: Dockerfile - username: - # Secret 'docker_username' needs to be set in the CI settings - from_secret: docker_username - password: - # Secret 'docker_password' needs to be set in the CI settings - from_secret: docker_password -branches: beta diff --git a/.woodpecker/dockerHubTag.yml b/.woodpecker/dockerHubTag.yml deleted file mode 100644 index 5543ae2340..0000000000 --- a/.woodpecker/dockerHubTag.yml +++ /dev/null @@ -1,18 +0,0 @@ -pipeline: - publish-docker-tag: - image: plugins/kaniko - settings: - repo: thatonecalculator/calckey - # Uses the tag from git for the container tag - tags: ${CI_COMMIT_TAG} - dockerfile: Dockerfile - username: - # Secret 'docker_username' needs to be set in the CI settings - from_secret: docker_username - password: - # Secret 'docker_password' needs to be set in the CI settings - from_secret: docker_password - when: - # Push new version when version tag is created - event: tag - tag: v* diff --git a/.woodpecker/testDocker.yml b/.woodpecker/testDocker.yml deleted file mode 100644 index e3fdf0eb93..0000000000 --- a/.woodpecker/testDocker.yml +++ /dev/null @@ -1,11 +0,0 @@ -pipeline: - docker-build: - image: plugins/kaniko - settings: - repo: thatonecalculator/calckey - tags: test - dockerfile: Dockerfile - no_push: true - -branches: - include: [ main, develop, beta ] diff --git a/CALCKEY.md b/CALCKEY.md deleted file mode 100644 index 5a8bbd8ff7..0000000000 --- a/CALCKEY.md +++ /dev/null @@ -1,169 +0,0 @@ -# All the changes to Calckey from stock Misskey - -> **Warning** -> This list is incomplete. Please check the [Releases](https://codeberg.org/calckey/calckey/releases) and [Changelog](https://codeberg.org/calckey/calckey/src/branch/develop/CHANGELOG.md) for a more complete list of changes. There have been [>4000 commits (laggy link)](https://codeberg.org/calckey/calckey/compare/700a7110f7e34f314b070987aa761c451ec34efc...develop) since we forked Misskey! - -## Planned - -- Stucture - - [DragonflyDB](https://dragonflydb.io/) support as a Redis alternative - - Optionally use [ScyllaDB](https://www.scylladb.com/open-source-nosql-database/) for storing notes - - Rewrite backend in Rust and [Rocket](https://rocket.rs/) - - Use [Magic RegExP](https://regexp.dev/) for RegEx 🦄 -- Function - - User "choices" (recommended users) and featured hashtags like Mastodon and Soapbox - - Join Reason system like Mastodon/Pleroma - - Option to publicize server blocks - - More antenna options - - Groups -- Form - - Lookup/details for post/file/server - - [Rat mode?](https://stop.voring.me/notes/933fx97bmd) - -## Work in progress - -- Link verification -- Better Messaging UI -- Better API Documentation -- Remote follow button -- Improve accesibility -- Timeline filters -- Events -- Fully revamp non-logged-in screen - -## Implemented - -- A lot of general bugfixes -- pnpm instead of yarn - - Fix Dockerfile @hanna - - Upgrade packages with security vunrabilities -- Saner defaults -- Fediverse account migration -- Recommended servers timeline -- OCR image captioning -- Improve mobile UX - - Swipe through pages on mobile - - Redesigned mobile bottom nav bar - - Post button on TL -- Star as default reaction -- Like/star button -- Rosé Pine by default (+ non-themable elements made Rosé Pine) -- Better sidebar/navbar -- Better intro tutorial/onboarding -- Add back groups - - Integrate groups UI into chats UI -- MOTD (customizable by admins!) -- Custom randomized splash icons -- Self hosted, newly designed error images - - Illustrated by [Henki](https://www.youtube.com/c/Henkiwashere)! - - Licensed under the CC-BY-SA 4.0. -- Better timeline top bar -- Improved note style - - Make more of the post clickable like every other SNS - - No more details tag for reply attachments - - Better CW button -- Mark as read from notifications widget -- Less cluttered notification summary -- Better welcome screen (not logged in) -- vue-plyr as video/audio player -- Ability to turn off "Connection lost" message -- Raw server info only for moderators -- New spinner animation -- Spinner instead of "Loading..." -- Always signToActivityPubGet -- Spacing on group items -- Quotes have solid border -- Reply limit bug fixed -- Make showing the update popup optional -- Improve PWA manifest -- Fix incoming chat scrolling globally -- Update notifier -- Allow admins to set logo URL via admin settings -- Allow importing follows from Pixelfed -- Phosphor icons instead of FontAwesome -- Fully deprecate MkEmojiPickerWindow in favor of MkEmojiPickerDialog -- Link hover effect -- Replace all `$ts` with i18n -- AVIF support -- Page drafts -- Patron list -- Animations respect reduced motion -- Undo renote button inside original note -- Custom locales -- Obliteration of Ai-chan -- Switch to [Calckey.js](https://codeberg.org/calckey/calckey.js) -- Woozy mode 🥴 -- Improve blocking servers -- Release notes -- New post style -- Admins set default reaction emoji - - Allows custom emoji -- Fix lint errors -- Use Rome instead of ESLint -- Mastodon API support -- More antenna options -- New dashboard -- Backfill follower counts -- Compile time compression -- Sonic search -- Popular color schemes, including Nord, Gruvbox, and Catppuccin -- Non-nyaify cat mode -- Post imports from other Calckey/Misskey/Mastodon/Pleroma/Akkoma servers -- Improve Classic mode -- Proper Helm/Kubernetes config -- Multiple boost visibilities -- Improve system emails -- Mod mail -- Focus trapping and button labels -- Meilisearch with filters -- Post editing -- Display remaining time on rate-limits -- Proper 2FA input dialog -- Let moderators see moderation nodes -- Non-mangled unicode emojis - - Skin tone selection support - -## Implemented (remote) - -- MissV: [fix Misskey Forkbomb](https://code.vtopia.live/Vtopia/MissV/commit/40b23c070bd4adbb3188c73546c6c625138fb3c1) -- [Make showing ads optional](https://github.com/misskey-dev/misskey/pull/8996) -- [Tapping avatar in mobile opens account modal](https://github.com/misskey-dev/misskey/pull/9056) -- [OAuth bearer token authentication](https://github.com/misskey-dev/misskey/pull/9021) -- [Styled Repair Tools](https://github.com/misskey-dev/misskey/pull/8956) -- [Option to make enter send message](https://github.com/misskey-dev/misskey/pull/8954) -- [Autocomplete in messaging](https://github.com/misskey-dev/misskey/pull/8955) -- [Profile background as banner](https://codeberg.org/Freeplay/Misskey-Tweaks/src/branch/main/snippets/profile-background.styl) -- [Star is generic like/favorite](https://github.com/JakeMBauer/Misskey-Extras/blob/master/patches/star-is-like.patch) - - 👍 also triggers generic like/favorite -- [Add additional background for acrylic popups if backdrop-filter is unsupported](https://github.com/misskey-dev/misskey/pull/8671) -- [Add parameters to MFM rotate](https://github.com/misskey-dev/misskey/pull/8549) -- Many changes from [Foundkey](https://akkoma.dev/FoundKeyGang/Foundkey) - - https://akkoma.dev/FoundKeyGang/FoundKey/commit/0ece67b04c3f0365057624c1068808276ccab981: refactor pages/auth.form.vue to composition API - - https://akkoma.dev/FoundKeyGang/FoundKey/commit/4bc9610d8bf5af736b5e89e4782395705de45d7d: remove unnecessary joins - - https://akkoma.dev/FoundKeyGang/FoundKey/commit/9ee609d70082f7a6dc119a5d83c0e7c5e1208676: enhance privacy of notes - - https://akkoma.dev/FoundKeyGang/FoundKey/commit/0fec6e10477b1c1b95d9469fbaf4e249a3722f12: remove ms dependency - - https://akkoma.dev/FoundKeyGang/FoundKey/commit/46fff77accbe8bf0fd3cc88170d67b997bf2bdc3: client uses new API for child notes depth - - https://akkoma.dev/FoundKeyGang/FoundKey/commit/c35372a20d22cddb75e93a0b407f2b652cd7faf0: pack children without detail - - https://akkoma.dev/FoundKeyGang/FoundKey/commit/aca724e0bfff3e58b4d273f3ee744e3f3aa9c39b: enable to fetch replies recursively - - https://akkoma.dev/FoundKeyGang/FoundKey/commit/2fe64c11502fd8d89c126558cd715e095c83754e: Refactor components/page/page.textarea.vue to composition API - - https://akkoma.dev/FoundKeyGang/FoundKey/commit/6d3181f9835955e5b79bde5484c74bd70e7f9535: Refactor components/page/page.text.vue to composition API - - https://akkoma.dev/FoundKeyGang/FoundKey/commit/b630cd7eacd695bb705e6748c87f38425ec4ed45: refactor: add NoteReactions.packMany - - https://akkoma.dev/FoundKeyGang/FoundKey/commit/3fe351df6d4e21f7748c46adfa6ca165abd030c0: fix: catch errors from packing with detail - - https://akkoma.dev/FoundKeyGang/FoundKey/commit/63591da33e233b2ed0ab331ae6bb3c9eff5020ae: refactor: colours in queue chart - - https://akkoma.dev/FoundKeyGang/FoundKey/commit/0f6d94f1e7e1f58cfbf8d07e5f835f8de626842e: backend: improve mutes and blocks - - https://akkoma.dev/FoundKeyGang/FoundKey/commit/e2bf2715a6462ed377b033956d65260157f042ea: fix spelling error - - https://akkoma.dev/FoundKeyGang/FoundKey/commit/09a7eabda137e77f81ab31f65d69329670693c8d: backend: fix lint "no-throw-literal" - - https://akkoma.dev/FoundKeyGang/FoundKey/commit/4fbe2e065e75ed3e5b4dfdfd4be3baa03cc447c3: client: fix lint "quotes" - - https://akkoma.dev/FoundKeyGang/FoundKey/commit/585e4f5c42cfafb6cdf7eb601ab435d6a4d85a96: fix textarea not updating properly - - https://akkoma.dev/FoundKeyGang/FoundKey/commit/30d8bc9259cb6b72ed76d67b21dbb4cdceca8327: refactor: welcome.setup.vue to composition api - - https://akkoma.dev/FoundKeyGang/FoundKey/commit/751921e24f37ed707fe44a40d88eebb1299efa35: make emoji picker case insensitive - - https://akkoma.dev/FoundKeyGang/FoundKey/commit/298febeb9c9501e3e3df16982c08657d1da474e0: enhance: add re-collapsing to quoted notes - - https://akkoma.dev/FoundKeyGang/FoundKey/commit/b0fdedb264db87575063abed45e52ad71ce4a6af: fix lints in folder.vue - - https://akkoma.dev/FoundKeyGang/FoundKey/commit/6fed87f85d132304eb84b0a59b84dce299a1822f: fix pagination.vue lints - - https://akkoma.dev/FoundKeyGang/FoundKey/commit/384e8c49b738f576ba8843296de6cebf01c1b247: server: allow to like own gallery posts - - https://akkoma.dev/FoundKeyGang/FoundKey/commit/4c5aa9e53887cca5561fcec6ab0754e018f589a5: server: allow to like own pages - - https://akkoma.dev/FoundKeyGang/FoundKey/commit/923c93da1228458dd65be47483c198a1a9191bcf: use await for notes.countBy - - https://akkoma.dev/FoundKeyGang/FoundKey/commit/ca90cedba0a0704b503c2778694230f5a7dfbace: server: reduce dead instance detection to 7 days - - https://akkoma.dev/FoundKeyGang/FoundKey/commit/e9ab42c10afb4e27516c2d2b5e3e06630efe9edd: Alt text in image viewer - - https://akkoma.dev/FoundKeyGang/FoundKey/commit/ed9d4023d41bba7c4ac53a1a3422246feed37de2: add argon2 support - - https://akkoma.dev/FoundKeyGang/FoundKey/commit/c414f24a2c123774246c7eca65edda4d3afaf8b3: feat: per-user renote muting diff --git a/CHANGELOG.md b/CHANGELOG.md index 988156a72d..a2a3252f5f 100644 --- a/CHANGELOG.md +++ b/CHANGELOG.md @@ -1,12 +1,2610 @@ # Changelog -All changes from v13.0.0 onwards, for a full list of differences read CALCKEY.md +## [1.0.4-beta2] - 2023-09-02 + +### Bug Fixes + +- Fix: convert quoted status and reaction accounts in Mastodon API layer + +- Fix: :bug: antenna notes pagination repeat + +- Fix: 🍱 old custom assets + +- Fix: rename copyright to firefish + +- Fix: :bug: revert last part of c0eac56355a0c40ac4d9c0bae82917506e011dc3 to properly paginate antennas/notes query + +- Fix: :bug: make admin users page properly direct user cards to about page + +- Fix: :globe_with_meridians: copying origin: "remote" -> "origin" + +- Fix: :lipstick: don't round corners on status images/server icon + +ref: https://akko.unix.dog/notice/AY45yUgIC29eKVC59k + +- Fix: :lipstick: deleteAndEdit is danger action + +- Fix: :egg: woozy mode behavior + +- Fix: :lipstick: remove border radius on welcome icon + +- Fix: :pencil2: fix newly discovered users header icon + +Typo: rocke-launch -> rocket-launch + +- Fix: :globe_with_meridians: deleteAccountConfirm text is not yours + +- Fix: 🐛 MkTime logic + +- Fix: :bug: don't show server stats in widget if reporting is disabled + +Closes #10527 + +- Fix: :bug: en-US default merge language + +Preoperly addresses the issue from !10527 + +- Fix: :egg: animation + +- Fix: 🥚 animation + +- Fix: :zap: ref patrons + +- Fix: :lock: Show 404 error on files not found + +- Fix: weblate link in CONTRIBUTING.md + +- Fix: :children_crossing: autosize post form textarea + +- Fix: :lipstick: max width for long emojis + +long emojis are funny, but not to the point where they break the UI + +- Fix: :lipstick: padding, text for mod buttons + +- Fix: :pencil2: log typo + +- Fix: auto select the first element in completion + +- Fix: :bug: hide delete 2fa/passkeys buttons if user is not local + +- Fix: :lipstick: increase space between for search page slides + +users leaked over + +- Fix: :bug: rel=me verification with multiple rels besides me + +Closes #10595 + +- Fix iOS video playback (fixes #10517) + +- Fix: 🐛 tapping Okay on reaction will make it update immediately + +- Fix: 🐛 wrong margin for MkDateSeperatedlist on Safari beta + +- Fix: :bug: inconsistent font sizing on mobile + +Closes #10581 + +- Fix: :lipstick: gap between selects + +- Fix: show correct software names (close #30) + +- Fix: local software version being undefined + +- Fix: :children_crossing: cw re below keep cw button + +- Fix: call default user if empty. resolves #10604 + +- Fix: :busts_in_silhouette: use correct tag for ac + +- Fix: :bug: ref loading for patrons/sponsors in about-firefish + +- Fix: :bug: properly display caption + +- Fix: :busts_in_silhouette: naskya is fullstack + +- Fix: :green_heart: Docker env for CI + +- Fix: :green_heart: docker service alias + +- Fix: :lipstick: properly style announcement content, add seperator + +- Fix: generate stream id with timestamp + +- Fix: add original id to the stream + +- Fix: :bug: double-slash in proxy url + +- Fix: :bug: null host meilisearch + +- Fix: :globe_with_meridians: i18n key for "confirm" + +- Fix: :bug: offline html responsive viewport + +- Fix: building re2 in Dockerfile + +- Fix: :children_crossing: make importing emoji packs clearer + +- Fix: updatePerson's Followings.update call not working if no sharedInbox +- Fix: :bug: double comma + +- Fix: :adhesive_bandage: add small and center to MFM tags list + +- Fix: veiry url + +- Fix: exclude localhost + +- Fix: exclude ula and lla + +- Fix: remove brackets + +- Fix: 🚑 thumbnail serving + +- Fix: change character limits to allow for long instance domains + +- Fix: :pencil2: "can not" -> "cannot" + +- Fix: :lock: cannot change note visibility + +- Fix: :bug: cannot quote own note + +- Fix: :bug: fix DNS lookup issue + +https://github.com/szmarczak/cacheable-lookup/pull/62 + +- Fix: :bug: caching wrong DNS entry when federating with an instance that cannot properly handle inbound IPv6 requests + +- Fix: remove native-utils from migration's dependencies + +- Fix: :recycle: Manifest (icons, name, orientation) + +Closes #10694 + +- Fix: :bug: unlock undefined + +- Fix: :bug: more strange unlock calls + +- Fix: :bug: natural PWA orientation + +fixes chrome mobile rotating screen even when device rotation is off + +- Fix: :lipstick: Announcement padding/margins + + +### Features + +- Feat: :technologist: gitlab issue templates + +- Feat: :technologist: pull request template + +- Feat: ✨ draggable navbar items in settings + +Co-authored-by: Syuilo +Co-authored-by: moshibar + +- Feat: :lock: allow admins to reset users' 2FA and passkeys + +ref: https://frfsh.plus.st/notes/9hqswpwiwjaihcgo + +- Feat: backend debug in vscode + +- Feat: add "re:" at the beginning of CW reply comment (close #52) + +- Feat: rounded cat ears (close #48) + +Co-authored-by: syuilo +Co-authored-by: Acid Chicken (硫酸鶏) + +- Add migration to fix corrupted stream ids + +- Feat: Fetch total posts of users on create/update + +- Feat: post translation in Traditional Chinese + + +### Miscellaneous Tasks + +- Chore: change image url + +- Chore: fix repository url + +- Chore: Translated using Weblate (Indonesian) + +Currently translated at 89.1% (1636 of 1836 strings) + +Translation: Firefish/locales +Translate-URL: https://hosted.weblate.org/projects/firefish/locales/id/ + +- Chore: Translated using Weblate (Catalan) + +Currently translated at 100.0% (1836 of 1836 strings) + +Translation: Firefish/locales +Translate-URL: https://hosted.weblate.org/projects/firefish/locales/ca/ + +- Chore: Translated using Weblate (German) + +Currently translated at 97.6% (1793 of 1836 strings) + +Translation: Firefish/locales +Translate-URL: https://hosted.weblate.org/projects/firefish/locales/de/ + +- Chore: Translated using Weblate (German) + +Currently translated at 97.6% (1793 of 1836 strings) + +Translation: Firefish/locales +Translate-URL: https://hosted.weblate.org/projects/firefish/locales/de/ + +- Chore: Translated using Weblate (German) + +Currently translated at 97.6% (1793 of 1836 strings) + +Translation: Firefish/locales +Translate-URL: https://hosted.weblate.org/projects/firefish/locales/de/ + +- Chore: Translated using Weblate (German) + +Currently translated at 97.6% (1793 of 1836 strings) + +Translation: Firefish/locales +Translate-URL: https://hosted.weblate.org/projects/firefish/locales/de/ + +- Chore: Translated using Weblate (German) + +Currently translated at 97.6% (1793 of 1836 strings) + +Translation: Firefish/locales +Translate-URL: https://hosted.weblate.org/projects/firefish/locales/de/ + +- Chore: Translated using Weblate (Indonesian) + +Currently translated at 97.3% (1787 of 1836 strings) + +Translation: Firefish/locales +Translate-URL: https://hosted.weblate.org/projects/firefish/locales/id/ + +- Chore: Translated using Weblate (Indonesian) + +Currently translated at 97.3% (1787 of 1836 strings) + +Translation: Firefish/locales +Translate-URL: https://hosted.weblate.org/projects/firefish/locales/id/ + +- Chore: Translated using Weblate (Indonesian) + +Currently translated at 97.3% (1788 of 1836 strings) + +Translation: Firefish/locales +Translate-URL: https://hosted.weblate.org/projects/firefish/locales/id/ + +- Chore: :art: format + +- Chore: Translated using Weblate (German) + +Currently translated at 98.6% (1811 of 1836 strings) + +Translation: Firefish/locales +Translate-URL: https://hosted.weblate.org/projects/firefish/locales/de/ + +- Chore: Translated using Weblate (German) + +Currently translated at 98.6% (1811 of 1836 strings) + +Translation: Firefish/locales +Translate-URL: https://hosted.weblate.org/projects/firefish/locales/de/ + +- Chore: Translated using Weblate (German) + +Currently translated at 98.6% (1811 of 1836 strings) + +Translation: Firefish/locales +Translate-URL: https://hosted.weblate.org/projects/firefish/locales/de/ + +- Chore: Translated using Weblate (German) + +Currently translated at 98.6% (1811 of 1836 strings) + +Translation: Firefish/locales +Translate-URL: https://hosted.weblate.org/projects/firefish/locales/de/ + +- Chore: Translated using Weblate (Indonesian) + +Currently translated at 100.0% (1836 of 1836 strings) + +Translation: Firefish/locales +Translate-URL: https://hosted.weblate.org/projects/firefish/locales/id/ + +- Chore: Translated using Weblate (Catalan) + +Currently translated at 100.0% (1836 of 1836 strings) + +Translation: Firefish/locales +Translate-URL: https://hosted.weblate.org/projects/firefish/locales/ca/ + +- Chore: Translated using Weblate (German) + +Currently translated at 98.8% (1814 of 1836 strings) + +Translation: Firefish/locales +Translate-URL: https://hosted.weblate.org/projects/firefish/locales/de/ + +- Chore: Translated using Weblate (German) + +Currently translated at 98.8% (1814 of 1836 strings) + +Translation: Firefish/locales +Translate-URL: https://hosted.weblate.org/projects/firefish/locales/de/ + +- Chore: Translated using Weblate (Indonesian) + +Currently translated at 100.0% (1836 of 1836 strings) + +Translation: Firefish/locales +Translate-URL: https://hosted.weblate.org/projects/firefish/locales/id/ + +- Chore: Translated using Weblate (Turkish) + +Currently translated at 100.0% (1836 of 1836 strings) + +Translation: Firefish/locales +Translate-URL: https://hosted.weblate.org/projects/firefish/locales/tr/ + +- Chore: Translated using Weblate (Chinese (Traditional)) + +Currently translated at 98.2% (1804 of 1836 strings) + +Translation: Firefish/locales +Translate-URL: https://hosted.weblate.org/projects/firefish/locales/zh_Hant/ + +- Chore: Translated using Weblate (German) + +Currently translated at 98.8% (1814 of 1836 strings) + +Translation: Firefish/locales +Translate-URL: https://hosted.weblate.org/projects/firefish/locales/de/ + +- Chore: Merge branch 'origin/develop' into Weblate. + +- Chore: Translated using Weblate (German) + +Currently translated at 99.8% (1833 of 1836 strings) + +Translation: Firefish/locales +Translate-URL: https://hosted.weblate.org/projects/firefish/locales/de/ + +- Chore: Translated using Weblate (German) + +Currently translated at 99.8% (1833 of 1836 strings) + +Translation: Firefish/locales +Translate-URL: https://hosted.weblate.org/projects/firefish/locales/de/ + +- Chore: Translated using Weblate (German) + +Currently translated at 100.0% (1836 of 1836 strings) + +Translation: Firefish/locales +Translate-URL: https://hosted.weblate.org/projects/firefish/locales/de/ + +- Chore: Translated using Weblate (German) + +Currently translated at 100.0% (1836 of 1836 strings) + +Translation: Firefish/locales +Translate-URL: https://hosted.weblate.org/projects/firefish/locales/de/ + +- Chore: Translated using Weblate (German) + +Currently translated at 100.0% (1836 of 1836 strings) + +Translation: Firefish/locales +Translate-URL: https://hosted.weblate.org/projects/firefish/locales/de/ + +- Chore: :busts_in_silhouette: patrons + +- Chore: :busts_in_silhouette: patrons + +- Chore: :art: format + +- Chore: Translated using Weblate (German) + +Currently translated at 100.0% (1836 of 1836 strings) + +Translation: Firefish/locales +Translate-URL: https://hosted.weblate.org/projects/firefish/locales/de/ + +- Chore: Translated using Weblate (German) + +Currently translated at 100.0% (1836 of 1836 strings) + +Translation: Firefish/locales +Translate-URL: https://hosted.weblate.org/projects/firefish/locales/de/ + +- Chore: Merge branch 'origin/develop' into Weblate. + +- Chore: Translated using Weblate (German) + +Currently translated at 99.8% (1835 of 1837 strings) + +Translation: Firefish/locales +Translate-URL: https://hosted.weblate.org/projects/firefish/locales/de/ + +- Chore: Translated using Weblate (German) + +Currently translated at 99.8% (1835 of 1837 strings) + +Translation: Firefish/locales +Translate-URL: https://hosted.weblate.org/projects/firefish/locales/de/ + +- Chore: Translated using Weblate (German) + +Currently translated at 99.8% (1835 of 1837 strings) + +Translation: Firefish/locales +Translate-URL: https://hosted.weblate.org/projects/firefish/locales/de/ + +- Chore: Translated using Weblate (Catalan) + +Currently translated at 100.0% (1837 of 1837 strings) + +Translation: Firefish/locales +Translate-URL: https://hosted.weblate.org/projects/firefish/locales/ca/ + +- Chore: Translated using Weblate (German) + +Currently translated at 99.9% (1836 of 1837 strings) + +Translation: Firefish/locales +Translate-URL: https://hosted.weblate.org/projects/firefish/locales/de/ + +- Chore: Translated using Weblate (Ukrainian) + +Currently translated at 100.0% (1837 of 1837 strings) + +Translation: Firefish/locales +Translate-URL: https://hosted.weblate.org/projects/firefish/locales/uk/ + +- Chore: Translated using Weblate (Chinese (Simplified)) + +Currently translated at 100.0% (1837 of 1837 strings) + +Translation: Firefish/locales +Translate-URL: https://hosted.weblate.org/projects/firefish/locales/zh_Hans/ + +- Chore: Translated using Weblate (Chinese (Simplified)) + +Currently translated at 100.0% (1837 of 1837 strings) + +Translation: Firefish/locales +Translate-URL: https://hosted.weblate.org/projects/firefish/locales/zh_Hans/ + +- Chore: Merge branch 'origin/develop' into Weblate. + +- Chore: Translated using Weblate (Indonesian) + +Currently translated at 100.0% (1837 of 1837 strings) + +Translation: Firefish/locales +Translate-URL: https://hosted.weblate.org/projects/firefish/locales/id/ + +- Chore: Translated using Weblate (Chinese (Simplified)) + +Currently translated at 100.0% (1837 of 1837 strings) + +Translation: Firefish/locales +Translate-URL: https://hosted.weblate.org/projects/firefish/locales/zh_Hans/ + +- Chore: Merge branch 'origin/develop' into Weblate. + +- Chore: :art: format + +- Chore: :arrow_up: up deps + +- Chore: Translated using Weblate (French) + +Currently translated at 90.9% (1671 of 1837 strings) + +Translation: Firefish/locales +Translate-URL: https://hosted.weblate.org/projects/firefish/locales/fr/ + +- Chore: Translated using Weblate (French) + +Currently translated at 90.9% (1671 of 1837 strings) + +Translation: Firefish/locales +Translate-URL: https://hosted.weblate.org/projects/firefish/locales/fr/ + +- Chore: Translated using Weblate (Indonesian) + +Currently translated at 100.0% (1837 of 1837 strings) + +Translation: Firefish/locales +Translate-URL: https://hosted.weblate.org/projects/firefish/locales/id/ + +- Chore: Translated using Weblate (Norwegian Bokmål) + +Currently translated at 5.9% (110 of 1837 strings) + +Translation: Firefish/locales +Translate-URL: https://hosted.weblate.org/projects/firefish/locales/nb_NO/ + +- Chore: Translated using Weblate (Norwegian Bokmål) + +Currently translated at 5.9% (110 of 1837 strings) + +Translation: Firefish/locales +Translate-URL: https://hosted.weblate.org/projects/firefish/locales/nb_NO/ + +- Chore: Translated using Weblate (French) + +Currently translated at 90.9% (1671 of 1837 strings) + +Translation: Firefish/locales +Translate-URL: https://hosted.weblate.org/projects/firefish/locales/fr/ + +- Chore: Merge branch 'origin/develop' into Weblate. + +- Chore: Translated using Weblate (French) + +Currently translated at 91.4% (1681 of 1839 strings) + +Translation: Firefish/locales +Translate-URL: https://hosted.weblate.org/projects/firefish/locales/fr/ + +- Chore: Translated using Weblate (French) + +Currently translated at 91.4% (1681 of 1839 strings) + +Translation: Firefish/locales +Translate-URL: https://hosted.weblate.org/projects/firefish/locales/fr/ + +- Chore: Translated using Weblate (Catalan) + +Currently translated at 100.0% (1839 of 1839 strings) + +Translation: Firefish/locales +Translate-URL: https://hosted.weblate.org/projects/firefish/locales/ca/ + +- Chore: Translated using Weblate (French) + +Currently translated at 94.3% (1736 of 1839 strings) + +Translation: Firefish/locales +Translate-URL: https://hosted.weblate.org/projects/firefish/locales/fr/ + +- Chore: Translated using Weblate (French) + +Currently translated at 94.3% (1736 of 1839 strings) + +Translation: Firefish/locales +Translate-URL: https://hosted.weblate.org/projects/firefish/locales/fr/ + +- Chore: Translated using Weblate (French) + +Currently translated at 97.0% (1784 of 1839 strings) + +Translation: Firefish/locales +Translate-URL: https://hosted.weblate.org/projects/firefish/locales/fr/ + +- Chore: Translated using Weblate (French) + +Currently translated at 97.0% (1784 of 1839 strings) + +Translation: Firefish/locales +Translate-URL: https://hosted.weblate.org/projects/firefish/locales/fr/ + +- Chore: Translated using Weblate (French) + +Currently translated at 97.0% (1784 of 1839 strings) + +Translation: Firefish/locales +Translate-URL: https://hosted.weblate.org/projects/firefish/locales/fr/ + +- Chore: Translated using Weblate (French) + +Currently translated at 97.1% (1786 of 1839 strings) + +Translation: Firefish/locales +Translate-URL: https://hosted.weblate.org/projects/firefish/locales/fr/ + +- Chore: Translated using Weblate (French) + +Currently translated at 97.1% (1786 of 1839 strings) + +Translation: Firefish/locales +Translate-URL: https://hosted.weblate.org/projects/firefish/locales/fr/ + +- Chore: Translated using Weblate (French) + +Currently translated at 100.0% (1839 of 1839 strings) + +Translation: Firefish/locales +Translate-URL: https://hosted.weblate.org/projects/firefish/locales/fr/ + +- Chore: Translated using Weblate (French) + +Currently translated at 100.0% (1839 of 1839 strings) + +Translation: Firefish/locales +Translate-URL: https://hosted.weblate.org/projects/firefish/locales/fr/ + +- Chore: Translated using Weblate (French) + +Currently translated at 100.0% (1839 of 1839 strings) + +Translation: Firefish/locales +Translate-URL: https://hosted.weblate.org/projects/firefish/locales/fr/ + +- Chore: Translated using Weblate (French) + +Currently translated at 100.0% (1839 of 1839 strings) + +Translation: Firefish/locales +Translate-URL: https://hosted.weblate.org/projects/firefish/locales/fr/ + +- Chore: Translated using Weblate (French) + +Currently translated at 100.0% (1839 of 1839 strings) + +Translation: Firefish/locales +Translate-URL: https://hosted.weblate.org/projects/firefish/locales/fr/ + +- Chore: Translated using Weblate (French) + +Currently translated at 100.0% (1839 of 1839 strings) + +Translation: Firefish/locales +Translate-URL: https://hosted.weblate.org/projects/firefish/locales/fr/ + +- Chore: Translated using Weblate (Japanese) + +Currently translated at 100.0% (1839 of 1839 strings) + +Translation: Firefish/locales +Translate-URL: https://hosted.weblate.org/projects/firefish/locales/ja/ + +- Chore: Translated using Weblate (Swedish) + +Currently translated at 14.7% (272 of 1839 strings) + +Translation: Firefish/locales +Translate-URL: https://hosted.weblate.org/projects/firefish/locales/sv/ + +- Chore: :globe_with_meridians: "ads" -> "community banners" + +People find the term "ads" confusing because they associate it with Google AdSense/other actual advertising platforms. As "ads" on Misskey (and Firefish) act more like community banners than ads, this change should clear up confusion. + +- Chore: Translated using Weblate (Indonesian) + +Currently translated at 100.0% (1839 of 1839 strings) + +Translation: Firefish/locales +Translate-URL: https://hosted.weblate.org/projects/firefish/locales/id/ + +- Chore: Translated using Weblate (Swedish) + +Currently translated at 37.4% (689 of 1839 strings) + +Translation: Firefish/locales +Translate-URL: https://hosted.weblate.org/projects/firefish/locales/sv/ + +- Chore: Merge branch 'origin/develop' into Weblate. + +- Chore: Translated using Weblate (Catalan) + +Currently translated at 100.0% (1844 of 1844 strings) + +Translation: Firefish/locales +Translate-URL: https://hosted.weblate.org/projects/firefish/locales/ca/ + +- Chore: Translated using Weblate (French) + +Currently translated at 99.8% (1842 of 1844 strings) + +Translation: Firefish/locales +Translate-URL: https://hosted.weblate.org/projects/firefish/locales/fr/ + +- Chore: Translated using Weblate (Vietnamese) + +Currently translated at 81.6% (1506 of 1844 strings) + +Translation: Firefish/locales +Translate-URL: https://hosted.weblate.org/projects/firefish/locales/vi/ + +- Chore: Merge branch 'origin/develop' into Weblate. + +- Chore: :art: format + +- Chore: Translated using Weblate (Catalan) + +Currently translated at 100.0% (1844 of 1844 strings) + +Translation: Firefish/locales +Translate-URL: https://hosted.weblate.org/projects/firefish/locales/ca/ + +- Chore: Translated using Weblate (German) + +Currently translated at 99.5% (1836 of 1844 strings) + +Translation: Firefish/locales +Translate-URL: https://hosted.weblate.org/projects/firefish/locales/de/ + +- Chore: Translated using Weblate (Spanish) + +Currently translated at 90.7% (1674 of 1844 strings) + +Translation: Firefish/locales +Translate-URL: https://hosted.weblate.org/projects/firefish/locales/es/ + +- Chore: Translated using Weblate (Spanish) + +Currently translated at 90.7% (1674 of 1844 strings) + +Translation: Firefish/locales +Translate-URL: https://hosted.weblate.org/projects/firefish/locales/es/ + +- Chore: Translated using Weblate (Indonesian) + +Currently translated at 100.0% (1844 of 1844 strings) + +Translation: Firefish/locales +Translate-URL: https://hosted.weblate.org/projects/firefish/locales/id/ + +- Chore: Merge branch 'origin/develop' into Weblate. + +- Chore: :busts_in_silhouette: calckey.social -> firefish.social + +- Chore: Translated using Weblate (German) + +Currently translated at 100.0% (1844 of 1844 strings) + +Translation: Firefish/locales +Translate-URL: https://hosted.weblate.org/projects/firefish/locales/de/ + +- Chore: Translated using Weblate (German) + +Currently translated at 100.0% (1844 of 1844 strings) + +Translation: Firefish/locales +Translate-URL: https://hosted.weblate.org/projects/firefish/locales/de/ + +- Chore: Translated using Weblate (German) + +Currently translated at 100.0% (1844 of 1844 strings) + +Translation: Firefish/locales +Translate-URL: https://hosted.weblate.org/projects/firefish/locales/de/ + +- Chore: Translated using Weblate (French) + +Currently translated at 99.8% (1841 of 1844 strings) + +Translation: Firefish/locales +Translate-URL: https://hosted.weblate.org/projects/firefish/locales/fr/ + +- Chore: Translated using Weblate (Indonesian) + +Currently translated at 100.0% (1844 of 1844 strings) + +Translation: Firefish/locales +Translate-URL: https://hosted.weblate.org/projects/firefish/locales/id/ + +- Chore: Merge branch 'origin/develop' into Weblate. + +- Chore: Translated using Weblate (German) + +Currently translated at 100.0% (1844 of 1844 strings) + +Translation: Firefish/locales +Translate-URL: https://hosted.weblate.org/projects/firefish/locales/de/ + +- Chore: Calckey -> Firefish +- Chore: Translated using Weblate (German) + +Currently translated at 100.0% (1844 of 1844 strings) + +Translation: Firefish/locales +Translate-URL: https://hosted.weblate.org/projects/firefish/locales/de/ + +- Chore: Merge branch 'origin/develop' into Weblate. + +- Chore: update ja-JP.yml +- Chore: :bookmark: v1.0.4-beta + +- Chore: Translated using Weblate (French) + +Currently translated at 99.7% (1839 of 1844 strings) + +Translation: Firefish/locales +Translate-URL: https://hosted.weblate.org/projects/firefish/locales/fr/ + +- Chore: Translated using Weblate (Japanese) + +Currently translated at 100.0% (1844 of 1844 strings) + +Translation: Firefish/locales +Translate-URL: https://hosted.weblate.org/projects/firefish/locales/ja/ + +- Chore: Translated using Weblate (Turkish) + +Currently translated at 99.9% (1843 of 1844 strings) + +Translation: Firefish/locales +Translate-URL: https://hosted.weblate.org/projects/firefish/locales/tr/ + +- Chore: Translated using Weblate (Ukrainian) + +Currently translated at 100.0% (1844 of 1844 strings) + +Translation: Firefish/locales +Translate-URL: https://hosted.weblate.org/projects/firefish/locales/uk/ + +- Chore: Translated using Weblate (Bulgarian (bul_BG)) + +Currently translated at 20.9% (386 of 1844 strings) + +Translation: Firefish/locales +Translate-URL: https://hosted.weblate.org/projects/firefish/locales/bul_BG/ + +- Chore: Merge branch 'origin/develop' into Weblate. + +- Chore: Translated using Weblate (French) + +Currently translated at 99.6% (1839 of 1846 strings) + +Translation: Firefish/locales +Translate-URL: https://hosted.weblate.org/projects/firefish/locales/fr/ + +- Chore: Translated using Weblate (Catalan) + +Currently translated at 100.0% (1846 of 1846 strings) + +Translation: Firefish/locales +Translate-URL: https://hosted.weblate.org/projects/firefish/locales/ca/ + +- Chore: Translated using Weblate (French) + +Currently translated at 99.6% (1839 of 1846 strings) + +Translation: Firefish/locales +Translate-URL: https://hosted.weblate.org/projects/firefish/locales/fr/ + +- Chore: Translated using Weblate (French) + +Currently translated at 99.6% (1839 of 1846 strings) + +Translation: Firefish/locales +Translate-URL: https://hosted.weblate.org/projects/firefish/locales/fr/ + +- Chore: Merge branch 'origin/develop' into Weblate. + +- Chore: Translated using Weblate (Indonesian) + +Currently translated at 100.0% (1846 of 1846 strings) + +Translation: Firefish/locales +Translate-URL: https://hosted.weblate.org/projects/firefish/locales/id/ + +- Chore: Translated using Weblate (Portuguese (Brazil)) + +Currently translated at 12.0% (222 of 1846 strings) + +Translation: Firefish/locales +Translate-URL: https://hosted.weblate.org/projects/firefish/locales/pt_BR/ + +- Chore: Merge branch 'origin/develop' into Weblate. + +- Chore: Translated using Weblate (German) + +Currently translated at 100.0% (1846 of 1846 strings) + +Translation: Firefish/locales +Translate-URL: https://hosted.weblate.org/projects/firefish/locales/de/ + +- Chore: Translated using Weblate (German) + +Currently translated at 100.0% (1846 of 1846 strings) + +Translation: Firefish/locales +Translate-URL: https://hosted.weblate.org/projects/firefish/locales/de/ + +- Chore: Translated using Weblate (French) + +Currently translated at 99.7% (1841 of 1846 strings) + +Translation: Firefish/locales +Translate-URL: https://hosted.weblate.org/projects/firefish/locales/fr/ + +- Chore: Translated using Weblate (Norwegian Bokmål) + +Currently translated at 32.4% (599 of 1846 strings) + +Translation: Firefish/locales +Translate-URL: https://hosted.weblate.org/projects/firefish/locales/nb_NO/ + +- Chore: Translated using Weblate (Ukrainian) + +Currently translated at 100.0% (1846 of 1846 strings) + +Translation: Firefish/locales +Translate-URL: https://hosted.weblate.org/projects/firefish/locales/uk/ + +- Chore: Translated using Weblate (Vietnamese) + +Currently translated at 93.1% (1720 of 1846 strings) + +Translation: Firefish/locales +Translate-URL: https://hosted.weblate.org/projects/firefish/locales/vi/ + +- Chore: Merge branch 'origin/develop' into Weblate. + +- Chore: up pnpm to 8.6.11 + +- Chore: :arrow_up: up deps + +- Chore: :art: format + +- Chore: Translated using Weblate (Norwegian Bokmål) + +Currently translated at 36.1% (668 of 1846 strings) + +Translation: Firefish/locales +Translate-URL: https://hosted.weblate.org/projects/firefish/locales/nb_NO/ + +- Chore: Merge branch 'origin/develop' into Weblate. + +- Chore: remove unused items + +- Chore: :art: format + +- Chore: Translated using Weblate (Spanish) + +Currently translated at 100.0% (1846 of 1846 strings) + +Translation: Firefish/locales +Translate-URL: https://hosted.weblate.org/projects/firefish/locales/es/ + +- Chore: Translated using Weblate (French) + +Currently translated at 100.0% (1846 of 1846 strings) + +Translation: Firefish/locales +Translate-URL: https://hosted.weblate.org/projects/firefish/locales/fr/ + +- Chore: Translated using Weblate (French) + +Currently translated at 100.0% (1846 of 1846 strings) + +Translation: Firefish/locales +Translate-URL: https://hosted.weblate.org/projects/firefish/locales/fr/ + +- Chore: Merge branch 'origin/develop' into Weblate. + +- Chore: Translated using Weblate (Catalan) + +Currently translated at 100.0% (1850 of 1850 strings) + +Translation: Firefish/locales +Translate-URL: https://hosted.weblate.org/projects/firefish/locales/ca/ + +- Chore: Translated using Weblate (French) + +Currently translated at 99.5% (1842 of 1850 strings) + +Translation: Firefish/locales +Translate-URL: https://hosted.weblate.org/projects/firefish/locales/fr/ + +- Chore: Translated using Weblate (Indonesian) + +Currently translated at 100.0% (1850 of 1850 strings) + +Translation: Firefish/locales +Translate-URL: https://hosted.weblate.org/projects/firefish/locales/id/ + +- Chore: Translated using Weblate (Japanese) + +Currently translated at 100.0% (1850 of 1850 strings) + +Translation: Firefish/locales +Translate-URL: https://hosted.weblate.org/projects/firefish/locales/ja/ + +- Chore: Translated using Weblate (Russian) + +Currently translated at 100.0% (1850 of 1850 strings) + +Translation: Firefish/locales +Translate-URL: https://hosted.weblate.org/projects/firefish/locales/ru/ + +- Chore: Translated using Weblate (Bulgarian (bul_BG)) + +Currently translated at 23.4% (433 of 1850 strings) + +Translation: Firefish/locales +Translate-URL: https://hosted.weblate.org/projects/firefish/locales/bul_BG/ + +- Chore: Merge branch 'origin/develop' into Weblate. + +- Chore: codeberg → gitlab + +- Chore: Translated using Weblate (German) + +Currently translated at 100.0% (1850 of 1850 strings) + +Translation: Firefish/locales +Translate-URL: https://hosted.weblate.org/projects/firefish/locales/de/ + +- Chore: Merge branch 'origin/develop' into Weblate. + +- Chore: Translated using Weblate (Japanese) + +Currently translated at 100.0% (1850 of 1850 strings) + +Translation: Firefish/locales +Translate-URL: https://hosted.weblate.org/projects/firefish/locales/ja/ + +- Chore: Translated using Weblate (German) + +Currently translated at 100.0% (1850 of 1850 strings) + +Translation: Firefish/locales +Translate-URL: https://hosted.weblate.org/projects/firefish/locales/de/ + +- Chore: Translated using Weblate (Ukrainian) + +Currently translated at 100.0% (1850 of 1850 strings) + +Translation: Firefish/locales +Translate-URL: https://hosted.weblate.org/projects/firefish/locales/uk/ + +- Chore: Merge branch 'origin/develop' into Weblate. + +- Chore: Translated using Weblate (Japanese) + +Currently translated at 100.0% (1850 of 1850 strings) + +Translation: Firefish/locales +Translate-URL: https://hosted.weblate.org/projects/firefish/locales/ja/ + +- Chore: Translated using Weblate (Japanese (Kansai)) + +Currently translated at 69.1% (1280 of 1850 strings) + +Translation: Firefish/locales +Translate-URL: https://hosted.weblate.org/projects/firefish/locales/ja_KS/ + +- Chore: Merge branch 'origin/develop' into Weblate. + +- Chore: Translated using Weblate (Catalan) + +Currently translated at 100.0% (1850 of 1850 strings) + +Translation: Firefish/locales +Translate-URL: https://hosted.weblate.org/projects/firefish/locales/ca/ + +- Chore: Translated using Weblate (German) + +Currently translated at 100.0% (1850 of 1850 strings) + +Translation: Firefish/locales +Translate-URL: https://hosted.weblate.org/projects/firefish/locales/de/ + +- Chore: Translated using Weblate (German) + +Currently translated at 100.0% (1850 of 1850 strings) + +Translation: Firefish/locales +Translate-URL: https://hosted.weblate.org/projects/firefish/locales/de/ + +- Chore: Translated using Weblate (French) + +Currently translated at 99.6% (1844 of 1850 strings) + +Translation: Firefish/locales +Translate-URL: https://hosted.weblate.org/projects/firefish/locales/fr/ + +- Chore: Translated using Weblate (Indonesian) + +Currently translated at 100.0% (1850 of 1850 strings) + +Translation: Firefish/locales +Translate-URL: https://hosted.weblate.org/projects/firefish/locales/id/ + +- Chore: Translated using Weblate (Japanese) + +Currently translated at 100.0% (1850 of 1850 strings) + +Translation: Firefish/locales +Translate-URL: https://hosted.weblate.org/projects/firefish/locales/ja/ + +- Chore: Translated using Weblate (Japanese (Kansai)) + +Currently translated at 69.9% (1294 of 1850 strings) + +Translation: Firefish/locales +Translate-URL: https://hosted.weblate.org/projects/firefish/locales/ja_KS/ + +- Chore: Translated using Weblate (Norwegian Bokmål) + +Currently translated at 54.0% (1000 of 1850 strings) + +Translation: Firefish/locales +Translate-URL: https://hosted.weblate.org/projects/firefish/locales/nb_NO/ + +- Chore: Translated using Weblate (Bulgarian (bul_BG)) + +Currently translated at 23.5% (435 of 1850 strings) + +Translation: Firefish/locales +Translate-URL: https://hosted.weblate.org/projects/firefish/locales/bul_BG/ + +- Chore: Merge branch 'origin/develop' into Weblate. + +- Chore: Translated using Weblate (Italian) + +Currently translated at 88.4% (1637 of 1850 strings) + +Translation: Firefish/locales +Translate-URL: https://hosted.weblate.org/projects/firefish/locales/it/ + +- Chore: Translated using Weblate (Chinese (Simplified)) + +Currently translated at 100.0% (1850 of 1850 strings) + +Translation: Firefish/locales +Translate-URL: https://hosted.weblate.org/projects/firefish/locales/zh_Hans/ + +- Chore: Merge branch 'origin/develop' into Weblate. + +- Chore: :art: format + +- Chore: Translated using Weblate (Italian) + +Currently translated at 98.5% (1824 of 1850 strings) + +Translation: Firefish/locales +Translate-URL: https://hosted.weblate.org/projects/firefish/locales/it/ + +- Chore: Translated using Weblate (Russian) + +Currently translated at 100.0% (1850 of 1850 strings) + +Translation: Firefish/locales +Translate-URL: https://hosted.weblate.org/projects/firefish/locales/ru/ + +- Chore: Translated using Weblate (Korean) + +Currently translated at 100.0% (1850 of 1850 strings) + +Translation: Firefish/locales +Translate-URL: https://hosted.weblate.org/projects/firefish/locales/ko/ + +- Chore: Merge branch 'origin/develop' into Weblate. + +- Update stop words +- Chore: :art: format + +- Chore: Translated using Weblate (Indonesian) + +Currently translated at 100.0% (1850 of 1850 strings) + +Translation: Firefish/locales +Translate-URL: https://hosted.weblate.org/projects/firefish/locales/id/ + +- Chore: Translated using Weblate (Italian) + +Currently translated at 98.9% (1830 of 1850 strings) + +Translation: Firefish/locales +Translate-URL: https://hosted.weblate.org/projects/firefish/locales/it/ + +- Chore: Merge branch 'origin/develop' into Weblate. + +- Chore: Translated using Weblate (French) + +Currently translated at 99.6% (1843 of 1850 strings) + +Translation: Firefish/locales +Translate-URL: https://hosted.weblate.org/projects/firefish/locales/fr/ + +- Chore: Translated using Weblate (Italian) + +Currently translated at 98.9% (1831 of 1850 strings) + +Translation: Firefish/locales +Translate-URL: https://hosted.weblate.org/projects/firefish/locales/it/ + +- Chore: Translated using Weblate (Korean) + +Currently translated at 100.0% (1850 of 1850 strings) + +Translation: Firefish/locales +Translate-URL: https://hosted.weblate.org/projects/firefish/locales/ko/ + +- Chore: Translated using Weblate (Thai) + +Currently translated at 56.5% (1047 of 1850 strings) + +Translation: Firefish/locales +Translate-URL: https://hosted.weblate.org/projects/firefish/locales/th/ + +- Chore: Merge branch 'origin/develop' into Weblate. + +- Chore: :technologist: More recommended VSCode extensions + +Iconify to preview Phosphor icons, Conventional Commits for commit style + +- Chore: :technologist: More recommended VSCode extensions + +Docker, GitLab Workflow, JSON5, Prettier, YAML, and Pretty TS Errors + +- Chore: Translated using Weblate (Thai) + +Currently translated at 58.6% (1085 of 1850 strings) + +Translation: Firefish/locales +Translate-URL: https://hosted.weblate.org/projects/firefish/locales/th/ + +- Chore: Merge branch 'origin/develop' into Weblate. + +- Chore, refactor: remove unused, fix some type errors (client/src/pages) + +- Chore: :rotating_light: lint + +- Chore: :wrench: linting config + +- Chore: 🚨 lint megalodon + +- Chore: :arrow_up: up deps (properly) + +- Chore: :hammer: build greet js -> sh + +- Chore: :art: script format + +- Chore: Translated using Weblate (Italian) + +Currently translated at 99.5% (1841 of 1850 strings) + +Translation: Firefish/locales +Translate-URL: https://hosted.weblate.org/projects/firefish/locales/it/ + +- Chore: Translated using Weblate (Portuguese (Portugal)) + +Currently translated at 33.4% (619 of 1850 strings) + +Translation: Firefish/locales +Translate-URL: https://hosted.weblate.org/projects/firefish/locales/pt_PT/ + +- Chore: Merge branch 'origin/develop' into Weblate. + +- Chore: Translated using Weblate (Portuguese (Portugal)) + +Currently translated at 33.4% (619 of 1850 strings) + +Translation: Firefish/locales +Translate-URL: https://hosted.weblate.org/projects/firefish/locales/pt_PT/ + +- Chore: Merge branch 'origin/develop' into Weblate. + + +### Performance + +- Perf: :zap: featured posts query limit + +- Perf: :zap: delete transformedOptions key -> assign undefined with key literal + +- Perf: :zap: seperate web and queue workers + + +### Refactor + +- Refactor: :children_crossing: only ask for reload on apply button + +- Refactor: :recycle: show disabled message if disabled + +ref: https://git.joinfirefish.org/firefish/firefish/-/issues/10527#note_230 + +- Refactor: :recycle: use const for non-reassigned vars + +- Refactor: :recycle: MkGoogle uses local search + +- Refactor: :busts_in_silhouette: Add original Misskey contributors + +- Refactor: :recycle: better offline page + +- Refactor: :children_crossing: only index public posts + +- Refactor: :coffin: remove old woodpecker scripts + +- Refactor: :recycle: No Vue Reactivity + +Performed with https://github.com/edison1105/drop-reactivity-transform , Reactivity Transform was an experimental feature and has now been deprecated. + +- Refactor: remove regex + +- Refactor: :recycle: types in AP kernel + +This file seriously needs to be refactored properly... + +- Refactor: :egg: new ansi art + +- Refactor: :egg: ansi art for master.ts + + +### Styling + +- Style: :lipstick: don't show activity if narrow (cleaner) + + +## [1.0.3] - 2023-07-21 + +### Bug Fixes + +- Fix: :bento: fix old favicon + +- Fix: :bento: asset versioning, screenshots + +- Fix: :adhesive_bandage: version manifest assets based on instance version + + +### Miscellaneous Tasks + +- Chore: Translated using Weblate (Russian) + +Currently translated at 99.4% (1826 of 1836 strings) + +Translation: Calckey/locales +Translate-URL: https://hosted.weblate.org/projects/firefish/locales/ru/ + +- Chore: Translated using Weblate (Russian) + +Currently translated at 99.4% (1826 of 1836 strings) + +Translation: Calckey/locales +Translate-URL: https://hosted.weblate.org/projects/firefish/locales/ru/ + +- Chore: Translated using Weblate (Japanese) + +Currently translated at 100.0% (1836 of 1836 strings) + +Translation: Firefish/locales +Translate-URL: https://hosted.weblate.org/projects/firefish/locales/ja/ + +- Chore: Translated using Weblate (Russian) + +Currently translated at 100.0% (1836 of 1836 strings) + +Translation: Firefish/locales +Translate-URL: https://hosted.weblate.org/projects/firefish/locales/ru/ + +- Chore: Translated using Weblate (Russian) + +Currently translated at 100.0% (1836 of 1836 strings) + +Translation: Firefish/locales +Translate-URL: https://hosted.weblate.org/projects/firefish/locales/ru/ + +- Chore: Translated using Weblate (Chinese (Traditional)) + +Currently translated at 97.1% (1783 of 1836 strings) + +Translation: Firefish/locales +Translate-URL: https://hosted.weblate.org/projects/firefish/locales/zh_Hant/ + +- Chore: Translated using Weblate (Korean) + +Currently translated at 88.2% (1621 of 1836 strings) + +Translation: Firefish/locales +Translate-URL: https://hosted.weblate.org/projects/firefish/locales/ko/ + +- Chore: Translated using Weblate (Galician) + +Currently translated at 13.9% (257 of 1836 strings) + +Translation: Firefish/locales +Translate-URL: https://hosted.weblate.org/projects/firefish/locales/gl/ + +- Chore: Translated using Weblate (Polish) + +Currently translated at 93.0% (1708 of 1836 strings) + +Translation: Firefish/locales +Translate-URL: https://hosted.weblate.org/projects/firefish/locales/pl/ + +- Chore: Translated using Weblate (Ukrainian) + +Currently translated at 100.0% (1836 of 1836 strings) + +Translation: Firefish/locales +Translate-URL: https://hosted.weblate.org/projects/firefish/locales/uk/ + +- Chore: Translated using Weblate (Korean) + +Currently translated at 93.3% (1713 of 1836 strings) + +Translation: Firefish/locales +Translate-URL: https://hosted.weblate.org/projects/firefish/locales/ko/ + +- Chore: Translated using Weblate (Czech) + +Currently translated at 46.5% (854 of 1836 strings) + +Translation: Firefish/locales +Translate-URL: https://hosted.weblate.org/projects/firefish/locales/cs/ + +- Chore: Translated using Weblate (Indonesian) + +Currently translated at 86.3% (1586 of 1836 strings) + +Translation: Firefish/locales +Translate-URL: https://hosted.weblate.org/projects/firefish/locales/id/ + +- Chore: Translated using Weblate (Vietnamese) + +Currently translated at 82.0% (1506 of 1836 strings) + +Translation: Firefish/locales +Translate-URL: https://hosted.weblate.org/projects/firefish/locales/vi/ + +- Chore: Translated using Weblate (Korean) + +Currently translated at 100.0% (1836 of 1836 strings) + +Translation: Firefish/locales +Translate-URL: https://hosted.weblate.org/projects/firefish/locales/ko/ + + +### Refactor + +- Refactor: :recycle: create drive file endpoint + +Adjusts ratelimit to 250 files every 10 minutes, fixes error text, fixes reused variable name. + +- Refactor: sticky-container class + +- Refactor: :recycle: new git repo + +for real this time + + +## [1.0.0] - 2023-07-19 + +### Bug Fixes + +- Fix: :pencil2: deduplicate class + +- Fix: :adhesive_bandage: ask for reload upon changing skin tone + +- Fix: :bug: properly apply unicode for skin tone selector + +- Fix: 2fa registration code + +- Fix: new posts button mobile position + webkit-mask + +- Fix: actually fix mobile pos + +oops... + +- Fix: ad widget size + +- Fix: prevent jump when new posts button appears + +- Fix: back from the future + +- Fix: new posts button z-index + use darkened accent + +- Fix: :bug: apply skin tone to default reactions, aria labels for tone picker + +- Fix: 🐛 support for SSL data when loading redis and postgres configs + +Closes #10366 + +- Fix: :adhesive_bandage: use redis user for bull and postgres cache interface + +Follow up #10366, d96877033be9790d11b0212ab8825f93202d22a2 + +- Fix: only show option based on device + add option to backups + +- Fix: :wheelchair: don't animate indicator dot if animation is off + +Closes #10372 + +- Fixes + +- Fix: :bug: security key display name + +Closes #10313 + +- Fix: disable redis tls if undefined in config + +- Fix: :bug: don't convert time since epoch for ratelimit + +https://calckey.social/notes/9gkasnzglmi07rpa + +- Fix: :bug: fix tapping parent on mobile causing side effects + +- Fix: :bug: standard input for 2FA token + +Closes #10361, removes client dependency + +- Fix + +- Fix: :bug: addSkinTone strip logic + +- Fix: soft mutes not being applied to boosts + +- Fix: misaligned new post button + +I don't understand why margin-top caused that ?? + +- Fix: multiple boost publication by relay + +- Fix: ignore if post boosted by relay is local + +- Fix: await release + +- Fix: webkit blur effects + +- Fix: :loud_sound: log emoji picker errors + +- Fix/refactor: move new posts button to MkTimeline + +- Fix: new posts click + +- Fix typo + +- Fix + +- Fix: use redis-semaphore for global mutex and memory leak prevention + +- Fix: :bug: patron timeout + +- Fix: temp fix for null metadata + +- Fix: :bug: display emoji stat properly + +- Fix: :lipstick: form switch padding + +- Fix: :zap: immediately fail jobs with invalid signature + +- Fix: videos not appearing when don't play animated images is one + +- Fix: 🐛query search endpoint for local userselect, disregard host + +- Fix: do not deliver poll reulst if local-only + +- Fix: do not deliver poll result if local-only + +- Fix: add back channel display in timeline + +- Fix: :bug: fallback locales for skin tone labels + +Closes #10406 + +- Fix: use unique key for my page query + +- Fix: use unique key for my galleries + +- Fix: use unique key for my page query + +- Fix: use unique key for my galleries + +- Fix: 🐛 fix quotes with CW-only quotes + +- Fix: use host as prefix of cacheServer if undefined + +- Fix: :children_crossing: switch account when adding existing account + +- Fix: add megalodon to docker image + +- Fix: copy megalodon before node_modules, fix #10424 + +- Fix: banner blur + +- Fix: :bug: prevent creation of empty antennas + +- Fix + +- Fix + +- Fix: :bug: server stats setting, meta fetching + +- Fix: :bug: server stats setting, meta fetching + +- Fix: :lipstick: url preview title size + +- Fix: MkMedia #10429 ? + styling + +- Fix: nav post button gradient transition (#10401) + half refactor ? + +- Fix: error if no banner + +- Fix reactions_not_public condition + +- Fix: renew entity models + +- Fix config parser + +- Fix: add db to redis uri + +- Fix: :ambulance: correct import for swiper 10 + +- Fix: :page_facing_up: don't gitignore .config license + +Follow-up #10470 + +- Fix: :bug: fix draggable + +Use vue-draggable-plus instead of vuedraggable: https://github.com/SortableJS/vue.draggable.next/issues/216 + +Closes #10467 + +- Fix? + +- Fix + +- Fix + +- Fix popup menu + +- Fix: :bug: plus button for reactions + +- Fix: :bug: plus button in reaction settings + +- Fix + +- Fix: :bug: save reactions if added + +- Fix: :lipstick: locales, transition for MkDonation + +- Fix: :lipstick: scope transition style + +- Fix: :bug: properly show instance's link + +- Fix: :bug: give donation link in non-admin meta + +- Fix: :lipstick: properly slide in + +- Fix: :lipstick: ease-out transitions + +- Fix: match custom emoji size to Misskey's + +resolves #10438 + +- Fix: :lipstick: scoped style fix + +- Fix #10483 + +- Fix #10483 (2) + +- Fix + +- Fix: collapsing white space + +- Fix: :lipstick: different default font if cjk + +- Fix: :lipstick: mkdonation bg + +- Fix: Follow Request labeling + +resolves #10368 + +- Fix: error in user card if no user desc + +- Fix: 🐛 allow up to 1024 chars for SMTP login + +Closes #10472 + +- Fix: note detailed tabs using wrong styling + +- Fix: move nowrap to proper place + +- Fix: :lock: prevent potential SSRF through media proxy + +- Fix: :wrench: max post length 100000 + +Pleroma doesn't accept >100K (ref: https://blob.cat/objects/82f33d96-534f-45ee-902a-f77c2723db8b) + +- Fix format +- Fix: Add error message on initialization failed + +- Fix: more reliable not closing emoji picker on shift key + +- Fix: unable to scroll through reactions on mobile + +- Fix: fix typo + +- Fix lock +- Fix: Branch by bind address + +- Fix: Revert k8s template updates + +- Fix: use hostname as prefix instead of host + +- Fix: 🐛 Scrolling Issue in Safari for Top and Bottom Bars + +- Fix: :globe_with_meridians: missing locale + +- Fix: add back follows you tag + +- Fix: import + +- Fix: skip attachment import if undefined + +- Fix: :bug: gitignore causing wrong file to be pushed + +- Fix: :bug: merge somehow stripped style.css of splash style + + +### Documentation + +- Docs: :memo: dragonfly flag + +- Docs: :pencil2: dragonflydb typo + +- Docs: 📝 KeyDB minimum version + +- Docs: 📝 KeyDB, megalodon + +- Docs: 📝 simplify dependencies + +- Docs: fix typo + +- Docs: :memo: join server + +- Docs: :memo: FoundKey migration docs + +Co-authored-by: Jeder +Superscedes #10471 + +- Docs: :memo: FoundKey EOL disclaimer + +- Docs: :memo: descriptions for notes/children+conversation endpoints + +- Docs: :bulb: going past DB_MAX_NOTE_TEXT_LENGTH + +- Docs: :memo: changelog + +- Docs: :memo: changelog + +- Docs: :memo: foundkey patch (thanks volpeon!) + +ref: https://is-a.wyvern.rip/notes/9hac2nd98s + +- Docs: :memo: migration note + +- Docs: 📝 foundkey migration apply patch correctly + +- Docs: :memo: changelog + +- Docs: :truck: new website + +- Docs: :memo: codeberg -> gitlab + + +### Features + +- Feat: Make scrollable widgets flexible + +- Feat: make RSS feed scrollable (#10108) + +- Feat: ALT button (#9265) + +- Feat: toggle-able swiping + +- Feat: horizontally scrolling reactions + +- Feat: :sparkles: introduce local user select dialog + +Used for selecting group members and proxy account. + +Closes #7987, API change: users/search-by-username-and-host now takes `maxDaysSinceLastActive` parameter and doesn't have any active threshold anymore by default. + +- Feat: reveal muted word on press & hold + +Refs: #10363 + +- Feat: link previews redesign + +- Feat: :sparkles: celebrate on calendar when birthday + +- Feat: :sparkles: add emoji count to admin panel + +- Add cache prefix + +- Feat: show alt button even when content hidden + +- Feat: :zap: cache server + +- Feat: :sparkles: Timestamps on announcements + +Closes #10453 + +- Add environment variable to skip copying antenna + +- Add environment variable of read size + +- Feat: :sparkles: don't close emoji picker if shift is held down, like Discord + +https://snug.moe/notes/9h1p04dqytz2qfsz + +- Feat: :sparkles: Donation pop-up with optional admin link + +Co-authored-by: Syuilo + +- Feat: :lipstick: fly in as well + +- Feat: :sparkles: seperate sponsors and patrons + +- Feat: ✨ Add media to Mastodon and Calckey post imports (#10496) + +### What does this PR do? + +Adding files fields in the export notes option, and corresponding import notes + +Current the mastodon import does not import any attachments, this pr will use the "upload from url" feature to include medias if its a valid URL. + +There are many way to convert the outbox.json file, can be simple as upload media_attachments to any web hosting and do string replace on the json file. + +I also create a tool that upload the tar.gz file with auto convert and host the media as simplify the process at https://tempfile.moegirl.live + +Detail example can be found at https://fedi.moegirl.live/notes/9h76gtqnp2gwl5dz + +https://r2temp.moegirl.live/2023/7/15/15356683-050f-423a-b331-c9a05561f52a/shana-settings-_-meng-zhai-le-yuan-xyou-yu-ou-xiang-de-luo-ke-ke-wu-yan-moe-otaku-elysian-x-gloomily-idol-s-rococo-luncheon----mozilla-firefox-private-browsing-2023-07-15-18-36-37.mp4 + +Co-authored-by: CGsama +Reviewed-on: https://codeberg.org/calckey/calckey/pulls/10496 +Co-authored-by: コルセット姫@がんばらない +Co-committed-by: コルセット姫@がんばらない + +- Feat: Move json5 to prod dependencies + +- Feat: Add bind address option + +- Feat: add view on remote server to user profile dropdowns + +- Feat: ✨ verify links with rel=me (#10506) + +Adds Mastodon-style `rel=me` link verification, and creates a background job to verify said links + +Closes #9341 + +![image](/attachments/861e01eb-660f-4c62-8d83-d824cb79da48) + +Co-authored-by: ThatOneCalculator +Co-authored-by: Namekuji +Reviewed-on: https://codeberg.org/calckey/calckey/pulls/10506 + +- Feat: show snippet of alt text when hovering alt button + +- Feat: :sparkles: copy feeds from user menu + +- Add + + +### Miscellaneous Tasks + +- Chore: Translated using Weblate (German) + +Currently translated at 99.5% (1796 of 1805 strings) + +Translation: Calckey/locales +Translate-URL: https://hosted.weblate.org/projects/calckey/locales/de/ + +- Chore: Merge branch 'origin/develop' into Weblate. + +- Chore: Translated using Weblate (Catalan) + +Currently translated at 100.0% (1806 of 1806 strings) + +Translation: Calckey/locales +Translate-URL: https://hosted.weblate.org/projects/calckey/locales/ca/ + +- Chore: Merge branch 'origin/develop' into Weblate. + +- Chore: Translated using Weblate (Catalan) + +Currently translated at 100.0% (1806 of 1806 strings) + +Translation: Calckey/locales +Translate-URL: https://hosted.weblate.org/projects/calckey/locales/ca/ + +- Chore: Merge branch 'origin/develop' into Weblate. + +- Chore: apply to all swipers + +- Chore: format + +- Chore: :art: format + +- Chore: Translated using Weblate (Catalan) + +Currently translated at 100.0% (1807 of 1807 strings) + +Translation: Calckey/locales +Translate-URL: https://hosted.weblate.org/projects/calckey/locales/ca/ + +- Chore: Merge branch 'origin/develop' into Weblate. + +- Chore: Translated using Weblate (Spanish) + +Currently translated at 87.2% (1582 of 1813 strings) + +Translation: Calckey/locales +Translate-URL: https://hosted.weblate.org/projects/calckey/locales/es/ + +- Chore: Merge branch 'origin/develop' into Weblate. + +- Update helm config template + +- Chore: :art: format, add scss to prettier formatting + +- Chore: Translated using Weblate (Catalan) + +Currently translated at 100.0% (1814 of 1814 strings) + +Translation: Calckey/locales +Translate-URL: https://hosted.weblate.org/projects/calckey/locales/ca/ + +- Chore: :art: format + +- Chore: Translated using Weblate (Catalan) + +Currently translated at 100.0% (1815 of 1815 strings) + +Translation: Calckey/locales +Translate-URL: https://hosted.weblate.org/projects/calckey/locales/ca/ + +- Chore: :busts_in_silhouette: patrons + +- Chore: :art: format + +- Chore: 👥 patrons + +- Chore: 👥 patrons + +- Chore: :busts_in_silhouette: patrons + +- Chore: :busts_in_silhouette: patrons + +- Chore: :busts_in_silhouette: patrons + +- Chore: :busts_in_silhouette: patrons + +- Chore: :busts_in_silhouette: patrons + +- Chore: Translated using Weblate (German) + +Currently translated at 98.7% (1793 of 1815 strings) + +Translation: Calckey/locales +Translate-URL: https://hosted.weblate.org/projects/calckey/locales/de/ + +- Chore: Merge branch 'origin/develop' into Weblate. + +- Chore: 🎨 format + +- Chore: :busts_in_silhouette: patrons + +- Chore: :busts_in_silhouette: patrons + +- Chore: :art: format + +- Chore: Translated using Weblate (Catalan) + +Currently translated at 100.0% (1814 of 1814 strings) + +Translation: Calckey/locales +Translate-URL: https://hosted.weblate.org/projects/calckey/locales/ca/ + +- Chore: Translated using Weblate (Chinese (Simplified)) + +Currently translated at 88.2% (1600 of 1814 strings) + +Translation: Calckey/locales +Translate-URL: https://hosted.weblate.org/projects/calckey/locales/zh_Hans/ + +- Chore: Translated using Weblate (Chinese (Simplified)) + +Currently translated at 88.2% (1600 of 1814 strings) + +Translation: Calckey/locales +Translate-URL: https://hosted.weblate.org/projects/calckey/locales/zh_Hans/ + +- Chore: Translated using Weblate (Chinese (Simplified)) + +Currently translated at 91.0% (1651 of 1814 strings) + +Translation: Calckey/locales +Translate-URL: https://hosted.weblate.org/projects/calckey/locales/zh_Hans/ + +- Chore: Translated using Weblate (Chinese (Simplified)) + +Currently translated at 91.0% (1651 of 1814 strings) + +Translation: Calckey/locales +Translate-URL: https://hosted.weblate.org/projects/calckey/locales/zh_Hans/ + +- Chore: Translated using Weblate (Chinese (Simplified)) + +Currently translated at 94.7% (1719 of 1814 strings) + +Translation: Calckey/locales +Translate-URL: https://hosted.weblate.org/projects/calckey/locales/zh_Hans/ + +- Chore: Translated using Weblate (Chinese (Simplified)) + +Currently translated at 94.7% (1719 of 1814 strings) + +Translation: Calckey/locales +Translate-URL: https://hosted.weblate.org/projects/calckey/locales/zh_Hans/ + +- Chore: 👥 patrons + +- Chore: Translated using Weblate (Chinese (Simplified)) + +Currently translated at 96.8% (1757 of 1814 strings) + +Translation: Calckey/locales +Translate-URL: https://hosted.weblate.org/projects/calckey/locales/zh_Hans/ + +- Chore: Translated using Weblate (Chinese (Simplified)) + +Currently translated at 96.8% (1757 of 1814 strings) + +Translation: Calckey/locales +Translate-URL: https://hosted.weblate.org/projects/calckey/locales/zh_Hans/ + +- Chore: Merge branch 'origin/develop' into Weblate. + +- Chore: Merge branch 'origin/develop' into Weblate. + +- Chore: Translated using Weblate (Chinese (Simplified)) + +Currently translated at 97.4% (1769 of 1816 strings) + +Translation: Calckey/locales +Translate-URL: https://hosted.weblate.org/projects/calckey/locales/zh_Hans/ + +- Chore: Merge branch 'origin/develop' into Weblate. + +- Chore: Translated using Weblate (Chinese (Simplified)) + +Currently translated at 100.0% (1816 of 1816 strings) + +Translation: Calckey/locales +Translate-URL: https://hosted.weblate.org/projects/calckey/locales/zh_Hans/ + +- Chore: Translated using Weblate (Chinese (Simplified)) + +Currently translated at 100.0% (1816 of 1816 strings) + +Translation: Calckey/locales +Translate-URL: https://hosted.weblate.org/projects/calckey/locales/zh_Hans/ + +- Chore: :art: format + +- Chore: :busts_in_silhouette: patrons + +- Chore: 👥 patrons + +- Chore: Translated using Weblate (Catalan) + +Currently translated at 100.0% (1816 of 1816 strings) + +Translation: Calckey/locales +Translate-URL: https://hosted.weblate.org/projects/calckey/locales/ca/ + +- Chore: Translated using Weblate (Chinese (Simplified)) + +Currently translated at 100.0% (1816 of 1816 strings) + +Translation: Calckey/locales +Translate-URL: https://hosted.weblate.org/projects/calckey/locales/zh_Hans/ + +- Chore: Merge branch 'origin/develop' into Weblate. + +- Chore: 👥 patrons + +- Chore: Merge branch 'origin/develop' into Weblate. + +- Chore: Translated using Weblate (Chinese (Simplified)) + +Currently translated at 100.0% (1816 of 1816 strings) + +Translation: Calckey/locales +Translate-URL: https://hosted.weblate.org/projects/calckey/locales/zh_Hans/ + +- Chore: :arrow_up: up prettier, pnpm + +- Chore: :busts_in_silhouette: patrons + +- Chore: Translated using Weblate (French) + +Currently translated at 88.7% (1612 of 1816 strings) + +Translation: Calckey/locales +Translate-URL: https://hosted.weblate.org/projects/calckey/locales/fr/ + +- Chore: Translated using Weblate (Chinese (Simplified)) + +Currently translated at 100.0% (1816 of 1816 strings) + +Translation: Calckey/locales +Translate-URL: https://hosted.weblate.org/projects/calckey/locales/zh_Hans/ + +- Chore: Translated using Weblate (Chinese (Traditional)) + +Currently translated at 93.9% (1707 of 1816 strings) + +Translation: Calckey/locales +Translate-URL: https://hosted.weblate.org/projects/calckey/locales/zh_Hant/ + +- Chore: :art: format + +- Chore: Merge branch 'origin/develop' into Weblate. + +- Chore: add megalodon to cleaning scripts + +- Chore: Translated using Weblate (Japanese) + +Currently translated at 100.0% (1816 of 1816 strings) + +Translation: Calckey/locales +Translate-URL: https://hosted.weblate.org/projects/calckey/locales/ja/ + +- Chore: Translated using Weblate (Chinese (Traditional)) + +Currently translated at 94.3% (1714 of 1816 strings) + +Translation: Calckey/locales +Translate-URL: https://hosted.weblate.org/projects/calckey/locales/zh_Hant/ + +- Chore: Use css module + +- Chore: Translated using Weblate (Turkish) + +Currently translated at 3.9% (71 of 1816 strings) + +Translation: Calckey/locales +Translate-URL: https://hosted.weblate.org/projects/calckey/locales/tr/ + +- Chore: Translated using Weblate (Chinese (Traditional)) + +Currently translated at 95.0% (1726 of 1816 strings) + +Translation: Calckey/locales +Translate-URL: https://hosted.weblate.org/projects/calckey/locales/zh_Hant/ + +- Chore: Merge branch 'origin/develop' into Weblate. + +- Chore: :art: format + +- Chore: Translated using Weblate (Catalan) + +Currently translated at 100.0% (1819 of 1819 strings) + +Translation: Calckey/locales +Translate-URL: https://hosted.weblate.org/projects/calckey/locales/ca/ + +- Chore: :art: format + +- Chore: :busts_in_silhouette: patrons + +- Chore: vite conf changes + +- Chore: :page_facing_up: LICENSE for configuration directories + +Closes #10470 + +- Chore: change account + +- Chore: :art: format + +- Chore: forgot to remove a debug print stmt? + +- Chore: Added translation using Weblate (Galician) + +- Chore: Translated using Weblate (Catalan) + +Currently translated at 100.0% (1827 of 1827 strings) + +Translation: Calckey/locales +Translate-URL: https://hosted.weblate.org/projects/calckey/locales/ca/ + +- Chore: Merge branch 'origin/develop' into Weblate. + +- Chore: format + +- Chore: :art: format + +- Chore: :art: format + +- Chore: :art: format + +- Chore: Translated using Weblate (Catalan) + +Currently translated at 100.0% (1830 of 1830 strings) + +Translation: Calckey/locales +Translate-URL: https://hosted.weblate.org/projects/calckey/locales/ca/ + +- Chore: Translated using Weblate (Norwegian Bokmål) + +Currently translated at 4.3% (79 of 1830 strings) + +Translation: Calckey/locales +Translate-URL: https://hosted.weblate.org/projects/calckey/locales/nb_NO/ + +- Chore: Translated using Weblate (Portuguese (Brazil)) + +Currently translated at 5.6% (103 of 1830 strings) + +Translation: Calckey/locales +Translate-URL: https://hosted.weblate.org/projects/calckey/locales/pt_BR/ + +- Chore: Translated using Weblate (Portuguese (Brazil)) + +Currently translated at 5.6% (103 of 1830 strings) + +Translation: Calckey/locales +Translate-URL: https://hosted.weblate.org/projects/calckey/locales/pt_BR/ + +- Chore: Translated using Weblate (Galician) + +Currently translated at 0.8% (15 of 1830 strings) + +Translation: Calckey/locales +Translate-URL: https://hosted.weblate.org/projects/calckey/locales/gl/ + +- Chore: Merge branch 'origin/develop' into Weblate. + +- Chore: :art: format + +- Chore: Translated using Weblate (Catalan) + +Currently translated at 100.0% (1830 of 1830 strings) + +Translation: Calckey/locales +Translate-URL: https://hosted.weblate.org/projects/calckey/locales/ca/ + +- Chore: Translated using Weblate (Japanese) + +Currently translated at 100.0% (1830 of 1830 strings) + +Translation: Calckey/locales +Translate-URL: https://hosted.weblate.org/projects/calckey/locales/ja/ + +- Chore: Translated using Weblate (Turkish) + +Currently translated at 54.4% (996 of 1830 strings) + +Translation: Calckey/locales +Translate-URL: https://hosted.weblate.org/projects/calckey/locales/tr/ + +- Chore: Translated using Weblate (Ukrainian) + +Currently translated at 74.9% (1372 of 1830 strings) + +Translation: Calckey/locales +Translate-URL: https://hosted.weblate.org/projects/calckey/locales/uk/ + +- Chore: Merge branch 'origin/develop' into Weblate. + +- Chore: :busts_in_silhouette: patrons + +- Chore: :busts_in_silhouette: patrons + +- Chore: Translated using Weblate (Turkish) + +Currently translated at 56.5% (1035 of 1830 strings) + +Translation: Calckey/locales +Translate-URL: https://hosted.weblate.org/projects/calckey/locales/tr/ + +- Chore: Merge branch 'origin/develop' into Weblate. + +- Chore: :art: format + +- Chore: Translated using Weblate (Catalan) + +Currently translated at 100.0% (1831 of 1831 strings) + +Translation: Calckey/locales +Translate-URL: https://hosted.weblate.org/projects/calckey/locales/ca/ + +- Chore: Translated using Weblate (Turkish) + +Currently translated at 100.0% (1831 of 1831 strings) + +Translation: Calckey/locales +Translate-URL: https://hosted.weblate.org/projects/calckey/locales/tr/ + +- Chore: Translated using Weblate (Spanish) + +Currently translated at 86.9% (1592 of 1831 strings) + +Translation: Calckey/locales +Translate-URL: https://hosted.weblate.org/projects/calckey/locales/es/ + +- Chore: Translated using Weblate (Turkish) + +Currently translated at 100.0% (1831 of 1831 strings) + +Translation: Calckey/locales +Translate-URL: https://hosted.weblate.org/projects/calckey/locales/tr/ + +- Chore: Translated using Weblate (Ukrainian) + +Currently translated at 100.0% (1831 of 1831 strings) + +Translation: Calckey/locales +Translate-URL: https://hosted.weblate.org/projects/calckey/locales/uk/ + +- Chore: Merge branch 'origin/develop' into Weblate. + +- Chore: :art: format + +- Chore: Translated using Weblate (Ukrainian) + +Currently translated at 100.0% (1831 of 1831 strings) + +Translation: Calckey/locales +Translate-URL: https://hosted.weblate.org/projects/calckey/locales/uk/ + +- Chore: Translated using Weblate (Chinese (Traditional)) + +Currently translated at 95.5% (1750 of 1831 strings) + +Translation: Calckey/locales +Translate-URL: https://hosted.weblate.org/projects/calckey/locales/zh_Hant/ + +- Chore: Merge branch 'origin/develop' into Weblate. + +- Chore: Translated using Weblate (Catalan) + +Currently translated at 100.0% (1832 of 1832 strings) + +Translation: Calckey/locales +Translate-URL: https://hosted.weblate.org/projects/calckey/locales/ca/ + +- Chore: Translated using Weblate (Ukrainian) + +Currently translated at 100.0% (1832 of 1832 strings) + +Translation: Calckey/locales +Translate-URL: https://hosted.weblate.org/projects/calckey/locales/uk/ + +- Chore: :globe_with_meridians: (only outbox.json) no longer needed + +- Chore: Translated using Weblate (Catalan) + +Currently translated at 100.0% (1832 of 1832 strings) + +Translation: Calckey/locales +Translate-URL: https://hosted.weblate.org/projects/calckey/locales/ca/ + +- Chore: Merge branch 'origin/develop' into Weblate. + +- Chore: Added translation using Weblate (Bulgarian (bul_BG)) + +- Chore: Translated using Weblate (Catalan) + +Currently translated at 100.0% (1832 of 1832 strings) + +Translation: Calckey/locales +Translate-URL: https://hosted.weblate.org/projects/calckey/locales/ca/ + +- Chore: Merge branch 'origin/develop' into Weblate. + +- Chore: :art: format + +- Chore: :art: format + +- Chore: make contributors consistent with the website + +- Chore: Translated using Weblate (Catalan) + +Currently translated at 100.0% (1836 of 1836 strings) + +Translation: Calckey/locales +Translate-URL: https://hosted.weblate.org/projects/calckey/locales/ca/ + +- Chore: Translated using Weblate (Russian) + +Currently translated at 92.2% (1694 of 1836 strings) + +Translation: Calckey/locales +Translate-URL: https://hosted.weblate.org/projects/calckey/locales/ru/ + +- Chore: Translated using Weblate (Chinese (Simplified)) + +Currently translated at 100.0% (1836 of 1836 strings) + +Translation: Calckey/locales +Translate-URL: https://hosted.weblate.org/projects/calckey/locales/zh_Hans/ + +- Chore: Translated using Weblate (Indonesian) + +Currently translated at 83.6% (1536 of 1836 strings) + +Translation: Calckey/locales +Translate-URL: https://hosted.weblate.org/projects/calckey/locales/id/ + +- Chore: Translated using Weblate (Russian) + +Currently translated at 99.1% (1820 of 1836 strings) + +Translation: Calckey/locales +Translate-URL: https://hosted.weblate.org/projects/calckey/locales/ru/ + +- Chore: Translated using Weblate (Russian) + +Currently translated at 99.1% (1820 of 1836 strings) + +Translation: Calckey/locales +Translate-URL: https://hosted.weblate.org/projects/calckey/locales/ru/ + +- Chore: Translated using Weblate (Ukrainian) + +Currently translated at 100.0% (1836 of 1836 strings) + +Translation: Calckey/locales +Translate-URL: https://hosted.weblate.org/projects/calckey/locales/uk/ + +- Chore: Translated using Weblate (Chinese (Simplified)) + +Currently translated at 100.0% (1836 of 1836 strings) + +Translation: Calckey/locales +Translate-URL: https://hosted.weblate.org/projects/calckey/locales/zh_Hans/ + +- Chore: Translated using Weblate (Bulgarian (bul_BG)) + +Currently translated at 20.2% (371 of 1836 strings) + +Translation: Calckey/locales +Translate-URL: https://hosted.weblate.org/projects/calckey/locales/bul_BG/ + + +### Performance + +- Perf: use msgpackr to encode and decode + +- Perf: :zap: use fast-blurhash for blurhash decoding, up deps + + +### Refactor + +- Refactor: :lipstick: improve miauth style + +- Refactor: :wrench: allow redis user to be configured + +Follow up #10366, 3df3c97deb284ecbf3363b90a45c6501957d1e98 + +- Refactor: simplify getSignatureUser + +- Refactor: :recycle: force patrons update on about-calckey + +- Refactor: no url instantiation + +- Refactor: use redis-semaphore for mutex across workers + +- Refactor: examine by get instead of exists + +- Refactor: :globe_with_meridians: patrons description + +- Refactor: :triangular_flag_on_post: post editing is no longer experimental + +- Refactor: ⚡ make identicons and server metrics optional + +Co-authored-by: Kainoa Kanter + +- Refactor: ⚡ make identicons and server metrics optional + +Co-authored-by: Kainoa Kanter + +- Refactor: ⚡ make identicons and server metrics optional + +Co-authored-by: Kainoa Kanter + +- Refactor: combine MediaVideo & MediaImage components + +- Refactor: :recycle: read patrons from local file for fallback instead of empty array + +- Refactor: 💫 tweak photoswipe animation speed + +- Refactor: :lock: password input for object storage secret key + +- Refactor: cache relays for a longer time + +- Refactor: ⚡ antenna notes in cache + +Co-authored-by: Kainoa Kanter + +- Refactor: :recycle: MkPostFormAttachees setup syntax + +- Refactor: :recycle: donation link logic, add link to /about, fix typo + +- Refactor: :lipstick: max instance name length 37, gradate specific server dono button + +- Refactor: :recycle: simplify shift key logic + +- Refactor: :wheelchair: add aria labels to buttons + +- Refactor: :recycle: substr -> slice + +- Refactor(backend): Use `exist` to check existence + +* refactor(backend): 存在確認の`findOneBy`を`exist`に置き換え + +* cleanup + +- Refactor: use copy_limit if greater than 0 + +- Refactor: use new card design in user popup + +- Refactor: :lipstick: relay icon + +- Refactor: :lipstick: privacy icon + +- Refactor: :recycle: no autobind + +- Refactor: :zap: use blurhash-as for encoding and decoding + +- Refactor: remove tinycolor from MkFolder + a11y + +- Refactor: :children_crossing: filter out https on recommended instances + +- Refactor: :recycle: correct params for notes/children+conversion + +- Refactor: :wastebasket: deprecate DB_MAX_NOTE_TEXT_LENGTH + +- Refactor: :rotating_light: linting fix + +- Refactor: ⚡ improve performance of contextmenu + + +### Styling + +- Style: New posts button + +- Style: visible button w/out hovering in url preview + +- Style: accent color in plyr + +- Style: add back scrollbar-color for firefox + +- Style: truncate long URL's + +- Style: make background banner blur static + +- Style; proper styling for url preview + +- Style fix + +- Style: link underlines + +- Style: link underlines, attempt two™ + +- Style: use muted repeat icon instead of forbidden for disabled boosts + +- Style: don't truncate URL's + +- Style: underline-offset tweak + +- Style: consistent link underline thickness + +- Style: user card design + ## [14.0.0-rc3] - 2023-06-24 ### Bug Fixes -- Fix: improv ux of deck scroll +- Fix: editing caption accuracy - Fix: editing caption accuracy @@ -20,14 +2618,30 @@ All changes from v13.0.0 onwards, for a full list of differences read CALCKEY.md - Fix: unread message bgcolor +- Fix logic + +- Fixes + +- Fix width + - Fix boost mutes +- Fix typo + - Fix search features +- Fix + - Fix: :bug: properly enter date +- Fix math + +- Fix + - Fix back button display +- Fix + - Fix: "24"th hour doesn't exist, it's 0 - Fix: :adhesive_bandage: YYYYMMDD with dashes @@ -58,6 +2672,12 @@ Co-authored-by: Syuilo - Fix: :bug: display punishments on desktop +- Fix + +- Fix + +- Fix overflow + - Fix user preview menu color - Fix: :lipstick: white foreground on forced black background @@ -80,8 +2700,12 @@ Remedies the problem introduced by 020c4f578827e2391b35cd102ee197cc037c0382 caus - Fix: 🐛 empty fs stat +- Fix + - Fix build and clean scripts +- Fix + - Fix: :bug: only collapsed reply if notification is reply - Fix: 🐛 proper isDuplicateKeyValueError handling @@ -120,10 +2744,16 @@ Discovered here: https://codeberg.org/calckey/calckey/issues/10345#issuecomment- - Fix: :ambulance: disable lightningcss transformer for now +- Fix: typo + - Fix: :arrow_down: downgrade chalk - Fix: :bug: start transaction with multi +- Fix: :pencil2: fix tab characters + +thanks, yaml. ugh. + - Fix: :bug: remove cw in post edit Closes #10353 @@ -181,6 +2811,8 @@ https://codeberg.org/calckey/calckey/pulls/10285#issuecomment-951231 #10352 +- Docs: :memo: v14.0.0-rc3 changelog + ### Features @@ -229,6 +2861,8 @@ Closes #9959 Closes #10358 +- Feat: :bookmark: v14.0.0-rc3 + ### Miscellaneous Tasks @@ -532,6 +3166,8 @@ Could possibly be for future custom emoji sets that support custom skin tones? ( - Refactor: :label: add antenna type to streaming types +- Enhance(frontend): improve ux of deck scroll + ### Styling @@ -806,6 +3442,8 @@ https://calckey.aokaga.work/notes/9f6ksv2oov - Docs: cleanup apache +- Docs: cleanup apache + - Docs: Add configuration for Caddy - Docs: cleanup apache @@ -1998,7 +4636,7 @@ and was handled by completely different API endpoint. - Fix -- Fix: centering block math ([#9946](https://github.com/orhun/git-cliff/issues/9946)) +- Fix: centering block math (#9946) Similar to `inlineCode` and `blockCode`, MFM provides two types of formula syntax, `mathInline` and `mathBlock` (I'm curious why these aren't called `inlineMath`/`blockMath`, but oh well) @@ -2101,7 +4739,7 @@ Translate-URL: https://hosted.weblate.org/projects/calckey/locales/fi/ - Feat: heatmap option for activity widget -- Feat: reserved usernames ([#9917](https://github.com/orhun/git-cliff/issues/9917)) +- Feat: reserved usernames (#9917) This PR adds a feature to prevent users from creating a new account with a reserved username such as root, admin, system, proxy, info, etc... @@ -2183,7 +4821,7 @@ Closes #9849 - Fix a bug -- Fix: disable "Search" keyword ([#9856](https://github.com/orhun/git-cliff/issues/9856)) +- Fix: disable "Search" keyword (#9856) Related: #9816 #9830 I was so careless that I didn't know "Search" was also a keyword. I disabled that and fixed a minor bug. @@ -2199,9 +4837,9 @@ Co-committed-by: naskya - Fix header tabs -- Fix: ドライブアップロードで413が返ってきたときにエラーメッセージを表示 ([#10680](https://github.com/orhun/git-cliff/issues/10680)) +- Fix: ドライブアップロードで413が返ってきたときにエラーメッセージを表示 (#10680) -- Fix: boost muting in the recommended timeline ([#9906](https://github.com/orhun/git-cliff/issues/9906)) +- Fix: boost muting in the recommended timeline (#9906) Closes: #9905 Co-authored-by: naskya @@ -2223,7 +4861,7 @@ has been broken for months, I don't maintain it either. - Feat: :sparkles: software name on hover icon in instance ticker -- Feat: add an option to disable emoji reactions ([#9878](https://github.com/orhun/git-cliff/issues/9878)) +- Feat: add an option to disable emoji reactions (#9878) Closes: #9865 Co-authored-by: naskya @@ -2231,7 +4869,7 @@ Reviewed-on: https://codeberg.org/calckey/calckey/pulls/9878 Co-authored-by: naskya Co-committed-by: naskya -- Feat: make it toggleable whether to disable emojis in notifications ([#9880](https://github.com/orhun/git-cliff/issues/9880)) +- Feat: make it toggleable whether to disable emojis in notifications (#9880) I talked about feature #9865 on my fedi account and received a comment like, "I don't care about emoji reactions in my timelines, but I do care what reactions I get!" @@ -2483,7 +5121,7 @@ endpoints and features. - Fix: :bug: go to last timeline selected -- Fix: toggling the blocking state from the instance-info admin view ([#9809](https://github.com/orhun/git-cliff/issues/9809)) +- Fix: toggling the blocking state from the instance-info admin view (#9809) Because the admin meta information was never loaded on this page, no amount of toggling the block or suspend sliders on the instance-info page (e.g. `https://calckey.example.com/instance-info/instance.tld`) will result in the instance actually being added to the blocklist. You could still do it from the bulk blocklist management page, but that can get unwieldy quickly if you just want to do a quick block of an instance. @@ -2494,7 +5132,7 @@ Co-committed-by: amybones - Fix -- Fix(client): userpage ui ([#9179](https://github.com/orhun/git-cliff/issues/9179)) +- Fix(client): userpage ui (#9179) * fix(unverified): clip pages ui @@ -2552,7 +5190,7 @@ This simply adds a basic admin UI to blocklist some hashtags from displaying in the trending widget. The facility existed already in the backend, but there was no UI to manipulate the list save for executing raw SQL or API calls. -- Feat: per-user boost muting ([#9825](https://github.com/orhun/git-cliff/issues/9825)) +- Feat: per-user boost muting (#9825) Cherry-picked from FoundKey/c414f24a2c ([commit](https://akkoma.dev/FoundKeyGang/FoundKey/commit/c414f24a2c123774246c7eca65edda4d3afaf8b3)) @@ -2581,7 +5219,7 @@ Co-committed-by: naskya - Chore: remove okteto -- Chore: update Japanese locale ([#9802](https://github.com/orhun/git-cliff/issues/9802)) +- Chore: update Japanese locale (#9802) - Chore: :art: format @@ -2603,7 +5241,7 @@ Co-committed-by: naskya - Chore: formatting -- Chore: update mfm-js version ([#9844](https://github.com/orhun/git-cliff/issues/9844)) +- Chore: update mfm-js version (#9844) This resolves #9757. @@ -2649,7 +5287,7 @@ fixes notifications and drive in settings - Fix doc link -- Fix: direct boost ([#9783](https://github.com/orhun/git-cliff/issues/9783)) +- Fix: direct boost (#9783) Sorry to create PR multiple times. I should have included this in #9778. @@ -2660,7 +5298,7 @@ Co-committed-by: naskya - Fix: don't nyaize quoted text -- Fix: don't nyaize quoted text ([#9791](https://github.com/orhun/git-cliff/issues/9791)) +- Fix: don't nyaize quoted text (#9791) - Fix search import @@ -2690,7 +5328,7 @@ Closes #9660 - Feat: :sparkles: button in admin dash to index posts -- Feat: custom KaTeX macro ([#9779](https://github.com/orhun/git-cliff/issues/9779)) +- Feat: custom KaTeX macro (#9779) Closes: #9759 Co-authored-by: naskya @@ -2708,7 +5346,7 @@ Breaks Calckey -> Misskey migration, but fixes Foundkey -> Calckey migration - Add argon -- Feat: add option to boost with Home and Followers-only visibility ([#9788](https://github.com/orhun/git-cliff/issues/9788)) +- Feat: add option to boost with Home and Followers-only visibility (#9788) Closes: #9777 @@ -2783,7 +5421,7 @@ Resolves: #9665 ### Features -- Feat: swap home timeline with social's functionality ([#9597](https://github.com/orhun/git-cliff/issues/9597)) +- Feat: swap home timeline with social's functionality (#9597) The Home timeline functionality is swapped with social's. Meaning that Home timeline now consists of followee's and local posts. Social from now on will contain only followee's posts. See more info in the attached ticket. @@ -2813,7 +5451,7 @@ Co-committed-by: yawhn - Fix deck view margins -- Fix: Parse mastoAPI `limit` argument in more places & Improve converting arguments to boolean ([#9716](https://github.com/orhun/git-cliff/issues/9716)) +- Fix: Parse mastoAPI `limit` argument in more places & Improve converting arguments to boolean (#9716) Reviewed-on: https://codeberg.org/calckey/calckey/pulls/9716 Authored-by: fruye @@ -2857,7 +5495,7 @@ Closes #9661 ### Features -- Feat: Make follower counts for remote users correct ([#9705](https://github.com/orhun/git-cliff/issues/9705)) +- Feat: Make follower counts for remote users correct (#9705) #9293 @@ -2870,7 +5508,7 @@ Co-committed-by: s1idewhist1e - Add 404 as replacements -- Feat: set license information for custom emojis ([#9719](https://github.com/orhun/git-cliff/issues/9719)) +- Feat: set license information for custom emojis (#9719) Closes: #9711 (please check this issue first) @@ -2933,7 +5571,7 @@ Closes #9709 ### Bug Fixes -- Fix: Isolate unicode characters in display names ([#9702](https://github.com/orhun/git-cliff/issues/9702)) +- Fix: Isolate unicode characters in display names (#9702) This fixes a 'Follows you' badge on a profile page and account addresses in threads from being drawn backwards when an account has some special Unicode characters that change the direction of text in their name (i.e. U+202E RIGHT-TO-LEFT OVERRIDE). @@ -2951,7 +5589,7 @@ string named 'true' instead of the value 'true'. Needed for pleromaFE to display a timeline. -- Fix: Run to boolean conversion in mastoAPI public and hashtag timelines ([#9710](https://github.com/orhun/git-cliff/issues/9710)) +- Fix: Run to boolean conversion in mastoAPI public and hashtag timelines (#9710) - Fix footer icons @@ -2970,7 +5608,7 @@ Needed for pleromaFE to display a timeline. - Fix import -- Fix: some Masotdon API compat issues ([#9592](https://github.com/orhun/git-cliff/issues/9592)) +- Fix: some Masotdon API compat issues (#9592) Co-authored-by: GeopJr Co-committed-by: GeopJr @@ -2988,7 +5626,7 @@ Co-committed-by: GeopJr - Fix: correct megalodon import -- Fix navbar hover thingy ([#9616](https://github.com/orhun/git-cliff/issues/9616)) +- Fix navbar hover thingy (#9616) Co-authored-by: Freeplay Reviewed-on: https://codeberg.org/calckey/calckey/pulls/9616 @@ -3109,7 +5747,7 @@ https://codeberg.org/calckey/calckey/issues/9080 ### Features -- Feat: ✨ don't depend on an external service for urn:ietf:wg:oauth:2.0:oob ([#9602](https://github.com/orhun/git-cliff/issues/9602)) +- Feat: ✨ don't depend on an external service for urn:ietf:wg:oauth:2.0:oob (#9602) Co-authored-by: GeopJr Co-committed-by: GeopJr @@ -3180,7 +5818,7 @@ Co-committed-by: GeopJr - Update thingy? -- Chore: update Japanese locale ([#9673](https://github.com/orhun/git-cliff/issues/9673)) +- Chore: update Japanese locale (#9673) Co-authored-by: Namekuji Co-committed-by: Namekuji @@ -3276,7 +5914,7 @@ and work like (old) butter. Co-authored-by: Natty Co-authored-by: cutls -- Feature/help_menu ([#9587](https://github.com/orhun/git-cliff/issues/9587)) +- Feature/help_menu (#9587) Co-authored-by: ThatOneCalculator Reviewed-on: https://codeberg.org/calckey/calckey/pulls/9587 @@ -3495,7 +6133,7 @@ Co-authored-by: Syuilo - Refactor: merge CI configs -- Refactor: :hammer: Use pnpm instead of yarn ([#9461](https://github.com/orhun/git-cliff/issues/9461)) +- Refactor: :hammer: Use pnpm instead of yarn (#9461) Reasons: @@ -3597,7 +6235,7 @@ premature partial from #9415 - Add antenna mark read functionalityu -- Add .js to the end of two type-scripts, fixing a critical error that crashes calckey ([#9347](https://github.com/orhun/git-cliff/issues/9347)) +- Add .js to the end of two type-scripts, fixing a critical error that crashes calckey (#9347) - ✨ automatic changelog generation using git cliffy @@ -3621,7 +6259,7 @@ premature partial from #9415 - Fix typo -- Fix-docker-env-path ([#9241](https://github.com/orhun/git-cliff/issues/9241)) +- Fix-docker-env-path (#9241) - Fix: use correct color for MkMoved @@ -3670,7 +6308,7 @@ premature partial from #9415 - Docs: 📝 fix spacing -- Docker-compose-port-fix ([#9251](https://github.com/orhun/git-cliff/issues/9251)) +- Docker-compose-port-fix (#9251) - Docs: 🥴 @@ -4056,9 +6694,9 @@ It's "available". Thank you luke :P - Feat: ✨ Page drafts -- Feat: Docker update script ([#9159](https://github.com/orhun/git-cliff/issues/9159)) +- Feat: Docker update script (closes #9159) -- Feat: Docker update script ([#9159](https://github.com/orhun/git-cliff/issues/9159)) +- Feat: Docker update script (closes #9159) - Feat: :sparkles: Add delete all lists @@ -4438,7 +7076,7 @@ fix: :fire: Remove meta implementation in routing for now - Feat: :bookmark: 12.118.1-calc release! -- Feat: show header with current user avatar on TL ([#9051](https://github.com/orhun/git-cliff/issues/9051)) +- Feat: show header with current user avatar on TL (#9051) * feat: show header with current user avatar on TL @@ -4554,7 +7192,7 @@ From yarn upgrade-interactive - Update deps -- Chore(sw): only proxies HTML requests ([#9070](https://github.com/orhun/git-cliff/issues/9070)) +- Chore(sw): only proxies HTML requests (#9070) * chore(sw): only proxies HTML requests @@ -4601,7 +7239,7 @@ Co-authored-by: Acid Chicken (硫酸鶏) - Refactor: :package: Use updated fork of vue-plyr -- Enhance(client): mobile twitter url can be used as widget ([#9057](https://github.com/orhun/git-cliff/issues/9057)) +- Enhance(client): mobile twitter url can be used as widget (#9057) - Enhance(client): add html color-schema support @@ -4698,7 +7336,7 @@ Fix #9043 ### Features -- Feature: Client Preferences Registry ([#8511](https://github.com/orhun/git-cliff/issues/8511)) +- Feature: Client Preferences Registry (#8511) * Fix settings page @@ -4837,7 +7475,7 @@ Co-authored-by: Andreas Nedbal Co-authored-by: dependabot[bot] <49699333+dependabot[bot]@users.noreply.github.com> -- Chore(deps): bump undici from 5.5.1 to 5.8.0 in /packages/backend ([#9028](https://github.com/orhun/git-cliff/issues/9028)) +- Chore(deps): bump undici from 5.5.1 to 5.8.0 in /packages/backend (#9028) Bumps [undici](https://github.com/nodejs/undici) from 5.5.1 to 5.8.0. - [Release notes](https://github.com/nodejs/undici/releases) @@ -6108,24 +8746,24 @@ Closes #2076 - Fix(package): update vue-loader to version 15.3.0 - Fix(package): update systeminformation to version 3.42.9 - Fix(package): update style-loader to version 0.22.1 -- Fix(package): update summaly to version 2.1.0 ([#2132](https://github.com/orhun/git-cliff/issues/2132)) +- Fix(package): update summaly to version 2.1.0 (#2132) -- Fix(package): update node-sass to version 4.9.3 ([#2131](https://github.com/orhun/git-cliff/issues/2131)) +- Fix(package): update node-sass to version 4.9.3 (#2131) -- Fix(package): update summaly to version 2.1.1 ([#2135](https://github.com/orhun/git-cliff/issues/2135)) +- Fix(package): update summaly to version 2.1.1 (#2135) - Fix(package): update element-ui to version 2.4.6 - Fix(package): update file-type to version 9.0.0 -- Fix(package): update summaly to version 2.1.2 ([#2149](https://github.com/orhun/git-cliff/issues/2149)) +- Fix(package): update summaly to version 2.1.2 (#2149) -- Fix(package): update request to version 2.88.0 ([#2151](https://github.com/orhun/git-cliff/issues/2151)) +- Fix(package): update request to version 2.88.0 (#2151) -- Fix(package): update @types/node to version 10.5.8 ([#2152](https://github.com/orhun/git-cliff/issues/2152)) +- Fix(package): update @types/node to version 10.5.8 (#2152) - Fix(package): update ts-node to version 7.0.1 @@ -6156,7 +8794,7 @@ Closes #2076 - Fix(package): update sharp to version 0.20.7 Closes #2368 -- Fix login bug([#2384](https://github.com/orhun/git-cliff/issues/2384)) +- Fix login bug(#2384) - Fix(package): update webpack to version 4.17.1 - Fix(package): update summaly to version 2.1.4 @@ -6190,7 +8828,7 @@ Closes #2519 - Fix(package): update @types/uuid to version 3.4.4 - Fix(package): update @types/websocket to version 0.0.40 - Fix(package): update @types/node to version 10.9.4 -- Fix #2315 ([#2339](https://github.com/orhun/git-cliff/issues/2339)) +- Fix #2315 (#2339) * improve MFM to html @@ -6214,270 +8852,270 @@ Closes #2519 - Fix -- Fix(package): update webpack to version 4.17.2 ([#2599](https://github.com/orhun/git-cliff/issues/2599)) +- Fix(package): update webpack to version 4.17.2 (#2599) -- Fix(package): update vue-js-modal to version 1.3.26 ([#2613](https://github.com/orhun/git-cliff/issues/2613)) +- Fix(package): update vue-js-modal to version 1.3.26 (#2613) -- Fix(package): update systeminformation to version 3.45.0 ([#2609](https://github.com/orhun/git-cliff/issues/2609)) +- Fix(package): update systeminformation to version 3.45.0 (#2609) -- Fix(package): update node-sass-json-importer to version 4.0.0 ([#2614](https://github.com/orhun/git-cliff/issues/2614)) +- Fix(package): update node-sass-json-importer to version 4.0.0 (#2614) -- Fix(package): update systeminformation to version 3.45.1 ([#2616](https://github.com/orhun/git-cliff/issues/2616)) +- Fix(package): update systeminformation to version 3.45.1 (#2616) - Fix mk-media darkmode -- Fix(package): update @types/ws to version 6.0.1 ([#2636](https://github.com/orhun/git-cliff/issues/2636)) +- Fix(package): update @types/ws to version 6.0.1 (#2636) -- Fix(package): update @types/minio to version 7.0.0 ([#2626](https://github.com/orhun/git-cliff/issues/2626)) +- Fix(package): update @types/minio to version 7.0.0 (#2626) -- Fix(package): update node-sass-json-importer to version 4.0.1 ([#2645](https://github.com/orhun/git-cliff/issues/2645)) +- Fix(package): update node-sass-json-importer to version 4.0.1 (#2645) - Fix(package): update commander to version 2.18.0 -- Fix(package): update minio to version 7.0.1 ([#2655](https://github.com/orhun/git-cliff/issues/2655)) +- Fix(package): update minio to version 7.0.1 (#2655) -- Fix docs ([#2678](https://github.com/orhun/git-cliff/issues/2678)) +- Fix docs (#2678) - Fix(package): update systeminformation to version 3.45.6 Closes #2617 -- Fix(package): update vue-loader to version 15.4.2 ([#2692](https://github.com/orhun/git-cliff/issues/2692)) +- Fix(package): update vue-loader to version 15.4.2 (#2692) -- Fix(package): update debug to version 4.0.1 ([#2700](https://github.com/orhun/git-cliff/issues/2700)) +- Fix(package): update debug to version 4.0.1 (#2700) Closes #2682 -- Fix(package): update @types/mongodb to version 3.1.7 ([#2701](https://github.com/orhun/git-cliff/issues/2701)) +- Fix(package): update @types/mongodb to version 3.1.7 (#2701) Closes #2681 -- Fix(package): update webpack to version 4.18.0 ([#2680](https://github.com/orhun/git-cliff/issues/2680)) +- Fix(package): update webpack to version 4.18.0 (#2680) -- Fix(package): update webpack to version 4.18.1 ([#2704](https://github.com/orhun/git-cliff/issues/2704)) +- Fix(package): update webpack to version 4.18.1 (#2704) - Fix(package): update webpack to version 4.19.0 - Fix(package): update vue-cropperjs to version 2.2.2 - Fix(package): update @types/node to version 10.10.0 - Fix(package): update @types/node to version 10.10.1 -- Fix(package): update webpack to version 4.19.1 ([#2732](https://github.com/orhun/git-cliff/issues/2732)) +- Fix(package): update webpack to version 4.19.1 (#2732) -- Fix(package): update web-push to version 3.3.3 ([#2733](https://github.com/orhun/git-cliff/issues/2733)) +- Fix(package): update web-push to version 3.3.3 (#2733) -- Fix(package): update @types/webpack to version 4.4.12 ([#2739](https://github.com/orhun/git-cliff/issues/2739)) +- Fix(package): update @types/webpack to version 4.4.12 (#2739) -- Fix(package): update @types/koa-router to version 7.0.32 ([#2740](https://github.com/orhun/git-cliff/issues/2740)) +- Fix(package): update @types/koa-router to version 7.0.32 (#2740) -- Fix(package): update websocket to version 1.0.28 ([#2746](https://github.com/orhun/git-cliff/issues/2746)) +- Fix(package): update websocket to version 1.0.28 (#2746) Closes #2743 -- Fix(package): update @types/bcryptjs to version 2.4.2 ([#2742](https://github.com/orhun/git-cliff/issues/2742)) +- Fix(package): update @types/bcryptjs to version 2.4.2 (#2742) -- Fix(package): update @types/node to version 10.10.2 ([#2750](https://github.com/orhun/git-cliff/issues/2750)) +- Fix(package): update @types/node to version 10.10.2 (#2750) -- Fix(package): update @types/node to version 10.10.3 ([#2753](https://github.com/orhun/git-cliff/issues/2753)) +- Fix(package): update @types/node to version 10.10.3 (#2753) -- Fix(package): update webpack to version 4.20.2 ([#2814](https://github.com/orhun/git-cliff/issues/2814)) +- Fix(package): update webpack to version 4.20.2 (#2814) Closes #2768 -- Fix(package): update gulp-htmlmin to version 5.0.1 ([#2815](https://github.com/orhun/git-cliff/issues/2815)) +- Fix(package): update gulp-htmlmin to version 5.0.1 (#2815) Closes #2669 -- Fix(package): update nan to version 2.11.1 ([#2784](https://github.com/orhun/git-cliff/issues/2784)) +- Fix(package): update nan to version 2.11.1 (#2784) -- Fix(package): update koa-mount to version 4.0.0 ([#2776](https://github.com/orhun/git-cliff/issues/2776)) +- Fix(package): update koa-mount to version 4.0.0 (#2776) -- Fix(package): update diskusage to version 0.2.5 ([#2767](https://github.com/orhun/git-cliff/issues/2767)) +- Fix(package): update diskusage to version 0.2.5 (#2767) -- Fix(package): update qrcode to version 1.3.0 ([#2799](https://github.com/orhun/git-cliff/issues/2799)) +- Fix(package): update qrcode to version 1.3.0 (#2799) -- Fix(package): update @types/qrcode to version 1.3.0 ([#2813](https://github.com/orhun/git-cliff/issues/2813)) +- Fix(package): update @types/qrcode to version 1.3.0 (#2813) -- Fix(package): update jsdom to version 12.1.0 ([#2788](https://github.com/orhun/git-cliff/issues/2788)) +- Fix(package): update jsdom to version 12.1.0 (#2788) -- Fix(package): update webpack-cli to version 3.1.2 ([#2816](https://github.com/orhun/git-cliff/issues/2816)) +- Fix(package): update webpack-cli to version 3.1.2 (#2816) Closes #2757 -- Fix(package): update @types/node to version 10.11.4 ([#2817](https://github.com/orhun/git-cliff/issues/2817)) +- Fix(package): update @types/node to version 10.11.4 (#2817) Closes #2765 -- Fix(package): update @types/webpack to version 4.4.14 ([#2818](https://github.com/orhun/git-cliff/issues/2818)) +- Fix(package): update @types/webpack to version 4.4.14 (#2818) Closes #2778 -- Fix(package): update typescript-eslint-parser to version 19.0.2 ([#2819](https://github.com/orhun/git-cliff/issues/2819)) +- Fix(package): update typescript-eslint-parser to version 19.0.2 (#2819) Closes #2772 - Fix(package): update sharp to version 0.21.0 Closes #2619 -- Fix(package): update vue-svg-inline-loader to version 1.1.4 ([#2821](https://github.com/orhun/git-cliff/issues/2821)) +- Fix(package): update vue-svg-inline-loader to version 1.1.4 (#2821) - Fix #2346 -- Fix(package): update ws to version 6.1.0 ([#2823](https://github.com/orhun/git-cliff/issues/2823)) +- Fix(package): update ws to version 6.1.0 (#2823) -- Fix(package): update reconnecting-websocket to version 4.1.5 ([#2845](https://github.com/orhun/git-cliff/issues/2845)) +- Fix(package): update reconnecting-websocket to version 4.1.5 (#2845) Closes #2785 -- Fix(package): update systeminformation to version 3.45.7 ([#2825](https://github.com/orhun/git-cliff/issues/2825)) +- Fix(package): update systeminformation to version 3.45.7 (#2825) -- Fix(package): update file-loader to version 2.0.0 ([#2827](https://github.com/orhun/git-cliff/issues/2827)) +- Fix(package): update file-loader to version 2.0.0 (#2827) -- Fix(package): update vue-svg-inline-loader to version 1.2.0 ([#2844](https://github.com/orhun/git-cliff/issues/2844)) +- Fix(package): update vue-svg-inline-loader to version 1.2.0 (#2844) -- Fix(package): update @types/debug to version 0.0.31 ([#2822](https://github.com/orhun/git-cliff/issues/2822)) +- Fix(package): update @types/debug to version 0.0.31 (#2822) -- Fix(package): update file-type to version 10.0.0 ([#2846](https://github.com/orhun/git-cliff/issues/2846)) +- Fix(package): update file-type to version 10.0.0 (#2846) -- Fix(package): update jsdom to version 12.2.0 ([#2848](https://github.com/orhun/git-cliff/issues/2848)) +- Fix(package): update jsdom to version 12.2.0 (#2848) -- Fix(package): update @types/mongodb to version 3.1.10 ([#2849](https://github.com/orhun/git-cliff/issues/2849)) +- Fix(package): update @types/mongodb to version 3.1.10 (#2849) Closes #2752 - Fix(package): update style-loader to version 0.23.1 - Fix(package): update typescript-eslint-parser to version 20.0.0 -- Fix(package): update debug to version 4.1.0 ([#2857](https://github.com/orhun/git-cliff/issues/2857)) +- Fix(package): update debug to version 4.1.0 (#2857) -- Fix(package): update commander to version 2.19.0 ([#2862](https://github.com/orhun/git-cliff/issues/2862)) +- Fix(package): update commander to version 2.19.0 (#2862) -- Fix(package): update @types/mongodb to version 3.1.11 ([#2864](https://github.com/orhun/git-cliff/issues/2864)) +- Fix(package): update @types/mongodb to version 3.1.11 (#2864) -- Fix(package): update @types/node to version 10.11.5 ([#2865](https://github.com/orhun/git-cliff/issues/2865)) +- Fix(package): update @types/node to version 10.11.5 (#2865) -- Fix(package): update @types/redis to version 2.8.7 ([#2866](https://github.com/orhun/git-cliff/issues/2866)) +- Fix(package): update @types/redis to version 2.8.7 (#2866) -- Fix(package): update @types/webpack to version 4.4.15 ([#2868](https://github.com/orhun/git-cliff/issues/2868)) +- Fix(package): update @types/webpack to version 4.4.15 (#2868) -- Fix(package): update @types/mongodb to version 3.1.12 ([#2874](https://github.com/orhun/git-cliff/issues/2874)) +- Fix(package): update @types/mongodb to version 3.1.12 (#2874) -- Fix(package): update url-loader to version 1.1.2 ([#2883](https://github.com/orhun/git-cliff/issues/2883)) +- Fix(package): update url-loader to version 1.1.2 (#2883) -- Fix(package): update @types/webpack to version 4.4.16 ([#2880](https://github.com/orhun/git-cliff/issues/2880)) +- Fix(package): update @types/webpack to version 4.4.16 (#2880) -- Fix(package): update @types/koa-logger to version 3.1.1 ([#2877](https://github.com/orhun/git-cliff/issues/2877)) +- Fix(package): update @types/koa-logger to version 3.1.1 (#2877) -- Fix(package): update @types/node to version 10.11.6 ([#2876](https://github.com/orhun/git-cliff/issues/2876)) +- Fix(package): update @types/node to version 10.11.6 (#2876) -- Fix(package): update vue-color to version 2.7.0 ([#2884](https://github.com/orhun/git-cliff/issues/2884)) +- Fix(package): update vue-color to version 2.7.0 (#2884) -- Fix(package): update @types/node to version 10.11.7 ([#2885](https://github.com/orhun/git-cliff/issues/2885)) +- Fix(package): update @types/node to version 10.11.7 (#2885) - Fix(package): update @types/elasticsearch to version 5.0.27 - Fix(package): update reconnecting-websocket to version 4.1.6 - Fix(package): update reconnecting-websocket to version 4.1.7 - Fix(package): update reconnecting-websocket to version 4.1.8 -- Fix(package): update chart.js to version 2.7.3 ([#2907](https://github.com/orhun/git-cliff/issues/2907)) +- Fix(package): update chart.js to version 2.7.3 (#2907) -- Fix(package): update vue-svg-inline-loader to version 1.2.1 ([#2909](https://github.com/orhun/git-cliff/issues/2909)) +- Fix(package): update vue-svg-inline-loader to version 1.2.1 (#2909) -- Fix(package): update @types/gulp-uglify to version 3.0.6 ([#2906](https://github.com/orhun/git-cliff/issues/2906)) +- Fix(package): update @types/gulp-uglify to version 3.0.6 (#2906) -- Fix(package): update @types/sharp to version 0.21.0 ([#2908](https://github.com/orhun/git-cliff/issues/2908)) +- Fix(package): update @types/sharp to version 0.21.0 (#2908) -- Fix(package): update @types/webpack to version 4.4.17 ([#2911](https://github.com/orhun/git-cliff/issues/2911)) +- Fix(package): update @types/webpack to version 4.4.17 (#2911) -- Fix(package): update @types/node to version 10.12.0 ([#2912](https://github.com/orhun/git-cliff/issues/2912)) +- Fix(package): update @types/node to version 10.12.0 (#2912) -- Fix(package): update @fortawesome/free-brands-svg-icons to version 5.4.1 ([#2916](https://github.com/orhun/git-cliff/issues/2916)) +- Fix(package): update @fortawesome/free-brands-svg-icons to version 5.4.1 (#2916) Closes #2859 - Fix(package): update reconnecting-websocket to version 4.1.9 -- Fix(package): update @types/elasticsearch to version 5.0.28 ([#2924](https://github.com/orhun/git-cliff/issues/2924)) +- Fix(package): update @types/elasticsearch to version 5.0.28 (#2924) -- Fix(package): update showdown to version 1.8.7 ([#2925](https://github.com/orhun/git-cliff/issues/2925)) +- Fix(package): update showdown to version 1.8.7 (#2925) - Fix(package): update webpack to version 4.21.0 -- Fix(package): update vue-sweetalert2 to version 1.5.6 ([#2932](https://github.com/orhun/git-cliff/issues/2932)) +- Fix(package): update vue-sweetalert2 to version 1.5.6 (#2932) -- Fix(package): update reconnecting-websocket to version 4.1.10 ([#2937](https://github.com/orhun/git-cliff/issues/2937)) +- Fix(package): update reconnecting-websocket to version 4.1.10 (#2937) -- Fix(package): update webpack to version 4.22.0 ([#2969](https://github.com/orhun/git-cliff/issues/2969)) +- Fix(package): update webpack to version 4.22.0 (#2969) -- Fix(package): update file-type to version 10.1.0 ([#2984](https://github.com/orhun/git-cliff/issues/2984)) +- Fix(package): update file-type to version 10.1.0 (#2984) -- Fix(package): update systeminformation to version 3.45.9 ([#2987](https://github.com/orhun/git-cliff/issues/2987)) +- Fix(package): update systeminformation to version 3.45.9 (#2987) Closes #2986 - Blockings list -- Fix self host detection ([#3201](https://github.com/orhun/git-cliff/issues/3201)) +- Fix self host detection (#3201) -- Fix Content-Disposition ([#4573](https://github.com/orhun/git-cliff/issues/4573)) +- Fix Content-Disposition (#4573) -- Fix #4532 ([#4592](https://github.com/orhun/git-cliff/issues/4592)) +- Fix #4532 (#4592) -- Fix syuilo#4711 ([#4715](https://github.com/orhun/git-cliff/issues/4715)) +- Fix syuilo#4711 (#4715) - Fix #1442, fix #2106 - Fix -- Fix build error ([#5162](https://github.com/orhun/git-cliff/issues/5162)) +- Fix build error (#5162) -- Fix #5071 ([#5184](https://github.com/orhun/git-cliff/issues/5184)) +- Fix #5071 (#5184) -- Fix #5214 ウィジェットが選択されていないときは追加されないように ([#5227](https://github.com/orhun/git-cliff/issues/5227)) +- Fix #5214 ウィジェットが選択されていないときは追加されないように (#5227) * fix #5214 @@ -6485,11 +9123,11 @@ Closes #2986 * 空白文字の調整 -- Fix typo in misskey.nginx ([#5445](https://github.com/orhun/git-cliff/issues/5445)) +- Fix typo in misskey.nginx (#5445) sites-ebabled => sites-enabled - Fix typo -- Fix ([#5710](https://github.com/orhun/git-cliff/issues/5710)) +- Fix (#5710) - Fix @@ -6502,7 +9140,7 @@ sites-ebabled => sites-enabled - Fix -- Fix gif badge ([#6153](https://github.com/orhun/git-cliff/issues/6153)) +- Fix gif badge (#6153) - Fix(pages): AiScript変数があると型チェックができない問題を修正 @@ -6552,7 +9190,7 @@ Fix #5998 - Fix -- Fix(client): 全既読系ボタンのAPIの指定が間違っているのを修正 ([#6424](https://github.com/orhun/git-cliff/issues/6424)) +- Fix(client): 全既読系ボタンのAPIの指定が間違っているのを修正 (#6424) - Fix(api): Fix #6419 @@ -6561,17 +9199,17 @@ Close #6434 - Fix(server): Fix #6433 -- Fix(api): Fix #6418 ([#6442](https://github.com/orhun/git-cliff/issues/6442)) +- Fix(api): Fix #6418 (#6442) -- Fix サイドバーの設定に不具合があるとページが表示できなくなる ([#6473](https://github.com/orhun/git-cliff/issues/6473)) +- Fix サイドバーの設定に不具合があるとページが表示できなくなる (#6473) * fix #6460 * Update app.vue Co-authored-by: syuilo -- Fix 非ログイン時に n または p キー押下で投稿フォームが出る ([#6508](https://github.com/orhun/git-cliff/issues/6508)) +- Fix 非ログイン時に n または p キー押下で投稿フォームが出る (#6508) * fix #5851 @@ -6580,7 +9218,7 @@ Co-authored-by: syuilo - Fix(client): Fix timeline widget setting definition -- Fix #6335 ([#6507](https://github.com/orhun/git-cliff/issues/6507)) +- Fix #6335 (#6507) - Fix(cliemt): Fix style @@ -6619,7 +9257,7 @@ Co-authored-by: syuilo - Fix(client): :v: -- Fix lint ([#6568](https://github.com/orhun/git-cliff/issues/6568)) +- Fix lint (#6568) - Fix(client): Fix federation widget @@ -6656,7 +9294,7 @@ Fix #6658 - Fix(clinet): 誤字によりスクロールイベントリスナが解除されていなかったのを修正 -- Fix an error on /api-doc ([#6665](https://github.com/orhun/git-cliff/issues/6665)) +- Fix an error on /api-doc (#6665) - Fix(server): Fix #6669 @@ -6771,7 +9409,7 @@ https://github.com/syuilo/misskey/commit/48ea805999c6cb8e900aeaec6edaf68788bd51e - Fix bug -- Fix: Safariでもモーダルのぼかし効果が効くようにした ([#7530](https://github.com/orhun/git-cliff/issues/7530)) +- Fix: Safariでもモーダルのぼかし効果が効くようにした (#7530) https://github.com/misskey-dev/misskey/issues/7529 - Fix type @@ -6808,7 +9446,7 @@ Resolve #7540 - Fix(client): 更新時にテーマキャッシュをクリアするように -- Fix: truncate user information if it is too long ([#7629](https://github.com/orhun/git-cliff/issues/7629)) +- Fix: truncate user information if it is too long (#7629) * truncate user information if it is too long @@ -6844,7 +9482,7 @@ Fix #7631 - Fix import - Fix: import syslog-pro -- Fix: use correct query generate function ([#7657](https://github.com/orhun/git-cliff/issues/7657)) +- Fix: use correct query generate function (#7657) Co-authored-by: syuilo - Fix: meta.jsonをimportしないように @@ -6865,14 +9503,14 @@ Fix #7648 - Fix(client): fix button style -- Fix missing strings ([#7674](https://github.com/orhun/git-cliff/issues/7674)) +- Fix missing strings (#7674) * fix sort menu in federation panel * add missing strings in report menu * change i18n key too -- Fix Dockerfile ([#7763](https://github.com/orhun/git-cliff/issues/7763)) +- Fix Dockerfile (#7763) * fix Dockerfile @@ -6886,10 +9524,10 @@ Fix #7648 - Fix(server): fix #7786 -- Fix: アンテナの既読 ([#7803](https://github.com/orhun/git-cliff/issues/7803)) +- Fix: アンテナの既読 (#7803) from: https://gitlab.com/xianon/misskey/-/commit/a89742319caea378f9cdd70c8ebd83bdf2178ff6 -- Fix: アンテナが既読にならないのを修正 ([#7809](https://github.com/orhun/git-cliff/issues/7809)) +- Fix: アンテナが既読にならないのを修正 (#7809) - Fix(client): タイムラインでリストとかなかったの修正 @@ -6898,7 +9536,7 @@ from: https://gitlab.com/xianon/misskey/-/commit/a89742319caea378f9cdd70c8ebd83b - Fix(client): fix #7774 -- Fix inboxQueue import ([#7829](https://github.com/orhun/git-cliff/issues/7829)) +- Fix inboxQueue import (#7829) - Fix(client): fix tabs of page header behaviour @@ -6909,7 +9547,7 @@ from: https://gitlab.com/xianon/misskey/-/commit/a89742319caea378f9cdd70c8ebd83b - Fix(client): MFM関数構文のサジェストで括弧を無視するように -- Fix: truncate image descriptions ([#7699](https://github.com/orhun/git-cliff/issues/7699)) +- Fix: truncate image descriptions (#7699) * move truncate function to separate file to reuse it @@ -6999,12 +9637,12 @@ Fix #7905 - Fix e2e test -- Fix: Fix #7895 ([#7937](https://github.com/orhun/git-cliff/issues/7937)) +- Fix: Fix #7895 (#7937) * Fix #7895 * CHANGELOG -- Fix: 削除したノートやユーザーがリモートから参照されると復活することがあるのを修正 ([#7918](https://github.com/orhun/git-cliff/issues/7918)) +- Fix: 削除したノートやユーザーがリモートから参照されると復活することがあるのを修正 (#7918) * Fix #7557 @@ -7033,13 +9671,13 @@ Co-authored-by: syuilo - Fix(client): コントロールパネルのカスタム絵文字タブが切り替わらないように見える問題を修正 -- Fix missing i18n string ([#7945](https://github.com/orhun/git-cliff/issues/7945)) +- Fix missing i18n string (#7945) -- Fix html conversion issue with code blocks ([#7943](https://github.com/orhun/git-cliff/issues/7943)) +- Fix html conversion issue with code blocks (#7943) -- Fix(client): Add missing localization string ([#7944](https://github.com/orhun/git-cliff/issues/7944)) +- Fix(client): Add missing localization string (#7944) * 欠けるi18nストリングの追加 @@ -7060,12 +9698,12 @@ Co-authored-by: syuilo - Fix errors -- Fix: mention local users in replies ([#7975](https://github.com/orhun/git-cliff/issues/7975)) +- Fix: mention local users in replies (#7975) * mention local users in replies * fix merge -- Fix(client): reaction viewer layout ([#7942](https://github.com/orhun/git-cliff/issues/7942)) +- Fix(client): reaction viewer layout (#7942) The profile picture and name should be grouped together as they belong, and it should be clear which picture belongs to which name. @@ -7075,12 +9713,12 @@ it should be clear which picture belongs to which name. - Fix(client): fix tooltip style -- Fix(client):fix search all users ([#7993](https://github.com/orhun/git-cliff/issues/7993)) +- Fix(client):fix search all users (#7993) - Fix -- Fix(client): fix plugin activate and uninstall ([#7991](https://github.com/orhun/git-cliff/issues/7991)) +- Fix(client): fix plugin activate and uninstall (#7991) * fix(client): fix plugin activate and uninstall @@ -7091,12 +9729,12 @@ it should be clear which picture belongs to which name. - Fix(client): リアクションツールチップ、Renoteツールチップのユーザーの並び順を修正 -- Fix: toolsが動かないのを修正 ([#8008](https://github.com/orhun/git-cliff/issues/8008)) +- Fix: toolsが動かないのを修正 (#8008) * Move tools * Fix DB -- Fix: notification.vueのIntersectionObserverまわりを修正 ([#8010](https://github.com/orhun/git-cliff/issues/8010)) +- Fix: notification.vueのIntersectionObserverまわりを修正 (#8010) * fix notification.vue @@ -7117,17 +9755,17 @@ Co-authored-by: Acid Chicken (硫酸鶏) Co-authored-by: Acid Chicken (硫酸鶏) - Fix(client): モバイルでタップしたときにツールチップが表示される問題を修正 -- Fix: LTLやGTLが無効になっている場合でもUI上にタブが表示される問題を修正 ([#8026](https://github.com/orhun/git-cliff/issues/8026)) +- Fix: LTLやGTLが無効になっている場合でもUI上にタブが表示される問題を修正 (#8026) * wip * add changelog * 変換ミス修正 -- Fix mentions in replies ([#8030](https://github.com/orhun/git-cliff/issues/8030)) +- Fix mentions in replies (#8030) -- Fix: 画像ファイルの縦横サイズの取得で Exif Orientation を考慮する ([#8014](https://github.com/orhun/git-cliff/issues/8014)) +- Fix: 画像ファイルの縦横サイズの取得で Exif Orientation を考慮する (#8014) * 画像ファイルの縦横サイズの取得で Exif Orientation を考慮する @@ -7150,7 +9788,7 @@ Co-authored-by: Acid Chicken (硫酸鶏) - Fix lint -- Fix: integration links ([#8036](https://github.com/orhun/git-cliff/issues/8036)) +- Fix: integration links (#8036) - Fix(client): クリップの設定を編集できない問題を修正 @@ -7199,7 +9837,7 @@ Fix #8086 Fix #8049 -- Fix html blockquote conversion ([#8069](https://github.com/orhun/git-cliff/issues/8069)) +- Fix html blockquote conversion (#8069) - Fix(client): fix sidebar style @@ -7208,7 +9846,7 @@ Fix #8049 - Fix(server): エクスポートした絵文字の拡張子がfalseになることがあるのを修正 -- Fix pizzax ([#8099](https://github.com/orhun/git-cliff/issues/8099)) +- Fix pizzax (#8099) - Fix @@ -7223,7 +9861,7 @@ https://github.com/misskey-dev/misskey/commit/d53795184cd0ee326b0da58b267e3460f9 - Fix #8158 -- Fix: proxyでsvgをpngに変換するように ([#8106](https://github.com/orhun/git-cliff/issues/8106)) +- Fix: proxyでsvgをpngに変換するように (#8106) * wip @@ -7236,12 +9874,12 @@ https://github.com/misskey-dev/misskey/commit/d53795184cd0ee326b0da58b267e3460f9 Co-authored-by: MeiMei <30769358+mei23@users.noreply.github.com> Co-authored-by: MeiMei <30769358+mei23@users.noreply.github.com> -- Fix: code url in documentation ([#8117](https://github.com/orhun/git-cliff/issues/8117)) +- Fix: code url in documentation (#8117) It seems this was not changed while refactoring the modules apart. -- Fix([#8133](https://github.com/orhun/git-cliff/issues/8133)): hCaptcha の reCAPTCHA 互換挙動を無効化する ([#8135](https://github.com/orhun/git-cliff/issues/8135)) +- Fix(#8133): hCaptcha の reCAPTCHA 互換挙動を無効化する (#8135) -* fix([#8133](https://github.com/orhun/git-cliff/issues/8133)): hCaptcha の reCAPTCHA 互換挙動を無効化する +* fix(#8133): hCaptcha の reCAPTCHA 互換挙動を無効化する * Update packages/client/src/components/captcha.vue @@ -7250,12 +9888,12 @@ It seems this was not changed while refactoring the modules apart. Co-authored-by: tamaina - Fix(client): タイムラインのkeep-aliveが効かなくなっているのを修正 -- Fix: アップロードエラー時の処理を修正 ([#8182](https://github.com/orhun/git-cliff/issues/8182)) +- Fix: アップロードエラー時の処理を修正 (#8182) * アップロードのエラー応答で詰むのを修正 * CHANGELOG -- Fix: change keypress to keydown ([#8192](https://github.com/orhun/git-cliff/issues/8192)) +- Fix: change keypress to keydown (#8192) - Fix(client): チャットが見れない @@ -7282,14 +9920,14 @@ Fix #8211 Fix #8212 -- Fix federation widged ([#8221](https://github.com/orhun/git-cliff/issues/8221)) +- Fix federation widged (#8221) The variables accidentally shadowed the variables that contain the ref's to be rendered into the template. - Fix federation widget - Fix eslint rule -- Fix: ensure that specified users does not get duplicates ([#8233](https://github.com/orhun/git-cliff/issues/8233)) +- Fix: ensure that specified users does not get duplicates (#8233) * ensure that specified users does not get duplicates @@ -7298,7 +9936,7 @@ to be rendered into the template. Co-authored-by: syuilo Co-authored-by: syuilo -- Fix: Fix Sideview ([#8235](https://github.com/orhun/git-cliff/issues/8235)) +- Fix: Fix Sideview (#8235) * Fix #7890 @@ -7315,25 +9953,25 @@ Co-authored-by: syuilo Co-authored-by: syuilo - Fix(client): ツールチップの表示位置が正しくない問題を修正 -- Fix: ストリーミングからのAPIリクエストが出来ないのを修正 ([#8244](https://github.com/orhun/git-cliff/issues/8244)) +- Fix: ストリーミングからのAPIリクエストが出来ないのを修正 (#8244) * Update call.ts * あれ - Fix(client): fix compare-versions import -- Fix: タイムライン種別を切り替えると「新しいノートがあります」の表示が残留してしまうのを修正 ([#8250](https://github.com/orhun/git-cliff/issues/8250)) +- Fix: タイムライン種別を切り替えると「新しいノートがあります」の表示が残留してしまうのを修正 (#8250) Fix #6831 - Fix chart clean -- Fix: NodeInfo のユーザー数と投稿数の内容を見直す ([#8255](https://github.com/orhun/git-cliff/issues/8255)) +- Fix: NodeInfo のユーザー数と投稿数の内容を見直す (#8255) * NodeInfoのアクティブユーザーの取得方法を変更する * NodeInfoの投稿数の出力内容を見直す - Fix -- Fix: v-sizeディレクティブの動作を修正 ([#8249](https://github.com/orhun/git-cliff/issues/8249)) +- Fix: v-sizeディレクティブの動作を修正 (#8249) * Fix size directive behavior not activated @@ -7348,7 +9986,7 @@ Fix #6831 * 不要なIntersection Observerを削除 * comment -- Fix: instance ticker ([#8260](https://github.com/orhun/git-cliff/issues/8260)) +- Fix: instance ticker (#8260) * add type and default values @@ -7370,20 +10008,20 @@ Fix #8274 - Fix(server): チャートのcleanでエラーが出る可能性がある問題を修正 - Fix test -- Fix: save followers/following visibility ([#8276](https://github.com/orhun/git-cliff/issues/8276)) +- Fix: save followers/following visibility (#8276) - Fix(client): コントロールパネルのユーザー、ファイルにて、インスタンスの表示範囲切り替えが機能しない問題を修正 Fix #8252 -- Fix: add instance favicon where it's missing ([#8270](https://github.com/orhun/git-cliff/issues/8270)) +- Fix: add instance favicon where it's missing (#8270) - Fix test - Fix: truncate user drive chart -- Fix: regular expressions in word mutes ([#8254](https://github.com/orhun/git-cliff/issues/8254)) +- Fix: regular expressions in word mutes (#8254) * fix: handle regex exceptions for word mutes @@ -7432,7 +10070,7 @@ Fix #8308 Fix #8071 -- Fix: also recognize "shortcut icon" favicon ([#8220](https://github.com/orhun/git-cliff/issues/8220)) +- Fix: also recognize "shortcut icon" favicon (#8220) * also recognize "shortcut icon" favicon @@ -7482,7 +10120,7 @@ Fix #8363 - Fix esm -- Fix(meta): Adjust path to contribution guidelines ([#8367](https://github.com/orhun/git-cliff/issues/8367)) +- Fix(meta): Adjust path to contribution guidelines (#8367) - Fix(client): ユーザー名オートコンプリートが正しく動作しない問題を修正 @@ -7499,7 +10137,7 @@ Fix #8318 - Fix -- Fix: iPhone X以降(?)でページの内容が全て表示しきれないのを修正 ([#8375](https://github.com/orhun/git-cliff/issues/8375)) +- Fix: iPhone X以降(?)でページの内容が全て表示しきれないのを修正 (#8375) * add safe-area-inset-bottom to spacer @@ -7510,7 +10148,7 @@ Fix #8318 * fix - Fix federation chart -- Fix scroll ([#8382](https://github.com/orhun/git-cliff/issues/8382)) +- Fix scroll (#8382) - Fix(server): ulidを使用していると動作しない問題を修正 @@ -7523,7 +10161,7 @@ Fix #8393 Fix #8392 -- Fix API console ([#8416](https://github.com/orhun/git-cliff/issues/8416)) +- Fix API console (#8416) Adjusted the server to send the API description based on the new API type declarations introduced previously. @@ -7531,7 +10169,7 @@ API type declarations introduced previously. - Fix null in query -- Fix: Handle decodeURIComponent error ([#8411](https://github.com/orhun/git-cliff/issues/8411)) +- Fix: Handle decodeURIComponent error (#8411) - Fix query @@ -7544,7 +10182,7 @@ API type declarations introduced previously. Fix #8455 -- Fix(federation): avoid duplicate activity delivery ([#8429](https://github.com/orhun/git-cliff/issues/8429)) +- Fix(federation): avoid duplicate activity delivery (#8429) * prefer shared inbox over individual inbox @@ -7555,10 +10193,10 @@ Fix #8455 - Fix(api): admin/update-meta was not working -- Fix theme-color apply ([#8464](https://github.com/orhun/git-cliff/issues/8464)) +- Fix theme-color apply (#8464) -- Fix: validation ([#8456](https://github.com/orhun/git-cliff/issues/8456)) ([#8461](https://github.com/orhun/git-cliff/issues/8461)) +- Fix: validation (better #8456) (#8461) * Revert "revert 484e023c0" @@ -7579,7 +10217,7 @@ This reverts commit c03b70c949923b830a6d0361d1aa4d5f5614b7b7. - Fix ogp rendering and refactor -- Fix: アンテナ、クリップ、リストの表示を速くする ([#8518](https://github.com/orhun/git-cliff/issues/8518)) +- Fix: アンテナ、クリップ、リストの表示を速くする (#8518) * アンテナノートを取得するクエリがタイムアウトしないように速くする @@ -7588,7 +10226,7 @@ This reverts commit c03b70c949923b830a6d0361d1aa4d5f5614b7b7. * クリップの取得を速くする * リストの取得を速くする -- Fix: Fix settings page ([#8508](https://github.com/orhun/git-cliff/issues/8508)) +- Fix: Fix settings page (#8508) * Fix settings page @@ -7601,7 +10239,7 @@ This reverts commit c03b70c949923b830a6d0361d1aa4d5f5614b7b7. * インデックスに戻ってもタイトルが残ってしまうのを修正 - Fix ogp rendering and refactor -- Fix: アンテナ、クリップ、リストの表示を速くする ([#8518](https://github.com/orhun/git-cliff/issues/8518)) +- Fix: アンテナ、クリップ、リストの表示を速くする (#8518) * アンテナノートを取得するクエリがタイムアウトしないように速くする @@ -7610,45 +10248,45 @@ This reverts commit c03b70c949923b830a6d0361d1aa4d5f5614b7b7. * クリップの取得を速くする * リストの取得を速くする -- Fix: Promises -> Promise ([#8545](https://github.com/orhun/git-cliff/issues/8545)) +- Fix: Promises -> Promise (#8545) -- Fix(client): fix lint issues in autocomplete ([#8548](https://github.com/orhun/git-cliff/issues/8548)) +- Fix(client): fix lint issues in autocomplete (#8548) -- Fix: Add rel attribute to host-meta ([#8583](https://github.com/orhun/git-cliff/issues/8583)) +- Fix: Add rel attribute to host-meta (#8583) * Add rel attribute to host-meta * CHANGELOG -- Fix _misskey_content of quote renotes ([#8533](https://github.com/orhun/git-cliff/issues/8533)) +- Fix _misskey_content of quote renotes (#8533) - Fix(client): fix missing import of defineAsyncComponent in os.ts -- Fix(client): fix duplicate token request dialog in plugin install ([#8612](https://github.com/orhun/git-cliff/issues/8612)) +- Fix(client): fix duplicate token request dialog in plugin install (#8612) -- Fix (client): fix mention icon height ([#8615](https://github.com/orhun/git-cliff/issues/8615)) +- Fix (client): fix mention icon height (#8615) -- Fix(client): fix lint issues in scripts ([#8621](https://github.com/orhun/git-cliff/issues/8621)) +- Fix(client): fix lint issues in scripts (#8621) -- Fix(client): add setup attribute to notification page ([#8648](https://github.com/orhun/git-cliff/issues/8648)) +- Fix(client): add setup attribute to notification page (#8648) -- Fix: keep file order ([#8659](https://github.com/orhun/git-cliff/issues/8659)) +- Fix: keep file order (#8659) -- Fix: ユーザー検索で、クエリがusernameの条件を満たす場合はusernameもLIKE検索するように ([#8644](https://github.com/orhun/git-cliff/issues/8644)) +- Fix: ユーザー検索で、クエリがusernameの条件を満たす場合はusernameもLIKE検索するように (#8644) * Fix #8643 * 部分一致にする - Fix(client): additional background for acrylic popups if unsupported -- Fix(client): remove unexpected token ([#8672](https://github.com/orhun/git-cliff/issues/8672)) +- Fix(client): remove unexpected token (#8672) - Fix(server): prevent crash when processing certain PNGs @@ -7659,7 +10297,7 @@ Fix #8605 Fix a bug introduced in #8659. Solution was already tested there. -- Fix: ノートのインスタンス情報の文字に縁を付けて見やすくする ([#8697](https://github.com/orhun/git-cliff/issues/8697)) +- Fix: ノートのインスタンス情報の文字に縁を付けて見やすくする (#8697) * ノートのインスタンス情報の背景色が反映されないことがあるのを修正する @@ -7670,20 +10308,20 @@ Fix a bug introduced in #8659. Solution was already tested there. This reverts commit de920dfc537d1f2c68804d0d6930520f2b3cbce7. * ノートのインスタンス情報の文字の影の数を増やしてさらに見やすくする -- Fix: Unable to generate video thumbnails ([#8696](https://github.com/orhun/git-cliff/issues/8696)) +- Fix: Unable to generate video thumbnails (#8696) * fix: Unable to generate video thumbnails * CHANGELOG -- Fix(client): fix lint issues in Deck UI components ([#8681](https://github.com/orhun/git-cliff/issues/8681)) +- Fix(client): fix lint issues in Deck UI components (#8681) -- Fix: ノート詳細ページの新しいノートを表示する機能の動作が正しくなるように修正する ([#8607](https://github.com/orhun/git-cliff/issues/8607)) +- Fix: ノート詳細ページの新しいノートを表示する機能の動作が正しくなるように修正する (#8607) * ノート詳細で新しいノートの表示が正しくないのを修正する * ノート詳細から別のノート詳細を表示した時に前後の表示をリセットする -- Fix(activitypub): add authorization checks ([#8534](https://github.com/orhun/git-cliff/issues/8534)) +- Fix(activitypub): add authorization checks (#8534) * fix spelling @@ -7695,7 +10333,7 @@ Close #8521 Co-Authored-By: Johann150 <20990607+Johann150@users.noreply.github.com> -- Fix(client): fix undefined data value on 2FA settings ([#8725](https://github.com/orhun/git-cliff/issues/8725)) +- Fix(client): fix undefined data value on 2FA settings (#8725) - Fix(client): wrong scoping breaks 2FA @@ -7705,13 +10343,13 @@ Co-Authored-By: Johann150 <20990607+Johann150@users.noreply.github.com> - Fix: activity widget used wrong variable name -- Fix: assume remote users are following each other ([#8734](https://github.com/orhun/git-cliff/issues/8734)) +- Fix: assume remote users are following each other (#8734) Misskey does not know if two remote users are following each other. Because ActivityPub actions would otherwise fail on followers only notes, we have to assume that two remote users are following each other when an interaction about a remote note occurs. -- Fix lints ([#8737](https://github.com/orhun/git-cliff/issues/8737)) +- Fix lints (#8737) * fix: emits use ev instead of e @@ -7726,13 +10364,13 @@ when an interaction about a remote note occurs. * fix: use emoji instead of e * fix: vue lints -- Fix(docs): correct information for drive upload ([#8736](https://github.com/orhun/git-cliff/issues/8736)) +- Fix(docs): correct information for drive upload (#8736) - Fix: validate text is not empty fix #8747 -- Fix(client): Vite related boot mechanism revision ([#8753](https://github.com/orhun/git-cliff/issues/8753)) +- Fix(client): Vite related boot mechanism revision (#8753) * preload app css @@ -7741,20 +10379,20 @@ fix #8747 * APP_FETCH_FAILED error * set max-age to 15s -- Fix(client): fix popout url ([#8494](https://github.com/orhun/git-cliff/issues/8494)) +- Fix(client): fix popout url (#8494) - Fix: add missing import fix #8756 -- Fix(client): import shared ESLint config in client package ([#8761](https://github.com/orhun/git-cliff/issues/8761)) +- Fix(client): import shared ESLint config in client package (#8761) -- Fix: always remove completed tasks ([#8771](https://github.com/orhun/git-cliff/issues/8771)) +- Fix: always remove completed tasks (#8771) -- Fix(mfm): remove duplicate br tag/newline ([#8616](https://github.com/orhun/git-cliff/issues/8616)) +- Fix(mfm): remove duplicate br tag/newline (#8616) - Fix(lint): indentation @@ -7762,14 +10400,14 @@ fix #8756 - Fix: server metrics widget - Fix(dev): no labels for l10n_develop -- Fix(client): correctly handle MiAuth URLs with query string ([#8772](https://github.com/orhun/git-cliff/issues/8772)) +- Fix(client): correctly handle MiAuth URLs with query string (#8772) - Fix(test): reset redis in e2e test #7986 -- Fix: correctly render empty note text ([#8746](https://github.com/orhun/git-cliff/issues/8746)) +- Fix: correctly render empty note text (#8746) Ensure that the _misskey_content attribute will always exist. Because the API endpoint does not require the existence of the `text` field, @@ -7784,7 +10422,7 @@ have empty content. The code could be made a bit more succinct by using the null coercion operator. -- Fix: ensure resolver does not fetch local resources via HTTP(S) ([#8733](https://github.com/orhun/git-cliff/issues/8733)) +- Fix: ensure resolver does not fetch local resources via HTTP(S) (#8733) * refactor: parseUri types and checks @@ -7805,7 +10443,7 @@ Using DbResolver would mean that the URL is parsed and handled again. This duplicated processing can be avoided by querying the database directly. * fix missing property name -- Fix: add id for activitypub follows ([#8689](https://github.com/orhun/git-cliff/issues/8689)) +- Fix: add id for activitypub follows (#8689) * add id for activitypub follows @@ -7838,20 +10476,20 @@ this endpoint can not be used by other services or instances. - Fix(test): make chart tests working -- Fix: try to prevent autocomplete for emoji search ([#8798](https://github.com/orhun/git-cliff/issues/8798)) +- Fix: try to prevent autocomplete for emoji search (#8798) -- Fix: use autocomplete=new-password ([#8797](https://github.com/orhun/git-cliff/issues/8797)) +- Fix: use autocomplete=new-password (#8797) -- Fix(client): render quote renote CWs as MFM ([#8792](https://github.com/orhun/git-cliff/issues/8792)) +- Fix(client): render quote renote CWs as MFM (#8792) Co-authored-by: syuilo - Fix(test): use cypress-io/github-action@v4 - Fix(client): オブジェクトストレージを使用していると画像のクロップができない -- Fix: some fixes of multiple notification read ([#8819](https://github.com/orhun/git-cliff/issues/8819)) +- Fix: some fixes of multiple notification read (#8819) * fix: limit multiple notification read @@ -7862,24 +10500,24 @@ Co-authored-by: syuilo Fix #8818 -- Fix: missing file name parameter ([#8820](https://github.com/orhun/git-cliff/issues/8820)) +- Fix: missing file name parameter (#8820) - Fix: remove unused parameter - Fix(docs): use correct description property -- Fix: add limit to i/notifications ([#8836](https://github.com/orhun/git-cliff/issues/8836)) +- Fix: add limit to i/notifications (#8836) * fix: add limit to i/notifications * ms * remove ms -- Fix: tmpdir cleanup removes contained files ([#8826](https://github.com/orhun/git-cliff/issues/8826)) +- Fix: tmpdir cleanup removes contained files (#8826) -- Fix: GenerateVideoThumbnail ([#8825](https://github.com/orhun/git-cliff/issues/8825)) +- Fix: GenerateVideoThumbnail (#8825) * fix: GenerateVideoThumbnail @@ -7902,7 +10540,7 @@ Instead of coercing to `null`, coercing to an empty string should simplify handl - Fix client -- Fix: block button in federation panel ([#8855](https://github.com/orhun/git-cliff/issues/8855)) +- Fix: block button in federation panel (#8855) - Fix(server): faviconUrl of federated instance is missing @@ -7911,10 +10549,10 @@ Instead of coercing to `null`, coercing to an empty string should simplify handl - Fix #8861 -- Fix(nirax): Normalize path ([#8877](https://github.com/orhun/git-cliff/issues/8877)) +- Fix(nirax): Normalize path (#8877) -- Fix(client): ask to log in for poll vote ([#8883](https://github.com/orhun/git-cliff/issues/8883)) +- Fix(client): ask to log in for poll vote (#8883) - Fix lints @@ -7925,7 +10563,7 @@ Instead of coercing to `null`, coercing to an empty string should simplify handl - Fix bug -- Fix: always respect instance mutes ([#8854](https://github.com/orhun/git-cliff/issues/8854)) +- Fix: always respect instance mutes (#8854) * fix: muted user query also checks instances @@ -7934,7 +10572,7 @@ is required without checking the whole codebase again. Muted users and muted instances should be used together anyways. * fix lint -- Fix(client): only enable hotkeys for logged in users ([#8793](https://github.com/orhun/git-cliff/issues/8793)) +- Fix(client): only enable hotkeys for logged in users (#8793) * fix(client): only enable hotkeys for logged in users @@ -7945,7 +10583,7 @@ muted instances should be used together anyways. - Fix #8894 -- Fix: mocha テストが動かないのを修正 v2 ([#8892](https://github.com/orhun/git-cliff/issues/8892)) +- Fix: mocha テストが動かないのを修正 v2 (#8892) * on push @@ -8006,7 +10644,7 @@ Co-authored-by: mei23 - Fix(client): contextmenu of deck not working -- Fix: streamingテストおそい ([#8912](https://github.com/orhun/git-cliff/issues/8912)) +- Fix: streamingテストおそい (#8912) - Fix: spellcheck is boolean not string @@ -8031,12 +10669,12 @@ Fixes lint no-const-assign. - Fix lint @typescript-eslint/ban-types -- Fix:typo 「有効する必要…」→「有効にする必要…」 ([#8936](https://github.com/orhun/git-cliff/issues/8936)) +- Fix:typo 「有効する必要…」→「有効にする必要…」 (#8936) - Fix(client): user search of explore not working -- Fix: pagination uses API correctly ([#8925](https://github.com/orhun/git-cliff/issues/8925)) +- Fix: pagination uses API correctly (#8925) - Fix(client): テーマを作成するとクライアントが起動しなくなる @@ -8049,7 +10687,7 @@ fixes #8944 - Fix test -- Fix: QueryFailedError when logging user's IPs ([#8973](https://github.com/orhun/git-cliff/issues/8973)) +- Fix: QueryFailedError when logging user's IPs (#8973) * fix QueryFailedError when logging user's IPs @@ -8060,19 +10698,19 @@ fixes #8944 Fix #8878 -- Fix(sw, notification): Don't issue an event if there is no affect ([#8979](https://github.com/orhun/git-cliff/issues/8979)) +- Fix(sw, notification): Don't issue an event if there is no affect (#8979) * test * ]v] -- Fix: add `es2017` build target ([#8931](https://github.com/orhun/git-cliff/issues/8931)) +- Fix: add `es2017` build target (#8931) * remove top level awaits * add es2017 target * refactor: use setup and ref sugar -- Fix(client): hide bot protection warning with disabled registrations ([#8794](https://github.com/orhun/git-cliff/issues/8794)) +- Fix(client): hide bot protection warning with disabled registrations (#8794) * fix(client): hide bot protection warning with disabled registrations @@ -8105,7 +10743,7 @@ Fix #9010 - Fix(client): fix deck style -- Fix(client): use icon for local if available ([#9012](https://github.com/orhun/git-cliff/issues/9012)) +- Fix(client): use icon for local if available (#9012) - Fix(client): fix window default prop @@ -8116,7 +10754,7 @@ Fix #9010 - Fix reply limit -- Fix(server): make sure `getFileInfo` doesn't fail if `detectSensitivity` ever fails ([#9020](https://github.com/orhun/git-cliff/issues/9020)) +- Fix(server): make sure `getFileInfo` doesn't fail if `detectSensitivity` ever fails (#9020) - Fix(client): tweak mfm-cheat-sheet @@ -8131,7 +10769,7 @@ Fix #8474 - Document.domainをチェックする際に、hostのかわりにhostnameを使うように - Docs(readme): add Greenkeeper badge -- Docs to run in production mode ([#4347](https://github.com/orhun/git-cliff/issues/4347)) +- Docs to run in production mode (#4347) * run in production mode from systemd @@ -8143,16 +10781,16 @@ Fix #8474 - Doc -- Docker buildでyarn.lockを考慮してなかったのを修正 ([#6330](https://github.com/orhun/git-cliff/issues/6330)) +- Docker buildでyarn.lockを考慮してなかったのを修正 (#6330) -- Doc: add features/word-mute ([#7672](https://github.com/orhun/git-cliff/issues/7672)) +- Doc: add features/word-mute (#7672) -- Doc: recursive ([#7893](https://github.com/orhun/git-cliff/issues/7893)) +- Doc: recursive (#7893) -- Docs(README): update image link ([#8383](https://github.com/orhun/git-cliff/issues/8383)) +- Docs(README): update image link (#8383) @@ -8184,9 +10822,9 @@ Fix #8474 - Add lock file -- Feature mute on mobile([#2354](https://github.com/orhun/git-cliff/issues/2354)) +- Feature mute on mobile(#2354) -- Add an endpoint users/lists/update ([#2585](https://github.com/orhun/git-cliff/issues/2585)) +- Add an endpoint users/lists/update (#2585) * add an endpoint users/lists/update @@ -8194,7 +10832,7 @@ Fix #8474 * fix packing -- Adds ko-KR な to にゃ ([#3820](https://github.com/orhun/git-cliff/issues/3820)) +- Adds ko-KR な to にゃ (#3820) * adds ko-KR な to にゃ - this only take considers pre-composed "Hangul Syllables", @@ -8205,7 +10843,7 @@ not composable area "Hangul Jamo" which are not used commonly - ✨🌎✨ A federated blogging platform ✨🚀✨ -- Add missing image ([#5967](https://github.com/orhun/git-cliff/issues/5967)) +- Add missing image (#5967) fix for explore banner - Feat(streaming): Add emoji added event @@ -8249,7 +10887,7 @@ Resolve #5819 - Feat(client): :yen: -- Feat(client): 翻訳をIndexedDBに保存・プッシュ通知を翻訳 ([#6396](https://github.com/orhun/git-cliff/issues/6396)) +- Feat(client): 翻訳をIndexedDBに保存・プッシュ通知を翻訳 (#6396) * wip @@ -8313,7 +10951,7 @@ Co-authored-by: Acid Chicken (硫酸鶏) Co-authored-by: Acid Chicken (硫酸鶏) Co-authored-by: syuilo -- Feat(client): 自動でもっと見るオプション ([#6403](https://github.com/orhun/git-cliff/issues/6403)) +- Feat(client): 自動でもっと見るオプション (#6403) * wip @@ -8330,7 +10968,7 @@ Co-authored-by: syuilo * Update notifications.vue Co-authored-by: syuilo -- Feat(client): Convert text mfm node to text (v)dom node instead of span tag ([#6399](https://github.com/orhun/git-cliff/issues/6399)) +- Feat(client): Convert text mfm node to text (v)dom node instead of span tag (#6399) * Convert text mfm node to text (v)dom node instead of span tag @@ -8338,7 +10976,7 @@ instead of span tag * Update mfm.ts Co-authored-by: syuilo -- Feat(client): 投稿フォームのボタンの説明を表示するように ([#6408](https://github.com/orhun/git-cliff/issues/6408)) +- Feat(client): 投稿フォームのボタンの説明を表示するように (#6408) * Add title attr with buttons on the post form @@ -8361,7 +10999,7 @@ Co-authored-by: syuilo * i18n Co-authored-by: syuilo -- Feat: Observe notification read and fix #6406 ([#6407](https://github.com/orhun/git-cliff/issues/6407)) +- Feat: Observe notification read and fix #6406 (#6407) * Resolve https://github.com/syuilo/misskey/pull/6406#issuecomment-633203670 @@ -8428,7 +11066,7 @@ Resolve #6544 - Feat(client): Implement federation widget chart -- Feat(server): Fetch icon url of an instance ([#6591](https://github.com/orhun/git-cliff/issues/6591)) +- Feat(server): Fetch icon url of an instance (#6591) * feat(server): Fetch icon url of an instance @@ -8457,7 +11095,7 @@ Resolve #6589 - Add note -- Feat: video play inline (using video tag) ([#7242](https://github.com/orhun/git-cliff/issues/7242)) +- Feat: video play inline (using video tag) (#7242) - Add test @@ -8480,7 +11118,7 @@ Resolve #6589 Resolve #5213 -- Feat: Implement api sw/unregister ([#7611](https://github.com/orhun/git-cliff/issues/7611)) +- Feat: Implement api sw/unregister (#7611) * Implement api sw/unregister @@ -8489,10 +11127,10 @@ Resolve #5213 * add changelog Co-authored-by: syuilo -- Add setting to keep content warning ([#7682](https://github.com/orhun/git-cliff/issues/7682)) +- Add setting to keep content warning (#7682) -- Feat: リモートからユーザー削除が飛んできたら削除するように ([#7768](https://github.com/orhun/git-cliff/issues/7768)) +- Feat: リモートからユーザー削除が飛んできたら削除するように (#7768) * Delete Actor @@ -8503,14 +11141,14 @@ Co-authored-by: syuilo Co-authored-by: syuilo - Add sponsors section -- Add resolver check for blocked instance ([#7777](https://github.com/orhun/git-cliff/issues/7777)) +- Add resolver check for blocked instance (#7777) * add resolver check for blocked instance * lint * Update note.ts -- Feat: 凍結された場合のダイアログを実装 ([#7811](https://github.com/orhun/git-cliff/issues/7811)) +- Feat: 凍結された場合のダイアログを実装 (#7811) * feat: 凍結された場合のダイアログを実装 @@ -8528,7 +11166,7 @@ Co-authored-by: syuilo 動作確認済み Resolve #7735 -- Feat: MFM Sparkle animation ([#7813](https://github.com/orhun/git-cliff/issues/7813)) +- Feat: MFM Sparkle animation (#7813) * Add sparkle mfm animation ✨ @@ -8541,7 +11179,7 @@ Resolve #7735 - Feat(client): MFM関数構文のサジェストを実装 - Add todo -- Feat: アカウント作成にメールアドレス必須にするオプション ([#7856](https://github.com/orhun/git-cliff/issues/7856)) +- Feat: アカウント作成にメールアドレス必須にするオプション (#7856) * feat: アカウント作成にメールアドレス必須にするオプション @@ -8562,7 +11200,7 @@ Resolve #7735 - Feat(client): add some theme functions -- Feat: ノートプレビューを追加 ([#7596](https://github.com/orhun/git-cliff/issues/7596)) +- Feat: ノートプレビューを追加 (#7596) * add note preview @@ -8597,7 +11235,7 @@ Resolve #7545 Resolve #6811 Close #7808 -- Feat: thread mute ([#7930](https://github.com/orhun/git-cliff/issues/7930)) +- Feat: thread mute (#7930) * feat: thread mute @@ -8608,7 +11246,7 @@ Close #7808 * fix * refactor -- Feat: クライアントでログインするアカウントidを指定するクエリ(loginId=:userId) ([#7929](https://github.com/orhun/git-cliff/issues/7929)) +- Feat: クライアントでログインするアカウントidを指定するクエリ(loginId=:userId) (#7929) * feat: ログインするアカウントのIDをクエリ文字列で指定する機能 @@ -8619,7 +11257,7 @@ Close #7808 Resolve #7940 -- Feat: make possible to configure following/followers visibility ([#7959](https://github.com/orhun/git-cliff/issues/7959)) +- Feat: make possible to configure following/followers visibility (#7959) * feat: make possible to configure following/followers visibility @@ -8662,7 +11300,7 @@ Resolve #7025 - Add todo -- Feat: Undo Accept ([#7980](https://github.com/orhun/git-cliff/issues/7980)) +- Feat: Undo Accept (#7980) * allow breaking of follow @@ -8671,7 +11309,7 @@ Resolve #7025 * delete by using reject follow - Add note -- Feat: user-level instance mute ([#7712](https://github.com/orhun/git-cliff/issues/7712)) +- Feat: user-level instance mute (#7712) * Update ja-JP.yml @@ -8776,7 +11414,7 @@ Resolve #8231 - Add eslint rule -- Feat: Option to show replies in timeline ([#7685](https://github.com/orhun/git-cliff/issues/7685)) ([#8202](https://github.com/orhun/git-cliff/issues/8202)) +- Feat: Option to show replies in timeline (rebase #7685) (#8202) * Add an option for timeline replies. Credit to Emilis (puffaboo) @@ -8799,7 +11437,7 @@ Resolve #7475 - Feat(client): make size of reaction picker configuable -- Add sk-SK lang to locales/index.js ([#8325](https://github.com/orhun/git-cliff/issues/8325)) +- Add sk-SK lang to locales/index.js (#8325) - Feat: add pub & sub item for federation chart @@ -8822,7 +11460,7 @@ Resolve #4664 - Feat: introduce bull dashboard -- Feat: Webhook ([#8457](https://github.com/orhun/git-cliff/issues/8457)) +- Feat: Webhook (#8457) * feat: introduce webhook @@ -8837,7 +11475,7 @@ Resolve #4664 - Add perspective -- Feat: Improve Push Notification ([#7667](https://github.com/orhun/git-cliff/issues/7667)) +- Feat: Improve Push Notification (#7667) * clean up @@ -9113,7 +11751,7 @@ Co-authored-by: syuilo - Feat(dev): highlight editing of wrong locales Highlight PRs that edit locales other than the ja-JP one so the author may see and fix it themselves. -- Feat(tests): add e2e tests for widgets ([#8735](https://github.com/orhun/git-cliff/issues/8735)) +- Feat(tests): add e2e tests for widgets (#8735) * test(e2e): add baseline for widget tests @@ -9168,7 +11806,7 @@ Highlight PRs that edit locales other than the ja-JP one so the author may see a Co-authored-by: acid-chicken -- Feat: option to collapse long notes ([#8561](https://github.com/orhun/git-cliff/issues/8561)) +- Feat: option to collapse long notes (#8561) * feat: option to collapse long notes @@ -9183,14 +11821,14 @@ Closes #8559 * Change style of the Show less button - Add packageExtensions -- Feat: image cropping ([#8808](https://github.com/orhun/git-cliff/issues/8808)) +- Feat: image cropping (#8808) * wip * wip * wip -- Feat: Add Badge Image to Push Notification ([#8012](https://github.com/orhun/git-cliff/issues/8012)) +- Feat: Add Badge Image to Push Notification (#8012) * fix @@ -9423,7 +12061,7 @@ Resolve #8830 - Feat(client): poll highlights in explore page -- Feat: Log user ips ([#8872](https://github.com/orhun/git-cliff/issues/8872)) +- Feat: Log user ips (#8872) * wip @@ -9449,7 +12087,7 @@ Resolve #8830 - Feat(client): status bar (experimental) -- Feat: styled error screen ([#8930](https://github.com/orhun/git-cliff/issues/8930)) +- Feat: styled error screen (#8930) * Styled error screen @@ -9466,7 +12104,7 @@ Resolve #8830 * Rename to `error.css` - Feat(client): メニューからページをリロードできるように -- Feat: auto nsfw detection ([#8840](https://github.com/orhun/git-cliff/issues/8840)) +- Feat: auto nsfw detection (#8840) * feat: auto nsfw detection @@ -9797,7 +12435,7 @@ Closes #668 - Chore(package): update @types/webpack to version 3.0.7 Closes #665 -- Chore(package): update @types/chai-http to version 3.0.1 ([#661](https://github.com/orhun/git-cliff/issues/661)) +- Chore(package): update @types/chai-http to version 3.0.1 (#661) - Chore(package): update webpack to version 3.5.3 @@ -9945,12 +12583,12 @@ Closes #885 - UpdatePersonで再割り当てを考慮する -- UpdatePersonを試行した時点でもlastFetchedAtを更新する ([#4510](https://github.com/orhun/git-cliff/issues/4510)) +- UpdatePersonを試行した時点でもlastFetchedAtを更新する (#4510) - Update token generation -- UpdateHashtagを並列で行わないように ([#5284](https://github.com/orhun/git-cliff/issues/5284)) +- UpdateHashtagを並列で行わないように (#5284) - Chore: Update commands @@ -9997,7 +12635,7 @@ Closes #885 - Chore: Use node 14.2 -- Chore: Use actions/checkout@v2 ([#6328](https://github.com/orhun/git-cliff/issues/6328)) +- Chore: Use actions/checkout@v2 (#6328) - Chore: Update deps :rocket: @@ -10023,7 +12661,7 @@ Closes #885 - Chore(src/docs): Fix miauth check url Fix #6418 -- Chore(client):🎨 Make font-size of note-preview em ([#6414](https://github.com/orhun/git-cliff/issues/6414)) +- Chore(client):🎨 Make font-size of note-preview em (#6414) - Chore(client): :art: @@ -10090,11 +12728,11 @@ Fix #6418 - Chore: improve reaction picker behaviour -- Update page editor ([#7317](https://github.com/orhun/git-cliff/issues/7317)) +- Update page editor (#7317) * fix buttons visibility * fix title of page editor -- Update mfm.js ([#7435](https://github.com/orhun/git-cliff/issues/7435)) +- Update mfm.js (#7435) * use mfm.js 0.14.0 @@ -10110,23 +12748,23 @@ Fix #6418 - Update commander - Update secret message -- Update MFM ([#7456](https://github.com/orhun/git-cliff/issues/7456)) +- Update MFM (#7456) -- Update mfm.js ([#7468](https://github.com/orhun/git-cliff/issues/7468)) +- Update mfm.js (#7468) - Chore -- Update mfm.js ([#7476](https://github.com/orhun/git-cliff/issues/7476)) +- Update mfm.js (#7476) - Update vue -- Chore: Remove vips from Dockerfile ([#7633](https://github.com/orhun/git-cliff/issues/7633)) +- Chore: Remove vips from Dockerfile (#7633) -- Chore: yarn.lockがおかしかったらCIでコケるように ([#7634](https://github.com/orhun/git-cliff/issues/7634)) +- Chore: yarn.lockがおかしかったらCIでコケるように (#7634) - Update vue @@ -10135,7 +12773,7 @@ Fix #6418 - Update contribution guides -- Chore: APIドキュメントの修正 ([#7771](https://github.com/orhun/git-cliff/issues/7771)) +- Chore: APIドキュメントの修正 (#7771) * packedNotificationSchemaを更新 @@ -10144,7 +12782,7 @@ Fix #6418 * fix * add header, choice, invitation -- Chore: .configをdockerイメージに入れないように ([#7625](https://github.com/orhun/git-cliff/issues/7625)) +- Chore: .configをdockerイメージに入れないように (#7625) * .configをdockerイメージに入れないように @@ -10156,7 +12794,7 @@ Co-authored-by: MeiMei <30769358+mei23@users.noreply.github.com> Co-authored-by: tamaina - Update deps -- Chore, perf: Reduce redis memory ([#7816](https://github.com/orhun/git-cliff/issues/7816)) +- Chore, perf: Reduce redis memory (#7816) * Reduce redis memory @@ -10205,7 +12843,7 @@ Close #7924 - Update deps -- Chore: remove ms-vscode.typescript-javascript-grammar ([#8061](https://github.com/orhun/git-cliff/issues/8061)) +- Chore: remove ms-vscode.typescript-javascript-grammar (#8061) - Update deps @@ -10220,7 +12858,7 @@ Close #7924 - Update deps -- Update local copy of file when describing ([#8131](https://github.com/orhun/git-cliff/issues/8131)) +- Update local copy of file when describing (#8131) - Update dep @@ -10239,7 +12877,7 @@ Close #7924 - Update eslint rule -- Chore(deps-dev): bump cypress from 9.3.1 to 9.4.1 ([#8239](https://github.com/orhun/git-cliff/issues/8239)) +- Chore(deps-dev): bump cypress from 9.3.1 to 9.4.1 (#8239) Bumps [cypress](https://github.com/cypress-io/cypress) from 9.3.1 to 9.4.1. - [Release notes](https://github.com/cypress-io/cypress/releases) @@ -10266,7 +12904,7 @@ Co-authored-by: dependabot[bot] <49699333+dependabot[bot]@users.noreply.github.c - Chore(client): check textarea exists -- Chore(deps): bump axios from 0.21.1 to 0.21.4 in /packages/client ([#8286](https://github.com/orhun/git-cliff/issues/8286)) +- Chore(deps): bump axios from 0.21.1 to 0.21.4 in /packages/client (#8286) Bumps [axios](https://github.com/axios/axios) from 0.21.1 to 0.21.4. - [Release notes](https://github.com/axios/axios/releases) @@ -10282,7 +12920,7 @@ updated-dependencies: Signed-off-by: dependabot[bot] Co-authored-by: dependabot[bot] <49699333+dependabot[bot]@users.noreply.github.com> -- Chore(deps): bump path-parse from 1.0.6 to 1.0.7 in /packages/client ([#8288](https://github.com/orhun/git-cliff/issues/8288)) +- Chore(deps): bump path-parse from 1.0.6 to 1.0.7 in /packages/client (#8288) Bumps [path-parse](https://github.com/jbgutierrez/path-parse) from 1.0.6 to 1.0.7. - [Release notes](https://github.com/jbgutierrez/path-parse/releases) @@ -10297,7 +12935,7 @@ updated-dependencies: Signed-off-by: dependabot[bot] Co-authored-by: dependabot[bot] <49699333+dependabot[bot]@users.noreply.github.com> -- Chore(deps): bump glob-parent from 5.1.1 to 5.1.2 in /packages/client ([#8289](https://github.com/orhun/git-cliff/issues/8289)) +- Chore(deps): bump glob-parent from 5.1.1 to 5.1.2 in /packages/client (#8289) Bumps [glob-parent](https://github.com/gulpjs/glob-parent) from 5.1.1 to 5.1.2. - [Release notes](https://github.com/gulpjs/glob-parent/releases) @@ -10313,7 +12951,7 @@ updated-dependencies: Signed-off-by: dependabot[bot] Co-authored-by: dependabot[bot] <49699333+dependabot[bot]@users.noreply.github.com> -- Chore(deps): bump simple-get from 4.0.0 to 4.0.1 in /packages/backend ([#8292](https://github.com/orhun/git-cliff/issues/8292)) +- Chore(deps): bump simple-get from 4.0.0 to 4.0.1 in /packages/backend (#8292) Bumps [simple-get](https://github.com/feross/simple-get) from 4.0.0 to 4.0.1. - [Release notes](https://github.com/feross/simple-get/releases) @@ -10328,7 +12966,7 @@ updated-dependencies: Signed-off-by: dependabot[bot] Co-authored-by: dependabot[bot] <49699333+dependabot[bot]@users.noreply.github.com> -- Chore(deps): bump node-fetch from 2.6.1 to 2.6.7 in /packages/client ([#8291](https://github.com/orhun/git-cliff/issues/8291)) +- Chore(deps): bump node-fetch from 2.6.1 to 2.6.7 in /packages/client (#8291) Bumps [node-fetch](https://github.com/node-fetch/node-fetch) from 2.6.1 to 2.6.7. - [Release notes](https://github.com/node-fetch/node-fetch/releases) @@ -10343,7 +12981,7 @@ updated-dependencies: Signed-off-by: dependabot[bot] Co-authored-by: dependabot[bot] <49699333+dependabot[bot]@users.noreply.github.com> -- Chore(deps): bump node-fetch from 2.6.1 to 2.6.7 in /packages/backend ([#8293](https://github.com/orhun/git-cliff/issues/8293)) +- Chore(deps): bump node-fetch from 2.6.1 to 2.6.7 in /packages/backend (#8293) Bumps [node-fetch](https://github.com/node-fetch/node-fetch) from 2.6.1 to 2.6.7. - [Release notes](https://github.com/node-fetch/node-fetch/releases) @@ -10358,7 +12996,7 @@ updated-dependencies: Signed-off-by: dependabot[bot] Co-authored-by: dependabot[bot] <49699333+dependabot[bot]@users.noreply.github.com> -- Chore(deps): bump browserslist from 4.16.3 to 4.19.1 in /packages/client ([#8290](https://github.com/orhun/git-cliff/issues/8290)) +- Chore(deps): bump browserslist from 4.16.3 to 4.19.1 in /packages/client (#8290) Bumps [browserslist](https://github.com/browserslist/browserslist) from 4.16.3 to 4.19.1. - [Release notes](https://github.com/browserslist/browserslist/releases) @@ -10376,7 +13014,7 @@ Signed-off-by: dependabot[bot] Co-authored-by: dependabot[bot] <49699333+dependabot[bot]@users.noreply.github.com> - Chore(client): tweak chart -- Chore(deps): bump tar from 6.0.5 to 6.1.11 in /packages/backend ([#8294](https://github.com/orhun/git-cliff/issues/8294)) +- Chore(deps): bump tar from 6.0.5 to 6.1.11 in /packages/backend (#8294) Bumps [tar](https://github.com/npm/node-tar) from 6.0.5 to 6.1.11. - [Release notes](https://github.com/npm/node-tar/releases) @@ -10392,7 +13030,7 @@ updated-dependencies: Signed-off-by: dependabot[bot] Co-authored-by: dependabot[bot] <49699333+dependabot[bot]@users.noreply.github.com> -- Chore(deps): bump path-parse from 1.0.6 to 1.0.7 in /packages/backend ([#8301](https://github.com/orhun/git-cliff/issues/8301)) +- Chore(deps): bump path-parse from 1.0.6 to 1.0.7 in /packages/backend (#8301) Bumps [path-parse](https://github.com/jbgutierrez/path-parse) from 1.0.6 to 1.0.7. - [Release notes](https://github.com/jbgutierrez/path-parse/releases) @@ -10407,7 +13045,7 @@ updated-dependencies: Signed-off-by: dependabot[bot] Co-authored-by: dependabot[bot] <49699333+dependabot[bot]@users.noreply.github.com> -- Chore(deps): bump normalize-url from 4.5.0 to 4.5.1 in /packages/backend ([#8302](https://github.com/orhun/git-cliff/issues/8302)) +- Chore(deps): bump normalize-url from 4.5.0 to 4.5.1 in /packages/backend (#8302) Bumps [normalize-url](https://github.com/sindresorhus/normalize-url) from 4.5.0 to 4.5.1. - [Release notes](https://github.com/sindresorhus/normalize-url/releases) @@ -10422,7 +13060,7 @@ updated-dependencies: Signed-off-by: dependabot[bot] Co-authored-by: dependabot[bot] <49699333+dependabot[bot]@users.noreply.github.com> -- Chore(deps): bump glob-parent from 5.1.1 to 5.1.2 in /packages/backend ([#8303](https://github.com/orhun/git-cliff/issues/8303)) +- Chore(deps): bump glob-parent from 5.1.1 to 5.1.2 in /packages/backend (#8303) Bumps [glob-parent](https://github.com/gulpjs/glob-parent) from 5.1.1 to 5.1.2. - [Release notes](https://github.com/gulpjs/glob-parent/releases) @@ -10456,7 +13094,7 @@ Close #8327 - Update deps -- Chore(deps): bump minimist from 1.2.5 to 1.2.6 in /packages/backend ([#8447](https://github.com/orhun/git-cliff/issues/8447)) +- Chore(deps): bump minimist from 1.2.5 to 1.2.6 in /packages/backend (#8447) Bumps [minimist](https://github.com/substack/minimist) from 1.2.5 to 1.2.6. - [Release notes](https://github.com/substack/minimist/releases) @@ -10473,7 +13111,7 @@ Signed-off-by: dependabot[bot] Co-authored-by: dependabot[bot] <49699333+dependabot[bot]@users.noreply.github.com> - Update deps -- Chore(deps): bump minimist from 1.2.5 to 1.2.6 in /packages/client ([#8446](https://github.com/orhun/git-cliff/issues/8446)) +- Chore(deps): bump minimist from 1.2.5 to 1.2.6 in /packages/client (#8446) Bumps [minimist](https://github.com/substack/minimist) from 1.2.5 to 1.2.6. - [Release notes](https://github.com/substack/minimist/releases) @@ -10488,7 +13126,7 @@ updated-dependencies: Signed-off-by: dependabot[bot] Co-authored-by: dependabot[bot] <49699333+dependabot[bot]@users.noreply.github.com> -- Chore(deps): bump minimist from 1.2.5 to 1.2.6 ([#8445](https://github.com/orhun/git-cliff/issues/8445)) +- Chore(deps): bump minimist from 1.2.5 to 1.2.6 (#8445) Bumps [minimist](https://github.com/substack/minimist) from 1.2.5 to 1.2.6. - [Release notes](https://github.com/substack/minimist/releases) @@ -10503,7 +13141,7 @@ updated-dependencies: Signed-off-by: dependabot[bot] Co-authored-by: dependabot[bot] <49699333+dependabot[bot]@users.noreply.github.com> -- Chore(deps): bump follow-redirects in /packages/backend ([#8314](https://github.com/orhun/git-cliff/issues/8314)) +- Chore(deps): bump follow-redirects in /packages/backend (#8314) Bumps [follow-redirects](https://github.com/follow-redirects/follow-redirects) from 1.14.7 to 1.14.8. - [Release notes](https://github.com/follow-redirects/follow-redirects/releases) @@ -10518,7 +13156,7 @@ updated-dependencies: Signed-off-by: dependabot[bot] Co-authored-by: dependabot[bot] <49699333+dependabot[bot]@users.noreply.github.com> -- Chore(deps): bump follow-redirects from 1.14.1 to 1.14.8 ([#8313](https://github.com/orhun/git-cliff/issues/8313)) +- Chore(deps): bump follow-redirects from 1.14.1 to 1.14.8 (#8313) Bumps [follow-redirects](https://github.com/follow-redirects/follow-redirects) from 1.14.1 to 1.14.8. - [Release notes](https://github.com/follow-redirects/follow-redirects/releases) @@ -10541,7 +13179,7 @@ Co-authored-by: dependabot[bot] <49699333+dependabot[bot]@users.noreply.github.c - Chore: fix lint on windows -- Chore(deps): bump axios from 0.21.1 to 0.21.4 ([#8471](https://github.com/orhun/git-cliff/issues/8471)) +- Chore(deps): bump axios from 0.21.1 to 0.21.4 (#8471) Bumps [axios](https://github.com/axios/axios) from 0.21.1 to 0.21.4. - [Release notes](https://github.com/axios/axios/releases) @@ -10565,7 +13203,7 @@ Co-authored-by: dependabot[bot] <49699333+dependabot[bot]@users.noreply.github.c - Update node to 18 -- Chore(deps): bump moment from 2.24.0 to 2.29.3 in /packages/backend ([#8531](https://github.com/orhun/git-cliff/issues/8531)) +- Chore(deps): bump moment from 2.24.0 to 2.29.3 in /packages/backend (#8531) Bumps [moment](https://github.com/moment/moment) from 2.24.0 to 2.29.3. - [Release notes](https://github.com/moment/moment/releases) @@ -10581,7 +13219,7 @@ updated-dependencies: Signed-off-by: dependabot[bot] Co-authored-by: dependabot[bot] <49699333+dependabot[bot]@users.noreply.github.com> -- Chore(lint): fix type definitions for jsrsasign ([#8528](https://github.com/orhun/git-cliff/issues/8528)) +- Chore(lint): fix type definitions for jsrsasign (#8528) * fix type definitions for jsrsasign @@ -10595,10 +13233,10 @@ package misskey uses, so i used an earlier patch version of the same package. add user facing changes to changelog -- Chore(deps): Update github actions to use the same version as defined in .node-version ([#8563](https://github.com/orhun/git-cliff/issues/8563)) +- Chore(deps): Update github actions to use the same version as defined in .node-version (#8563) -- Chore(deps): bump ejs from 3.1.6 to 3.1.7 in /packages/backend ([#8560](https://github.com/orhun/git-cliff/issues/8560)) +- Chore(deps): bump ejs from 3.1.6 to 3.1.7 in /packages/backend (#8560) Bumps [ejs](https://github.com/mde/ejs) from 3.1.6 to 3.1.7. - [Release notes](https://github.com/mde/ejs/releases) @@ -10614,7 +13252,7 @@ updated-dependencies: Signed-off-by: dependabot[bot] Co-authored-by: dependabot[bot] <49699333+dependabot[bot]@users.noreply.github.com> -- Chore(deps): bump postcss from 8.2.8 to 8.4.13 in /packages/client ([#8588](https://github.com/orhun/git-cliff/issues/8588)) +- Chore(deps): bump postcss from 8.2.8 to 8.4.13 in /packages/client (#8588) Bumps [postcss](https://github.com/postcss/postcss) from 8.2.8 to 8.4.13. - [Release notes](https://github.com/postcss/postcss/releases) @@ -10630,7 +13268,7 @@ updated-dependencies: Signed-off-by: dependabot[bot] Co-authored-by: dependabot[bot] <49699333+dependabot[bot]@users.noreply.github.com> -- Chore: synchronize code and database schema ([#8577](https://github.com/orhun/git-cliff/issues/8577)) +- Chore: synchronize code and database schema (#8577) * chore: remove default null @@ -10646,7 +13284,7 @@ null is always the default value if a table column is nullable, and typeorm's - Chore(dev): use .yaml for prevent okteto error -- Chore(deps): bump path-parse from 1.0.6 to 1.0.7 ([#8705](https://github.com/orhun/git-cliff/issues/8705)) +- Chore(deps): bump path-parse from 1.0.6 to 1.0.7 (#8705) Bumps [path-parse](https://github.com/jbgutierrez/path-parse) from 1.0.6 to 1.0.7. - [Release notes](https://github.com/jbgutierrez/path-parse/releases) @@ -10661,7 +13299,7 @@ updated-dependencies: Signed-off-by: dependabot[bot] Co-authored-by: dependabot[bot] <49699333+dependabot[bot]@users.noreply.github.com> -- Chore(deps): bump async from 3.2.0 to 3.2.3 in /packages/backend ([#8706](https://github.com/orhun/git-cliff/issues/8706)) +- Chore(deps): bump async from 3.2.0 to 3.2.3 in /packages/backend (#8706) Bumps [async](https://github.com/caolan/async) from 3.2.0 to 3.2.3. - [Release notes](https://github.com/caolan/async/releases) @@ -10681,7 +13319,7 @@ Co-authored-by: dependabot[bot] <49699333+dependabot[bot]@users.noreply.github.c - Chore(client): tweak loading spinner design -- Chore(deps): bump async from 3.2.1 to 3.2.3 in /packages/client ([#8707](https://github.com/orhun/git-cliff/issues/8707)) +- Chore(deps): bump async from 3.2.1 to 3.2.3 in /packages/client (#8707) Bumps [async](https://github.com/caolan/async) from 3.2.1 to 3.2.3. - [Release notes](https://github.com/caolan/async/releases) @@ -10697,7 +13335,7 @@ updated-dependencies: Signed-off-by: dependabot[bot] Co-authored-by: dependabot[bot] <49699333+dependabot[bot]@users.noreply.github.com> -- Chore(deps): bump async from 3.2.1 to 3.2.3 ([#8501](https://github.com/orhun/git-cliff/issues/8501)) +- Chore(deps): bump async from 3.2.1 to 3.2.3 (#8501) Bumps [async](https://github.com/caolan/async) from 3.2.1 to 3.2.3. - [Release notes](https://github.com/caolan/async/releases) @@ -10713,7 +13351,7 @@ updated-dependencies: Signed-off-by: dependabot[bot] Co-authored-by: dependabot[bot] <49699333+dependabot[bot]@users.noreply.github.com> -- Chore(deps): bump copy-props from 2.0.4 to 2.0.5 ([#8709](https://github.com/orhun/git-cliff/issues/8709)) +- Chore(deps): bump copy-props from 2.0.4 to 2.0.5 (#8709) Bumps [copy-props](https://github.com/gulpjs/copy-props) from 2.0.4 to 2.0.5. - [Release notes](https://github.com/gulpjs/copy-props/releases) @@ -10729,10 +13367,10 @@ updated-dependencies: Signed-off-by: dependabot[bot] Co-authored-by: dependabot[bot] <49699333+dependabot[bot]@users.noreply.github.com> -- Chore(meta): add pixeldesu to patron list ([#8714](https://github.com/orhun/git-cliff/issues/8714)) +- Chore(meta): add pixeldesu to patron list (#8714) -- Chore(deps): bump hosted-git-info from 2.8.8 to 2.8.9 ([#8708](https://github.com/orhun/git-cliff/issues/8708)) +- Chore(deps): bump hosted-git-info from 2.8.8 to 2.8.9 (#8708) Bumps [hosted-git-info](https://github.com/npm/hosted-git-info) from 2.8.8 to 2.8.9. - [Release notes](https://github.com/npm/hosted-git-info/releases) @@ -10757,7 +13395,7 @@ Co-authored-by: dependabot[bot] <49699333+dependabot[bot]@users.noreply.github.c - Chore: fix import tinycolor -- Chore(meta): label Pull Requests containing tests ([#8768](https://github.com/orhun/git-cliff/issues/8768)) +- Chore(meta): label Pull Requests containing tests (#8768) - Update summaly @@ -10770,7 +13408,7 @@ Co-authored-by: dependabot[bot] <49699333+dependabot[bot]@users.noreply.github.c - Chore(dev): update okteto workflow -- Chore: fix some lints automatically ([#8788](https://github.com/orhun/git-cliff/issues/8788)) +- Chore: fix some lints automatically (#8788) * chore: fix some lints automatically @@ -10789,7 +13427,7 @@ Fixed lints that were automatically fixable with `eslint --fix`. - Update cypress - Update cypress -- Chore: synchronize visibility checks ([#8687](https://github.com/orhun/git-cliff/issues/8687)) +- Chore: synchronize visibility checks (#8687) * reuse single meId parameter @@ -10824,7 +13462,7 @@ method from packages/backend/src/models/repositories/note.ts - Chore(client): tweak MkKeyValue component -- Chore(deps): bump undici from 5.4.0 to 5.5.1 in /packages/backend ([#8842](https://github.com/orhun/git-cliff/issues/8842)) +- Chore(deps): bump undici from 5.4.0 to 5.5.1 in /packages/backend (#8842) Bumps [undici](https://github.com/nodejs/undici) from 5.4.0 to 5.5.1. - [Release notes](https://github.com/nodejs/undici/releases) @@ -10839,7 +13477,7 @@ updated-dependencies: Signed-off-by: dependabot[bot] Co-authored-by: dependabot[bot] <49699333+dependabot[bot]@users.noreply.github.com> -- Chore(deps): bump jpeg-js from 0.4.1 to 0.4.4 in /packages/backend ([#8843](https://github.com/orhun/git-cliff/issues/8843)) +- Chore(deps): bump jpeg-js from 0.4.1 to 0.4.4 in /packages/backend (#8843) Bumps [jpeg-js](https://github.com/eugeneware/jpeg-js) from 0.4.1 to 0.4.4. - [Release notes](https://github.com/eugeneware/jpeg-js/releases) @@ -10854,7 +13492,7 @@ updated-dependencies: Signed-off-by: dependabot[bot] Co-authored-by: dependabot[bot] <49699333+dependabot[bot]@users.noreply.github.com> -- Chore(deps): bump jsrsasign from 10.5.24 to 10.5.25 in /packages/backend ([#8889](https://github.com/orhun/git-cliff/issues/8889)) +- Chore(deps): bump jsrsasign from 10.5.24 to 10.5.25 in /packages/backend (#8889) Bumps [jsrsasign](https://github.com/kjur/jsrsasign) from 10.5.24 to 10.5.25. - [Release notes](https://github.com/kjur/jsrsasign/releases) @@ -10966,7 +13604,7 @@ Co-authored-by: dependabot[bot] <49699333+dependabot[bot]@users.noreply.github.c - Update CHANGELOG.md -- Chore: fix client lint errors ([#8934](https://github.com/orhun/git-cliff/issues/8934)) +- Chore: fix client lint errors (#8934) * Fix client lint @@ -11011,7 +13649,7 @@ Co-authored-by: dependabot[bot] <49699333+dependabot[bot]@users.noreply.github.c - Update deps -- Chore(deps): bump moment from 2.29.3 to 2.29.4 in /packages/backend ([#8958](https://github.com/orhun/git-cliff/issues/8958)) +- Chore(deps): bump moment from 2.29.3 to 2.29.4 in /packages/backend (#8958) Bumps [moment](https://github.com/moment/moment) from 2.29.3 to 2.29.4. - [Release notes](https://github.com/moment/moment/releases) @@ -11039,7 +13677,7 @@ Co-authored-by: dependabot[bot] <49699333+dependabot[bot]@users.noreply.github.c - Chore(client): tweak style -- Chore: fix lint errors ([#8981](https://github.com/orhun/git-cliff/issues/8981)) +- Chore: fix lint errors (#8981) - Update mfm-js 0.23.0-canary.1 @@ -11088,7 +13726,7 @@ Co-authored-by: dependabot[bot] <49699333+dependabot[bot]@users.noreply.github.c - Chore(client): tweak user-info routing -- Chore: improve ad style ([#8995](https://github.com/orhun/git-cliff/issues/8995)) +- Chore: improve ad style (#8995) * Improve ad style @@ -11171,14 +13809,14 @@ See: https://forum.vuejs.org/t/how-to-avoid-non-function-value-encountered-for-d - Perf(server): Optimize db indexes of chart tables -- Perf: Improve network request performance ([#7636](https://github.com/orhun/git-cliff/issues/7636)) +- Perf: Improve network request performance (#7636) * perf: Improve fetch * CHANGELOG * lifo -- Perf: Tune AP job queue timings ([#7635](https://github.com/orhun/git-cliff/issues/7635)) +- Perf: Tune AP job queue timings (#7635) * perf: Tune AP job queue timings @@ -11187,7 +13825,7 @@ See: https://forum.vuejs.org/t/how-to-avoid-non-function-value-encountered-for-d * chore: add reference Co-authored-by: syuilo -- Perf: delete-account処理を軽くする ([#7958](https://github.com/orhun/git-cliff/issues/7958)) +- Perf: delete-account処理を軽くする (#7958) * Revert "#7892" @@ -11221,7 +13859,7 @@ This reverts commit 71d9c2a53d116a61f4c9b21ff98712a0000412b8. - Perf(server): use cached user info in getUserFromApId -- Perf: fix caching ([#8660](https://github.com/orhun/git-cliff/issues/8660)) +- Perf: fix caching (#8660) The cache implementation did previously not store the results of the computation and was thus not a cache at all. This can cause a significant @@ -11276,7 +13914,7 @@ followers does something that causes an activity to be federated. - Refactor(client): Use unique class name - Refactor(client): Add note -- Refactor: use Object.fromEntries() instead of in-house implementation ([#6401](https://github.com/orhun/git-cliff/issues/6401)) +- Refactor: use Object.fromEntries() instead of in-house implementation (#6401) * refactor: use Object.fromEntries() instead of in-house implementation @@ -11359,7 +13997,7 @@ path aliasをサーバーサイドでも使ったりしたいため - Refactor(client): Use symbol -- Refactor mfm extract ([#7434](https://github.com/orhun/git-cliff/issues/7434)) +- Refactor mfm extract (#7434) * refactor extractCustomEmojisFromMfm() @@ -11378,7 +14016,7 @@ path aliasをサーバーサイドでも使ったりしたいため - Refactoring -- Refactor init ([#7464](https://github.com/orhun/git-cliff/issues/7464)) +- Refactor init (#7464) - Refactor @@ -11395,7 +14033,7 @@ path aliasをサーバーサイドでも使ったりしたいため - Enhance(client): Improve stability of version comparison -- Enhance(server): Improve user block ([#7640](https://github.com/orhun/git-cliff/issues/7640)) +- Enhance(server): Improve user block (#7640) * enhance(server): Improve user block @@ -11428,7 +14066,7 @@ Related: #7658 - Refactor: use path alias to improve readability -- Refactor: localStorageのaccountsはindexedDBで保持するように ([#7609](https://github.com/orhun/git-cliff/issues/7609)) +- Refactor: localStorageのaccountsはindexedDBで保持するように (#7609) * accountsストアはindexedDBで保持するように @@ -11452,7 +14090,7 @@ Firefoxでの動作を改善 cherry picked from https://github.com/kat-atat/misskey/commit/4b2c215e25a0bae47f4375b296d1f5d07a179f88 -- Enhance(server): Use job queue for account delete ([#7668](https://github.com/orhun/git-cliff/issues/7668)) +- Enhance(server): Use job queue for account delete (#7668) * enhance(server): Use job queue for account delete @@ -11483,7 +14121,7 @@ Fix #5336 - Refactoring -- Refactor: Expand schema ([#7772](https://github.com/orhun/git-cliff/issues/7772)) +- Refactor: Expand schema (#7772) * packedNotificationSchemaを更新 @@ -11516,7 +14154,7 @@ Fix #5336 - Refactor -- Enhance: ノートヘッダーにflex-shrinkを設定し、Acctを優先的に縮小して見栄えをよくするように ([#7752](https://github.com/orhun/git-cliff/issues/7752)) +- Enhance: ノートヘッダーにflex-shrinkを設定し、Acctを優先的に縮小して見栄えをよくするように (#7752) * MAKE NOTE HEADER FLEX AGAIN @@ -11529,7 +14167,7 @@ Fix #5336 Resolve #7756 -- Refactor: PackedHoge型をPacked<'Hoge'>型に書き換える ([#7792](https://github.com/orhun/git-cliff/issues/7792)) +- Refactor: PackedHoge型をPacked<'Hoge'>型に書き換える (#7792) * packedNotificationSchemaを更新 @@ -11646,7 +14284,7 @@ Resolve #7826 Resolve #7854 -- Enhance: ページロードエラーページにリロードボタンを追加 ([#7835](https://github.com/orhun/git-cliff/issues/7835)) +- Enhance: ページロードエラーページにリロードボタンを追加 (#7835) * wip @@ -11675,7 +14313,7 @@ Resolve #7854 - Refactor: use insert -- Enhance: shareページでより多くの情報を渡せるように ([#7606](https://github.com/orhun/git-cliff/issues/7606)) +- Enhance: shareページでより多くの情報を渡せるように (#7606) * shareでより多くの情報を渡せるように @@ -11692,7 +14330,7 @@ Resolve #7854 * :art: * 閉じなければ100ms後タイムラインに -- Refactor: publishHogeStreamとStreamのEventEmitterに型定義する ([#7769](https://github.com/orhun/git-cliff/issues/7769)) +- Refactor: publishHogeStreamとStreamのEventEmitterに型定義する (#7769) * wip @@ -11901,7 +14539,7 @@ Co-authored-by: Acid Chicken (硫酸鶏) - Refactor client -- Enhance: Provide Twemoji SVGs from Misskey server ([#2](https://github.com/orhun/git-cliff/issues/2)) ([#7897](https://github.com/orhun/git-cliff/issues/7897)) +- Enhance: Provide Twemoji SVGs from Misskey server (#2) (#7897) * Selfhosting Twemoji @@ -11916,7 +14554,7 @@ Co-authored-by: Acid Chicken (硫酸鶏) Co-authored-by: mei23 - Refactor -- Refactor: Introduce list of MFM Functions ([#7882](https://github.com/orhun/git-cliff/issues/7882)) +- Refactor: Introduce list of MFM Functions (#7882) * introduce list of MFM Functions @@ -11933,7 +14571,7 @@ Resolve #7779 - Refactoring -- Enhance: show renoters ([#7954](https://github.com/orhun/git-cliff/issues/7954)) +- Enhance: show renoters (#7954) * refactor: deduplicate renote button into component @@ -12014,7 +14652,7 @@ Fix #8029 - Enhance(client): :sparkles: -- Enhance: pizzaxでstreamingのuser storage updateイベントを監視して更新 ([#8095](https://github.com/orhun/git-cliff/issues/8095)) +- Enhance: pizzaxでstreamingのuser storage updateイベントを監視して更新 (#8095) * wip @@ -12041,7 +14679,7 @@ Fix #8029 - Refactor(server): use insert instead of save -- Enhance: 許可されていないファイルタイプでは、オブジェクトストレージのファイル名に拡張子を付与しないように ([#8108](https://github.com/orhun/git-cliff/issues/8108)) +- Enhance: 許可されていないファイルタイプでは、オブジェクトストレージのファイル名に拡張子を付与しないように (#8108) * 許可されていないファイルタイプでは、オブジェクトストレージのファイル名に拡張子を付与しないように @@ -12064,7 +14702,7 @@ Fix #8029 - Refactor(client): use composition api -- Refactor: Widgetのcomposition api移行 ([#8125](https://github.com/orhun/git-cliff/issues/8125)) +- Refactor: Widgetのcomposition api移行 (#8125) * wip @@ -12079,7 +14717,7 @@ Fix #8029 * wip * fix -- Refactor: Composition APIへ移行 ([#8121](https://github.com/orhun/git-cliff/issues/8121)) +- Refactor: Composition APIへ移行 (#8121) * components/abuse-report-window.vue @@ -12140,7 +14778,7 @@ Fix #8029 - Refactor -- Refactor: APIエンドポイントファイルの定義を良い感じにする ([#8154](https://github.com/orhun/git-cliff/issues/8154)) +- Refactor: APIエンドポイントファイルの定義を良い感じにする (#8154) * Fix API Schema Error @@ -12282,7 +14920,7 @@ Co-authored-by: Acid Chicken (硫酸鶏) * 分割代入ではなくallOfで定義するように Co-authored-by: Acid Chicken (硫酸鶏) -- Refactor: Composition APIへ移行 ([#8138](https://github.com/orhun/git-cliff/issues/8138)) +- Refactor: Composition APIへ移行 (#8138) * components/drive-file-thumbnail.vue @@ -12349,7 +14987,7 @@ Co-authored-by: Acid Chicken (硫酸鶏) - Refactor(server): use named export -- Enhance: Forward report ([#8001](https://github.com/orhun/git-cliff/issues/8001)) +- Enhance: Forward report (#8001) * implement sending AP Flag object @@ -12379,7 +15017,7 @@ makes sense to correct this on our side. * Update get-note-menu.ts Co-authored-by: syuilo -- Enhance: e2eテストをできるだけ改良してみた ([#8159](https://github.com/orhun/git-cliff/issues/8159)) +- Enhance: e2eテストをできるだけ改良してみた (#8159) * update docker image? @@ -12497,7 +15135,7 @@ Co-authored-by: syuilo - Enhance: convert svg to png of custom emojis -- Refactor, enhance: ドライブ引数のオブジェクト化, 追加時のcomment指定 ([#8180](https://github.com/orhun/git-cliff/issues/8180)) +- Refactor, enhance: ドライブ引数のオブジェクト化, 追加時のcomment指定 (#8180) * refactor: ドライブの引数をオブジェクト化する Resolve #8177 @@ -12508,7 +15146,7 @@ Co-authored-by: syuilo * archivePath - Refactor(backend): use insert instead of save -- Enhance: Improve poll-editor UI + composition port ([#8186](https://github.com/orhun/git-cliff/issues/8186)) +- Enhance: Improve poll-editor UI + composition port (#8186) * Poll editor UI changes @@ -12529,7 +15167,7 @@ Co-authored-by: syuilo - Refactor(backend): fix type -- Enhance: MediaListでは、サーバーで許可された形式しか表示しないように ([#8113](https://github.com/orhun/git-cliff/issues/8113)) +- Enhance: MediaListでは、サーバーで許可された形式しか表示しないように (#8113) * wip @@ -12550,7 +15188,7 @@ Co-authored-by: syuilo - Refactor(client): use setup sugar -- Enhance: メニュー関連をComposition API化、switchアイテム追加 ([#8215](https://github.com/orhun/git-cliff/issues/8215)) +- Enhance: メニュー関連をComposition API化、switchアイテム追加 (#8215) * メニューをComposition API化、switchアイテム追加 クライアントサイド画像圧縮の準備 @@ -12568,7 +15206,7 @@ Co-authored-by: syuilo * Fix * clean up -- Refactor: APIで非JSON入力の型変換はendpointに渡す前に行うように ([#8229](https://github.com/orhun/git-cliff/issues/8229)) +- Refactor: APIで非JSON入力の型変換はendpointに渡す前に行うように (#8229) * Resolve #8228 @@ -12625,7 +15263,7 @@ Co-authored-by: syuilo - Refactor: better getChart result type -- Refactor: use ajv instead of cafy ([#8324](https://github.com/orhun/git-cliff/issues/8324)) +- Refactor: use ajv instead of cafy (#8324) * wip @@ -12754,7 +15392,7 @@ Co-authored-by: Johann150 - Refactor -- Refactor: Use ESM ([#8358](https://github.com/orhun/git-cliff/issues/8358)) +- Refactor: Use ESM (#8358) * wip @@ -12783,7 +15421,7 @@ Co-authored-by: Johann150 - Refactor -- Refactor: migrate to typeorm 3.0 ([#8443](https://github.com/orhun/git-cliff/issues/8443)) +- Refactor: migrate to typeorm 3.0 (#8443) * wip @@ -12814,7 +15452,7 @@ Co-authored-by: Johann150 - Refactor -- Enhance(doc): required input fields ([#8456](https://github.com/orhun/git-cliff/issues/8456)) +- Enhance(doc): required input fields (#8456) * remove empty file @@ -12851,7 +15489,7 @@ Defaults for `local` and `withFiles` are based on the behaviour of the endpoint. * update changelog Co-authored-by: syuilo -- Enhance: タッチパッド・タッチスクリーンでのデッキの操作性を向上 ([#8450](https://github.com/orhun/git-cliff/issues/8450)) +- Enhance: タッチパッド・タッチスクリーンでのデッキの操作性を向上 (#8450) * enhance experience of deck with touchpad @@ -12878,7 +15516,7 @@ Co-authored-by: syuilo Close #8481 -- Refactor: move typings to devDependencies ([#8500](https://github.com/orhun/git-cliff/issues/8500)) +- Refactor: move typings to devDependencies (#8500) - Refactor: fix type @@ -12909,18 +15547,18 @@ Resolve #8467 - Refactor: use structuredClone for deep clone -- Refactor(meta): split package lints into separate workflows ([#8530](https://github.com/orhun/git-cliff/issues/8530)) +- Refactor(meta): split package lints into separate workflows (#8530) -- Enhance: only render public notes in HTML template ([#8527](https://github.com/orhun/git-cliff/issues/8527)) +- Enhance: only render public notes in HTML template (#8527) * only render public notes in HTML template * fix missing import -- Refactor: use composition API ([#8541](https://github.com/orhun/git-cliff/issues/8541)) +- Refactor: use composition API (#8541) -- Enhance: ドライブに画像ファイルをアップロードするときオリジナル画像を破棄してwebpublicのみ保持するオプション ([#8216](https://github.com/orhun/git-cliff/issues/8216)) +- Enhance: ドライブに画像ファイルをアップロードするときオリジナル画像を破棄してwebpublicのみ保持するオプション (#8216) * wip @@ -12995,16 +15633,16 @@ Co-authored-by: tamaina Co-authored-by: mei23 Co-authored-by: MeiMei <30769358+mei23@users.noreply.github.com> -- Refactor(client): refactor api-console to use Composition API ([#8566](https://github.com/orhun/git-cliff/issues/8566)) +- Refactor(client): refactor api-console to use Composition API (#8566) -- Refactor(client): refactor scratchpad to use Composition API ([#8565](https://github.com/orhun/git-cliff/issues/8565)) +- Refactor(client): refactor scratchpad to use Composition API (#8565) -- Refactor(client): refactor import-export to use Composition API ([#8579](https://github.com/orhun/git-cliff/issues/8579)) +- Refactor(client): refactor import-export to use Composition API (#8579) -- Refactor: use Vite to build instead of webpack ([#8575](https://github.com/orhun/git-cliff/issues/8575)) +- Refactor: use Vite to build instead of webpack (#8575) * update stream.ts @@ -13267,40 +15905,40 @@ This reverts commit 12741b3d89950a31dbb1bb81477ddb27b0e9951a. Co-authored-by: Acid Chicken (硫酸鶏) Co-authored-by: syuilo -- Refactor(client): refactor settings/accounts to use Composition API ([#8604](https://github.com/orhun/git-cliff/issues/8604)) +- Refactor(client): refactor settings/accounts to use Composition API (#8604) -- Refactor(client): refactor settings/theme to use Composition API ([#8595](https://github.com/orhun/git-cliff/issues/8595)) +- Refactor(client): refactor settings/theme to use Composition API (#8595) -- Refactor(client): refactor settings/security to use Composition API ([#8592](https://github.com/orhun/git-cliff/issues/8592)) +- Refactor(client): refactor settings/security to use Composition API (#8592) -- Refactor(client): refactor settings/plugin/install to use Composition API ([#8591](https://github.com/orhun/git-cliff/issues/8591)) +- Refactor(client): refactor settings/plugin/install to use Composition API (#8591) -- Refactor(client): refactor settings/plugin to use Composition API ([#8590](https://github.com/orhun/git-cliff/issues/8590)) +- Refactor(client): refactor settings/plugin to use Composition API (#8590) -- Refactor(client): refactor settings/drive to use Composition API ([#8573](https://github.com/orhun/git-cliff/issues/8573)) +- Refactor(client): refactor settings/drive to use Composition API (#8573) -- Refactor(client): refactor settings/apps to use Composition API ([#8570](https://github.com/orhun/git-cliff/issues/8570)) +- Refactor(client): refactor settings/apps to use Composition API (#8570) -- Refactor(client): refactor settings/api to use Composition API ([#8569](https://github.com/orhun/git-cliff/issues/8569)) +- Refactor(client): refactor settings/api to use Composition API (#8569) -- Refactor(client): refactor 2FA settings to Composition API ([#8599](https://github.com/orhun/git-cliff/issues/8599)) +- Refactor(client): refactor 2FA settings to Composition API (#8599) -- Refactor(client): refactor settings/deck to use Composition API ([#8598](https://github.com/orhun/git-cliff/issues/8598)) +- Refactor(client): refactor settings/deck to use Composition API (#8598) -- Refactor(client): refactor settings/word-mute to use Composition API ([#8597](https://github.com/orhun/git-cliff/issues/8597)) +- Refactor(client): refactor settings/word-mute to use Composition API (#8597) -- Refactor(client): refactor settings/theme/manage to use Composition API ([#8596](https://github.com/orhun/git-cliff/issues/8596)) +- Refactor(client): refactor settings/theme/manage to use Composition API (#8596) - Enhance: Display TOTP Register URL @@ -13309,25 +15947,25 @@ Close #7261 Co-Authored-By: tamaina -- Refactor(client): refactor admin/ads to use Composition API ([#8649](https://github.com/orhun/git-cliff/issues/8649)) +- Refactor(client): refactor admin/ads to use Composition API (#8649) -- Refactor(client): refactor admin/announcements to use Composition API ([#8650](https://github.com/orhun/git-cliff/issues/8650)) +- Refactor(client): refactor admin/announcements to use Composition API (#8650) -- Refactor(client): refactor my-antennas/index to use Composition API ([#8679](https://github.com/orhun/git-cliff/issues/8679)) +- Refactor(client): refactor my-antennas/index to use Composition API (#8679) -- Refactor(client): refactor admin/proxy-account to use Composition API ([#8675](https://github.com/orhun/git-cliff/issues/8675)) +- Refactor(client): refactor admin/proxy-account to use Composition API (#8675) -- Refactor(client): refactor admin/object-storage to use Composition API ([#8666](https://github.com/orhun/git-cliff/issues/8666)) +- Refactor(client): refactor admin/object-storage to use Composition API (#8666) -- Refactor(client): refactor admin/instance-block to use Composition API ([#8663](https://github.com/orhun/git-cliff/issues/8663)) +- Refactor(client): refactor admin/instance-block to use Composition API (#8663) -- Enhance: Perform port diagnosis at startup only when Listen fails ([#8698](https://github.com/orhun/git-cliff/issues/8698)) +- Enhance: Perform port diagnosis at startup only when Listen fails (#8698) * Change port check @@ -13336,7 +15974,7 @@ Co-Authored-By: tamaina * CHANGELOG * Smart message -- Enhance: uniform theme color ([#8702](https://github.com/orhun/git-cliff/issues/8702)) +- Enhance: uniform theme color (#8702) * enhance: make theme color format uniform @@ -13354,10 +15992,10 @@ Fixes theme colors of other instances as well as the local instance. * add changelog entry Co-authored-by: syuilo -- Refactor(client): refactor admin/settings to use Composition API ([#8678](https://github.com/orhun/git-cliff/issues/8678)) +- Refactor(client): refactor admin/settings to use Composition API (#8678) -- Enhance(MFM): limit large MFM ([#8540](https://github.com/orhun/git-cliff/issues/8540)) +- Enhance(MFM): limit large MFM (#8540) * add CSS classes for zoom MFM @@ -13368,7 +16006,7 @@ Co-authored-by: syuilo Co-authored-by: Acid Chicken (硫酸鶏) Co-authored-by: Acid Chicken (硫酸鶏) -- Enhance: page image component with alt text ([#8634](https://github.com/orhun/git-cliff/issues/8634)) +- Enhance: page image component with alt text (#8634) * refactor to composition API @@ -13383,10 +16021,10 @@ This improves user experience because alt text is displayed correctly. * fix - Refactor -- Refactor(client): refactor admin/other-settings to use Composition API ([#8667](https://github.com/orhun/git-cliff/issues/8667)) +- Refactor(client): refactor admin/other-settings to use Composition API (#8667) -- Refactor: temporary files ([#8713](https://github.com/orhun/git-cliff/issues/8713)) +- Refactor: temporary files (#8713) * simplify temporary files for thumbnails @@ -13421,7 +16059,7 @@ code in a try...finally statement where the finally runs the cleanup. - Enhance: clearly link documentation fix #8744 -- Enhance: replace signin CAPTCHA with rate limit ([#8740](https://github.com/orhun/git-cliff/issues/8740)) +- Enhance: replace signin CAPTCHA with rate limit (#8740) * enhance: rate limit works without signed in user @@ -13444,12 +16082,12 @@ This reverts commit b21b0580058c14532ff3f4033e2a9147643bfca6. * fix: better error message * enhance: only handle prefix of IPv6 -- Refactor: use css module at components/global/loading.vue ([#8750](https://github.com/orhun/git-cliff/issues/8750)) +- Refactor: use css module at components/global/loading.vue (#8750) * refactor: use css module at components/global/loading.vue * rename class name to "root" -- Refactor: improve code quality ([#8751](https://github.com/orhun/git-cliff/issues/8751)) +- Refactor: improve code quality (#8751) * remove unnecessary if @@ -13492,14 +16130,14 @@ The `ago` variable will always be a number and all non-negative numbers are already covered by other cases, the negative case is handled with `future` so there is no case when `unkown` could be achieved. - Enhance(dev): ask for log snippets -- Refactor: use awaitAll to reduce duplication ([#8791](https://github.com/orhun/git-cliff/issues/8791)) +- Refactor: use awaitAll to reduce duplication (#8791) * refactor: use awaitAll to reduce duplication * fix lint * fix typo -- Enhance: improve documentation for `/users/` endpoints ([#8790](https://github.com/orhun/git-cliff/issues/8790)) +- Enhance: improve documentation for `/users/` endpoints (#8790) * docs: category & description for reset password @@ -13518,7 +16156,7 @@ are already covered by other cases, the negative case is handled with * docs: descriptions & result type for user endpoints * docs: add return type for stats -- Refactor: follow button ([#8789](https://github.com/orhun/git-cliff/issues/8789)) +- Refactor: follow button (#8789) * fix: display cancelling follow request @@ -13536,7 +16174,7 @@ Use the same callback as later for updating these variables. * remove unused import Co-authored-by: blackskye-sx -- Enhance(federation): use ActivityPub defined property in favour of proprietary property. ([#8787](https://github.com/orhun/git-cliff/issues/8787)) +- Enhance(federation): use ActivityPub defined property in favour of proprietary property. (#8787) * add activitypub `source` property @@ -13547,12 +16185,12 @@ Co-authored-by: blackskye-sx - Enhance(client): improve file moderation ui -- Enhance: Improve player detection in URL preview ([#8849](https://github.com/orhun/git-cliff/issues/8849)) +- Enhance: Improve player detection in URL preview (#8849) * enhance: Improve player detection in URL preview * CHANGELOG -- Refactor: チャットルームをComposition API化 ([#8850](https://github.com/orhun/git-cliff/issues/8850)) +- Refactor: チャットルームをComposition API化 (#8850) * pick form @@ -13573,7 +16211,7 @@ Co-authored-by: blackskye-sx * fix, :art: * test.1 -- Refactor(client): Refine routing ([#8846](https://github.com/orhun/git-cliff/issues/8846)) +- Refactor(client): Refine routing (#8846) - Refactor(client): use composition api @@ -13586,10 +16224,10 @@ Co-authored-by: blackskye-sx - Enhance(client): tweak ui -- Enhance: word mute checks CW ([#8873](https://github.com/orhun/git-cliff/issues/8873)) +- Enhance: word mute checks CW (#8873) -- Refactor: simplify ap/show with DbResolver ([#8838](https://github.com/orhun/git-cliff/issues/8838)) +- Refactor: simplify ap/show with DbResolver (#8838) Using the existing code in DbResolver we can avoid separate code for parsing the URIs in this endpoint. @@ -13597,7 +16235,7 @@ parsing the URIs in this endpoint. Co-authored-by: syuilo - Refactor(client): use composition api -- Enhance: Redisをioredisに統一してIPv6サポート ([#8869](https://github.com/orhun/git-cliff/issues/8869)) +- Enhance: Redisをioredisに統一してIPv6サポート (#8869) * Use ioredis, Supports IPv6 host @@ -13624,7 +16262,7 @@ https://github.com/misskey-dev/misskey/issues/8862 Co-authored-by: syuilo - Refactor: remove unused import -- Refactor: notification setting window composition API ([#8860](https://github.com/orhun/git-cliff/issues/8860)) +- Refactor: notification setting window composition API (#8860) * refactor: notification setting window composition API @@ -13641,7 +16279,7 @@ Co-authored-by: syuilo あと`onUnmounted`を`onMounted`内で呼んでいたりしたのを修正したりとか -- Enhance(client): Enhance boot error display ([#8879](https://github.com/orhun/git-cliff/issues/8879)) +- Enhance(client): Enhance boot error display (#8879) * Change boot error message @@ -13650,7 +16288,7 @@ Co-authored-by: syuilo * :v: * fix -- Refactor: remove duplicate code ([#8895](https://github.com/orhun/git-cliff/issues/8895)) +- Refactor: remove duplicate code (#8895) - Refactor(client): use setup syntax @@ -13717,7 +16355,7 @@ more accurately. - Enhance(client): make widgets available on tablet again -- Enhance: Styled error screen ([#8946](https://github.com/orhun/git-cliff/issues/8946)) +- Enhance: Styled error screen (#8946) * Styled error screen @@ -13762,7 +16400,7 @@ more accurately. * Responsive * Also hide splash -- Enhance: show recipients of notes with specified visibility ([#8949](https://github.com/orhun/git-cliff/issues/8949)) +- Enhance: show recipients of notes with specified visibility (#8949) * enhance: reusable visibility component @@ -13781,7 +16419,7 @@ Co-authored-by: syuilo - Enhance: make active email validation configurable -- Enhance(sw): If receiving a push notification issued more than a day, ignore it. ([#8980](https://github.com/orhun/git-cliff/issues/8980)) +- Enhance(sw): If receiving a push notification issued more than a day, ignore it. (#8980) * enhance(sw): ignore old push notification @@ -13796,7 +16434,7 @@ Co-authored-by: syuilo - Enhance(client): improve widgets component -- Enhance: read theme color nodeinfo ([#8977](https://github.com/orhun/git-cliff/issues/8977)) +- Enhance: read theme color nodeinfo (#8977) * provide theme color in nodeinfo metadata @@ -13806,7 +16444,7 @@ Prefer to read the theme color from the nodeinfo since it is more performant than performing selector search on a DOM. - Refactor(client): rename menu(sidebar) -> navbar -- Refactor(client): remove useCssModule ([#8999](https://github.com/orhun/git-cliff/issues/8999)) +- Refactor(client): remove useCssModule (#8999) * refactor(client): remove useCssModule() @@ -13817,7 +16455,7 @@ performant than performing selector search on a DOM. This reverts commit 639746786bb7e3342db9cbd3452854fc29aacf88. - Enhance(client): RSSティッカーで表示順序をシャッフルできるように -- Refactor: signup component as composition api ([#8957](https://github.com/orhun/git-cliff/issues/8957)) +- Refactor: signup component as composition api (#8957) - Refactor(client): use setup syntax @@ -13884,17 +16522,17 @@ Fix #8817 - Test -- Test: e2eテストがCIで失敗していた問題をいくつか修正 ([#8642](https://github.com/orhun/git-cliff/issues/8642)) +- Test: e2eテストがCIで失敗していた問題をいくつか修正 (#8642) * test: indexeddbをテスト毎に初期化するように * fix: metaが無いときにfetch-metaを同時に呼ぶと死ぬことがある問題を修正 * test: ログイン後のクライアント側処理を待たずにリロードされてログイン出来ないことがあったのを修正 -- Test: `__dirname`はESModuleでは使えないので置き換えた ([#8626](https://github.com/orhun/git-cliff/issues/8626)) +- Test: `__dirname`はESModuleでは使えないので置き換えた (#8626) -- Test: Nodeのカスタムローダーを直してテストが動くように ([#8625](https://github.com/orhun/git-cliff/issues/8625)) +- Test: Nodeのカスタムローダーを直してテストが動くように (#8625) * test: Nodeのカスタムローダーを直してテストが動くように diff --git a/CODE_OF_CONDUCT.md b/CODE_OF_CONDUCT.md index 143c63d29c..4f215e8299 100644 --- a/CODE_OF_CONDUCT.md +++ b/CODE_OF_CONDUCT.md @@ -62,7 +62,7 @@ representative at an online or offline event. Instances of abusive, harassing, or otherwise unacceptable behavior may be reported to the community leaders responsible for enforcement at @thatonecalculator on Codeberg, -`@kainoa@calckey.social` on the Fediverse, +`@kainoa@firefish.social` on the Fediverse, or kainoa@t1c.dev via email. All complaints will be reviewed and investigated promptly and fairly. diff --git a/CONTRIBUTING.md b/CONTRIBUTING.md index b75dc9f35f..b9529ea737 100644 --- a/CONTRIBUTING.md +++ b/CONTRIBUTING.md @@ -1,56 +1,54 @@ # Contribution guide -We're glad you're interested in contributing Calckey! In this document you will find the information you need to contribute to the project. +We're glad you're interested in contributing Firefish! In this document you will find the information you need to contribute to the project. ## Translation (i18n) -Calckey uses [Weblate](hhttps://hosted.weblate.org/engage/calckey/) for translation and internationalization management. +Firefish uses [Weblate](https://hosted.weblate.org/engage/firefish/) for translation and internationalization management. If your language is not listed in Weblate, please open an issue. You can contribute without knowing how to code by helping translate here: -[![Translation status](https://hosted.weblate.org/widgets/calckey/-/287x66-grey.png)](https://hosted.weblate.org/engage/calckey/) +[![Translation status](https://hosted.weblate.org/widgets/firefish/-/287x66-grey.png)](https://hosted.weblate.org/engage/firefish/) -[![Translation bars](https://hosted.weblate.org/widgets/calckey/-/multi-auto.svg)](https://hosted.weblate.org/engage/calckey/) - -## Roadmap -See [CALCKEY.md](./CALCKEY.md) +[![Translation bars](https://hosted.weblate.org/widgets/firefish/-/multi-auto.svg)](https://hosted.weblate.org/engage/firefish/) ## Issues Before creating an issue, please check the following: - To avoid duplication, please search for similar issues before creating a new issue. - Do not use Issues to ask questions or troubleshooting. - Issues should only be used to feature requests, suggestions, and bug tracking. - - Please ask questions or troubleshooting in the [Matrix room](https://matrix.to/#/#calckey:matrix.fedibird.com). + - Please ask questions or troubleshooting in the [Matrix room](https://matrix.to/#/#firefish:matrix.fedibird.com). > **Warning** > Do not close issues that are about to be resolved. It should remain open until a commit that actually resolves it is merged. ## Before implementation -When you want to add a feature or fix a bug, **first have the design and policy reviewed in an Issue** (if it is not there, please make one). Without this step, there is a high possibility that the PR will not be merged even if it is implemented. +When you want to add a feature or fix a bug, **first have the design and policy reviewed in an Issue** (if it is not there, please make one). Without this step, there is a high possibility that the MR will not be merged even if it is implemented. -At this point, you also need to clarify the goals of the PR you will create, and make sure that the other members of the team are aware of them. -PRs that do not have a clear set of do's and don'ts tend to be bloated and difficult to review. +At this point, you also need to clarify the goals of the MR you will create, and make sure that the other members of the team are aware of them. +MRs that do not have a clear set of do's and don'ts tend to be bloated and difficult to review. Also, when you start implementation, assign yourself to the Issue (if you cannot do it yourself, ask another member to assign you). By expressing your intention to work the Issue, you can prevent conflicts in the work. ## Well-known branches - The **`main`** branch is tracking the latest release and used for production purposes. - The **`develop`** branch is where we work for the next release. - - When you create a PR, basically target it to this branch. **But create a different branch** + - When you create a MR, basically target it to this branch. **But create a different branch** - The **`l10n_develop`** branch is reserved for localization management. - **`feature/*`** branches are reserved for the development of a specific feature -## Creating a PR -Thank you for your PR! Before creating a PR, please check the following: -- If possible, prefix the title with a keyword that identifies the type of this PR, as shown below. - - `fix` / `refactor` / `feat` / `enhance` / `perf` / `chore` etc. You are also welcome to use gitmoji. This is important as we use these to A) easier read the git history and B) generate our changelog. Without propper prefixing it is possible that your PR is rejected. - - Also, make sure that the granularity of this PR is appropriate. Please do not include more than one type of change or interest in a single PR. -- If there is an Issue which will be resolved by this PR, please include a reference to the Issue in the text. Good examples include `Closing: #21` or `Resolves: #21` +## Creating a merge request (MR) +Thank you for your MR! Before creating a MR, please check the following: +- If possible, prefix the title with a keyword that identifies the type of this MR, as shown below. + - `fix` / `refactor` / `feat` / `enhance` / `perf` / `chore` etc. You are also welcome to use gitmoji. This is important as we use these to A) easier read the git history and B) generate our changelog. Without propper prefixing it is possible that your MR is rejected. + - Also, make sure that the granularity of this MR is appropriate. Please do not include more than one type of change or interest in a single MR. +- If there is an Issue which will be resolved by this MR, please include a reference to the Issue in the text. Good examples include `Closing: #21` or `Resolves: #21` - Check if there are any documents that need to be created or updated due to this change. + - For example, you need to update `docs/api-change.md` if the MR includes API changes. - If you have added a feature or fixed a bug, please add a test case if possible. - Please make sure that formatting, tests and Lint are passed in advance. - You can run it with `pnpm run format`, `pnpm run test` and `pnpm run lint`. [See more info](#testing) -- If this PR includes UI changes, please attach a screenshot in the text. +- If this MR includes UI changes, please attach a screenshot in the text. Thanks for your cooperation 🤗 @@ -59,12 +57,12 @@ Be willing to comment on the good points and not just the things you want fixed ### Review perspective - Scope - - Are the goals of the PR clear? - - Is the granularity of the PR appropriate? + - Are the goals of the MR clear? + - Is the granularity of the MR appropriate? - Security - - Does merging this PR create a vulnerability? + - Does merging this MR create a vulnerability? - Performance - - Will merging this PR cause unexpected performance degradation? + - Will merging this MR cause unexpected performance degradation? - Is there a more efficient way? - Testing - Does the test ensure the expected behavior? @@ -72,12 +70,14 @@ Be willing to comment on the good points and not just the things you want fixed - Does it check for anomalies? ## Deploy (SOON) -The `/deploy` command by issue comment can be used to deploy the contents of a PR to the preview environment. +The `/deploy` command by issue comment can be used to deploy the contents of a MR to the preview environment. ``` /deploy sha= ``` An actual domain will be assigned so you can test the federation. +# THE FOLLOWING IS OUTDATED: + ## Merge ## Release @@ -98,9 +98,6 @@ During development, it is useful to use the `yarn dev` command. This command monitors the server-side and client-side source files and automatically builds them if they are modified. In addition, it will also automatically start the Misskey server process. - -# THE FOLLOWING IS OUTDATED: - ## Testing - Test codes are located in [`/test`](/test). diff --git a/COPYING b/COPYING index fb483b5235..27aeb01ac9 100644 --- a/COPYING +++ b/COPYING @@ -1,15 +1,24 @@ -Unless otherwise stated this repository is -Copyright © 2014-2022 syuilo and contributers -Copyright © 2022 thatonecalculator and contributers +Unless specified otherwise, the entirety of this repository is subject to the following: +Copyright © 2014-2023 syuilo and contributors +Copyright © 2022-2023 Kainoa Kanter and contributors And is distributed under The GNU Affero General Public License Version 3, you should have received a copy of the license file as LICENSE. +--- -Calckey includes several third-party Open-Source softwares. +These specific configuration directories: -Emoji keywords for Unicode 11 and below by Mu-An Chiou -License: MIT -https://github.com/muan/emojilib/blob/master/LICENSE +- .config/ +- custom/assets/ + +and their contents are +Copyright © 2022-2023 Kainoa Kanter and contributors + +And are distributed under The Apache License, Version 2.0, you should have received a copy of the license file as LICENSE in each specified directory. + +--- + +Firefish includes several third-party open-source softwares and software libraries. RsaSignature2017 implementation by Transmute Industries Inc License: MIT @@ -18,3 +27,7 @@ https://github.com/transmute-industries/RsaSignature2017/blob/master/LICENSE Machine learning model for sensitive images by Infinite Red, Inc. License: MIT https://github.com/infinitered/nsfwjs/blob/master/LICENSE + +Licenses for all softwares and software libraries installed via the Node Package Manager ("npm") can be found by running the following shell command in the root directory of this repository: + +pnpm licenses list diff --git a/Dockerfile b/Dockerfile index 744dba2115..c7d9a95d86 100644 --- a/Dockerfile +++ b/Dockerfile @@ -1,9 +1,14 @@ ## Install dev and compilation dependencies, build files -FROM alpine:3.18 as build -WORKDIR /calckey +FROM node:latest as build +WORKDIR /firefish # Install compilation dependencies -RUN apk add --no-cache --no-progress git alpine-sdk python3 nodejs-current npm rust cargo vips +RUN apt-get update && apt-get install -y libvips42 python3 git wget curl build-essential +RUN mkdir -m777 /opt/rust /opt/cargo +ENV RUSTUP_HOME=/opt/rust CARGO_HOME=/opt/cargo PATH=/opt/cargo/bin:$PATH +RUN wget --https-only --secure-protocol=TLSv1_2 -O- https://sh.rustup.rs | sh /dev/stdin -y +RUN printf '#!/bin/sh\nexport CARGO_HOME=/opt/cargo\nexec /bin/sh "$@"\n' >/usr/local/bin/sh +RUN chmod +x /usr/local/bin/sh # Copy only the cargo dependency-related files first, to cache efficiently COPY packages/backend/native-utils/Cargo.toml packages/backend/native-utils/Cargo.toml @@ -13,20 +18,20 @@ COPY packages/backend/native-utils/migration/Cargo.toml packages/backend/native- COPY packages/backend/native-utils/migration/src/lib.rs packages/backend/native-utils/migration/src/ # Install cargo dependencies -RUN cargo fetch --locked --manifest-path /calckey/packages/backend/native-utils/Cargo.toml +RUN cargo fetch --locked --manifest-path /firefish/packages/backend/native-utils/Cargo.toml # Copy only the dependency-related files first, to cache efficiently COPY package.json pnpm*.yaml ./ COPY packages/backend/package.json packages/backend/package.json COPY packages/client/package.json packages/client/package.json COPY packages/sw/package.json packages/sw/package.json -COPY packages/calckey-js/package.json packages/calckey-js/package.json +COPY packages/firefish-js/package.json packages/firefish-js/package.json COPY packages/megalodon/package.json packages/megalodon/package.json COPY packages/backend/native-utils/package.json packages/backend/native-utils/package.json COPY packages/backend/native-utils/npm/linux-x64-musl/package.json packages/backend/native-utils/npm/linux-x64-musl/package.json COPY packages/backend/native-utils/npm/linux-arm64-musl/package.json packages/backend/native-utils/npm/linux-arm64-musl/package.json -# Configure corepack and pnpm, and install dev mode dependencies for compilation +# Configure pnpm, and install dev mode dependencies for compilation RUN corepack enable && corepack prepare pnpm@latest --activate && pnpm i --frozen-lockfile # Copy in the rest of the native-utils rust files @@ -43,31 +48,31 @@ RUN env NODE_ENV=production sh -c "pnpm run --filter '!native-utils' build && pn RUN pnpm i --prod --frozen-lockfile ## Runtime container -FROM alpine:3.18 -WORKDIR /calckey +FROM node:latest +WORKDIR /firefish # Install runtime dependencies -RUN apk add --no-cache --no-progress tini ffmpeg vips-dev zip unzip nodejs-current +RUN apt-get update && apt-get install -y libvips-dev zip unzip tini ffmpeg COPY . ./ -COPY --from=build /calckey/packages/megalodon /calckey/packages/megalodon +COPY --from=build /firefish/packages/megalodon /firefish/packages/megalodon # Copy node modules -COPY --from=build /calckey/node_modules /calckey/node_modules -COPY --from=build /calckey/packages/backend/node_modules /calckey/packages/backend/node_modules -COPY --from=build /calckey/packages/sw/node_modules /calckey/packages/sw/node_modules -COPY --from=build /calckey/packages/client/node_modules /calckey/packages/client/node_modules -COPY --from=build /calckey/packages/calckey-js/node_modules /calckey/packages/calckey-js/node_modules +COPY --from=build /firefish/node_modules /firefish/node_modules +COPY --from=build /firefish/packages/backend/node_modules /firefish/packages/backend/node_modules +COPY --from=build /firefish/packages/sw/node_modules /firefish/packages/sw/node_modules +COPY --from=build /firefish/packages/client/node_modules /firefish/packages/client/node_modules +COPY --from=build /firefish/packages/firefish-js/node_modules /firefish/packages/firefish-js/node_modules # Copy the finished compiled files -COPY --from=build /calckey/built /calckey/built -COPY --from=build /calckey/packages/backend/built /calckey/packages/backend/built -COPY --from=build /calckey/packages/backend/assets/instance.css /calckey/packages/backend/assets/instance.css -COPY --from=build /calckey/packages/backend/native-utils/built /calckey/packages/backend/native-utils/built +COPY --from=build /firefish/built /firefish/built +COPY --from=build /firefish/packages/backend/built /firefish/packages/backend/built +COPY --from=build /firefish/packages/backend/assets/instance.css /firefish/packages/backend/assets/instance.css +COPY --from=build /firefish/packages/backend/native-utils/built /firefish/packages/backend/native-utils/built RUN corepack enable && corepack prepare pnpm@latest --activate ENV NODE_ENV=production -VOLUME "/calckey/files" -ENTRYPOINT [ "/sbin/tini", "--" ] +VOLUME "/firefish/files" +ENTRYPOINT [ "/usr/bin/tini", "--" ] CMD [ "pnpm", "run", "migrateandstart" ] diff --git a/README.md b/README.md index 2e6907e306..aad5b4d8b3 100644 --- a/README.md +++ b/README.md @@ -1,30 +1,28 @@
- - Calckey logo + + Firefish logo -**🌎 **[Calckey](https://calckey.org/)** is an open source, decentralized social media platform that's free forever! 🚀** +**🌎 **[Firefish](https://joinfirefish.org/)** is an open source, decentralized social media platform that's free forever! 🚀** [![no github badge](https://nogithub.codeberg.page/badge.svg)](https://nogithub.codeberg.page/) -[![status badge](https://ci.codeberg.org/api/badges/calckey/calckey/status.svg)](https://ci.codeberg.org/calckey/calckey) -[![opencollective badge](https://opencollective.com/calckey/tiers/badge.svg)](https://opencollective.com/Calckey) + +[![opencollective badge](https://opencollective.com/firefish/tiers/badge.svg)](https://opencollective.com/Firefish) [![liberapay badge](https://img.shields.io/liberapay/receives/ThatOneCalculator?logo=liberapay)](https://liberapay.com/ThatOneCalculator) -[![translate-badge](https://hosted.weblate.org/widgets/calckey/-/svg-badge.svg)](https://hosted.weblate.org/engage/calckey/) -[![docker badge](https://img.shields.io/docker/pulls/thatonecalculator/calckey?logo=docker)](https://hub.docker.com/r/thatonecalculator/calckey) +[![translate-badge](https://hosted.weblate.org/widgets/firefish/-/svg-badge.svg)](https://hosted.weblate.org/engage/firefish/) + [![Contributor Covenant](https://img.shields.io/badge/Contributor%20Covenant-2.1-4baaaa.svg)](./CODE_OF_CONDUCT.md) -[![Codeberg badge](https://custom-icon-badges.demolab.com/badge/hosted%20on-codeberg-4793CC.svg?logo=codeberg&logoColor=white)](https://codeberg.org/calckey/calckey/)
-Calc (the Calckey mascot) smoking a fat dart + -# ✨ About Calckey +# ✨ About Firefish -- Calckey is based off of Misskey, a powerful microblogging server on ActivityPub with features such as emoji reactions, a customizable web UI, rich chatting, and much more! -- Calckey adds many quality of life changes and bug fixes for users and server admins alike. -- Read **[this document](./CALCKEY.md)** all for current and future differences. +- Firefish is based off of Misskey, a powerful microblogging server on ActivityPub with features such as emoji reactions, a customizable web UI, rich chatting, and much more! +- Firefish adds many quality of life changes and bug fixes for users and server admins alike. - Notable differences: - Improved UI/UX (especially on mobile) - Post editing @@ -41,7 +39,9 @@ - Backfill user information - Advanced search - Many more user and admin settings - - [So much more!](./CALCKEY.md) + - Many bug fixes and performance improvements + - Link verification + - So much more!
@@ -51,45 +51,53 @@ ### Want to get involved? Great! -- If you have the means to, [donations](https://opencollective.com/Calckey) are a great way to keep us going. +- If you have the means to, [donations](https://opencollective.com/Firefish) are a great way to keep us going. - If you know how to program in TypeScript, Vue, or Rust, read the [contributing](./CONTRIBUTING.md) document. -- If you know a non-English language, translating Calckey on [Weblate](https://hosted.weblate.org/engage/calckey/) help bring Calckey to more people. No technical experience needed! -- Want to write/report about us, have any professional inquiries, or just have questions to ask? Contact us [here!](https://calckey.org/contact/) +- If you know a non-English language, translating Firefish on [Weblate](https://hosted.weblate.org/engage/firefish/) help bring Firefish to more people. No technical experience needed! +- Want to write/report about us, have any professional inquiries, or just have questions to ask? Contact us [here!](https://joinfirefish.org/contact/) ### All links -- 🌐 Homepage: +- 🌐 Homepage: - 💸 Donations: - - OpenCollective: + - OpenCollective: - Liberapay: - Donate publicly to get your name on the Patron list! -- 🚢 Flagship server: -- 💁 Matrix support room: -- 📣 Official account: -- 📜 Server list: -- ✍️ Weblate: -- ️️📬 Contact: +- 🚢 Flagship server: +- 💁 Matrix support room: +- 📣 Official account: @firefish +- 📜 Server list: +- ✍️ Weblate: +- ️️📬 Contact: # 🌠 Getting started +Want to just join a Firefish server? View the list here, pick one, and join: + +### https://joinfirefish.org/join + +--- + +Want to make your own? Keep reading! + This guide will work for both **starting from scratch** and **migrating from Misskey**. ## 🔰 Easy installers If you have access to a server that supports one of the sources below, I recommend you use it! Note that these methods *won't* allow you to migrate from Misskey without manual intervention. -[![Install on Ubuntu](https://pool.jortage.com/voringme/misskey/3b62a443-1b44-45cf-8f9e-f1c588f803ed.png)](https://codeberg.org/calckey/ubuntu-bash-install)  [![Install on the Arch User Repository](https://pool.jortage.com/voringme/misskey/ba2a5c07-f078-43f1-8483-2e01acca9c40.png)](https://aur.archlinux.org/packages/calckey)  [![Install Calckey with YunoHost](https://install-app.yunohost.org/install-with-yunohost.svg)](https://install-app.yunohost.org/?app=calckey) +[![Install on Ubuntu](https://pool.jortage.com/voringme/misskey/3b62a443-1b44-45cf-8f9e-f1c588f803ed.png)](https://git.joinfirefish.org/firefish/ubuntu-bash-install)  [![Install on the Arch User Repository](https://pool.jortage.com/voringme/misskey/ba2a5c07-f078-43f1-8483-2e01acca9c40.png)](https://aur.archlinux.org/packages/firefish)  [![Install Firefish with YunoHost](https://install-app.yunohost.org/install-with-yunohost.svg)](https://install-app.yunohost.org/?app=firefish) ## 🛳️ Containerization -- [🐳 How to run Calckey with Docker](https://codeberg.org/calckey/calckey/src/branch/develop/docs/docker.md) -- [🛞 How to run Calckey with Kubernetes/Helm](https://codeberg.org/calckey/calckey/src/branch/develop/docs/kubernetes.md) +- [🐳 How to run Firefish with Docker](https://git.joinfirefish.org/firefish/firefish/-/blob/develop/docs/docker.md) +- [🛞 How to run Firefish with Kubernetes/Helm](https://git.joinfirefish.org/firefish/firefish/-/blob/develop/docs/kubernetes.md) ## 🧑‍💻 Dependencies - 🐢 At least [NodeJS](https://nodejs.org/en/) v18.16.0 (v20 recommended) - 🐘 At least [PostgreSQL](https://www.postgresql.org/) v12 (v14 recommended) -- 🍱 At least [Redis](https://redis.io/) v6 (v7 recommended) +- 🍱 At least [Redis](https://redis.io/) v7 - Web Proxy (one of the following) - 🍀 Nginx (recommended) - 🦦 Caddy @@ -107,7 +115,7 @@ If you have access to a server that supports one of the sources below, I recomme - 🐲 [DragonflyDB](https://www.dragonflydb.io/) (recommended) - 👻 [KeyDB](https://keydb.dev/) - 🍱 Another [Redis](https://redis.io/) server - + ### 🏗️ Build dependencies - 🦀 At least [Rust](https://www.rust-lang.org/) v1.68.0 @@ -119,8 +127,8 @@ If you have access to a server that supports one of the sources below, I recomme ## 👀 Get folder ready ```sh -git clone https://codeberg.org/calckey/calckey.git -cd calckey/ +git clone https://git.joinfirefish.org/firefish/firefish.git +cd firefish/ ``` > **Note** @@ -146,23 +154,23 @@ pm2 install pm2-logrotate ``` > **Note** -> [`pm2-logrotate`](https://github.com/keymetrics/pm2-logrotate/blob/master/README.md) ensures that log files don't infinitely gather size, as Calckey produces a lot of logs. +> [`pm2-logrotate`](https://github.com/keymetrics/pm2-logrotate/blob/master/README.md) ensures that log files don't infinitely gather size, as Firefish produces a lot of logs. ## 🐘 Create database In PostgreSQL (`psql`), run the following command: ```sql -CREATE DATABASE calckey WITH encoding = 'UTF8'; +CREATE DATABASE firefish WITH encoding = 'UTF8'; ``` or run the following from the command line: ```sh -psql postgres -c "create database calckey with encoding = 'UTF8';" +psql postgres -c "create database firefish with encoding = 'UTF8';" ``` -In Calckey's directory, fill out the `db` section of `.config/default.yml` with the correct information, where the `db` key is `calckey`. +In Firefish's directory, fill out the `db` section of `.config/default.yml` with the correct information, where the `db` key is `firefish`. ## 💰 Caching server @@ -179,7 +187,7 @@ Follow sonic's [installation guide](https://github.com/valeriansaliou/sonic#inst > **Note** > If you use IPv4: in Sonic's directory, edit the `config.cfg` file to change `inet` to `"0.0.0.0:1491"`. -In Calckey's directory, fill out the `sonic` section of `.config/default.yml` with the correct information. +In Firefish's directory, fill out the `sonic` section of `.config/default.yml` with the correct information. ### Meilisearch @@ -187,11 +195,11 @@ Meilisearch is better suited for larger deployments. It's faster but uses far mo Follow Meilisearch's [quick start guide](https://www.meilisearch.com/docs/learn/getting_started/quick_start) -In Calckey's directory, fill out the `meilisearch` section of `.config/default.yml` with the correct information. +In Firefish's directory, fill out the `meilisearch` section of `.config/default.yml` with the correct information. ### ElasticSearch -Please don't use ElasticSearch unless you already have an ElasticSearch setup and want to continue using it for Calckey. ElasticSearch is slow, heavy, and offers very few benefits over Sonic/Meilisearch. +Please don't use ElasticSearch unless you already have an ElasticSearch setup and want to continue using it for Firefish. ElasticSearch is slow, heavy, and offers very few benefits over Sonic/Meilisearch. ## 💅 Customize @@ -201,6 +209,7 @@ Please don't use ElasticSearch unless you already have an ElasticSearch setup an - To add custom error images, place them in the `./custom/assets/badges` directory, replacing the files already there. - To add custom sounds, place only mp3 files in the `./custom/assets/sounds` directory. - To update custom assets without rebuilding, just run `pnpm run gulp`. +- To block ChatGPT, CommonCrawl, or other crawlers from indexing your instance, uncomment the respective rules in `./custom/robots.txt`. ## 🧑‍🔬 Configuring a new server @@ -208,17 +217,17 @@ Please don't use ElasticSearch unless you already have an ElasticSearch setup an - Edit `.config/default.yml`, making sure to fill out required fields. - Also copy and edit `.config/docker_example.env` to `.config/docker.env` if you're using Docker. -## 🚚 Migrating from Misskey to Calckey +## 🚚 Migrating from Misskey/FoundKey to Firefish -For migrating from Misskey v13, Misskey v12, and Foundkey, read [this document](https://codeberg.org/calckey/calckey/src/branch/develop/docs/migrate.md). +For migrating from Misskey v13, Misskey v12, and FoundKey, read [this document](https://git.joinfirefish.org/firefish/firefish/-/blob/develop/docs/migrate.md). ## 🌐 Web proxy ### 🍀 Nginx (recommended) -- Run `sudo cp ./calckey.nginx.conf /etc/nginx/sites-available/ && cd /etc/nginx/sites-available/` -- Edit `calckey.nginx.conf` to reflect your server properly -- Run `sudo ln -s ./calckey.nginx.conf ../sites-enabled/calckey.nginx.conf` +- Run `sudo cp ./firefish.nginx.conf /etc/nginx/sites-available/ && cd /etc/nginx/sites-available/` +- Edit `firefish.nginx.conf` to reflect your server properly +- Run `sudo ln -s ./firefish.nginx.conf ../sites-enabled/firefish.nginx.conf` - Run `sudo nginx -t` to validate that the config is valid, then restart the NGINX service. ### 🦦 Caddy @@ -234,29 +243,29 @@ example.tld { ### 🪶 Apache > **Warning** -> Apache has some known problems with Calckey. Only use it if you have to. +> Apache has some known problems with Firefish. Only use it if you have to. -- Run `sudo cp ./calckey.apache.conf /etc/apache2/sites-available/ && cd /etc/apache2/sites-available/` -- Edit `calckey.apache.conf` to reflect your server properly -- Run `sudo a2ensite calckey.apache` to enable the site +- Run `sudo cp ./firefish.apache.conf /etc/apache2/sites-available/ && cd /etc/apache2/sites-available/` +- Edit `firefish.apache.conf` to reflect your server properly +- Run `sudo a2ensite firefish.apache` to enable the site - Run `sudo service apache2 restart` to reload apache2 configuration ## 🚀 Build and launch! ### 🐢 NodeJS + pm2 -#### `git pull` and run these steps to update Calckey in the future! +#### `git pull` and run these steps to update Firefish in the future! ```sh # git pull pnpm install NODE_ENV=production pnpm run build && pnpm run migrate -pm2 start "NODE_ENV=production pnpm run start" --name Calckey +pm2 start "NODE_ENV=production pnpm run start" --name Firefish ``` ## 😉 Tips & Tricks -- When editing the config file, please don't fill out the settings at the bottom. They're designed *only* for managed hosting, not self hosting. Those settings are much better off being set in Calckey's control panel. -- Port 3000 (used in the default config) might be already used on your server for something else. To find an open port for Calckey, run `for p in {3000..4000}; do ss -tlnH | tr -s ' ' | cut -d" " -sf4 | grep -q "${p}$" || echo "${p}"; done | head -n 1`. Replace 3000 with the minimum port and 4000 with the maximum port if you need it. +- When editing the config file, please don't fill out the settings at the bottom. They're designed *only* for managed hosting, not self hosting. Those settings are much better off being set in Firefish's control panel. +- Port 3000 (used in the default config) might be already used on your server for something else. To find an open port for Firefish, run `for p in {3000..4000}; do ss -tlnH | tr -s ' ' | cut -d" " -sf4 | grep -q "${p}$" || echo "${p}"; done | head -n 1`. Replace 3000 with the minimum port and 4000 with the maximum port if you need it. - I'd recommend you use a S3 Bucket/CDN for Object Storage, especially if you use Docker. - I'd ***strongly*** recommend against using CloudFlare, but if you do, make sure to turn code minification off. - For push notifications, run `npx web-push generate-vapid-keys`, then put the public and private keys into Control Panel > General > ServiceWorker. @@ -264,6 +273,6 @@ pm2 start "NODE_ENV=production pnpm run start" --name Calckey - To add another admin account: - Go to the user's page > 3 Dots > About > Moderation > turn on "Moderator" - Go back to Overview > click the clipboard icon next to the ID - - Run `psql -d calckey` (or whatever the database name is) + - Run `psql -d firefish` (or whatever the database name is) - Run `UPDATE "user" SET "isAdmin" = true WHERE id='999999';` (replace `999999` with the copied ID) - - Restart your Calckey server + - Restart your Firefish server diff --git a/RELEASE_NOTES.md b/RELEASE_NOTES.md new file mode 100644 index 0000000000..6dfe9de20f --- /dev/null +++ b/RELEASE_NOTES.md @@ -0,0 +1,120 @@ +# Firefish + +Welcome to the new era of FIREFISH! + + + +# Changelog + +## Major changes from last release candidate + +- Firefish branding and [new repo](https://git.joinfirefish.org/firefish/firefish)! +- Far better Mastodon API support +- Edits are now non-experimental +- Support for secondary cache server +- Link verification with `rel=me` +- Store antennas in cache +- Post imports with media +- Sytle fixes +- More translations +- Performance upgrades +- Bug fixes +- Faster build +- [FoundKey](https://genau.qwertqwefsday.eu/notes/9h0lqlg05m) -> Firefish migration fixes + +## Major changes from stable + +All of the above, plus: + +- Post editing +- Post imports +- New post design +- New header design +- Better accessibility +- Server silences +- Modmail +- New MFM effects +- Meilisearch search engine +- Channel search +- Improved system emails +- cuid2 IDs +- Emoji skin tones +- New 2FA flow +- Reduced visual clutter +- Deck view improvements + +# Upgrading + +## If upgrading from v13 (old stable) + +**In addition to the rest of the steps after this**: + +- Install the Rust toolchain (v1.68.0 or higher): + +- (Optional) install Meilisearch to use as a search engine instead of Sonic: + +- Replace your config file (`.config/default.yml`) with a blank version of the example (`.config/example.yml`) and re-enter the information. This will make things easier. + +## Dependencies + +- Upgrade to at least Node v20.3.1 (v20.4.0 recommended). + +- (Optional, recommended) install DragonflyDB and configure under `cacheServer`: + +## Set new repo and pull + +```sh +git remote set-url origin https://git.joinfirefish.org/firefish/firefish.git +git pull --ff +``` + +In case you get an error like: +``` +error: The following untracked working tree files would be overwritten by merge: + packages/backend/assets/LICENSE +Please move or remove them before you merge. +Aborting +``` + +Run: +```sh +rm ./packages/backend/assets/LICENSE +git reset --hard origin/develop +git pull --ff +``` + +## Upgrade packages + +```sh +corepack enable +pnpm i +``` + +## Build + +```sh +NODE_ENV=production pnpm run buld +``` + +## Migrate + +There are 3 new envoriment variables for this upgrade only, because antennas have been moved from the database to the cache. + +- `ANTENNA_MIGRATION_SKIP`: skips copying antennas to cache if `true`. Default is `false` (will clear all antennas if skipped). +- `ANTENNA_MIGRATION_COPY_LIMIT`: limits how many entries are copied to cache. Default is `0` (no limit). +- `ANTENNA_MIGRATION_READ_LIMIT`: limits how many entires are read from the database +in each iteration of migration. Large value may result in faster migration, but also may consume more memory. Default is `10000`. + +With default options: + +```sh +NODE_ENV=production pnpm run migrate +``` + +With custom options (feel free to only use some): + +```sh +NODE_ENV=production ANTENNA_MIGRATION_SKIP=false ANTENNA_MIGRATION_COPY_LIMIT=0 ANTENNA_MIGRATION_READ_LIMIT=1000 pnpm run migrate +``` + +And then restart Calckey...uh... Firefish! diff --git a/SECURITY.md b/SECURITY.md index 848fa7cb7c..2f26af6b64 100644 --- a/SECURITY.md +++ b/SECURITY.md @@ -2,7 +2,7 @@ ## Minor Security Issues -If you discover a minor security issue in Calckey, please report it by sending an +If you discover a minor security issue in Firefish, please report it by sending an email to [kainoa@t1c.dev](mailto:kainoa@t1c.dev). ## High Security Issues @@ -13,4 +13,4 @@ If you discover a security issue, which is so high risk, that too much is affect This will allow us to assess the risk, and make a fix available before we add a bug report to the Codeberg repository. -Thanks for helping make Calckey safe for everyone. +Thanks for helping make Firefish safe for everyone. diff --git a/animated.svg b/animated.svg new file mode 100644 index 0000000000..7b36f4d77e --- /dev/null +++ b/animated.svg @@ -0,0 +1,153 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + diff --git a/biome.json b/biome.json new file mode 100644 index 0000000000..2fa6846b64 --- /dev/null +++ b/biome.json @@ -0,0 +1,12 @@ +{ + "$schema": "https://biomejs.dev/schemas/1.0.0/schema.json", + "organizeImports": { + "enabled": true + }, + "linter": { + "enabled": true, + "rules": { + "recommended": true + } + } +} diff --git a/chart/Chart.yaml b/chart/Chart.yaml index 820c2313ae..8b58323865 100644 --- a/chart/Chart.yaml +++ b/chart/Chart.yaml @@ -1,6 +1,6 @@ apiVersion: v2 -name: calckey -description: A fun, new, open way to experience social media https://calckey.org +name: firefish +description: A fun, new, open way to experience social media https://joinfirefish.org # A chart can be either an 'application' or a 'library' chart. # diff --git a/chart/README.md b/chart/README.md index 1bcbd87537..25c24ec674 100644 --- a/chart/README.md +++ b/chart/README.md @@ -1,8 +1,8 @@ -# calckey +# firefish ![Version: 0.1.2](https://img.shields.io/badge/Version-0.1.2-informational?style=flat-square) ![Type: application](https://img.shields.io/badge/Type-application-informational?style=flat-square) ![AppVersion: rc](https://img.shields.io/badge/AppVersion-rc-informational?style=flat-square) -A fun, new, open way to experience social media https://calckey.org +A fun, new, open way to experience social media https://joinfirefish.org ## Requirements @@ -21,39 +21,39 @@ A fun, new, open way to experience social media https://calckey.org | autoscaling.maxReplicas | int | `100` | | | autoscaling.minReplicas | int | `1` | | | autoscaling.targetCPUUtilizationPercentage | int | `80` | | -| calckey.allowedPrivateNetworks | list | `[]` | If you want to allow calckey to connect to private ips, enter the cidrs here. | -| calckey.deepl.authKey | string | `""` | | -| calckey.deepl.isPro | bool | `false` | | -| calckey.deepl.managed | bool | `false` | | -| calckey.domain | string | `"calckey.local"` | | -| calckey.isManagedHosting | bool | `true` | | -| calckey.libreTranslate.apiKey | string | `""` | | -| calckey.libreTranslate.apiUrl | string | `""` | | -| calckey.libreTranslate.managed | bool | `false` | | -| calckey.objectStorage.access_key | string | `""` | | -| calckey.objectStorage.access_secret | string | `""` | | -| calckey.objectStorage.baseUrl | string | `""` | | -| calckey.objectStorage.bucket | string | `""` | | -| calckey.objectStorage.endpoint | string | `""` | | -| calckey.objectStorage.managed | bool | `true` | | -| calckey.objectStorage.prefix | string | `"files"` | | -| calckey.objectStorage.region | string | `""` | | -| calckey.reservedUsernames[0] | string | `"root"` | | -| calckey.reservedUsernames[1] | string | `"admin"` | | -| calckey.reservedUsernames[2] | string | `"administrator"` | | -| calckey.reservedUsernames[3] | string | `"me"` | | -| calckey.reservedUsernames[4] | string | `"system"` | | -| calckey.smtp.from_address | string | `"notifications@example.com"` | | -| calckey.smtp.login | string | `""` | | -| calckey.smtp.managed | bool | `true` | | -| calckey.smtp.password | string | `""` | | -| calckey.smtp.port | int | `587` | | -| calckey.smtp.server | string | `"smtp.mailgun.org"` | | -| calckey.smtp.useImplicitSslTls | bool | `false` | | +| firefish.allowedPrivateNetworks | list | `[]` | If you want to allow firefish to connect to private ips, enter the cidrs here. | +| firefish.deepl.authKey | string | `""` | | +| firefish.deepl.isPro | bool | `false` | | +| firefish.deepl.managed | bool | `false` | | +| firefish.domain | string | `"firefish.local"` | | +| firefish.isManagedHosting | bool | `true` | | +| firefish.libreTranslate.apiKey | string | `""` | | +| firefish.libreTranslate.apiUrl | string | `""` | | +| firefish.libreTranslate.managed | bool | `false` | | +| firefish.objectStorage.access_key | string | `""` | | +| firefish.objectStorage.access_secret | string | `""` | | +| firefish.objectStorage.baseUrl | string | `""` | | +| firefish.objectStorage.bucket | string | `""` | | +| firefish.objectStorage.endpoint | string | `""` | | +| firefish.objectStorage.managed | bool | `true` | | +| firefish.objectStorage.prefix | string | `"files"` | | +| firefish.objectStorage.region | string | `""` | | +| firefish.reservedUsernames[0] | string | `"root"` | | +| firefish.reservedUsernames[1] | string | `"admin"` | | +| firefish.reservedUsernames[2] | string | `"administrator"` | | +| firefish.reservedUsernames[3] | string | `"me"` | | +| firefish.reservedUsernames[4] | string | `"system"` | | +| firefish.smtp.from_address | string | `"notifications@example.com"` | | +| firefish.smtp.login | string | `""` | | +| firefish.smtp.managed | bool | `true` | | +| firefish.smtp.password | string | `""` | | +| firefish.smtp.port | int | `587` | | +| firefish.smtp.server | string | `"smtp.mailgun.org"` | | +| firefish.smtp.useImplicitSslTls | bool | `false` | | | elasticsearch | object | `{"auth":{},"enabled":false,"hostname":"","port":9200,"ssl":false}` | https://github.com/bitnami/charts/tree/master/bitnami/elasticsearch#parameters | | fullnameOverride | string | `""` | | | image.pullPolicy | string | `"IfNotPresent"` | | -| image.repository | string | `"docker.io/thatonecalculator/calckey"` | | +| image.repository | string | `"registry.joinfirefish.org/firefish/firefish"` | | | image.tag | string | `""` | | | imagePullSecrets | list | `[]` | | | ingress.annotations | object | `{}` | | @@ -67,9 +67,9 @@ A fun, new, open way to experience social media https://calckey.org | nodeSelector | object | `{}` | | | podAnnotations | object | `{}` | | | podSecurityContext | object | `{}` | | -| postgresql.auth.database | string | `"calckey_production"` | | +| postgresql.auth.database | string | `"firefish_production"` | | | postgresql.auth.password | string | `""` | | -| postgresql.auth.username | string | `"calckey"` | | +| postgresql.auth.username | string | `"firefish"` | | | postgresql.enabled | bool | `true` | disable if you want to use an existing db; in which case the values below must match those of that external postgres instance | | redis.auth.password | string | `""` | you must set a password; the password generated by the redis chart will be rotated on each upgrade: | | redis.enabled | bool | `true` | | diff --git a/chart/templates/NOTES.txt b/chart/templates/NOTES.txt index d3e4f2f208..e84ee93cf4 100644 --- a/chart/templates/NOTES.txt +++ b/chart/templates/NOTES.txt @@ -6,16 +6,16 @@ {{- end }} {{- end }} {{- else if contains "NodePort" .Values.service.type }} - export NODE_PORT=$(kubectl get --namespace {{ .Release.Namespace }} -o jsonpath="{.spec.ports[0].nodePort}" services {{ include "calckey.fullname" . }}) + export NODE_PORT=$(kubectl get --namespace {{ .Release.Namespace }} -o jsonpath="{.spec.ports[0].nodePort}" services {{ include "firefish.fullname" . }}) export NODE_IP=$(kubectl get nodes --namespace {{ .Release.Namespace }} -o jsonpath="{.items[0].status.addresses[0].address}") echo http://$NODE_IP:$NODE_PORT {{- else if contains "LoadBalancer" .Values.service.type }} NOTE: It may take a few minutes for the LoadBalancer IP to be available. - You can watch the status of by running 'kubectl get --namespace {{ .Release.Namespace }} svc -w {{ include "calckey.fullname" . }}' - export SERVICE_IP=$(kubectl get svc --namespace {{ .Release.Namespace }} {{ include "calckey.fullname" . }} --template "{{"{{ range (index .status.loadBalancer.ingress 0) }}{{.}}{{ end }}"}}") + You can watch the status of by running 'kubectl get --namespace {{ .Release.Namespace }} svc -w {{ include "firefish.fullname" . }}' + export SERVICE_IP=$(kubectl get svc --namespace {{ .Release.Namespace }} {{ include "firefish.fullname" . }} --template "{{"{{ range (index .status.loadBalancer.ingress 0) }}{{.}}{{ end }}"}}") echo http://$SERVICE_IP:{{ .Values.service.port }} {{- else if contains "ClusterIP" .Values.service.type }} - export POD_NAME=$(kubectl get pods --namespace {{ .Release.Namespace }} -l "app.kubernetes.io/name={{ include "calckey.name" . }},app.kubernetes.io/instance={{ .Release.Name }}" -o jsonpath="{.items[0].metadata.name}") + export POD_NAME=$(kubectl get pods --namespace {{ .Release.Namespace }} -l "app.kubernetes.io/name={{ include "firefish.name" . }},app.kubernetes.io/instance={{ .Release.Name }}" -o jsonpath="{.items[0].metadata.name}") export CONTAINER_PORT=$(kubectl get pod --namespace {{ .Release.Namespace }} $POD_NAME -o jsonpath="{.spec.containers[0].ports[0].containerPort}") echo "Visit http://127.0.0.1:8080 to use your application" kubectl --namespace {{ .Release.Namespace }} port-forward $POD_NAME 8080:$CONTAINER_PORT diff --git a/chart/templates/_helpers.tpl b/chart/templates/_helpers.tpl index 81009ed017..a7b4b9d328 100644 --- a/chart/templates/_helpers.tpl +++ b/chart/templates/_helpers.tpl @@ -1,7 +1,7 @@ {{/* Expand the name of the chart. */}} -{{- define "calckey.name" -}} +{{- define "firefish.name" -}} {{- default .Chart.Name .Values.nameOverride | trunc 63 | trimSuffix "-" }} {{- end }} @@ -10,7 +10,7 @@ Create a default fully qualified app name. We truncate at 63 chars because some Kubernetes name fields are limited to this (by the DNS naming spec). If release name contains chart name it will be used as a full name. */}} -{{- define "calckey.fullname" -}} +{{- define "firefish.fullname" -}} {{- if .Values.fullnameOverride }} {{- .Values.fullnameOverride | trunc 63 | trimSuffix "-" }} {{- else }} @@ -26,16 +26,16 @@ If release name contains chart name it will be used as a full name. {{/* Create chart name and version as used by the chart label. */}} -{{- define "calckey.chart" -}} +{{- define "firefish.chart" -}} {{- printf "%s-%s" .Chart.Name .Chart.Version | replace "+" "_" | trunc 63 | trimSuffix "-" }} {{- end }} {{/* Common labels */}} -{{- define "calckey.labels" -}} -helm.sh/chart: {{ include "calckey.chart" . }} -{{ include "calckey.selectorLabels" . }} +{{- define "firefish.labels" -}} +helm.sh/chart: {{ include "firefish.chart" . }} +{{ include "firefish.selectorLabels" . }} {{- if .Chart.AppVersion }} app.kubernetes.io/version: {{ .Chart.AppVersion | quote }} {{- end }} @@ -45,17 +45,17 @@ app.kubernetes.io/managed-by: {{ .Release.Service }} {{/* Selector labels */}} -{{- define "calckey.selectorLabels" -}} -app.kubernetes.io/name: {{ include "calckey.name" . }} +{{- define "firefish.selectorLabels" -}} +app.kubernetes.io/name: {{ include "firefish.name" . }} app.kubernetes.io/instance: {{ .Release.Name }} {{- end }} {{/* Create the name of the service account to use */}} -{{- define "calckey.serviceAccountName" -}} +{{- define "firefish.serviceAccountName" -}} {{- if .Values.serviceAccount.create }} -{{- default (include "calckey.fullname" .) .Values.serviceAccount.name }} +{{- default (include "firefish.fullname" .) .Values.serviceAccount.name }} {{- else }} {{- default "default" .Values.serviceAccount.name }} {{- end }} @@ -65,31 +65,31 @@ Create the name of the service account to use Create a default fully qualified name for dependent services. We truncate at 63 chars because some Kubernetes name fields are limited to this (by the DNS naming spec). */}} -{{- define "calckey.elasticsearch.fullname" -}} +{{- define "firefish.elasticsearch.fullname" -}} {{- printf "%s-%s" .Release.Name "elasticsearch" | trunc 63 | trimSuffix "-" -}} {{- end -}} -{{- define "calckey.redis.fullname" -}} +{{- define "firefish.redis.fullname" -}} {{- printf "%s-%s" .Release.Name "redis" | trunc 63 | trimSuffix "-" -}} {{- end -}} -{{- define "calckey.postgresql.fullname" -}} +{{- define "firefish.postgresql.fullname" -}} {{- printf "%s-%s" .Release.Name "postgresql" | trunc 63 | trimSuffix "-" -}} {{- end -}} {{/* config/default.yml content */}} -{{- define "calckey.configDir.default.yml" -}} +{{- define "firefish.configDir.default.yml" -}} #━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━ -# Calckey configuration +# Firefish configuration #━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━ # ┌─────┐ #───┘ URL └───────────────────────────────────────────────────── # Final accessible URL seen by a user. -url: "https://{{ .Values.calckey.domain }}/" +url: "https://{{ .Values.firefish.domain }}/" # ONCE YOU HAVE STARTED THE INSTANCE, DO NOT CHANGE THE # URL SETTINGS AFTER THAT! @@ -118,7 +118,7 @@ port: 3000 db: {{- if .Values.postgresql.enabled }} - host: {{ template "calckey.postgresql.fullname" . }} + host: {{ template "firefish.postgresql.fullname" . }} port: '5432' {{- else }} host: {{ .Values.postgresql.postgresqlHostname }} @@ -146,7 +146,7 @@ db: redis: {{- if .Values.redis.enabled }} - host: {{ template "calckey.redis.fullname" . }}-master + host: {{ template "firefish.redis.fullname" . }}-master {{- else }} host: {{ required "When the redis chart is disabled .Values.redis.hostname is required" .Values.redis.hostname }} {{- end }} @@ -218,7 +218,7 @@ id: 'aid' # Reserved usernames that only the administrator can register with reservedUsernames: -{{ .Values.calckey.reservedUsernames | toYaml }} +{{ .Values.firefish.reservedUsernames | toYaml }} # Whether disable HSTS #disableHsts: true @@ -266,7 +266,7 @@ reservedUsernames: #proxyRemoteFiles: true allowedPrivateNetworks: -{{ .Values.calckey.allowedPrivateNetworks | toYaml }} +{{ .Values.firefish.allowedPrivateNetworks | toYaml }} # TWA #twa: @@ -286,34 +286,34 @@ allowedPrivateNetworks: # If you mess this up, that's on you, you've been warned... #maxUserSignups: 100 -isManagedHosting: {{ .Values.calckey.isManagedHosting }} +isManagedHosting: {{ .Values.firefish.isManagedHosting }} deepl: - managed: {{ .Values.calckey.deepl.managed }} - authKey: {{ .Values.calckey.deepl.authKey | quote}} - isPro: {{ .Values.calckey.deepl.isPro }} + managed: {{ .Values.firefish.deepl.managed }} + authKey: {{ .Values.firefish.deepl.authKey | quote}} + isPro: {{ .Values.firefish.deepl.isPro }} libreTranslate: - managed: {{ .Values.calckey.libreTranslate.managed }} - apiUrl: {{ .Values.calckey.libreTranslate.apiUrl | quote }} - apiKey: {{ .Values.calckey.libreTranslate.apiKey | quote }} + managed: {{ .Values.firefish.libreTranslate.managed }} + apiUrl: {{ .Values.firefish.libreTranslate.apiUrl | quote }} + apiKey: {{ .Values.firefish.libreTranslate.apiKey | quote }} email: - managed: {{ .Values.calckey.smtp.managed }} - address: {{ .Values.calckey.smtp.from_address | quote }} - host: {{ .Values.calckey.smtp.server | quote }} - port: {{ .Values.calckey.smtp.port }} - user: {{ .Values.calckey.smtp.login | quote }} - pass: {{ .Values.calckey.smtp.password | quote }} - useImplicitSslTls: {{ .Values.calckey.smtp.useImplicitSslTls }} + managed: {{ .Values.firefish.smtp.managed }} + address: {{ .Values.firefish.smtp.from_address | quote }} + host: {{ .Values.firefish.smtp.server | quote }} + port: {{ .Values.firefish.smtp.port }} + user: {{ .Values.firefish.smtp.login | quote }} + pass: {{ .Values.firefish.smtp.password | quote }} + useImplicitSslTls: {{ .Values.firefish.smtp.useImplicitSslTls }} objectStorage: - managed: {{ .Values.calckey.objectStorage.managed }} - baseUrl: {{ .Values.calckey.objectStorage.baseUrl | quote }} - bucket: {{ .Values.calckey.objectStorage.bucket | quote }} - prefix: {{ .Values.calckey.objectStorage.prefix | quote }} - endpoint: {{ .Values.calckey.objectStorage.endpoint | quote }} - region: {{ .Values.calckey.objectStorage.region | quote }} - accessKey: {{ .Values.calckey.objectStorage.access_key | quote }} - secretKey: {{ .Values.calckey.objectStorage.access_secret | quote }} + managed: {{ .Values.firefish.objectStorage.managed }} + baseUrl: {{ .Values.firefish.objectStorage.baseUrl | quote }} + bucket: {{ .Values.firefish.objectStorage.bucket | quote }} + prefix: {{ .Values.firefish.objectStorage.prefix | quote }} + endpoint: {{ .Values.firefish.objectStorage.endpoint | quote }} + region: {{ .Values.firefish.objectStorage.region | quote }} + accessKey: {{ .Values.firefish.objectStorage.access_key | quote }} + secretKey: {{ .Values.firefish.objectStorage.access_secret | quote }} useSsl: true connnectOverProxy: false setPublicReadOnUpload: true diff --git a/chart/templates/deployment.yaml b/chart/templates/deployment.yaml index 9b0c60694d..ca63167632 100644 --- a/chart/templates/deployment.yaml +++ b/chart/templates/deployment.yaml @@ -1,16 +1,16 @@ apiVersion: apps/v1 kind: Deployment metadata: - name: {{ include "calckey.fullname" . }} + name: {{ include "firefish.fullname" . }} labels: - {{- include "calckey.labels" . | nindent 4 }} + {{- include "firefish.labels" . | nindent 4 }} spec: {{- if not .Values.autoscaling.enabled }} replicas: {{ .Values.replicaCount }} {{- end }} selector: matchLabels: - {{- include "calckey.selectorLabels" . | nindent 6 }} + {{- include "firefish.selectorLabels" . | nindent 6 }} template: metadata: annotations: @@ -19,19 +19,19 @@ spec: {{- toYaml . | nindent 8 }} {{- end }} labels: - {{- include "calckey.selectorLabels" . | nindent 8 }} + {{- include "firefish.selectorLabels" . | nindent 8 }} spec: {{- with .Values.imagePullSecrets }} imagePullSecrets: {{- toYaml . | nindent 8 }} {{- end }} - serviceAccountName: {{ include "calckey.serviceAccountName" . }} + serviceAccountName: {{ include "firefish.serviceAccountName" . }} securityContext: {{- toYaml .Values.podSecurityContext | nindent 8 }} volumes: - name: config-volume secret: - secretName: {{ template "calckey.fullname" . }}-config + secretName: {{ template "firefish.fullname" . }}-config containers: - name: {{ .Chart.Name }} securityContext: @@ -47,7 +47,7 @@ spec: value: "production" volumeMounts: - name: config-volume - mountPath: /calckey/.config + mountPath: /firefish/.config ports: - name: http containerPort: 3000 diff --git a/chart/templates/hpa.yaml b/chart/templates/hpa.yaml index 4cdd2b6255..db19534a87 100644 --- a/chart/templates/hpa.yaml +++ b/chart/templates/hpa.yaml @@ -2,14 +2,14 @@ apiVersion: autoscaling/v2beta1 kind: HorizontalPodAutoscaler metadata: - name: {{ include "calckey.fullname" . }} + name: {{ include "firefish.fullname" . }} labels: - {{- include "calckey.labels" . | nindent 4 }} + {{- include "firefish.labels" . | nindent 4 }} spec: scaleTargetRef: apiVersion: apps/v1 kind: Deployment - name: {{ include "calckey.fullname" . }} + name: {{ include "firefish.fullname" . }} minReplicas: {{ .Values.autoscaling.minReplicas }} maxReplicas: {{ .Values.autoscaling.maxReplicas }} metrics: diff --git a/chart/templates/ingress.yaml b/chart/templates/ingress.yaml index 212c40e4b2..65caa43e89 100644 --- a/chart/templates/ingress.yaml +++ b/chart/templates/ingress.yaml @@ -1,5 +1,5 @@ {{- if .Values.ingress.enabled -}} -{{- $fullName := include "calckey.fullname" . -}} +{{- $fullName := include "firefish.fullname" . -}} {{- $svcPort := .Values.service.port -}} {{- if and .Values.ingress.className (not (semverCompare ">=1.18-0" .Capabilities.KubeVersion.GitVersion)) }} {{- if not (hasKey .Values.ingress.annotations "kubernetes.io/ingress.class") }} @@ -17,7 +17,7 @@ kind: Ingress metadata: name: {{ $fullName }} labels: - {{- include "calckey.labels" . | nindent 4 }} + {{- include "firefish.labels" . | nindent 4 }} {{- with .Values.ingress.annotations }} annotations: {{- toYaml . | nindent 4 }} diff --git a/chart/templates/job-db-migrate.yaml b/chart/templates/job-db-migrate.yaml index e006aef3bd..1aedeab5b1 100644 --- a/chart/templates/job-db-migrate.yaml +++ b/chart/templates/job-db-migrate.yaml @@ -1,9 +1,9 @@ apiVersion: batch/v1 kind: Job metadata: - name: {{ include "calckey.fullname" . }}-db-migrate + name: {{ include "firefish.fullname" . }}-db-migrate labels: - {{- include "calckey.labels" . | nindent 4 }} + {{- include "firefish.labels" . | nindent 4 }} annotations: "helm.sh/hook": post-install,pre-upgrade "helm.sh/hook-delete-policy": before-hook-creation,hook-succeeded @@ -11,7 +11,7 @@ metadata: spec: template: metadata: - name: {{ include "calckey.fullname" . }}-db-migrate + name: {{ include "firefish.fullname" . }}-db-migrate {{- with .Values.podAnnotations }} annotations: {{- toYaml . | nindent 8 }} @@ -22,13 +22,13 @@ spec: imagePullSecrets: {{- toYaml . | nindent 8 }} {{- end }} - serviceAccountName: {{ include "calckey.serviceAccountName" . }} + serviceAccountName: {{ include "firefish.serviceAccountName" . }} securityContext: {{- toYaml .Values.podSecurityContext | nindent 8 }} volumes: - name: config-volume secret: - secretName: {{ template "calckey.fullname" . }}-config + secretName: {{ template "firefish.fullname" . }}-config containers: - name: {{ .Chart.Name }} securityContext: @@ -44,7 +44,7 @@ spec: value: "production" volumeMounts: - name: config-volume - mountPath: /calckey/.config + mountPath: /firefish/.config {{- with .Values.nodeSelector }} nodeSelector: {{- toYaml . | nindent 8 }} diff --git a/chart/templates/secret-config.yaml b/chart/templates/secret-config.yaml index 2dad134c56..9f683cfcd8 100644 --- a/chart/templates/secret-config.yaml +++ b/chart/templates/secret-config.yaml @@ -1,9 +1,9 @@ apiVersion: v1 kind: Secret metadata: - name: {{ template "calckey.fullname" . }}-config + name: {{ template "firefish.fullname" . }}-config labels: - {{- include "calckey.labels" . | nindent 4 }} + {{- include "firefish.labels" . | nindent 4 }} type: Opaque data: - default.yml: {{ include "calckey.configDir.default.yml" . | b64enc }} + default.yml: {{ include "firefish.configDir.default.yml" . | b64enc }} diff --git a/chart/templates/service.yaml b/chart/templates/service.yaml index d46067a406..f49d9cd5d7 100644 --- a/chart/templates/service.yaml +++ b/chart/templates/service.yaml @@ -1,9 +1,9 @@ apiVersion: v1 kind: Service metadata: - name: {{ include "calckey.fullname" . }} + name: {{ include "firefish.fullname" . }} labels: - {{- include "calckey.labels" . | nindent 4 }} + {{- include "firefish.labels" . | nindent 4 }} spec: type: {{ .Values.service.type }} ports: @@ -12,4 +12,4 @@ spec: protocol: TCP name: http selector: - {{- include "calckey.selectorLabels" . | nindent 4 }} + {{- include "firefish.selectorLabels" . | nindent 4 }} diff --git a/chart/templates/serviceaccount.yaml b/chart/templates/serviceaccount.yaml index f269ad028b..d8db3a3ae2 100644 --- a/chart/templates/serviceaccount.yaml +++ b/chart/templates/serviceaccount.yaml @@ -2,9 +2,9 @@ apiVersion: v1 kind: ServiceAccount metadata: - name: {{ include "calckey.serviceAccountName" . }} + name: {{ include "firefish.serviceAccountName" . }} labels: - {{- include "calckey.labels" . | nindent 4 }} + {{- include "firefish.labels" . | nindent 4 }} {{- with .Values.serviceAccount.annotations }} annotations: {{- toYaml . | nindent 4 }} diff --git a/chart/templates/tests/test-connection.yaml b/chart/templates/tests/test-connection.yaml index b8db3d9a17..7abe03611a 100644 --- a/chart/templates/tests/test-connection.yaml +++ b/chart/templates/tests/test-connection.yaml @@ -1,9 +1,9 @@ apiVersion: v1 kind: Pod metadata: - name: "{{ include "calckey.fullname" . }}-test-connection" + name: "{{ include "firefish.fullname" . }}-test-connection" labels: - {{- include "calckey.labels" . | nindent 4 }} + {{- include "firefish.labels" . | nindent 4 }} annotations: "helm.sh/hook": test spec: @@ -11,5 +11,5 @@ spec: - name: wget image: busybox command: ['wget'] - args: ['{{ include "calckey.fullname" . }}:{{ .Values.service.port }}'] + args: ['{{ include "firefish.fullname" . }}:{{ .Values.service.port }}'] restartPolicy: Never diff --git a/chart/values.yaml b/chart/values.yaml index 84c0536e5d..98306efc4c 100644 --- a/chart/values.yaml +++ b/chart/values.yaml @@ -1,18 +1,18 @@ -# Default values for calckey. +# Default values for firefish. # This is a YAML-formatted file. # Declare variables to be passed into your templates. replicaCount: 1 image: - repository: docker.io/thatonecalculator/calckey + repository: registry.joinfirefish.org/firefish/firefish pullPolicy: IfNotPresent # Overrides the image tag whose default is the chart appVersion. tag: "" -calckey: +firefish: isManagedHosting: true - domain: calckey.local + domain: firefish.local deepl: managed: false @@ -43,7 +43,7 @@ calckey: endpoint: "" # e.g. "nyc3.digitaloceanspaces.com:443" region: "" # e.g. "nyc3" - # -- If you want to allow calckey to connect to private ips, enter the cidrs here. + # -- If you want to allow firefish to connect to private ips, enter the cidrs here. allowedPrivateNetworks: [] # - "10.0.0.0/8" @@ -62,8 +62,8 @@ postgresql: # postgresqlHostname: preexisting-postgresql # postgresqlPort: 5432 auth: - database: calckey_production - username: calckey + database: firefish_production + username: firefish # you must set a password; the password generated by the postgresql chart will # be rotated on each upgrade: # https://github.com/bitnami/charts/tree/master/bitnami/postgresql#upgrade diff --git a/cliff.toml b/cliff.toml index 394b845774..8a1e7b1002 100644 --- a/cliff.toml +++ b/cliff.toml @@ -4,7 +4,6 @@ # changelog header header = """ # Changelog\n -All changes from v13.0.0 onwards, for a full list of differences read CALCKEY.md\n """ # template for the changelog body # https://tera.netlify.app/docs/#introduction @@ -35,10 +34,6 @@ conventional_commits = false filter_unconventional = true # process each line of a commit as an individual commit split_commits = false -# regex for preprocessing the commit messages -commit_preprocessors = [ - { pattern = '\((\w+\s)?#([0-9]+)\)', replace = "([#${2}](https://github.com/orhun/git-cliff/issues/${2}))"}, -] # regex for parsing and grouping commits commit_parsers = [ { message = "^feat", group = "Features"}, diff --git a/custom/assets/LICENSE b/custom/assets/LICENSE new file mode 100644 index 0000000000..cb57aef954 --- /dev/null +++ b/custom/assets/LICENSE @@ -0,0 +1,13 @@ +Copyright 2023 Firefish + +Licensed under the Apache License, Version 2.0 (the "License"); +you may not use this file except in compliance with the License. +You may obtain a copy of the License at + + http://www.apache.org/licenses/LICENSE-2.0 + +Unless required by applicable law or agreed to in writing, software +distributed under the License is distributed on an "AS IS" BASIS, +WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. +See the License for the specific language governing permissions and +limitations under the License. diff --git a/custom/assets/badges/error.png b/custom/assets/badges/error.png index e90912b405..046f18e149 100644 Binary files a/custom/assets/badges/error.png and b/custom/assets/badges/error.png differ diff --git a/custom/assets/badges/info.png b/custom/assets/badges/info.png index ac70544e4a..c6ab300a72 100644 Binary files a/custom/assets/badges/info.png and b/custom/assets/badges/info.png differ diff --git a/custom/assets/badges/not-found.png b/custom/assets/badges/not-found.png index 73d611e0e1..63356530ce 100644 Binary files a/custom/assets/badges/not-found.png and b/custom/assets/badges/not-found.png differ diff --git a/custom/assets/robots.txt b/custom/assets/robots.txt new file mode 100644 index 0000000000..cedb5b6cf2 --- /dev/null +++ b/custom/assets/robots.txt @@ -0,0 +1,14 @@ +User-agent: * +Allow: / + +# Uncomment the following to block CommonCrawl +# +# User-agent: CCBot +# User-agent: CCBot/2.0 +# User-agent: CCBot/3.1 +# Disallow: / + +# Uncomment the following to block ChatGPT +# +# User-agent: GPTBot +# Disallow: / diff --git a/dev/docker-compose.yml.example b/dev/docker-compose.yml.example index db235f7a7e..872bb399ec 100644 --- a/dev/docker-compose.yml.example +++ b/dev/docker-compose.yml.example @@ -2,9 +2,9 @@ version: "3" services: web: - image: docker.io/thatonecalculator/calckey + image: registry.joinfirefish.org/firefish/firefish build: .. - container_name: calckey_web + container_name: firefish_web restart: always depends_on: - db @@ -16,12 +16,12 @@ services: - network # - web volumes: - - ../files:/calckey/files - - ../.config:/calckey/.config:ro + - ../files:/firefish/files + - ../.config:/firefish/.config:ro redis: restart: always - container_name: calckey_redis + container_name: firefish_redis image: docker.io/redis:7.0-alpine networks: - network @@ -31,7 +31,7 @@ services: db: restart: always image: docker.io/postgres:12.2-alpine - container_name: calckey_db + container_name: firefish_db networks: - network env_file: diff --git a/docker-compose.yml b/docker-compose.yml index abb1882ea5..e407513004 100644 --- a/docker-compose.yml +++ b/docker-compose.yml @@ -2,8 +2,8 @@ version: "3" services: web: - image: docker.io/thatonecalculator/calckey - container_name: calckey_web + image: registry.joinfirefish.org/firefish/firefish + container_name: firefish_web restart: unless-stopped depends_on: - db @@ -19,13 +19,13 @@ services: environment: NODE_ENV: production volumes: - - ./files:/calckey/files - - ./.config:/calckey/.config:ro + - ./files:/firefish/files + - ./.config:/firefish/.config:ro redis: restart: unless-stopped image: docker.io/redis:7.0-alpine - container_name: calckey_redis + container_name: firefish_redis networks: - calcnet volumes: @@ -34,7 +34,7 @@ services: db: restart: unless-stopped image: docker.io/postgres:12.2-alpine - container_name: calckey_db + container_name: firefish_db networks: - calcnet env_file: @@ -61,6 +61,8 @@ services: # sonic: # restart: unless-stopped # image: docker.io/valeriansaliou/sonic:v1.4.0 +# logging: +# driver: none # networks: # - calcnet # volumes: diff --git a/docs/api-change.md b/docs/api-change.md new file mode 100644 index 0000000000..4dc631f071 --- /dev/null +++ b/docs/api-change.md @@ -0,0 +1,9 @@ +# Changes to the Firefish API + +Breaking changes are indecated by the :warning: icon. + +## v1.0.5 (unreleased) + +### dev11 + +- :warning: `notes/translate` now requires credentials. diff --git a/docs/api-doc.md b/docs/api-doc.md index 4051144de1..04fbaffd44 100644 --- a/docs/api-doc.md +++ b/docs/api-doc.md @@ -1,5 +1,5 @@ # API Documentation -You can find interactive API documentation at any Calckey instance. https://calckey.social/api-doc +You can find interactive API documentation at any Firefish instance. https://firefish.social/api-doc -You can also find auto-generated documentation for calckey-js [here](../packages/calckey-js/markdown/calckey-js.md). +You can also find auto-generated documentation for firefish-js [here](../packages/firefish-js/markdown/firefish-js.md). diff --git a/docs/development.md b/docs/development.md index 6d6c0ea8d2..31e6bf9994 100644 --- a/docs/development.md +++ b/docs/development.md @@ -1,7 +1,7 @@ -# 🌎 Calckey Developer Docs +# 🌎 Firefish Developer Docs ## Nix Dev Environment -The Calckey repo comes with a Nix-based shell environment to help make development as easy as possible! +The Firefish repo comes with a Nix-based shell environment to help make development as easy as possible! Please note, however, that this environment will not work on Windows outside of a WSL2 environment. @@ -10,12 +10,12 @@ Please note, however, that this environment will not work on Windows outside of - Installed the [Nix Package Manager](https://nixos.org/download.html) (use the comman on their website) - Installed [direnv](https://direnv.net/docs/installation.html) and added its hook to your shell. (package manager) -Once the repo is cloned to your computer, follow these next few steps inside the Calckey folder: +Once the repo is cloned to your computer, follow these next few steps inside the Firefish folder: - Run `direnv allow`. This will build the environment and install all needed tools. - Run `install-deps`, then `prepare-config`, to install the node dependencies and prepare the needed config files. -- In a second terminal, run `devenv up`. This will spawn a **Redis** server, a **Postgres** server, and the **Calckey** server in dev mode. -- Once you see the Calckey banner printed in your second terminal, run `migrate` in the first. +- In a second terminal, run `devenv up`. This will spawn a **Redis** server, a **Postgres** server, and the **Firefish** server in dev mode. +- Once you see the Firefish banner printed in your second terminal, run `migrate` in the first. - Once migrations finish, open http://localhost:3000 in your web browser. - You should now see the admin user creation screen! @@ -40,7 +40,7 @@ delete `flake.lock`, or better, run `nix flake update --extra-experimental-featu after that, run `direnv rebuild` if there are any errors, you might have to change `flake.nix` -(because the available options can change between versions - consider getting support in [the matrix channel](https://matrix.to/#/#calckey:matrix.fedibird.com)) +(because the available options can change between versions - consider getting support in [the matrix channel](https://matrix.to/#/#firefish:matrix.fedibird.com)) ### after changing a node version in my case, i had to change the node version from 19, to 18 @@ -66,18 +66,18 @@ devenv up may take a looong time. (some say this is fake news, maybe it was bad do not get spooked by this error: ``` -> calckey@14.0.0-dev32 start /mnt/.../calckey +> firefish@14.0.0-dev32 start /mnt/.../firefish > pnpm --filter backend run start -> backend@ start /mnt/.../calckey/packages/backend +> backend@ start /mnt/.../firefish/packages/backend > pnpm node ./built/index.js node:internal/modules/cjs/loader:1078 throw err; ^ -Error: Cannot find module '/mnt/.../calckey/packages/backend/built/index.js' +Error: Cannot find module '/mnt/.../firefish/packages/backend/built/index.js' at Module._resolveFilename (node:internal/modules/cjs/loader:1075:15) at Module._load (node:internal/modules/cjs/loader:920:27) at Function.executeUserEntryPoint [as runMain] (node:internal/modules/run_main:81:12) @@ -88,7 +88,7 @@ Error: Cannot find module '/mnt/.../calckey/packages/backend/built/index.js' Node.js v18.16.0 undefined -/mnt/.../calckey/packages/backend: +/mnt/.../firefish/packages/backend:  ERR_PNPM_RECURSIVE_RUN_FIRST_FAIL  backend@ start: `pnpm node ./built/index.js` Exit status 1  ELIFECYCLE  Command failed with exit code 1. @@ -97,7 +97,7 @@ Exit status 1 the script is designed to constantly try to start the server, while the build is still running. this just means that the build isn't finished yet. -at some point you should see a banner that says "Calckey" in big letters - +at some point you should see a banner that says "Firefish" in big letters - then you're good to go and can run `migrate` (in another terminal)! if you don't see the banner, diff --git a/docs/docker.md b/docs/docker.md index 0c625a4b3d..02035e045b 100644 --- a/docs/docker.md +++ b/docs/docker.md @@ -1,14 +1,14 @@ -# 🐳 Running a Calckey server with Docker +# 🐳 Running a Firefish server with Docker ## Pre-built docker container -[thatonecalculator/calckey](https://hub.docker.com/r/thatonecalculator/calckey) +[registry.joinfirefish.org/firefish/firefish](https://git.joinfirefish.org/firefish/firefish/container_registry) ## `docker-compose` There is a `docker-compose.yml` in the root of the project that you can use to build the container from source - .config/docker.env (**db config settings**) -- .config/default.yml (**calckey server settings**) +- .config/default.yml (**firefish server settings**) ## Configuring @@ -21,22 +21,22 @@ Rename the files: then edit them according to your environment. You can configure `docker.env` with anything you like, but you will have to pay attention to the `default.yml` file: - `url` should be set to the URL you will be hosting the web interface for the server at. -- `host`, `db`, `user`, `pass` will have to be configured in the `PostgreSQL configuration` section - `host` is the name of the postgres container (eg: *calckey_db_1*), and the others should match your `docker.env`. -- `host`will need to be configured in the *Redis configuration* section - it is the name of the redis container (eg: *calckey_redis_1*) +- `host`, `db`, `user`, `pass` will have to be configured in the `PostgreSQL configuration` section - `host` is the name of the postgres container (eg: *firefish_db_1*), and the others should match your `docker.env`. +- `host`will need to be configured in the *Redis configuration* section - it is the name of the redis container (eg: *firefish_redis_1*) - `auth` will need to be configured in the *Sonic* section - cannot be the default `SecretPassword` Everything else can be left as-is. ## Running docker-compose -The [prebuilt container for calckey](https://hub.docker.com/r/thatonecalculator/calckey) is fairly large, and may take a few minutes to download and extract using docker. +The [prebuilt container for firefish](https://git.joinfirefish.org/firefish/firefish/container_registry) is fairly large, and may take a few minutes to download and extract using docker. Copy `docker-compose.yml` and the `config/` to a directory, then run the **docker-compose** command: `docker-compose up -d`. -NOTE: This will take some time to come fully online, even after download and extracting the container images, and it may emit some error messages before completing successfully. Specifically, the `db` container needs to initialize and so isn't available to the `web` container right away. Only once the `db` container comes online does the `web` container start building and initializing the calckey tables. +NOTE: This will take some time to come fully online, even after download and extracting the container images, and it may emit some error messages before completing successfully. Specifically, the `db` container needs to initialize and so isn't available to the `web` container right away. Only once the `db` container comes online does the `web` container start building and initializing the firefish tables. -Once the server is up you can use a web browser to access the web interface at `http://serverip:3000` (where `serverip` is the IP of the server you are running the calckey server on). +Once the server is up you can use a web browser to access the web interface at `http://serverip:3000` (where `serverip` is the IP of the server you are running the firefish server on). ## Docker for development diff --git a/docs/fk.patch b/docs/fk.patch new file mode 100644 index 0000000000..2d51512c96 --- /dev/null +++ b/docs/fk.patch @@ -0,0 +1,41 @@ +diff --git a/packages/backend/migration/1661376843000-remove-mentioned-remote-users-column.js b/packages/backend/migration/1661376843000-remove-mentioned-remote-users-column.js +index 42d79b5b5..1fd5e0f10 100644 +--- a/packages/backend/migration/1661376843000-remove-mentioned-remote-users-column.js ++++ b/packages/backend/migration/1661376843000-remove-mentioned-remote-users-column.js +@@ -7,6 +7,22 @@ export class removeMentionedRemoteUsersColumn1661376843000 { + + async down(queryRunner) { + await queryRunner.query(`ALTER TABLE "note" ADD "mentionedRemoteUsers" TEXT NOT NULL DEFAULT '[]'::text`); +- await queryRunner.query(`UPDATE "note" SET "mentionedRemoteUsers" = (SELECT COALESCE(json_agg(row_to_json("data"))::text, '[]') FROM (SELECT "url", "uri", "username", "host" FROM "user" JOIN "user_profile" ON "user"."id" = "user_profile". "userId" WHERE "user"."host" IS NOT NULL AND "user"."id" = ANY("note"."mentions")) AS "data")`); ++ await queryRunner.query(` ++ CREATE TEMP TABLE IF NOT EXISTS "temp_mentions" AS ++ SELECT "id", "url", "uri", "username", "host" ++ FROM "user" ++ JOIN "user_profile" ON "user"."id" = "user_profile"."userId" WHERE "user"."host" IS NOT NULL ++ `); ++ ++ await queryRunner.query(` ++ CREATE UNIQUE INDEX "temp_mentions_id" ON "temp_mentions"("id") ++ `); ++ ++ await queryRunner.query(` ++ UPDATE "note" SET "mentionedRemoteUsers" = ( ++ SELECT COALESCE(json_agg(row_to_json("data")::jsonb - 'id')::text, '[]') FROM "temp_mentions" AS "data" ++ WHERE "data"."id" = ANY("note"."mentions") ++ ) ++ `); + } + } +diff --git a/packages/backend/migration/1663399074403-resize-comments-drive-file.js b/packages/backend/migration/1663399074403-resize-comments-drive-file.js +index a037f1655..0873aec9b 100644 +--- a/packages/backend/migration/1663399074403-resize-comments-drive-file.js ++++ b/packages/backend/migration/1663399074403-resize-comments-drive-file.js +@@ -9,6 +9,6 @@ export class resizeCommentsDriveFile1663399074403 { + } + + async down(queryRunner) { +- await queryRunner.query(`ALTER TABLE "drive_file" ALTER COLUMN "comment" TYPE character varying(512)`); +- } ++ console.log('This migration cannot be reverted, skipping...'); ++ } + } diff --git a/docs/kubernetes.md b/docs/kubernetes.md index 5cb6e5d831..5ec6b46ad2 100644 --- a/docs/kubernetes.md +++ b/docs/kubernetes.md @@ -1,7 +1,7 @@ -# Running a Calckey server with Kubernetes and Helm +# Running a Firefish server with Kubernetes and Helm This is a [Helm](https://helm.sh/) chart directory in the root of the project -that you can use to deploy calckey to a Kubernetes cluster +that you can use to deploy firefish to a Kubernetes cluster ## Deployment @@ -17,29 +17,29 @@ helm dependency list $dir 2> /dev/null | tail +2 | head -n -1 | awk '{ print "he cd ../ ``` -3. Create the calckey helm release (also used to update existing deployment): +3. Create the firefish helm release (also used to update existing deployment): ```shell helm upgrade \ --install \ - --namespace calckey \ + --namespace firefish \ --create-namespace \ - calckey chart/ \ + firefish chart/ \ -f .config/helm_values.yml ``` -4. Watch your calckey server spin up: +4. Watch your firefish server spin up: ```shell -kubectl -n calckey get po -w +kubectl -n firefish get po -w ``` 5. Initial the admin user and managed config: ```shell -export CALCKEY_USERNAME="my_desired_admin_handle" && \ -export CALCKEY_PASSWORD="myDesiredInitialPassword" && \ -export CALCKEY_HOST="calckey.example.com" && \ -export CALCKEY_TOKEN=$(curl -X POST https://$CALCKEY_HOST/api/admin/accounts/create -H "Content-Type: application/json" -d "{ \"username\":\"$CALCKEY_USERNAME\", \"password\":\"$CALCKEY_PASSWORD\" }" | jq -r '.token') && \ -echo "Save this token: ${CALCKEY_TOKEN}" && \ -curl -X POST -H "Authorization: Bearer $CALCKEY_TOKEN" https://$CALCKEY_HOST/api/admin/accounts/hosted +export firefish_USERNAME="my_desired_admin_handle" && \ +export firefish_PASSWORD="myDesiredInitialPassword" && \ +export firefish_HOST="firefish.example.com" && \ +export firefish_TOKEN=$(curl -X POST https://$firefish_HOST/api/admin/accounts/create -H "Content-Type: application/json" -d "{ \"username\":\"$firefish_USERNAME\", \"password\":\"$firefish_PASSWORD\" }" | jq -r '.token') && \ +echo "Save this token: ${firefish_TOKEN}" && \ +curl -X POST -H "Authorization: Bearer $firefish_TOKEN" https://$firefish_HOST/api/admin/accounts/hosted ``` 6. Enjoy! diff --git a/docs/migrate.md b/docs/migrate.md index 7e9653e70f..6569d419e5 100644 --- a/docs/migrate.md +++ b/docs/migrate.md @@ -1,10 +1,11 @@ -# 🚚 Migrating from Misskey to Calckey +# 🚚 Migrating from Misskey/FoundKey to Firefish -The following procedure may not work depending on your environment and version of Misskey. +All the guides below assume you're starting in the root of the repo directory. -**Make sure you** -- **stopped all master and worker processes of Misskey.** -- **have backups of the database before performing any commands.** +### Before proceeding + +- **Ensure you have stopped all master and worker processes of Misskey.** +- **Ensure you have backups of the database before performing any commands.** ## Misskey v13 and above @@ -13,8 +14,8 @@ Tested with Misskey v13.11.3. If your Misskey v13 is older, we recommend updating your Misskey to v13.11.3. ```sh -wget -O mkv13.patch https://codeberg.org/calckey/calckey/raw/branch/develop/docs/mkv13.patch -wget -O mkv13_restore.patch https://codeberg.org/calckey/calckey/raw/branch/develop/docs/mkv13_restore.patch +wget -O mkv13.patch https://git.joinfirefish.org/firefish/firefish/-/raw/develop/docs/mkv13.patch +wget -O mkv13_restore.patch https://git.joinfirefish.org/firefish/firefish/-/raw/develop/docs/mkv13_restore.patch git apply mkv13.patch mkv13_restore.patch cd packages/backend @@ -26,13 +27,13 @@ for i in $(seq 1 $NUM_MIGRATIONS); do pnpm typeorm migration:revert -d ormconfig cd ../../ -git remote set-url origin https://codeberg.org/calckey/calckey.git +git remote set-url origin https://git.joinfirefish.org/firefish/firefish.git git fetch origin git stash push rm -rf fluent-emojis misskey-assets git switch main # or beta or develop git pull --ff -wget -O renote_muting.patch https://codeberg.org/calckey/calckey/raw/branch/develop/docs/renote_muting.patch +wget -O renote_muting.patch https://git.joinfirefish.org/firefish/firefish/-/raw/develop/docs/renote_muting.patch git apply renote_muting.patch pnpm install @@ -59,16 +60,16 @@ ALTER TABLE "instance" ADD COLUMN "latestStatus" character varying(512); ALTER TABLE "instance" ADD COLUMN "lastCommunicatedAt" date; ``` -then quit with `\q`, and restart Calckey. +then quit with `\q`, and restart Firefish. Note: Ignore errors of `column "xxx" of relation "xxx" already exists`. -If no other errors happened, your Calckey is ready to launch! +If no other errors happened, your Firefish is ready to launch! ## Misskey v12.119 and before ```sh -git remote set-url origin https://codeberg.org/calckey/calckey.git +git remote set-url origin https://git.joinfirefish.org/firefish/firefish.git git fetch git checkout main # or beta or develop git pull --ff @@ -77,19 +78,21 @@ NODE_ENV=production pnpm run migrate # build using prefered method ``` -## Foundkey +## FoundKey ```sh +wget -O fk.patch https://git.joinfirefish.org/firefish/firefish/-/raw/develop/docs/fk.patch +git apply fk.patch cd packages/backend LINE_NUM="$(npx typeorm migration:show -d ormconfig.js | grep -n uniformThemecolor1652859567549 | cut -d ':' -f 1)" -NUM_MIGRATIONS="$(npx typeorm migration:show -d ormconfig.js | tail -n+"$LINE_NUM" | grep '\[X\]' | nl)" +NUM_MIGRATIONS="$(npx typeorm migration:show -d ormconfig.js | tail -n+"$LINE_NUM" | grep '\[X\]' | wc -l)" -for i in $(seq 1 $NUM_MIGRAIONS); do +for i in $(seq 1 $NUM_MIGRATIONS); do npx typeorm migration:revert -d ormconfig.js done -git remote set-url origin https://codeberg.org/calckey/calckey.git +git remote set-url origin https://git.joinfirefish.org/firefish/firefish.git git fetch git checkout main # or beta or develop git pull --ff @@ -100,4 +103,4 @@ NODE_ENV=production pnpm run migrate ## Reverse -You ***cannot*** migrate back to Misskey from Calckey due to re-hashing passwords on signin with argon2. You can migrate from Calckey to Foundkey, though. +You ***cannot*** migrate back to Misskey from Firefish due to re-hashing passwords on signin with argon2. You can migrate from Firefish to FoundKey, although this is not recommended due to FoundKey being end-of-life, and may have some problems with alt-text. diff --git a/calckey.apache.conf b/firefish.apache.conf similarity index 100% rename from calckey.apache.conf rename to firefish.apache.conf diff --git a/calckey.nginx.conf b/firefish.nginx.conf similarity index 100% rename from calckey.nginx.conf rename to firefish.nginx.conf diff --git a/flake.nix b/flake.nix index 8553456ea1..60e2d54a25 100644 --- a/flake.nix +++ b/flake.nix @@ -1,5 +1,5 @@ { - description = "Calckey development flake"; + description = "Firefish development flake"; inputs = { nixpkgs.url = "github:nixos/nixpkgs/nixpkgs-unstable"; @@ -28,7 +28,7 @@ shells = { # The default shell, used by nix-direnv default = { - name = "calckey-dev-shell"; + name = "firefish-dev-shell"; # Add additional packages to our environment packages = [ pkgs.nodePackages.pnpm @@ -62,12 +62,12 @@ enable = true; package = pkgs.postgresql_12; initialDatabases = [{ - name = "calckey"; + name = "firefish"; }]; initialScript = '' - CREATE USER calckey WITH PASSWORD 'calckey'; - ALTER USER calckey WITH SUPERUSER; - GRANT ALL ON DATABASE calckey TO calckey; + CREATE USER firefish WITH PASSWORD 'firefish'; + ALTER USER firefish WITH SUPERUSER; + GRANT ALL ON DATABASE firefish TO firefish; ''; listen_addresses = "127.0.0.1"; port = 5432; diff --git a/issue_template/bug.yaml b/issue_template/bug.yaml deleted file mode 100644 index d0c80d7534..0000000000 --- a/issue_template/bug.yaml +++ /dev/null @@ -1,136 +0,0 @@ -name: 🐛 Bug Report -about: File a bug report -title: "[Bug]: " -blank_issues_enabled: true -contact_links: - - name: 💁 Support Matrix - url: https://matrix.to/#/%23calckey:matrix.fedibird.com - about: Having trouble with deployment? Ask the support chat. - - name: 🔒 Resposible Disclosure - url: https://codeberg.org/calckey/calckey/src/branch/develop/SECURITY.md - about: Found a security vulnerability? Please disclose it responsibly. -body: - - type: markdown - attributes: - value: | - 💖 Thanks for taking the time to fill out this bug report! - 💁 Having trouble with deployment? [Ask the support chat.](https://matrix.to/#/%23calckey:matrix.fedibird.com) - 🔒 Found a security vulnerability? [Please disclose it responsibly.](https://codeberg.org/calckey/calckey/src/branch/develop/SECURITY.md) - 🤝 By submitting this issue, you agree to follow our [Contribution Guidelines.](https://codeberg.org/calckey/calckey/src/branch/develop/CONTRIBUTING.md) - - type: textarea - id: what-happened - attributes: - label: What happened? - description: Please give us a brief description of what happened. - placeholder: Tell us what you see! - validations: - required: true - - type: textarea - id: what-is-expected - attributes: - label: What did you expect to happen? - description: Please give us a brief description of what you expected to happen. - placeholder: Tell us what you wish happened! - validations: - required: true - - type: input - id: version - attributes: - label: Version - description: What version of calckey is your instance running? You can find this by clicking your instance's logo at the bottom left and then clicking instance information. - placeholder: v13.1.4.1 - validations: - required: true - - type: input - id: instance - attributes: - label: Instance - description: What instance of calckey are you using? - placeholder: calckey.social - validations: - required: false - - type: dropdown - id: issue-type - attributes: - label: What type of issue is this? - description: If this happens on your device and has to do with the user interface, it's client-side. If this happens on either with the API or the backend, or you got a server-side error in the client, it's server-side. - multiple: false - options: - - Client-side - - Server-side - - Other (Please Specify) - - type: dropdown - id: browsers - attributes: - label: What browser are you using? (Client-side issues only) - multiple: false - options: - - N/A - - Firefox - - Chrome - - Brave - - Librewolf - - Chromium - - Safari - - Microsoft Edge - - Other (Please Specify) - - type: dropdown - id: device - attributes: - label: What operating system are you using? (Client-side issues only) - multiple: false - options: - - N/A - - Windows - - MacOS - - Linux - - Android - - iOS - - Other (Please Specify) - - type: dropdown - id: deplotment-method - attributes: - label: How do you deploy Calckey on your server? (Server-side issues only) - multiple: false - options: - - N/A - - Manual - - Ubuntu Install Script - - Docker Compose - - Docker Prebuilt Image - - Helm Chart - - YunoHost - - AUR Package - - Other (Please Specify) - - type: dropdown - id: operating-system - attributes: - label: What operating system are you using? (Server-side issues only) - multiple: false - options: - - N/A - - Ubuntu >= 22.04 - - Ubuntu < 22.04 - - Debian - - Arch - - RHEL (CentOS/AlmaLinux/Rocky Linux) - - FreeBSD - - OpenBSD - - Android - - Other (Please Specify) - - type: textarea - id: logs - attributes: - label: Relevant log output - description: Please copy and paste any relevant log output. You can find your log by inspecting the page, and going to the "console" tab. This will be automatically formatted into code, so no need for backticks. - render: shell - - type: checkboxes - id: terms - attributes: - label: Contribution Guidelines - description: By submitting this issue, you agree to follow our [Contribution Guidelines](https://codeberg.org/calckey/calckey/src/branch/develop/CONTRIBUTING.md) - options: - - label: I agree to follow this project's Contribution Guidelines - required: true - - label: I have searched the issue tracker for similar issues, and this is not a duplicate. - required: true diff --git a/issue_template/feature.yaml b/issue_template/feature.yaml deleted file mode 100644 index 9797113276..0000000000 --- a/issue_template/feature.yaml +++ /dev/null @@ -1,61 +0,0 @@ -name: ✨ Feature Request -about: Request a Feature -title: "[Feature]: " -blank_issues_enabled: true -contact_links: - - name: 💁 Support Matrix - url: https://matrix.to/#/%23calckey:matrix.fedibird.com - about: Having trouble with deployment? Ask the support chat. - - name: 🔒 Resposible Disclosure - url: https://codeberg.org/calckey/calckey/src/branch/develop/SECURITY.md - about: Found a security vulnerability? Please disclose it responsibly. -body: - - type: markdown - attributes: - value: | - 💖 Thanks for taking the time to fill out this feature request! - 💁 Having trouble with deployment? [Ask the support chat.](https://matrix.to/#/%23calckey:matrix.fedibird.com) - 🔒 Found a security vulnerability? [Please disclose it responsibly.](https://codeberg.org/calckey/calckey/src/branch/develop/SECURITY.md) - 🤝 By submitting this issue, you agree to follow our [Contribution Guidelines.](https://codeberg.org/calckey/calckey/src/branch/develop/CONTRIBUTING.md) - - type: textarea - id: what-feature - attributes: - label: What feature would you like implemented? - description: Please give us a brief description of what you'd like. - placeholder: Tell us what you want! - validations: - required: true - - type: textarea - id: why-add-feature - attributes: - label: Why should we add this feature? - description: Please give us a brief description of why your feature is important. - placeholder: Tell us why you want this feature! - validations: - required: true - - type: input - id: version - attributes: - label: Version - description: What version of calckey is your instance running? You can find this by clicking your instance's logo at the bottom left and then clicking instance information. - placeholder: Calckey Version 13.1.4.1 - validations: - required: true - - type: input - id: instance - attributes: - label: Instance - description: What instance of calckey are you using? - placeholder: calckey.social - validations: - required: false - - type: checkboxes - id: terms - attributes: - label: Contribution Guidelines - description: By submitting this issue, you agree to follow our [Contribution Guidelines](https://codeberg.org/calckey/calckey/src/branch/develop/CONTRIBUTING.md) - options: - - label: I agree to follow this project's Contribution Guidelines - required: true - - label: I have searched the issue tracker for similar requests, and this is not a duplicate. - required: true diff --git a/locales/README.md b/locales/README.md deleted file mode 100644 index a31df4f4cc..0000000000 --- a/locales/README.md +++ /dev/null @@ -1,6 +0,0 @@ -# **DO NOT edit locale files** except `ja-JP.yml`. - -When you add text to the ja-JP file (of misskey-dev/misskey), it will automatically be applied to other language files. -Translations added in ja-JP file should contain the original Japanese strings. - -Please see [Contribution guide](../CONTRIBUTING.md) for more information. diff --git a/locales/ar-SA.yml b/locales/ar-SA.yml index 7e97a99ebc..e1701e9c99 100644 --- a/locales/ar-SA.yml +++ b/locales/ar-SA.yml @@ -1,7 +1,7 @@ --- _lang_: "العربية" -headlineMisskey: "شبكة مرتبطة بالملاحظات" -introMisskey: "اهلا بك! ميسكي هو منصة تدوين مصغر لا مركزية ومفتوحة المصدر.\nيمكنك مشاركة \"ملاحظات\" عن ما يجري حولك، وإخبار الجميع عن نفسك 📡\nتسمح لك \"الانفعالات\" بتعبير عن شعورك حول ملاحظات الآخرين 👍\nاكتشف عالمًا جديدًا 🚀" +headlineFirefish: "شبكة مرتبطة بالملاحظات" +introFirefish: "اهلا بك! ميسكي هو منصة تدوين مصغر لا مركزية ومفتوحة المصدر.\nيمكنك مشاركة \"ملاحظات\" عن ما يجري حولك، وإخبار الجميع عن نفسك 📡\nتسمح لك \"الانفعالات\" بتعبير عن شعورك حول ملاحظات الآخرين 👍\nاكتشف عالمًا جديدًا 🚀" monthAndDay: "{day}/{month}" search: "البحث" notifications: "الإشعارات" @@ -196,7 +196,7 @@ noUsers: "ليس هناك مستخدمون" editProfile: "تعديل الملف التعريفي" noteDeleteConfirm: "هل تريد حذف هذه الملاحظة؟" pinLimitExceeded: "لا يمكنك تدبيس الملاحظات بعد الآن." -intro: "لقد انتهت عملية تنصيب Calckey. الرجاء إنشاء حساب إداري." +intro: "لقد انتهت عملية تنصيب Firefish. الرجاء إنشاء حساب إداري." done: "تمّ" processing: "المعالجة جارية" preview: "معاينة" @@ -371,7 +371,7 @@ exploreFediverse: "استكشف الفديفرس" popularTags: "الوسوم الرائجة" userList: "القوائم" about: "عن" -aboutMisskey: "عن Calckey" +aboutFirefish: "عن Firefish" administrator: "المدير" token: "الرمز المميز" twoStepAuthentication: "الإستيثاق بعاملَيْن" @@ -855,7 +855,7 @@ _registry: keys: "المفاتيح" domain: "النّطاق" createKey: "أنشئ مفتاحًا" -_aboutMisskey: +_aboutFirefish: about: "ميسكي هو برمجية مفتوحة المصدر يطورها syuilo منذ 2014." contributors: "المساهمون الرئيسيون" allContributors: "كل المساهمين" @@ -1027,7 +1027,7 @@ _time: hour: "سا" day: "ي" _tutorial: - title: "How to use Calckey" + title: "How to use Firefish" step1_1: "Welcome!" step1_2: "Let's get you set up. You'll be up and running in no time!" step2_1: "First, please fill out your profile." @@ -1044,8 +1044,8 @@ _tutorial: step5_6: "The Social {icon} timeline is where you can see posts from friends of your followers." step5_7: "The Global {icon} timeline is where you can see posts from every other connected instance." step6_1: "So, what is this place?" - step6_2: "Well, you didn't just join Calckey. You joined a portal to the Fediverse, an interconnected network of thousands of servers, called \"instances\"." - step6_3: "Each server works in different ways, and not all servers run Calckey. This one does though! It's a bit complicated, but you'll get the hang of it in no time." + step6_2: "Well, you didn't just join Firefish. You joined a portal to the Fediverse, an interconnected network of thousands of servers, called \"instances\"." + step6_3: "Each server works in different ways, and not all servers run Firefish. This one does though! It's a bit complicated, but you'll get the hang of it in no time." step6_4: "Now go, explore, and have fun!" _2fa: alreadyRegistered: "سجلت سلفًا جهازًا للاستيثاق بعاملين." @@ -1179,7 +1179,6 @@ _profile: youCanIncludeHashtags: "يمكنك أيضًا إضافة وسوم إلى سيرتك التعريفية." metadata: "معلومات إضافية" metadataEdit: "عدّل المعلومات الإضافية" - metadataDescription: "يُمكنك عرض 4 حقول معلومات في ملفك الشخصي" metadataLabel: "التسمية" metadataContent: "المحتوى" changeAvatar: "غيّر الصورة الرمزية" diff --git a/locales/bn-BD.yml b/locales/bn-BD.yml index e3fbf8cb9b..abafc4953e 100644 --- a/locales/bn-BD.yml +++ b/locales/bn-BD.yml @@ -1,7 +1,7 @@ --- _lang_: "বাংলা" -headlineMisskey: "নোট ব্যাবহার করে সংযুক্ত নেটওয়ার্ক" -introMisskey: "স্বাগতম! মিসকি একটি ওপেন সোর্স, ডিসেন্ট্রালাইজড মাইক্রোব্লগিং পরিষেবা। \n\"নোট\" তৈরির মাধ্যমে যা ঘটছে তা সবার সাথে শেয়ার করুন 📡\n\"রিঅ্যাকশন\" গুলির মাধ্যমে যেকোনো নোট সম্পর্কে আপনার অনুভূতি ব্যাক্ত করতে পারেন 👍\nএকটি নতুন দুনিয়া ঘুরে দেখুন 🚀\n" +headlineFirefish: "নোট ব্যাবহার করে সংযুক্ত নেটওয়ার্ক" +introFirefish: "স্বাগতম! মিসকি একটি ওপেন সোর্স, ডিসেন্ট্রালাইজড মাইক্রোব্লগিং পরিষেবা। \n\"নোট\" তৈরির মাধ্যমে যা ঘটছে তা সবার সাথে শেয়ার করুন 📡\n\"রিঅ্যাকশন\" গুলির মাধ্যমে যেকোনো নোট সম্পর্কে আপনার অনুভূতি ব্যাক্ত করতে পারেন 👍\nএকটি নতুন দুনিয়া ঘুরে দেখুন 🚀\n" monthAndDay: "{day}/{month}" search: "খুঁজুন" notifications: "বিজ্ঞপ্তি" @@ -198,7 +198,7 @@ noUsers: "কোন ব্যাবহারকারী নেই" editProfile: "প্রোফাইল সম্পাদনা করুন" noteDeleteConfirm: "আপনি কি নোট ডিলিট করার ব্যাপারে নিশ্চিত?" pinLimitExceeded: "আপনি আর কোন নোট পিন করতে পারবেন না" -intro: "Calckey এর ইন্সটলেশন সম্পন্ন হয়েছে!দয়া করে অ্যাডমিন ইউজার তৈরি করুন।" +intro: "Firefish এর ইন্সটলেশন সম্পন্ন হয়েছে!দয়া করে অ্যাডমিন ইউজার তৈরি করুন।" done: "সম্পন্ন" processing: "প্রক্রিয়াধীন" preview: "পূর্বরূপ দেখুন" @@ -376,7 +376,7 @@ exploreFediverse: "Fediverse ঘুরে দেখুন" popularTags: "জনপ্রিয় ট্যাগগুলি" userList: "লিস্ট" about: "আপনার সম্পর্কে" -aboutMisskey: "Calckey সম্পর্কে" +aboutFirefish: "Firefish সম্পর্কে" administrator: "প্রশাসক" token: "টোকেন" twoStepAuthentication: "২-ধাপ প্রমাণীকরণ" @@ -643,7 +643,7 @@ createNew: "নতুন" optional: "প্রয়োজনীয় নয়" createNewClip: "নতুন ক্লিপ তৈরি করুন" public: "সর্বজনীন" -i18nInfo: "Calckey স্বেচ্ছাসেবকদের দ্বারা বিভিন্ন ভাষায় অনুবাদ করা হচ্ছে। আপনি {link} এ গিয়ে অনুবাদে সহযোগিতা করতে পারেন।" +i18nInfo: "Firefish স্বেচ্ছাসেবকদের দ্বারা বিভিন্ন ভাষায় অনুবাদ করা হচ্ছে। আপনি {link} এ গিয়ে অনুবাদে সহযোগিতা করতে পারেন।" manageAccessTokens: "অ্যাক্সেস টোকেন পরিচালনা করুন" accountInfo: "অ্যাকাউন্টের তথ্য" notesCount: "নোটের সংখ্যা" @@ -694,7 +694,7 @@ onlineUsersCount: "{n} জন ব্যাবহারকারী অনলা nUsers: "{n} জন ব্যাবহারকারী" nNotes: "{n} টি নোট" sendErrorReports: "ক্রুটি প্রতিবেদন পাঠান" -sendErrorReportsDescription: "চালু থাকলে, বিস্তারিত ত্রুটির তথ্য Calckey-এর সাথে শেয়ার করা হয়। যা সফ্টওয়্যারটির গুণমান উন্নত করতে সাহায্য করে। ত্রুটির তথ্যের মধ্যে রয়েছে OS সংস্করণ, ব্রাউজারের ধরন, কর্মের ইতিহাস ইত্যাদি।" +sendErrorReportsDescription: "চালু থাকলে, বিস্তারিত ত্রুটির তথ্য Firefish-এর সাথে শেয়ার করা হয়। যা সফ্টওয়্যারটির গুণমান উন্নত করতে সাহায্য করে। ত্রুটির তথ্যের মধ্যে রয়েছে OS সংস্করণ, ব্রাউজারের ধরন, কর্মের ইতিহাস ইত্যাদি।" myTheme: "আমার থিম" backgroundColor: "পটভূমির রং" accentColor: "এক্সেন্টের রং" @@ -785,7 +785,7 @@ hashtags: "হ্যাশট্যাগ" troubleshooting: "ট্রাবলশুটিং" useBlurEffect: "UI তে ব্লার ইফেক্ট ব্যাবহার করুন" learnMore: "আরও জানুন" -misskeyUpdated: "Calckey আপডেট করা হয়েছে!" +misskeyUpdated: "Firefish আপডেট করা হয়েছে!" whatIsNew: "পরিবর্তনগুলি দেখান" translate: "অনুবাদ" translatedFrom: "{x} হতে অনুবাদ করা" @@ -896,13 +896,13 @@ _registry: keys: "কী - সমূহ" domain: "ডোমেন" createKey: "কী বানান" -_aboutMisskey: +_aboutFirefish: about: "Misskey, একটি ওপেন সোর্স সফ্টওয়্যার যা 2014 সাল থেকে syuilo তৈরি করছেন।" contributors: "প্রধান কন্ট্রিবিউটারগণ" allContributors: "সকল কন্ট্রিবিউটারগণ" source: "সোর্স কোড" - translation: "Calckey অনুবাদ করুন" - donate: "Calckey তে দান করুন" + translation: "Firefish অনুবাদ করুন" + donate: "Firefish তে দান করুন" morePatrons: "আরও অনেকে আমাদের সাহায্য করছেন। তাদের সবাইকে ধন্যবাদ 🥰" patrons: "সমর্থনকারী" _nsfw: @@ -911,7 +911,7 @@ _nsfw: force: "সকল মিডিয়া লুকান" _mfm: cheatSheet: "MFM চিটশিট" - intro: "MFM একটি মার্কআপ ভাষা যা Calckey-এর মধ্যে বিভিন্ন জায়গায় ব্যবহার করা যেতে পারে। এখানে আপনি MFM-এর সিনট্যাক্সগুলির একটি তালিকা দেখতে পারবেন।" + intro: "MFM একটি মার্কআপ ভাষা যা Firefish-এর মধ্যে বিভিন্ন জায়গায় ব্যবহার করা যেতে পারে। এখানে আপনি MFM-এর সিনট্যাক্সগুলির একটি তালিকা দেখতে পারবেন।" dummy: "মিসকি ফেডিভার্সের বিশ্বকে প্রসারিত করে" mention: "উল্লেখ" mentionDescription: "@ চিহ্ন + ব্যবহারকারীর নাম একটি নির্দিষ্ট ব্যবহারকারীকে নির্দেশ করতে ব্যবহার করা যায়।" @@ -1108,7 +1108,7 @@ _time: hour: "ঘণ্টা" day: "দিন" _tutorial: - title: "How to use Calckey" + title: "How to use Firefish" step1_1: "Welcome!" step1_2: "Let's get you set up. You'll be up and running in no time!" step2_1: "First, please fill out your profile." @@ -1125,8 +1125,8 @@ _tutorial: step5_6: "The Social {icon} timeline is where you can see posts from friends of your followers." step5_7: "The Global {icon} timeline is where you can see posts from every other connected instance." step6_1: "So, what is this place?" - step6_2: "Well, you didn't just join Calckey. You joined a portal to the Fediverse, an interconnected network of thousands of servers, called \"instances\"." - step6_3: "Each server works in different ways, and not all servers run Calckey. This one does though! It's a bit complicated, but you'll get the hang of it in no time." + step6_2: "Well, you didn't just join Firefish. You joined a portal to the Fediverse, an interconnected network of thousands of servers, called \"instances\"." + step6_3: "Each server works in different ways, and not all servers run Firefish. This one does though! It's a bit complicated, but you'll get the hang of it in no time." step6_4: "Now go, explore, and have fun!" _2fa: alreadyRegistered: "আপনি ইতিমধ্যে একটি 2-ফ্যাক্টর অথেনটিকেশন ডিভাইস নিবন্ধন করেছেন৷" @@ -1268,7 +1268,7 @@ _profile: youCanIncludeHashtags: "হ্যাশট্যাগ অন্তর্ভুক্ত করা যেতে পারে।" metadata: "অতিরিক্ত তথ্য" metadataEdit: "অতিরিক্ত তথ্য সম্পাদনা করুন" - metadataDescription: "আপনি আপনার প্রোফাইলে একটি টেবিল হিসাবে চারটি অতিরিক্ত তথ্য দেখাতে পারেন।" + metadataDescription: "আপনি আপনার প্রোফাইলে একটি টেবিল হিসাবে চারটি অতিরিক্ত তথ্য দেখাতে পারেন।. আপনি আপনার প্রোফাইলে লিঙ্কটি যাচাই করতে {rel} এর সাথে একটি {a} ট্যাগ বা {l} ট্যাগ যোগ করতে পারেন!" metadataLabel: "লেবেল" metadataContent: "বিষয়বস্তু" changeAvatar: "অ্যাভাটার পরিবর্তন করুন" diff --git a/locales/bul_BG.yml b/locales/bul_BG.yml new file mode 100644 index 0000000000..5be3c68d67 --- /dev/null +++ b/locales/bul_BG.yml @@ -0,0 +1,477 @@ +_lang_: Български +cancel: Отмени +noNotes: Няма публикации +settings: Настройки +headlineFirefish: Децентрализирана социална медийна платформа с отворен код, която + е безплатна завинаги! 🚀 +notifications: Известия +forgotPassword: Забравена парола +uploading: Качване... +addInstance: Добави сървър +favorite: Добави в отметки +delete: Изтрий +unpin: Откачи от профила +copyLink: Копирай връзката +pin: Закачи в профила +deleted: Изтрито +deleteAndEditConfirm: Сигурни ли сте, че искате да изтриете тази публикация и да я + редактирате? Ще загубите всички реакции, подсилвания и отговори към нея. +copyUsername: Копирай потребителското име +searchUser: Търсене на потребител +reply: Отговори +showMore: Покажи още +loadMore: Зареди още +followRequestAccepted: Заявка за последване приета +importAndExport: Импорт/Експорт на Данни +import: Импортиране +download: Свали +export: Експортиране +files: Файлове +unblock: Отблокирай +_sensitiveMediaDetection: + setSensitiveFlagAutomatically: Маркиране като деликатно +searchWith: 'Търсене: {q}' +smtpUser: Потребителско име +notificationType: Тип известие +searchResult: Резултати от търсенето +searchByGoogle: Търсене +markAsReadAllNotifications: Маркирай всички известия като прочетени +settingGuide: Препоръчителни настройки +smtpPass: Парола +newPasswordIs: Новата парола е "{password}" +members: Членове +help: Помощ +hide: Скрий +group: Група +groups: Групи +incorrectPassword: Грешна парола. +leaveGroup: Напусни групата +numberOfColumn: Брой колони +passwordLessLogin: Вписване без парола +newPasswordRetype: Въведи отново парола +saveAs: Запази като... +resetPassword: Нулиране на парола +saveConfirm: Запазване на промените? +inputNewFolderName: Въведи ново име на папка +upload: Качване +retypedNotMatch: Въвежданията не съвпадат. +_ago: + weeksAgo: преди {n}с + secondsAgo: преди {n}сек + hoursAgo: преди {n}ч + minutesAgo: преди {n}мин + daysAgo: преди {n}д + monthsAgo: преди {n}м + yearsAgo: преди {n}г + future: Бъдеще + justNow: Точно сега +folderName: Име на папка +renameFile: Преименувай файл +_widgets: + activity: Дейност + notifications: Известия + timeline: Инфопоток +instanceSecurity: Сигурност на сървъра +uploadFolder: Папка по подразбиране за качвания +instanceInfo: Информация за сървъра +statistics: Статистика +fileName: Име на файл +selectFile: Избери файл +editProfile: Редактирай профил +instances: Сървъри +selectUser: Избери потребител +createNew: Създай ново +blockThisInstance: Блокирай този сървър +_profile: + metadata: Допълнителна информация + username: Потребителско име + name: Име + description: Биография + metadataContent: Съдържание +addAccount: Добави акаунт +followRequestPending: Заявка за последване в изчакване +signinHistory: История на вписванията +or: Или +noUsers: Няма потребители +notes: Публикации +newNoteRecived: Има нови публикации +note: Публикация +instanceFollowing: Последвани на сървъра +_filters: + followersOnly: Само последователи + notesAfter: Публикации след + fromDomain: От домейн + fromUser: От потребител + withFile: С файл + notesBefore: Публикации преди + followingOnly: Само последвани +_notification: + _types: + follow: Нови последователи + mention: Споменавания + reaction: Реакции +_channel: + notesCount: '{n} Публикации' +unfollow: Отследване +noLists: Нямаш никакви списъци +markAsReadAllUnreadNotes: Маркирай всички публикации като прочетени +markAsReadAllTalkMessages: Маркирай всички съобщения като прочетени +_time: + second: Секунди + hour: Часа + day: Дни + minute: Минути +create: Създай +lists: Списъци +reportAbuseOf: Докладвай {name} +reporter: Докладчик +abuseReports: Доклади +logoImageUrl: URL на лого изображение +reportAbuse: Доклад +latestRequestReceivedAt: Последно получена заявка +location: Местонахождение +keepOriginalUploading: Запази оригиналното изображение +renotesCount: Брой изпратени подсилвания +license: Лиценз +lastUsedDate: Последно използвано на +rename: Преименувай +customEmojis: Персонализирани емоджита +emoji: Емоджи +_aboutFirefish: + translation: Преведи Firefish +translatedFrom: Преведено от {x} +i18nInfo: Firefish се превежда на различни езици от доброволци. Можете да помогнете + на адрес {link}. +image: Изображение +recipient: Получател(и) +notesAndReplies: Публикации и отговори +noSuchUser: Потребителят не е намерен +pinnedPages: Закачени страници +pinLimitExceeded: Не може да закачаш повече публикации +flagShowTimelineReplies: Показване на отговори в инфопотока +followersCount: Брой последователи +receivedReactionsCount: Брой получени реакции +federation: Федерация +today: Днес +yearX: '{year}' +registeredAt: Регистриран на +monthX: '{month}' +dayX: '{day}' +registration: Регистрация +popularUsers: Популярни потребители +details: Детайли +tenMinutes: 10 минути +oneDay: Един ден +file: Файл +oneHour: Един час +video: Видео +createNewClip: Създай нова подборка +clips: Подборки +active: Активен +menu: Меню +itsOff: Изключено +remindMeLater: Може би по-късно +removed: Успешно изтриване +deleteAllFiles: Изтрий всички файлове +deletedNote: Изтрита публикация +deleteConfirm: Потвърждавате ли изтриването? +hasChildFilesOrFolders: Тъй като тази папка не е празна, тя не може да бъде изтрита. +nsfw: Деликатно съдържание +default: По подразбиране +_theme: + defaultValue: Стойност по подразбиране + keys: + mention: Споменаване + renote: Подсили + color: Цвят + explore: Разгледай темите +_pages: + script: + blocks: + _dailyRannum: + arg1: Минимална стойност + arg2: Максимална стойност + _join: + arg1: Списъци + add: Добави + _rannum: + arg1: Минимална стойност + arg2: Максимална стойност + _seedRannum: + arg3: Максимална стойност + arg2: Минимална стойност + categories: + value: Стойности + list: Списъци + blocks: + _textInput: + default: Стойност по подразбиране + _switch: + default: Стойност по подразбиране + _textareaInput: + default: Стойност по подразбиране + _numberInput: + default: Стойност по подразбиране + _radioButton: + default: Стойност по подразбиране +_deck: + _columns: + notifications: Известия + mentions: Споменавания + tl: Инфопоток + direct: Директни съобщения +_mfm: + mention: Споменаване + search: Търсене +_messaging: + groups: Групи +apps: Приложения +introFirefish: Добре дошли! Firefish е децентрализирана социална медийна платформа + с отворен код, която е безплатна завинаги! 🚀 +monthAndDay: '{day}/{month}' +search: Търсене +searchPlaceholder: Търсене в Firefish +username: Потребителско име +password: Парола +fetchingAsApObject: Извличане от федивърса +ok: Добре +gotIt: Разбрах! +noThankYou: Не, благодаря +enterUsername: Въведи потребителско име +renotedBy: Подсилено от {user} +noNotifications: Няма известия +instance: Сървър +basicSettings: Основни Настройки +otherSettings: Други Настройки +openInWindow: Отвори в прозорец +profile: Профил +timeline: Инфопоток +noAccountDescription: Този потребител все още не е написал своята биография. +login: Впиши се +loggingIn: Вписване +logout: Отпиши се +signup: Регистрирай се +save: Запазване +users: Потребители +addUser: Добави потребител +favorites: Отметки +unfavorite: Премахни от отметки +favorited: Добавено в отметки. +alreadyFavorited: Вече е добавено в отметки. +cantFavorite: Неуспешно добавяне в отметки. +copyContent: Копирай съдържанието +deleteAndEdit: Изтрий и редактирай +editNote: Редактирай публикация +edited: Редактирано на {date} {time} +addToList: Добави в списък +sendMessage: Изпрати съобщение +jumpToPrevious: Премини към предишно +newer: по-ново +older: по-старо +showLess: Затвори +youGotNewFollower: те последва +receiveFollowRequest: Заявка за последване получена +mention: Споменаване +mentions: Споменавания +directNotes: Директни съобщения +cw: Предупреждение за съдържание +followers: Последователи +following: Последвани +followsYou: Следва те +createList: Създай списък +error: Грешка +manageLists: Управление на списъци +retry: Повторен опит +follow: Следване +followRequest: Заявка за последване +followRequests: Заявки за последване +defaultNoteVisibility: Видимост по подразбиране +unrenote: Върни обратно подсилване +renoted: Подсилено. +cantRenote: Тази публикация не може да бъде подсилена. +renote: Подсили +enterEmoji: Въведи емоджи +sensitive: Деликатно съдържание +add: Добави +pinned: Закачено в профила +quote: Цитирай +pinnedNote: Закачена публикация +cantReRenote: Подсилване не може да бъде подсилено. +clickToShow: Кликни за показване +you: Ти +reaction: Реакции +removeReaction: Премахни реакцията си +enterFileName: Въведи име на файл +unmarkAsSensitive: Отмаркирай като деликатно +markAsSensitive: Маркирай като деликатно +block: Блокирай +emojis: Емоджита +addEmoji: Добави +emojiName: Име на емоджи +emojiUrl: URL на емоджи +loginFailed: Неуспешно вписване +flagAsCat: Котка ли си? 😺 +flagSpeakAsCat: Говори като котка +youHaveNoLists: Нямаш никакви списъци +selectInstance: Избери сървър +annotation: Коментари +latestRequestSentAt: Последно изпратена заявка +stopActivityDelivery: Спри изпращането на дейности +version: Версия +clearCachedFiles: Изтрий кеш +noInstances: Няма сървъри +federating: Федериране +defaultValueIs: 'По подразбиране: {value}' +noCustomEmojis: Няма емоджи +changePassword: Промени парола +currentPassword: Настояща парола +instanceUsers: Потребители на този сървър +security: Сигурност +instanceFollowers: Последователи на сървъра +newPassword: Нова парола +more: Още! +remove: Изтрий +saved: Запазено +messaging: Чат +birthday: Рожден ден +images: Изображения +activity: Дейност +createFolder: Създай папка +renameFolder: Преименувай тази папка +selectFolders: Избери папки +selectFolder: Избери папка +selectFiles: Избери файлове +addFile: Добави на файл +inputNewFileName: Въведи ново име на файл +deleteFolder: Изтрий тази папка +emptyFolder: Тази папка е празна +copyUrl: Копирай URL +pages: Страници +thisYear: Година +thisMonth: Месец +pinnedNotes: Закачени публикации +pinnedUsers: Закачени потребители +hcaptcha: hCaptcha +recaptcha: reCAPTCHA +name: Име +enableRecaptcha: Включване на reCAPTCHA +enableHcaptcha: Включване на hCaptcha +exploreUsersCount: Има {count} потребители +userList: Списъци +moderator: Модератор +moderation: Модерация +administrator: Администратор +lastUsed: Последно използвано +unregister: Отрегистрация +share: Сподели +notFound: Не е намерено +inputMessageHere: Въведи съобщение тук +createGroup: Създай група +close: Затвори +next: Следващо +title: Заглавие +messagingWithGroup: Групов чат +enable: Включи +retype: Въведи отново +noteOf: Публикация от {user} +quoteAttached: Цитат +newMessageExists: Има нови съобщения +noMessagesYet: Все още няма съобщения +language: Език +createAccount: Създай акаунт +existingAccount: Съществуващ акаунт +deleteAll: Изтрий всички +enableAll: Включване на всички +disableAll: Изключване на всички +copy: Копирай +reporteeOrigin: Произход на докладвания +reporterOrigin: Произход на докладчика +clip: Подборка +unclip: Премахни от подборка +followingCount: Брой последвани акаунти +renotedCount: Брой получени подсилвания +notesCount: Брой публикации +repliesCount: Брой изпратени отговори +repliedCount: Брой получени отговори +sentReactionsCount: Брой изпратени реакции +yes: Да +no: Не +alwaysMarkSensitive: Маркирай като деликатно по подразбиране +noteFavoritesCount: Брой публикации с отметки +left: Ляво +nNotes: '{n} Публикации' +value: Стойност +createdAt: Създадено на +invalidValue: Невалидна стойност. +currentVersion: Настояща версия +latestVersion: Най-нова версия +typingUsers: '{users} пише' +user: Потребител +enabled: Включено +disabled: Изключено +whatIsNew: Покажи промените +translate: Преведи +itsOn: Включено +oneWeek: Една седмица +audio: Звук +removeQuote: Премахни цитат +_sfx: + notification: Известия +_2fa: + renewTOTPCancel: Отмяна +_permissions: + "read:favorites": Виж списъка си с отметки + "write:favorites": Редактирай списъка си с отметки +_visibility: + followers: Последователи +explore: Разглеждане +theme: Теми +wallpaper: Тапет +setWallpaper: Задай тапет +removeWallpaper: Премахни тапет +themeForLightMode: Тема за използване в светъл режим +themeForDarkMode: Тема за използване в тъмен режим +light: Светло +dark: Тъмно +darkThemes: Тъмни теми +invitations: Покани +invitationCode: Код на поканата +checking: Проверка... +available: Свободно +unavailable: Не е свободно +tooShort: Твърде кратко +tooLong: Твърде дълго +weakPassword: Слаба парола +strongPassword: Силна парола +passwordMatched: Съвпада +passwordNotMatched: Не съвпада +signinWith: Вписване с {x} +aboutX: Относно {x} +openInNewTab: Отвори в нов раздел +_tutorial: + step2_1: Първо, моля, попълнете своя профил. + step2_2: Предоставянето на известна информация за това кой сте вие ще улесни другите + да разберат дали искат да видят вашите публикации или да ви следват. + title: Как се използва Firefish + step1_1: Добре дошли! + step5_1: Инфопотоци, инфопотоци навсякъде! + step3_1: Сега е време да последвате няколко хора! + step1_2: Нека да ви настроим. Ще бъдете готови за нула време! +openImageInNewTab: Отваряй изображенията в нов раздел +showOnRemote: Отвори оригиналната страница +lightThemes: Светли теми +syncDeviceDarkMode: Синхронизиране на тъмния режим с настройките на устройството +text: Текст +normalPassword: Средна парола +usernameInvalidFormat: Можете да използвате главни и малки букви, цифри и долни черти. +signinFailed: Неуспешно вписване. Въведените потребителско име или парола са неправилни. +signinRequired: Моля, регистрирайте се или се впишете, преди да продължите +start: Започни +confirm: Потвърди +failedToUpload: Неуспешно качване +_preferencesBackups: + cannotSave: Неуспешно запазване + cannotLoad: Неуспешно зареждане +editWidgetsExit: Готово +done: Готово +emailRequiredForSignup: Изискване за адрес на е-поща за регистриране diff --git a/locales/ca-ES.yml b/locales/ca-ES.yml index 6cda10f969..0bebd913df 100644 --- a/locales/ca-ES.yml +++ b/locales/ca-ES.yml @@ -1,7 +1,7 @@ _lang_: "Català" -headlineMisskey: "Una xarxa social de codi obert, descentralitzada i gratuïta per +headlineFirefish: "Una xarxa social de codi obert, descentralitzada i gratuïta per a sempre! 🚀" -introMisskey: "Benvinguts! Calckey és una plataforma social de codi obert, descentralitzada +introFirefish: "Benvinguts! Firefish és una plataforma social de codi obert, descentralitzada i gratuïta per a sempre! 🚀" monthAndDay: "{day}/{month}" search: "Cerca" @@ -95,7 +95,7 @@ privacy: "Privadesa" makeFollowManuallyApprove: "Les sol·licituds de seguiment requereixen aprovació" defaultNoteVisibility: "Visibilitat per defecte" follow: "Segueix" -followRequest: "Segueix" +followRequest: "Sol·licitud de Seguiment" followRequests: "Sol·licituds de seguiment" unfollow: "Deixa de seguir" followRequestPending: "Sol·licituds de seguiment pendents" @@ -116,7 +116,7 @@ reaction: "Reaccions" reactionSetting: "Reaccions a mostrar al selector de reaccions" reactionSettingDescription2: "Arrossega per reordenar, fes clic per suprimir, prem \"+\" per afegir." -rememberNoteVisibility: "Recorda la configuració de visibilitat de les notes" +rememberNoteVisibility: "Recorda la configuració de visibilitat de les publicacions" attachCancel: "Elimina el fitxer adjunt" markAsSensitive: "Marca com a NSFW" unmarkAsSensitive: "Desmarca com a NSFW" @@ -146,9 +146,9 @@ _mfm: mention: "Menció" quote: "Citar" search: "Cercar" - dummy: Calckey amplia el món del Fediverse + dummy: Firefish amplia el món del Fediverse hashtag: Etiqueta - intro: MFM és un llenguatge de marques utilitzat a Misskey, Calckey, Akkoma i més + intro: MFM és un llenguatge de marques utilitzat a Misskey, Firefish, Akkoma i més que es pot utilitzar en molts llocs. Aquí podeu veure una llista de tota la sintaxi MFM disponible. hashtagDescription: Podeu especificar una etiqueta mitjançant un coixinet i un text. @@ -409,15 +409,16 @@ _profile: locationDescription: Si primer introduïu la vostra ciutat, es mostrarà l'hora local a altres usuaris. name: Nom - metadataDescription: Fent servir això, podràs mostrar camps d'informació addicionals - al vostre perfil. + metadataDescription: "Fent servir això, podràs mostrar camps d'informació addicionals + al vostre perfil. Podeu afegir una etiqueta {a} o una etiqueta {l} amb {rel} per + verificar l'enllaç al vostre perfil!" _exportOrImport: followingList: "Usuaris que segueixes" muteList: "Silencia" blockingList: "Bloqueja" userLists: "Llistes" excludeMutingUsers: Exclou els usuaris silenciats - allNotes: Totes les notes + allNotes: Totes les publicacions excludeInactiveUsers: Exclou usuaris inactius _pages: script: @@ -632,7 +633,7 @@ _pages: if: Si _if: variable: Variable - post: Formulari de notes + post: Formulari de publicació _post: text: Contingut attachCanvasImage: Adjuntar imatge de llenç @@ -795,7 +796,7 @@ flagAsBot: Marca aquest compte com a bot flagAsBotDescription: Activa aquesta opció si aquest compte és controlat per un programa. Si s'activa, això actuarà com una bandera per a altres desenvolupadors i ajuda a prevenir cadenes de interaccions infinites amb altres bots a més d'ajustar els sistemes - interns de Calckey per tractar aquest compte com un bot. + interns de Firefish per tractar aquest compte com un bot. flagAsCat: Ets un gat? 🐱 flagShowTimelineReplies: Mostra respostes a la línia de temps flagAsCatDescription: Guanyaràs unes orelles de gat i parlares com un gat! @@ -807,7 +808,7 @@ autoAcceptFollowed: Aprova automàticament les peticions de seguiment d'usuaris accountMoved: "L'usuari s'ha mogut a un compte nou:" addAccount: Afegeix un compte loginFailed: No s'ha pogut iniciar sessió -showOnRemote: Mostra al servidor remot +showOnRemote: Obre la pàgina original wallpaper: Fons de pantalla setWallpaper: Estableix fons de pantalla removeWallpaper: Elimina el fons de pantalla @@ -840,13 +841,13 @@ blockedUsers: Usuaris blocats noUsers: No hi ha cap usuari editProfile: Edita el perfil noteDeleteConfirm: Segur que vols eliminar la publicació? -pinLimitExceeded: No pots fixar més notes +pinLimitExceeded: No pots fixar més publicacions muteAndBlock: Silenciats i blocats mutedUsers: Usuaris silenciats done: Fet preview: Vista prèvia default: Per defecte -intro: La instal·lació de Calckey ha acabat! Crea un compte d'usuari d'administració. +intro: La instal·lació de Firefish ha acabat! Crea un compte d'usuari d'administració. processing: S'està processant noCustomEmojis: No hi ha cap emoji noJobs: No hi ha cap feina @@ -1043,7 +1044,7 @@ pinnedClipId: ID del clip que vols fixar hcaptcha: hCaptcha manageAntennas: Gestiona les Antenes name: Nom -notesAndReplies: Notes i respostes +notesAndReplies: Publicacions i respostes silence: Posa en silenci withFiles: Amb fitxers popularUsers: Usuaris populars @@ -1069,7 +1070,7 @@ notFoundDescription: No es pot trobar cap pàgina que correspongui a aquesta adr uploadFolder: Carpeta per defecte per pujar arxius cacheClear: Netejar la memòria cau markAsReadAllNotifications: Marca totes les notificacions com llegides -markAsReadAllUnreadNotes: Marca totes les notes com a llegides +markAsReadAllUnreadNotes: Marca totes les publicacions com a llegides markAsReadAllTalkMessages: Marca tots els missatges com llegits help: Ajuda inputMessageHere: Escriu aquí el missatge @@ -1139,7 +1140,7 @@ promote: Promoure numberOfDays: Nombre de dies objectStorageBaseUrl: Adreça URL base hideThisNote: Amaga aquesta publicació -showFeaturedNotesInTimeline: Mostra les notes destacades a les líneas de temps +showFeaturedNotesInTimeline: Mostra les publicacions destacades a les línees de temps objectStorage: Emmagatzematge d'objectes useObjectStorage: Fes servir l'emmagatzema d'objectes expandTweet: Amplia el tuit @@ -1210,7 +1211,7 @@ notificationSetting: Preferències de notificacions makeActive: Activar notificationSettingDesc: Tria el tipus de notificació que es veure. notifyAntenna: Notificar publicacions noves -withFileAntenna: Només notes amb fitxers +withFileAntenna: Només publicacions amb fitxers enableServiceworker: Activa les notificacions push per al teu navegador antennaUsersDescription: Escriu un nom d'usuari per línea antennaInstancesDescription: Escriu la adreça d'un servidor per línea @@ -1226,7 +1227,7 @@ connectedTo: Aquest(s) compte(s) estan connectats silenceConfirm: Segur que vols posa en silenci aquest usuari? unsilence: Desfés posar en silenci unsilenceConfirm: Segur que vols treure el silenci a aquest usuari? -aboutMisskey: Sobre Calckey +aboutFirefish: Sobre Firefish twoStepAuthentication: Autentificació de dos factors moderator: Moderador moderation: Moderació @@ -1293,7 +1294,7 @@ defaultNavigationBehaviour: Navegació per defecte editTheseSettingsMayBreakAccount: Si edites aquestes configuracions pots fer mal bé el teu compte. userSilenced: Aquest usuari ha sigut silenciat. -instanceTicker: Informació de notes del servidor +instanceTicker: Informació de publicacions del servidor waitingFor: Esperant a {x} random: Aleatori system: Sistema @@ -1310,19 +1311,18 @@ yes: Sí no: No noCrawle: Rebutjar la indexació dels restrejadors driveUsage: Espai fet servir al Disk -noCrawleDescription: No permetre que els buscadors guardin la informació de les pàgines - de perfil, notes, Pàgines, etc. +noCrawleDescription: Demanar als motors de cerca externs no indexar el teu contingut. alwaysMarkSensitive: Marcar per defecte com a NSFW lockedAccountInfo: Si has configurat la visibilitat del compte per "Només seguidors" - les teves notes no seren visibles per a ningú més, inclús si has d'aprovar els teus - seguidors manualment. + les teves publicacions no serien visibles per a ningú més, inclús si has d'aprovar + els teus seguidors manualment. disableShowingAnimatedImages: No reproduir les imatges animades verificationEmailSent: S'ha enviat correu electrònic de verificació. Si us plau segueix les instruccions per completar la verificació. notSet: Sense especificar emailVerified: El correu electrònic s'ha verificat loadRawImages: Carregar les imatges originals en comptes de mostrar les miniatures -noteFavoritesCount: Nombre de notes afegides a favorits +noteFavoritesCount: Nombre de publicacions afegides a favorits useSystemFont: Fes servir la font per defecte del sistema contact: Contacte clips: Retalls @@ -1330,7 +1330,7 @@ experimentalFeatures: Característiques experimentals developer: Desenvolupador makeExplorableDescription: Si desactives aquesta funció el teu compte no sortirà a la secció "Explora". -showGapBetweenNotesInTimeline: Mostra un espai entre notes a la línea de temps +showGapBetweenNotesInTimeline: Mostra un espai entre publicacions a la línea de temps makeExplorable: Fes el compte visible a "Explora" duplicate: Duplicar left: Esquerra @@ -1342,14 +1342,14 @@ needReloadToApply: Es requereix recarregar la pàgina perquè això surti efecte showTitlebar: Mostrar la barra de títol onlineUsersCount: Hi han {n} usuaris connectats nUsers: '{n} Usuaris' -nNotes: '{n} Notes' +nNotes: '{n} Publicacions' sendErrorReports: Enviar informe d'error clearCache: Netejar memòria cau switchAccount: Canvia de compte enabled: Activat configure: Configurar noBotProtectionWarning: La protecció contra bots no està configurada. -ads: Publicitat +ads: Bàners comunitaris ratio: Ràtio global: Global sent: Enviat @@ -1379,16 +1379,16 @@ adminCustomCssWarn: Aquesta configuració només s'ha d'utilitzar si sabeu què introducció de valors inadequats pot fer que els clients de TOTS deixin de funcionar amb normalitat. Assegureu-vos que el vostre CSS funcioni correctament provant-lo a la configuració de l'usuari. -showUpdates: Mostra una finestra emergent quan Calckey s'actualitzi +showUpdates: Mostra una finestra emergent quan Firefish s'actualitzi recommendedInstances: Servidors recomanats recommendedInstancesDescription: Servidors recomanats separats per salts de línia - que apareixen a la línia de temps recomanada. NO afegiu `https://`, NOMÉS el domini. + que apareixen a la línia de temps recomanada. caption: Descripció Automàtica splash: Pantalla de Benvinguda swipeOnDesktop: Permet lliscar a l'estil del mòbil a l'escriptori updateAvailable: Pot ser que hi hagi una actualització disponible! logoImageUrl: URL de la imatge del logotip -showAdminUpdates: Indica que hi ha disponible una versió nova de Calckey (només per +showAdminUpdates: Indica que hi ha disponible una versió nova de Firefish (només per a administradors) replayTutorial: Repetició del tutorial migration: Migració @@ -1444,7 +1444,7 @@ _ad: reduceFrequencyOfThisAd: Mostrar aquest anunci menys _gallery: my: La meva Galeria - liked: Notes que m'han agradat + liked: Publicacions que m'han agradat unlike: Elimina m'agrada like: M'agrada _forgotPassword: @@ -1489,7 +1489,7 @@ _registry: silenced: Silenciat objectStorageUseSSL: Fes servir SSL yourAccountSuspendedTitle: Aquest compte està suspès -i18nInfo: Calckey està sent traduït a diversos idiomes per voluntaris. Pots ajudar +i18nInfo: Firefish està sent traduït a diversos idiomes per voluntaris. Pots ajudar {link}. manageAccessTokens: Administrar tokens d'accés accountInfo: Informació del compte @@ -1550,7 +1550,7 @@ searchResult: Resultats de la cerca hashtags: Etiquetes troubleshooting: Resolució de problemes learnMore: Més informació -misskeyUpdated: Calckey s'ha actualitzat! +misskeyUpdated: Firefish s'ha actualitzat! translate: Tradueix translatedFrom: Traduït per {x} aiChanMode: Ai-chan a la interfície d'usuari clàssica @@ -1590,26 +1590,34 @@ cannotUploadBecauseNoFreeSpace: La pujada ha fallat a causa de la manca d'espai enableAutoSensitive: Marcatge automàtic NSFW moveTo: Mou el compte actual al compte nou customKaTeXMacro: Macros KaTeX personalitzats -_aboutMisskey: +_aboutFirefish: contributors: Col·laboradors principals allContributors: Tots els col·laboradors - donate: Fes una donació a Calckey + donate: Fes una donació a Firefish source: Codi font - translation: Tradueix Calckey - about: Calckey és una bifurcació de Misskey feta per ThatOneCalculator, que està + translation: Tradueix Firefish + about: Firefish és una bifurcació de Misskey feta per ThatOneCalculator, que està en desenvolupament des del 2022. morePatrons: També agraïm el suport de molts altres ajudants que no figuren aquí. Gràcies! 🥰 - patrons: Mecenes de Calckey + patrons: Mecenes de Firefish patronsList: Llistats cronològicament, no per la quantitat donada. Fes una donació amb l'enllaç de dalt per veure el teu nom aquí! + donateTitle: T'agrada Firefish? + pleaseDonateToFirefish: Penseu en fer una donació a Firefish per donar suport al + seu desenvolupament. + pleaseDonateToHost: Penseu també en fer una donació a la vostre instància, {host}, + per ajudar-lo a suportar els costos de funcionament. + donateHost: Fes una donació a {host} + sponsors: Patrocinadors de Calckey + misskeyContributors: Col·laboradors de Misskey unknown: Desconegut pageLikesCount: Nombre de pàgines amb M'agrada youAreRunningUpToDateClient: Estás fent servir la versió del client més nova. unlikeConfirm: Vols treure el teu m'agrada? fullView: Vista complerta desktop: Escritori -notesCount: Nombre de notes +notesCount: Nombre de publicacions confirmToUnclipAlreadyClippedNote: Aquesta publicació ja és al clip "{name}". La vols treure d'aquest clip? driveFilesCount: Nombre de fitxers al Disk @@ -1643,7 +1651,7 @@ privateModeInfo: Quan està activat, només els servidors a la llista blanca es useBlurEffect: Utilitzeu efectes de desenfocament a la interfície d'usuari accountDeletionInProgress: La supressió del compte està en curs unmuteThread: Desfés el silenci al fil -deleteAccountConfirm: Això suprimirà el vostre compte de manera irreversible. Procedir? +deleteAccountConfirm: Això suprimirà aquest compte de manera irreversible. Procedir? requireAdminForView: Heu d'iniciar sessió amb un compte d'administrador per veure-ho. enableAutoSensitiveDescription: Permet la detecció i el marcatge automàtics dels mitjans NSFW mitjançant Machine Learning sempre que sigui possible. Fins i tot si aquesta @@ -1663,7 +1671,7 @@ objectStorageRegion: Regió objectStoragePrefix: Prefix objectStoragePrefixDesc: Els fitxers es guardaran dins de carpetes amb aquest prefix. objectStorageEndpoint: Extrem -newNoteRecived: Hi han notes noves +newNoteRecived: Hi han publicacions noves sounds: Sons listen: Escoltar none: Res @@ -1678,7 +1686,8 @@ objectStorageUseProxyDesc: Desactiva això si no faràs servir un servidor Proxy objectStorageSetPublicRead: Fixar com a "public-read" al pujar serverLogs: Registres del servidor deleteAll: Esborrar tot -showFixedPostForm: Mostrar el formulari de notes al principi de la línia de temps +showFixedPostForm: Mostrar el formulari de publicacions al principi de la línia de + temps unableToProcess: Aquesta operació no es pot acabar recentUsed: Fet servir fa poc install: Instal·lar @@ -1699,7 +1708,7 @@ ascendingOrder: Ascendent descendingOrder: Descendent scratchpad: Bloc de notes scratchpadDescription: El bloc de notes proporciona un entorn per experiments amb - AiScript. Pots escriure, executar i comprovar els resultats interactuant amb Calckey. + AiScript. Pots escriure, executar i comprovar els resultats interactuant amb Firefish. output: Sortida script: Script disablePagesScript: Desactivar AiScript a les pàgines @@ -1711,9 +1720,9 @@ accentColor: Color principal textColor: Color del text value: Valor sendErrorReportsDescription: "Quan està activat, quan es produeixi un problema la - informació detallada d'errors es compartirà amb Calckey, ajudant a millorar la qualitat - de Calckey.\nAixò inclourà informació com la versió del vostre sistema operatiu, - quin navegador utilitzeu, la vostra activitat a Calckey, etc." + informació detallada d'errors es compartirà amb Firefish, ajudant a millorar la + qualitat de Firefish.\nAixò inclourà informació com la versió del vostre sistema + operatiu, quin navegador utilitzeu, la vostra activitat a Firefish, etc." myTheme: El meu tema backgroundColor: Color de fons saveAs: Desa com... @@ -1752,7 +1761,7 @@ sendPushNotificationReadMessage: Suprimeix les notificacions push un cop s'hagin sendPushNotificationReadMessageCaption: Es mostrarà una notificació amb el text "{emptyPushNotificationMessage}" durant un breu temps. Això pot augmentar l'ús de la bateria del vostre dispositiu, si escau. -showAds: Mostrar publicitat +showAds: Mostrar bàners de la comunitat enterSendsMessage: Pren retorn al formulari del missatge per enviar (quant no s'activa es Ctrl + Return) customMOTD: MOTD personalitzat (missatges de la pantalla de benvinguda) @@ -1770,7 +1779,7 @@ migrationConfirm: "Esteu absolutament segur que voleu migrar el vostre compte a Un cop ho feu, no podreu revertir-ho i no podreu tornar a utilitzar el vostre compte amb normalitat.\nA més, assegureu-vos d'haver configurat aquest compte actual com el compte del qual us moveu." -defaultReaction: Reacció d'emoji predeterminada per a notes sortints i entrants +defaultReaction: Reacció d'emoji predeterminades per a publicacions sortints i entrants enableCustomKaTeXMacro: Activa les macros KaTeX personalitzades noteId: ID de la publicació _nsfw: @@ -1833,7 +1842,7 @@ pushNotificationAlreadySubscribed: Les notificacions push ja estan activades pushNotificationNotSupported: El vostre navegador o servidor no admet notificacions push license: Llicència -indexPosts: Índex de notes +indexPosts: Índex de publicacions indexFrom: Índex a partir de l'ID de Publicacions indexFromDescription: Deixeu en blanc per indexar cada publicació indexNotice: Ara indexant. Això probablement trigarà una estona, si us plau, no reinicieu @@ -1856,7 +1865,7 @@ _channel: owned: Propietari usersCount: '{n} Participants' following: Seguit per - notesCount: '{n} Notes' + notesCount: '{n} Publicacions' nameAndDescription: Nom i descripció nameOnly: Només nom _instanceMute: @@ -1894,17 +1903,17 @@ _tutorial: step6_1: Aleshores, què és aquest lloc? step6_4: Ara ves, explora i diverteix-te! step1_2: Anem a fer la configuració. Estaràs en funcionament en un tres i no res! - title: Com utilitzar Calckey + title: Com utilitzar Firefish step1_1: Benvingut! step2_1: En primer lloc, empleneu el vostre perfil. step4_1: Anem a treure't allà fora. step5_5: La línea de temps Social {icon} és una combinació de les línies de temps d'Inici i Local. step6_3: Cada servidor funciona de diferents maneres, i no tots els servidors executen - Calckey. Aquest sí que sí! És una mica complicat, però ho aconseguiràs en poc + Firefish. Aquest sí que sí! És una mica complicat, però ho aconseguiràs en poc temps. step2_2: Proporcionar informació sobre qui sou facilitarà que altres puguin saber - si volen veure les vostres notes o seguir-vos. + si volen veure les vostres publicacions o seguir-vos. step3_1: Ara toca seguir a algunes persones! step3_2: "Les teves líneas de temps d'inici i social es basen en qui seguiu, així que proveu de seguir un parell de comptes per començar.\nFeu clic al cercle més @@ -1912,7 +1921,7 @@ _tutorial: step4_2: A algunes persones els agrada fer una publicació de {introduction} o un senzill "Hola món!" step5_1: Línies de temps, línies de temps a tot arreu! - step6_2: Bé, no només t'has unit a Calckey. T'has unit a un portal al Fediverse, + step6_2: Bé, no només t'has unit a Firefish. T'has unit a un portal al Fediverse, una xarxa interconnectada de milers de servidors. _permissions: "read:account": Consulta la informació del teu compte @@ -1926,9 +1935,9 @@ _permissions: "write:notifications": Gestiona les teves notificacions "write:user-groups": Editar o suprimir grups d'usuaris "write:blocks": Editar la llista d'usuaris bloquejats - "write:notes": Redactar o suprimir notes + "write:notes": Redactar o suprimir publicacions "write:channels": Editar els teus canals - "read:gallery-likes": Consulta la llista de notes que t'agraden de la galeria + "read:gallery-likes": Consulta la llista de publicacions que t'agraden de la galeria "write:drive": Editar o suprimir fitxers i carpetes del Disc "read:favorites": Consulta la teva llista d'adreces d'interès "write:favorites": Editeu la teva llista d'adreces d'interès @@ -1942,7 +1951,7 @@ _permissions: "read:channels": Consulta els teus canals "read:gallery": Consulta la teva galeria "write:gallery": Edita la teva galeria - "write:gallery-likes": Edita la llista de notes que t'agraden de la galeria + "write:gallery-likes": Edita la llista de publicacions que t'agraden de la galeria "read:following": Consulta la informació sobre a qui segueixes "read:reactions": Consulta les teves reaccions "read:pages": Consulta la teva pàgina @@ -1986,10 +1995,10 @@ _charts: apRequest: Sol·licituds usersTotal: Nombre total d'usuaris activeUsers: Usuaris actius - notesIncDec: Diferència en el nombre de notes - localNotesIncDec: Diferència en el nombre de notes locals - remoteNotesIncDec: Diferència en el nombre de notes remotes - notesTotal: Nombre total de notes + notesIncDec: Diferència en el nombre de publicacions + localNotesIncDec: Diferència en el nombre de publicacions locals + remoteNotesIncDec: Diferència en el nombre de publicacions remotes + notesTotal: Nombre total de publicacions filesIncDec: Diferència en el nombre de fitxers filesTotal: Nombre total de fitxers storageUsageTotal: Ús total d'emmagatzematge @@ -1998,13 +2007,13 @@ _instanceCharts: requests: Sol·licituds users: Diferència en el nombre d'usuaris usersTotal: Nombre acumulat d'usuaris - notes: Diferència en el nombre de notes + notes: Diferència en el nombre de publicacions ffTotal: Nombre acumulat d'usuaris que segueixes/et segueixen cacheSize: Diferència en la mida de la memòria cau cacheSizeTotal: Mida total acumulada de la memòria cau files: Diferència en el nombre de fitxers filesTotal: Nombre acumulat de fitxers - notesTotal: Nombre acumulat de notes + notesTotal: Nombre acumulat de publicacions ff: "Diferència en el nombre d'usuaris que segueixes/que et segueixen " _timelines: home: Inici @@ -2025,12 +2034,12 @@ _wordMute: hard: Dur muteWordsDescription2: Envolta les paraules clau amb barres inclinades per utilitzar expressions regulars. - softDescription: Amaga les notes que compleixen les condicions establertes de la - línia de temps. - hardDescription: Evita que les notes que compleixin les condicions establertes s'afegeixin - a la línia de temps. A més, aquestes notes no s'afegiran a la línia de temps encara - que es modifiquin les condicions. - mutedNotes: Notes silenciades + softDescription: Amaga les publicacions que compleixen les condicions establertes + de la línia de temps. + hardDescription: Evita que les publicacions que compleixin les condicions establertes + s'afegeixin a la línia de temps. A més, aquestes publicacions no s'afegiran a + la línia de temps encara que es modifiquin les condicions. + mutedNotes: Publicacions silenciades _auth: shareAccessAsk: Estàs segur que vols autoritzar aquesta aplicació per accedir al teu compte? @@ -2053,18 +2062,18 @@ _messaging: groups: Grups dms: Privat _antennaSources: - all: Totes les notes + all: Totes les publicacions homeTimeline: Publicacions dels usuaris que segueixes - users: Notes d'usuaris concrets - userGroup: Notes d'usuaris d'un grup determinat - userList: Notes d'una llista determinada d'usuaris + users: Publicacions d'usuaris concrets + userGroup: Publicacions d'usuaris d'un grup determinat + userList: Publicacions d'una llista determinada d'usuaris instances: Publicacions de tots els usuaris d'un servidor _relayStatus: requesting: Pendent accepted: Acceptat rejected: Rebutjat deleted: Eliminat -editNote: Edita la nota +editNote: Edita la publicació edited: 'Editat a {date} {time}' findOtherInstance: Cercar un altre servidor signupsDisabled: Actualment, les inscripcions en aquest servidor estan desactivades, @@ -2086,11 +2095,11 @@ _experiments: release: Publicà title: Experiments enablePostImports: Activar l'importació de publicacions - postImportsCaption: Permet els usuaris importar publicacions desde comptes a Calckey, + postImportsCaption: Permet els usuaris importar publicacions desde comptes a Firefish, Misskey, Mastodon, Akkoma i Pleroma. Pot fer que el servidor vagi més lent durant la càrrega si tens un coll d'ampolla a la cua. noGraze: Si us plau, desactiva l'extensió del navegador "Graze for Mastodon", ja que - interfereix amb Calckey. + interfereix amb Firefish. accessibility: Accessibilitat jumpToReply: Vés a la resposta newer: Més nou @@ -2105,14 +2114,14 @@ expandOnNoteClick: Obre la publicació amb un clic expandOnNoteClickDesc: Si està desactivat, encara pots obrir les publicacions al menú del botó dret o fent clic a la marca de temps. channelFederationWarn: Els canals encara no es federen amb altres servidors -searchPlaceholder: Cerca a Calckey +searchPlaceholder: Cerca a Firefish listsDesc: Les llistes et permeten crear línies de temps amb usuaris específics. Es pot accedir des de la pàgina de línies de temps. clipsDesc: Els clips són com marcadors categoritzats que es poden compartir. Podeu crear clips des del menú de publicacions individuals. selectChannel: Selecciona un canal isLocked: Aquest compte té les següents aprovacions -isPatron: Mecenes de Calkey +isPatron: Mecenes de Firefish isBot: Aquest compte és un bot isModerator: Moderador isAdmin: Administrador @@ -2144,3 +2153,40 @@ _skinTones: swipeOnMobile: Permet lliscar entre pàgines enableIdenticonGeneration: Habilitar la generació d'Identicon enableServerMachineStats: Habilitar les estadístiques del maquinari del servidor +showPopup: Notificar els usuaris amb una finestra emergent +showWithSparkles: Mostra amb espurnes +youHaveUnreadAnnouncements: Tens anuncis sense llegir +xl: XL +donationLink: Enllaç a la pàgina de donacions +neverShow: No tornis a mostrar +remindMeLater: Potser després +removeMember: Elimina el membre +removeQuote: Elimina la cita +removeRecipient: Elimina el destinatari +verifiedLink: Enllaç verificat +_feeds: + rss: RSS + atom: Atom + jsonFeed: Feed JSON + copyFeed: Copiar feed +origin: Origen +objectStorageS3ForcePathStyle: Feu servir rutes URLs per a endpoints +objectStorageS3ForcePathStyleDesc: Activeu aquesta opció per crear URL per endpoints + en el format "s3.amazonaws.com//" sobre ".s3.amazonaws.com". +deletePasskeys: Suprimeix les contrasenyes +deletePasskeysConfirm: Això suprimirà de manera irreversible totes les contrasenyes + i claus de seguretat d'aquest compte. Procedir? +inputNotMatch: L'entrada no coincideix +delete2fa: Desactivar 2FA +delete2faConfirm: Això suprimirà irreversiblement 2FA en aquest compte. Procedir? +addRe: Afegeix "re:" al començament del comentari quant responguis a un missatge amb + avís de contingut +confirm: Confirmar +importZip: Importar ZIP +exportZip: Exportar ZIP +emojiPackCreator: Creador de paquets Emoji +detectPostLanguage: Detecta l'idioma automàticament i mostra un botó per els articles + en altres idiomes +indexableDescription: Permet al cercador intern mostrar els missatges públics +indexable: Indexable +languageForTranslation: Idioma de traducció d'articles diff --git a/locales/cs-CZ.yml b/locales/cs-CZ.yml index e6394f3ee6..a92f414c40 100644 --- a/locales/cs-CZ.yml +++ b/locales/cs-CZ.yml @@ -1,9 +1,9 @@ _lang_: "Čeština" -headlineMisskey: "Síť propojená poznámkami" -introMisskey: "Vítejte! Calckey je otevřený a decentralizovaný microblogový servis.\n\ - \"Poznámkami\" můžete sdílet co se zrovna děje se všemi ve Vašem okolí. \U0001F4E1\ - \nPomocí \"reakcí\" můžete sdílet své názory a pocity na ostatní poznámky. \U0001F44D\ - \nPojďte objevovat nový svět! \U0001F680" +headlineFirefish: "Síť propojená poznámkami" +introFirefish: "Vítejte! Firefish je otevřený a decentralizovaný microblogový servis.\n\ + \"Poznámkami\" můžete sdílet co se zrovna děje se všemi ve Vašem okolí. 📡\nPomocí + \"reakcí\" můžete sdílet své názory a pocity na ostatní poznámky. 👍\nPojďte objevovat + nový svět! 🚀" monthAndDay: "{day}. {month}." search: "Vyhledávání" notifications: "Oznámení" @@ -18,7 +18,7 @@ enterUsername: "Zadej uživatelské jméno" renotedBy: "{user} přeposla/a" noNotes: "Žádné poznámky" noNotifications: "Žádná oznámení" -instance: "Instance" +instance: "Server" settings: "Nastavení" basicSettings: "Obecná nastavení" otherSettings: "Rozšířená nastavení" @@ -46,8 +46,8 @@ copyContent: "Zkopírovat obsah" copyLink: "Kopírovat odkaz" delete: "Smazat" deleteAndEdit: "Smazat a upravit" -deleteAndEditConfirm: "Jste si jistí že chcete smazat tuto poznámku a editovat ji?\ - \ Ztratíte tím všechny reakce, sdílení a odpovědi na ni." +deleteAndEditConfirm: "Jste si jistí že chcete smazat tuto poznámku a editovat ji? + Ztratíte tím všechny reakce, sdílení a odpovědi na ni." addToList: "Přidat do seznamu" sendMessage: "Odeslat zprávu" copyUsername: "Kopírovat uživatelské jméno" @@ -66,11 +66,11 @@ import: "Importovat" export: "Exportovat" files: "Soubor(ů)" download: "Stáhnout" -driveFileDeleteConfirm: "Opravdu chcete smazat soubor \"{name}\"? Soubor bude odstraněn\ - \ ze všech příspěvků, které ji obsahují jako přílohu." +driveFileDeleteConfirm: "Opravdu chcete smazat soubor \"{name}\"? Soubor bude odstraněn + ze všech příspěvků, které ji obsahují jako přílohu." unfollowConfirm: "Jste si jisti že už nechcete sledovat {name}?" -exportRequested: "Požádali jste o export. To může chvíli trvat. Přidáme ho na váš\ - \ Disk až bude dokončen." +exportRequested: "Požádali jste o export. To může chvíli trvat. Přidáme ho na váš + Disk až bude dokončen." importRequested: "Požádali jste o export. To může chvilku trvat." lists: "Seznamy" noLists: "Nemáte žádné seznamy" @@ -86,8 +86,8 @@ somethingHappened: "Jejda. Něco se nepovedlo." retry: "Opakovat" pageLoadError: "Nepodařilo se načíst stránku" serverIsDead: "Server neodpovídá. Počkejte chvíli a zkuste to znovu." -youShouldUpgradeClient: "Pro zobrazení této stránky obnovte stránku pro aktualizaci\ - \ klienta." +youShouldUpgradeClient: "Pro zobrazení této stránky obnovte stránku pro aktualizaci + klienta." enterListName: "Jméno seznamu" privacy: "Soukromí" makeFollowManuallyApprove: "Žádosti o sledování vyžadují potvrzení" @@ -111,8 +111,8 @@ clickToShow: "Klikněte pro zobrazení" sensitive: "NSFW" add: "Přidat" reaction: "Reakce" -reactionSettingDescription2: "Přetažením změníte pořadí, kliknutím smažete, zmáčkněte\ - \ \"+\" k přidání" +reactionSettingDescription2: "Přetažením změníte pořadí, kliknutím smažete, zmáčkněte + \"+\" k přidání" rememberNoteVisibility: "Zapamatovat nastavení zobrazení poznámky" attachCancel: "Odstranit přílohu" markAsSensitive: "Označit jako NSFW" @@ -141,18 +141,18 @@ emojiUrl: "URL obrázku" addEmoji: "Přidat emoji" settingGuide: "Doporučené nastavení" cacheRemoteFiles: "Ukládání vzdálených souborů do mezipaměti" -cacheRemoteFilesDescription: "Zakázání tohoto nastavení způsobí, že vzdálené soubory\ - \ budou odkazovány přímo, místo aby byly ukládány do mezipaměti. Tím se ušetří úložiště\ - \ na serveru, ale zvýší se provoz, protože se negenerují miniatury." +cacheRemoteFilesDescription: "Zakázání tohoto nastavení způsobí, že vzdálené soubory + budou odkazovány přímo, místo aby byly ukládány do mezipaměti. Tím se ušetří úložiště + na serveru, ale zvýší se provoz, protože se negenerují miniatury." flagAsBot: "Tento účet je bot" -flagAsBotDescription: "Pokud je tento účet kontrolován programem zaškrtněte tuto možnost.\ - \ To označí tento účet jako bot pro ostatní vývojáře a zabrání tak nekonečným interakcím\ - \ s ostatními boty a upraví Calckey systém aby se choval k tomuhle účtu jako bot." +flagAsBotDescription: "Pokud je tento účet kontrolován programem zaškrtněte tuto možnost. + To označí tento účet jako bot pro ostatní vývojáře a zabrání tak nekonečným interakcím + s ostatními boty a upraví Firefish systém aby se choval k tomuhle účtu jako bot." flagAsCat: "Tenhle účet je kočka" flagAsCatDescription: "Vyberte tuto možnost aby tento účet byl označen jako kočka." flagShowTimelineReplies: "Zobrazovat odpovědi na časové ose" -flagShowTimelineRepliesDescription: "Je-li zapnuto, zobrazí odpovědi uživatelů na\ - \ poznámky jiných uživatelů na vaší časové ose." +flagShowTimelineRepliesDescription: "Je-li zapnuto, zobrazí odpovědi uživatelů na + poznámky jiných uživatelů na vaší časové ose." autoAcceptFollowed: "Automaticky akceptovat následování od účtů které sledujete" addAccount: "Přidat účet" loginFailed: "Přihlášení se nezdařilo." @@ -165,10 +165,10 @@ searchWith: "Hledat: {q}" youHaveNoLists: "Nemáte žádné seznamy" followConfirm: "Jste si jisti, že chcete sledovat {name}?" proxyAccount: "Proxy účet" -proxyAccountDescription: "Proxy účet je účet, který za určitých podmínek sleduje uživatele\ - \ na dálku vaším jménem. Například když uživatel zařadí vzdáleného uživatele do\ - \ seznamu, pokud nikdo nesleduje uživatele na seznamu, aktivita nebude doručena\ - \ instanci, takže místo toho bude uživatele sledovat účet proxy." +proxyAccountDescription: "Proxy účet je účet, který za určitých podmínek sleduje uživatele + na dálku vaším jménem. Například když uživatel zařadí vzdáleného uživatele do seznamu, + pokud nikdo nesleduje uživatele na seznamu, aktivita nebude doručena instanci, takže + místo toho bude uživatele sledovat účet proxy." host: "Hostitel" selectUser: "Vyberte uživatele" recipient: "Pro" @@ -203,7 +203,7 @@ blockedInstances: "Blokované instance" noUsers: "Žádní uživatelé" editProfile: "Upravit můj profil" pinLimitExceeded: "Nemůžete připnout další poznámky." -intro: "Instalace Calckey byla dokončena! Prosím vytvořte admina." +intro: "Instalace Firefish byla dokončena! Prosím vytvořte admina." done: "Hotovo" processing: "Zpracovávám" preview: "Náhled" @@ -253,8 +253,8 @@ agreeTo: "Souhlasím s {0}" tos: "Podmínky užívání" start: "Začít" home: "Domů" -remoteUserCaution: "Tyto informace nemusí být aktuální jelikož uživatel je ze vzdálené\ - \ instance." +remoteUserCaution: "Tyto informace nemusí být aktuální jelikož uživatel je ze vzdálené + instance." activity: "Aktivita" images: "Obrázky" birthday: "Datum narození" @@ -347,7 +347,7 @@ recentlyUpdatedUsers: "Nedávno aktívni uživatelé" popularTags: "Populární tagy" userList: "Seznamy" about: "Informace" -aboutMisskey: "O Calckey" +aboutFirefish: "O Firefish" administrator: "Administrátor" token: "Token" twoStepAuthentication: "Dvoufaktorová autentikace" @@ -563,8 +563,8 @@ info: "Informace" unknown: "Neznámý" onlineStatus: "Online status" hideOnlineStatus: "Skrýt Váš online status" -hideOnlineStatusDescription: "Skrytí vašeho online stavu může snížit funkcionalitu\ - \ některých funkcí, například vyhledávání." +hideOnlineStatusDescription: "Skrytí vašeho online stavu může snížit funkcionalitu + některých funkcí, například vyhledávání." online: "Online" active: "Aktivní" offline: "Offline" @@ -646,7 +646,7 @@ _registry: keys: "Klíče" domain: "Doména" createKey: "Vytvořit klíč" -_aboutMisskey: +_aboutFirefish: allContributors: "Všichni přispěvatelé" source: "Zdrojový kód" _mfm: @@ -983,7 +983,7 @@ emptyDrive: Váš disk je prázdný inputNewDescription: Zadejte nový popisek hasChildFilesOrFolders: Složka nemůže být smazána, protože není prázdná. noThankYou: Ne, děkuji -addInstance: Přidat instance +addInstance: Přidat server selectInstance: Vybrat si instance blockedUsers: Zablokovaní uživatelé muteAndBlock: Ztlumení a blokace @@ -1007,3 +1007,6 @@ renoteMute: Ztlumit přeposílání renoteUnmute: Zrušit ztlumení přeposílání flagSpeakAsCat: Mluvit jako kočka flagSpeakAsCatDescription: Vaše příspěvky budou v kočičím režimu nyanifikovány. +newer: novější +older: starší +jumpToPrevious: Skočit na předchozí diff --git a/locales/da-DK.yml b/locales/da-DK.yml index f0e6523ebb..f948215e9d 100644 --- a/locales/da-DK.yml +++ b/locales/da-DK.yml @@ -157,9 +157,9 @@ pageLoadErrorDescription: Dette er normalt på grund af netværksproblemer eller browser's cache. Prøv at ryd cachen og så gentage efter et styk tid. serverIsDead: Serveren svarer ikke. Vær sød at vente et styk tid og prøv igen. editWidgetsExit: Færdig -headlineMisskey: En åben-kildekode, decentraliseret social-media platform som er frit +headlineFirefish: En åben-kildekode, decentraliseret social-media platform som er frit forevigt! 🚀 -introMisskey: Velkommen! Calckey er en åbent-kildekode, decentraliseret social-media +introFirefish: Velkommen! Firefish er en åbent-kildekode, decentraliseret social-media platform som er frit forevigt!🚀 enableEmojiReactions: Aktivere emoji reaktioner unsuspendConfirm: Er du sikker på at du vil ikke suspendere denne konto endnu længere? @@ -178,7 +178,7 @@ cacheRemoteFiles: Cachere fremmed filer flagAsBotDescription: Aktivere denne valgmulighed hvis denne konto er kontrolleret af en komputerprogram. Hvis den et tændt så vil det signalere til andre udviklere som arbejder på komputer-kontrolleret social-media kontoer og det vil også adjustere - Calckey's indresystemer til at behandle denne konto som en robot. + Firefish's indresystemer til at behandle denne konto som en robot. flagAsCat: Er du en kat? 😺 flagSpeakAsCat: Tale som en kat emojiUrl: Emoji URL diff --git a/locales/de-DE.yml b/locales/de-DE.yml index 9e3a07654f..b2e7bda73c 100644 --- a/locales/de-DE.yml +++ b/locales/de-DE.yml @@ -1,9 +1,9 @@ _lang_: "Deutsch" -headlineMisskey: "Eine dezentralisierte Open-Source Social Media Plattform, die für +headlineFirefish: "Eine dezentralisierte Open-Source Social Media Plattform, die für immer gratis bleibt! 🚀" -introMisskey: "Willkommen! Calckey ist eine dezentralisierte Open-Source Social Media - Plattform, die für immer gratis bleibt!🚀" -monthAndDay: "{month}/{day}" +introFirefish: "Willkommen! Firefish ist eine dezentralisierte Open-Source Social + Media Plattform, die für immer gratis bleibt!🚀" +monthAndDay: "{day}.{month}." search: "Suchen" notifications: "Benachrichtigungen" username: "Nutzername" @@ -67,7 +67,7 @@ export: "Export" files: "Dateien" download: "Herunterladen" driveFileDeleteConfirm: "Möchtest du die Datei \"{name}\" wirklich löschen? Es wird - aus allen Beiträgen entfernt, die die Datei als Anhang enthalten." + aus allen Beiträgen entfernt, welche die Datei als Anhang enthalten." unfollowConfirm: "Bist du dir sicher, daß du {name} nicht mehr folgen möchtest?" exportRequested: "Du hast einen Export angefragt. Dies kann etwas Zeit in Anspruch nehmen. Sobald der Export abgeschlossen ist, wird er deinem Laufwerk hinzugefügt." @@ -77,7 +77,7 @@ lists: "Listen" noLists: "Du hast keine Listen angelegt" note: "Beitrag" notes: "Beiträge" -following: "Folge ich" +following: "Folgen" followers: "Folgen mir" followsYou: "Folgt dir" createList: "Liste erstellen" @@ -97,7 +97,7 @@ enterListName: "Gib einen Namen für die Liste ein" privacy: "Privatsphäre" makeFollowManuallyApprove: "Folgeanfragen bedürfen der Genehmigung" defaultNoteVisibility: "Standard-Sichtbarkeit" -follow: "Folge ich" +follow: "Folgen" followRequest: "Follow anfragen" followRequests: "Follow-Anfragen" unfollow: "Nicht mehr folgen" @@ -117,7 +117,7 @@ sensitive: "NSFW" add: "Hinzufügen" reaction: "Reaktionen" reactionSetting: "Reaktionen, die in der Reaktionsauswahl angezeigt werden sollen" -reactionSettingDescription2: "Ziehen Sie, um neu zu ordnen,\nklicken Sie, um zu löschen,\n +reactionSettingDescription2: "Ziehen Sie, um neu zu ordnen, klicken Sie, um zu löschen, drücken Sie \"+\", um hinzuzufügen." rememberNoteVisibility: "Einstellungen für die Sichtbarkeit von Beiträgen speichern" attachCancel: "Anhang entfernen" @@ -155,7 +155,7 @@ cacheRemoteFilesDescription: "Ist diese Einstellung deaktiviert, so werden Datei flagAsBot: "Dieses Nutzerkonto als Bot kennzeichnen" flagAsBotDescription: "Aktiviere diese Option, falls dieses Nutzerkonto durch ein Programm gesteuert wird. Falls aktiviert, agiert es als Flag für andere Entwickler - zur Verhinderung von endlosen Kettenreaktionen mit anderen Bots und lässt Calckeys + zur Verhinderung von endlosen Kettenreaktionen mit anderen Bots und lässt Firefishs interne Systeme dieses Nutzerkonto als Bot behandeln." flagAsCat: "Bist du eine Katze? 😺" flagAsCatDescription: "Du bekommst Katzenohren und sprichst wie eine Katze!" @@ -225,7 +225,7 @@ noUsers: "Es sind keine Nutzer vorhanden" editProfile: "Profil bearbeiten" noteDeleteConfirm: "Sind Sie sicher, dass Sie diesen Beitrag löschen wollen?" pinLimitExceeded: "Sie können keine weiteren Beiträge anpinnen" -intro: "Die Installation von Calckey ist abgeschlossen! Bitte erstellen Sie einen +intro: "Die Installation von Firefish ist abgeschlossen! Bitte erstellen Sie einen Admin-Benutzer." done: "Erledigt" processing: "In Bearbeitung" @@ -419,7 +419,7 @@ exploreFediverse: "Das Fediverse erkunden" popularTags: "Beliebte Schlagwörter" userList: "Liste" about: "Über" -aboutMisskey: "Über Calckey" +aboutFirefish: "Über Firefish" administrator: "Administrator" token: "Token" twoStepAuthentication: "Zwei-Faktor-Authentifizierung" @@ -474,7 +474,7 @@ invitations: "Einladungen" invitationCode: "Einladungscode" checking: "Wird überprüft …" available: "Verfügbar" -unavailable: "Unverfügbar" +unavailable: "Nicht verfügbar" usernameInvalidFormat: "Du kannst Klein- und Großbuchstaben, Zahlen sowie Unterstriche verwenden." tooShort: "Zu kurz" @@ -575,7 +575,7 @@ ascendingOrder: "Aufsteigende Reihenfolge" descendingOrder: "Absteigende Reihenfolge" scratchpad: "Testumgebung" scratchpadDescription: "Die Testumgebung bietet einen Bereich für AiScript-Experimente. - Dort kannst du AiScript schreiben, ausführen sowie dessen Auswirkungen auf Calckey + Dort kannst du AiScript schreiben, ausführen sowie dessen Auswirkungen auf Firefish überprüfen." output: "Ausgabe" script: "Skript" @@ -595,7 +595,7 @@ yourAccountSuspendedDescription: "Dieses Nutzerkonto wurde gesperrt, da es gegen menu: "Menü" divider: "Trenner" addItem: "Element hinzufügen" -relays: "Relays" +relays: "Relais" addRelay: "Relay hinzufügen" inboxUrl: "inbox-URL" addedRelays: "Hinzugefügte Relays" @@ -666,7 +666,7 @@ overview: "Übersicht" logs: "Protokolle" delayed: "Verzögert" database: "Datenbank" -channel: "Channels" +channel: "Kanäle" create: "Erstellen" notificationSetting: "Benachrichtigungseinstellungen" notificationSettingDesc: "Wähle die Art der anzuzeigenden Benachrichtigungen." @@ -717,7 +717,7 @@ unclip: "Aus Clip entfernen" confirmToUnclipAlreadyClippedNote: "Dieser Beitrag ist bereits im \"{name}\" Clip enthalten. Möchtest du ihn aus diesem Clip entfernen?" public: "Öffentlich" -i18nInfo: "Calckey wird durch freiwillige Helfer in viele verschiedene Sprachen übersetzt. +i18nInfo: "Firefish wird durch freiwillige Helfer in viele verschiedene Sprachen übersetzt. Auf {link} kannst du mithelfen." manageAccessTokens: "Zugriffstokens verwalten" accountInfo: "Nutzerkonto-Informationen" @@ -737,8 +737,7 @@ no: "Nein" driveFilesCount: "Anzahl der Dateien in Cloud-Drive" driveUsage: "Cloud-Drive-Auslastung" noCrawle: "Crawler-Indexierung ablehnen" -noCrawleDescription: "Suchmaschinen bitten, die eigene Profilseite, Beiträge, Nutzer-Seiten - usw. nicht zu indexieren." +noCrawleDescription: "Externe Suchmaschinen auffordern, Ihre Inhalte nicht zu indizieren." lockedAccountInfo: "Auch wenn du Follow-Anfragen auf manuelle Bestätigung setzt, wird jeder deiner Posts öffentlich sichtbar sein, sofern du ihre Sichtbarkeit nicht auf \"Nur Follower\" setzt." @@ -777,10 +776,10 @@ nUsers: "{n} Nutzer" nNotes: "{n} Beiträge" sendErrorReports: "Fehlerberichte senden" sendErrorReportsDescription: "Ist diese Option aktiviert, so werden beim Auftreten - von Fehlern detaillierte Fehlerinformationen an Calckey weitergegeben, was zur Verbesserung - der Qualität von Calckey beiträgt.\nEnthalten in diesen Informationen sind u.a. - die Version deines Betriebssystems, welchen Browser du verwendest und ein Verlauf - deiner Aktivitäten innerhalb Calckey." + von Fehlern detaillierte Fehlerinformationen an Firefish weitergegeben, was zur + Verbesserung der Qualität von Firefish beiträgt.\nEnthalten in diesen Informationen + sind u.a. die Version deines Betriebssystems, welchen Browser du verwendest und + ein Verlauf deiner Aktivitäten innerhalb Firefish." myTheme: "Meine Farbkombination" backgroundColor: "Hintergrundfarbe" accentColor: "Akzentfarbe" @@ -835,7 +834,7 @@ active: "Aktiv" offline: "Offline" notRecommended: "Nicht empfohlen" botProtection: "Schutz vor Bots" -instanceBlocking: "Verbundene Server verwalten" +instanceBlocking: "Föderation verwalten" selectAccount: "Nutzerkonto auswählen" switchAccount: "Konto wechseln" enabled: "Aktiviert" @@ -853,7 +852,7 @@ gallery: "Bilder-Galerie" recentPosts: "Neue Beiträge" popularPosts: "Beliebte Beiträge" shareWithNote: "Mit Beitrag teilen" -ads: "Werbeanzeigen" +ads: "Community-Banner" expiration: "Frist" memo: "Merkzettel" priority: "Priorität" @@ -875,7 +874,7 @@ hashtags: "Hashtags" troubleshooting: "Problembehandlung" useBlurEffect: "Weichzeichnungseffekt in der Benutzeroberfläche verwenden" learnMore: "Mehr erfahren" -misskeyUpdated: "Calckey wurde aktualisiert!" +misskeyUpdated: "Firefish wurde aktualisiert!" whatIsNew: "Änderungen anzeigen" translate: "Übersetzen" translatedFrom: "Aus {x} übersetzt" @@ -900,14 +899,14 @@ manageAccounts: "Nutzerkonten verwalten" makeReactionsPublic: "Reaktionsverlauf veröffentlichen" makeReactionsPublicDescription: "Jeder wird die Liste deiner gesendeten Reaktionen einsehen können." -classic: "Mittig/zentriert" +classic: "Zentriert" muteThread: "Thread stummschalten" unmuteThread: "Threadstummschaltung aufheben" ffVisibility: "Sichtbarkeit von Gefolgten/Followern" ffVisibilityDescription: "Konfiguriere wer sehen kann, wem du folgst sowie wer dir folgt." continueThread: "Beitrag fortsetzen" -deleteAccountConfirm: "Dein Nutzerkonto wird unwiderruflich gelöscht. Trotzdem fortfahren?" +deleteAccountConfirm: "Das Nutzerkonto wird unwiderruflich gelöscht. Trotzdem fortfahren?" incorrectPassword: "Falsches Passwort." voteConfirm: "Wirklich für „{choice}“ abstimmen?" hide: "Inhalt verbergen" @@ -947,14 +946,15 @@ recentNDays: "Die letzten {n} Tage" noEmailServerWarning: "Es ist kein Email-Server konfiguriert." thereIsUnresolvedAbuseReportWarning: "Es liegen ungelöste Meldungen vor." recommended: "Favoriten" -check: "Kontrolle" +check: "Überprüfe" driveCapOverrideLabel: "Die Cloud-Drive-Kapazität dieses Nutzers verändern" driveCapOverrideCaption: "Gib einen Wert von 0 oder weniger ein, um die Kapazität auf den Standard zurückzusetzen." -requireAdminForView: "Melde dich mit einem Administratorkonto an, um dies einzusehen." -isSystemAccount: "Dieses Konto wird vom System erstellt und automatisch verwaltet. - Bitte moderieren, bearbeiten, löschen oder manipulieren Sie dieses Konto nicht, - da es sonst zu einem Server-Absturz kommen könnte." +requireAdminForView: "Du musst dich mit einem Administratorkonto anmelden um dies + zu sehen." +isSystemAccount: "Ein Nutzerkonto, dass durch das System erstellt und automatisch + kontrolliert wird. Jede Anpassung, Veränderung oder Löschung dieses Nutzerkontos, + kann zu schwerwiegenden Fehlern auf diesem Server führen." typeToConfirm: "Bitte gib zur Bestätigung {x} ein" deleteAccount: "Nutzerkonto löschen" document: "Dokumentation" @@ -965,7 +965,7 @@ logoutConfirm: "Wirklich abmelden?" lastActiveDate: "Zuletzt verwendet am" statusbar: "Statusleiste" pleaseSelect: "Wähle eine Option" -reverse: "Umkehren" +reverse: "Rückgängig machen" colored: "Farbig" refreshInterval: "Aktualisierungsintervall " label: "Beschriftung" @@ -977,12 +977,12 @@ sensitiveMediaDetection: "Erkennung von NSFW-Medien" localOnly: "Nur Lokal" remoteOnly: "Nur für andere/fremde Server" failedToUpload: "Hochladen fehlgeschlagen" -cannotUploadBecauseInappropriate: "Diese Datei kann nicht hochgeladen werden, da Anteile - der Datei als möglicherweise NSFW festgestellt wurden." +cannotUploadBecauseInappropriate: "Diese Datei kann nicht hochgeladen werden, da Teile + der Datei möglicherweise NSFW-Inhalt enthalten." cannotUploadBecauseNoFreeSpace: "Die Datei konnte nicht hochgeladen werden, da dein Cloud-Drive-Speicherplatz aufgebraucht ist." beta: "Beta" -enableAutoSensitive: "Selbstständige NSFW-Kennzeichnung" +enableAutoSensitive: "Automatische NSFW-Kennzeichnung" enableAutoSensitiveDescription: "Erlaubt, wo möglich, die automatische Erkennung und Kennzeichnung von NSFW-Medien durch maschinelles Lernen. Auch wenn diese Option deaktiviert ist, kann sie über den Server aktiviert sein." @@ -1005,8 +1005,8 @@ _sensitiveMediaDetection: setSensitiveFlagAutomaticallyDescription: "Die Resultate der internen Erkennung werden beibehalten, auch wenn diese Option deaktiviert ist." analyzeVideos: "Videoanalyse aktivieren" - analyzeVideosDescription: "Analysiert zusätzlich zu Bildern auch Videos. Die Last - des Servers wird hierdurch etwas erhöht." + analyzeVideosDescription: "Analysiert zusätzlich zu Bildern auch Videos. Die Serverlast + wird hierdurch etwas erhöht." _emailUnavailable: used: "Diese Email-Adresse wird bereits verwendet" format: "Das Format dieser Email-Adresse ist ungültig" @@ -1020,17 +1020,17 @@ _ffVisibility: _signup: almostThere: "Fast geschafft" emailAddressInfo: "Bitte gib deine Email-Adresse ein. Sie wird nicht öffentlich - einsehbar sein." + sichtbar sein." emailSent: "An deine Email-Adresse ({email}) wurde soeben eine Bestätigungsmail geschickt. Bitte klicke auf den enthaltenen Link, um die Erstellung deines Nutzerkontos abzuschließen." _accountDelete: accountDelete: "Nutzerkonto löschen" mayTakeTime: "Da die Löschung eines Nutzerkontos ein aufwendiger Prozess ist, kann - dessen Dauer davon abhängen, wie viel Inhalt von diesem erstellt wurde oder wie + dessen Dauer davon abhängen, wie viel Inhalt von diesem erstellt wurde und wie viele Dateien von diesem hochgeladen wurden." - sendEmail: "Sobald die Löschung abgeschlossen ist, wird an die mit ihm verknüpfte - Email-Adresse eine Benachrichtigung versendet." + sendEmail: "Sobald die Löschung abgeschlossen ist, wird an die registrierte Email-Adresse + eine Benachrichtigung versendet." requestAccountDelete: "Löschung deines Nutzerkontos anfordern" started: "Die Löschung wurde eingeleitet." inProgress: "Löschung in Bearbeitung" @@ -1060,19 +1060,19 @@ _plugin: manage: "Plugins verwalten" _preferencesBackups: list: "Erstellte Backups" - saveNew: "Neu erstellen" + saveNew: "Neues Backup speichern" loadFile: "Von Datei laden" apply: "Auf dieses Gerät anwenden" - save: "Speichern" + save: "Änderungen speichern" inputName: "Gib einen Namen für dieses Backup ein" cannotSave: "Speichern fehlgeschlagen" nameAlreadyExists: "Es existiert bereits ein Backup unter dem Namen \"{name}\". Bitte gib einen anderen Namen ein." applyConfirm: "Wirklich das Backup \"{name}\" auf dieses Gerät anwenden? Bestehende Einstellungen darauf werden überschrieben." - saveConfirm: "Als {name} speichern?" + saveConfirm: "Backup als {name} speichern?" deleteConfirm: "Das Backup {name} löschen?" - renameConfirm: "Soll dieses Backup von \"{old}\" zu \"{new}\" umbenannt werden?" + renameConfirm: "Backup von \"{old}\" zu \"{new}\" umbenennen?" noBackups: "Keine Backups existieren. Backups können über \"Neu erstellen\" erstelllt werden." createdAt: "Erstellt am: {date} {time}" @@ -1085,27 +1085,37 @@ _registry: keys: "Schlüssel" domain: "Domain" createKey: "Schlüssel erstellen" -_aboutMisskey: - about: "Calckey ist ein Fork von Misskey, der seit 2022 von ThatOneCalculator entwickelt +_aboutFirefish: + about: "Firefish ist ein Fork von Misskey, der seit 2022 von ThatOneCalculator entwickelt wird." contributors: "Hauptmitwirkende" allContributors: "Alle Mitwirkenden" source: "Quellcode" - translation: "Calckey übersetzen" - donate: "An Calckey spenden" + translation: "Firefish übersetzen" + donate: "An Firefish spenden" morePatrons: "Wir schätzen ebenso die Unterstützung vieler anderer hier nicht gelisteter Personen sehr. Danke! 🥰" patrons: "UnterstützerInnen" + patronsList: Auflistung chonologisch, nicht nach Spenden-Größe. Spende über den + Link oben, um hier aufgeführt zu werden! + donateTitle: Gefällt dir Firefish? + pleaseDonateToFirefish: Bitte erwäge eine Spende an Firefish, um dessen Entwicklung + zu unterstützen. + pleaseDonateToHost: Bitte erwäge auch, an deinen Heimatserver {host} zu spenden, + um bei der Deckung der Betriebskosten zu helfen. + sponsors: Firefish-Sponsoren + donateHost: Spende an {host} + misskeyContributors: Misskey-Mitwirkende _nsfw: - respect: "Mit NSFW gekennzeichnete Bilder verbergen" - ignore: "Mit NSFW gekennzeichnete Bilder nicht verbergen" - force: "Alle Medien verbergen" + respect: "Mit NSFW gekennzeichnete Mediendateien verbergen" + ignore: "Mit NSFW gekennzeichnete Mediendateien nicht verbergen" + force: "Alle Mediendateien verbergen" _mfm: cheatSheet: "MFM Spickzettel" - intro: "MFM ist eine Markup-Sprache, die in Misskey, Calckey, Akkoma und anderen + intro: "MFM ist eine Markup-Sprache, die in Misskey, Firefish, Akkoma und anderen Programmen verwendet wird und an vielen Stellen eingesetzt werden kann. Hier können Sie eine Liste aller verfügbaren MFM-Syntaxe einsehen." - dummy: "Calckey erweitert die Welt des Fediverse" + dummy: "Firefish erweitert die Welt des Fediverse" mention: "Erwähnung" mentionDescription: "Mit At-Zeichen und Nutzername kann ein individueller Nutzer angegeben werden." @@ -1118,7 +1128,7 @@ _mfm: bold: "Fett" boldDescription: "Zeichen zur Betonung dicker erscheinen lassen." small: "Klein" - smallDescription: "Inhalt klein und dünn erscheinen lassen." + smallDescription: "Inhalt klein und dünn anzeigen." center: "Zentrieren" centerDescription: "Inhalt zentriert anzeigen." inlineCode: "Code (Eingebettet)" @@ -1138,7 +1148,7 @@ _mfm: search: "Suche" searchDescription: "Eine vorgefertige Suchanfragebox anzeigen." flip: "Spiegelung" - flipDescription: "Inhalt horizontal oder vertikal gespiegelt anzeigen." + flipDescription: "Inhalt horizontal oder vertikal spiegeln." jelly: "Animation (Dehnen)" jellyDescription: "Verleiht Inhalt eine sich dehnende Animation." tada: "Animation (Tada)" @@ -1183,14 +1193,15 @@ _mfm: crop: Zuschneiden scale: Maßstab scaleDescription: Skaliere den Inhalt um einen bestimmten Betrag. - foregroundDescription: Ändern der Vordergrundfarbe von Text. - backgroundDescription: Ändern der Hintergrundfarbe von Text + foregroundDescription: Vordergrundfarbe des Texts ändern. + backgroundDescription: Hintergrundfarbe des Texts ändern. play: MFM abspielen stop: MFM anhalten warn: MFM können schnell bewegte oder anderweitig auffallende Animationen enthalten alwaysPlay: Alle animierten MFM immer automatisch abspielen advancedDescription: Wenn diese Funktion deaktiviert ist, können nur einfache Formatierungen vorgenommen werden, es sei denn, animiertes MFM ist aktiviert + advanced: Erweitertes MFM _instanceTicker: none: "Nie anzeigen" remote: "Für Nutzer eines anderen Servers anzeigen" @@ -1337,7 +1348,7 @@ _time: hour: "Stunde(n)" day: "Tag(en)" _tutorial: - title: "Wie man Calckey benutzt" + title: "Wie man Firefish benutzt" step1_1: "Willkommen!" step1_2: "Wir werden Sie einrichten. Sie werden im Handumdrehen einsatzbereit sein!" step2_1: "Bitte füllen Sie zuerst Ihr Profil aus." @@ -1363,11 +1374,11 @@ _tutorial: step5_7: "In der {icon} Global-Timeline können Sie Beiträge von allen verknüpften Servern aus dem Fediverse sehen." step6_1: "Also, was ist das hier?" - step6_2: "Mit Deiner Anmeldung zu Calckey bist Du gleichzeitig einem Portal zum + step6_2: "Mit Deiner Anmeldung zu Firefish bist Du gleichzeitig einem Portal zum Fediverse beigetreten, einem Netzwerk mit Tausenden von, miteinander verbundenen, Servern." step6_3: "Jeder der Server funktioniert auf unterschiedliche Weise, und nicht alle - Server führen Calckey aus. Dieser jedoch schon! Es ist zu Beginn vielleicht ein + Server führen Firefish aus. Dieser jedoch schon! Es ist zu Beginn vielleicht ein wenig kompliziert, aber Sie werden in kürzester Zeit den Dreh raus haben." step6_4: "Jetzt bist Du startbereit, entdecke die Möglichkeiten und hab Spaß dabei!" _2fa: @@ -1404,6 +1415,7 @@ _2fa: registerTOTPBeforeKey: Bitte registriere eine Authentificator App, um einen Hardware-Security-Key oder einen Passkey zu nutzen. securityKeyName: Gib einen Namen für den Key ein + token: 2FA Token _permissions: "read:account": "Deine Nutzerkontoinformationen lesen" "write:account": "Deine Nutzerkontoinformationen bearbeiten" @@ -1444,11 +1456,12 @@ _auth: zu können?" shareAccessAsk: "Bist du dir sicher, dass du diese Anwendung authorisieren möchtest, auf dein Nutzerkonto zugreifen zu können?" - permissionAsk: "Diese Anwendung fordert folgende Berechtigungen" + permissionAsk: "Diese Anwendung fordert folgende Berechtigungen:" pleaseGoBack: "Bitte kehre zur Anwendung zurück" callback: "Es wird zur Anwendung zurückgekehrt" denied: "Zugriff verweigert" - copyAsk: Bitte fügen Sie den folgenden Autorisierungscode in die Anwendung ein + copyAsk: 'Bitte fügen Sie den folgenden Autorisierungscode in die Anwendung ein:' + allPermissions: Vollständiger Kontozugriff _antennaSources: all: "Alle Beiträge" homeTimeline: "Beiträge von Nutzern, denen gefolgt wird" @@ -1482,7 +1495,7 @@ _widgets: postForm: "Beitragsfeld" slideshow: "Diashow" button: "Knopf" - onlineUsers: "Nutzer Online" + onlineUsers: "Nutzer online" jobQueue: "Job-Warteschlange" serverMetric: "Servermetriken" aiscript: "AiScript-Konsole" @@ -1523,11 +1536,12 @@ _poll: remainingSeconds: "{s} Sekunde(n) verbleibend" _visibility: public: "Öffentlich" - publicDescription: "Dein Beitrag wird global für alle Nutzer sichtbar sein" + publicDescription: "Dein Beitrag wird global in allen öffentlichen Timelines sichtbar + sein" home: "nicht aufgelistet" homeDescription: "Beitrag nur auf der Home-Timeline anzeigen" followers: "Follower" - followersDescription: "Nur für Follower sichtbar" + followersDescription: "Nur für Follower und erwähnte Nutzer sichtbar" specified: "Direkt" specifiedDescription: "Nur für bestimmte Nutzer sichtbar" localOnly: "Nur Lokal" @@ -1551,7 +1565,8 @@ _profile: metadata: "Zusätzliche Informationen" metadataEdit: "Zusätzliche Informationen bearbeiten" metadataDescription: "Hierdurch kannst du auf deinem Profil zusätzliche Informationsblöcke - anzeigen lassen." + anzeigen lassen. Sie können ein {a}-Tag oder ein {l}-Tag mit {rel} hinzufügen, + um den Link in Ihrem Profil zu überprüfen!" metadataLabel: "Beschriftung" metadataContent: "Inhalt" changeAvatar: "Profilbild ändern" @@ -1574,7 +1589,7 @@ _charts: activeUsers: "Aktive Nutzer" notesIncDec: "Unterschied bei der Anzahl an Beiträgen" localNotesIncDec: "Unterschied bei der Anzahl an lokalen Beiträgen" - remoteNotesIncDec: "Differenz zur Anzahl von Beiträgen von anderen Servern." + remoteNotesIncDec: "Differenz bei der Anzahl an Beiträgen von anderen Servern" notesTotal: "Anzahl aller Beiträge" filesIncDec: "Unterschied in der Anzahl an Dateien" filesTotal: "Anzahl aller Dateien" @@ -1628,7 +1643,7 @@ _pages: hideTitleWhenPinned: "Nutzer-Seitentitel wenn angeheftet ausblenden" font: "Schriftart" fontSerif: "Serif" - fontSansSerif: "sans-serif" + fontSansSerif: "Sans Serif" eyeCatchingImageSet: "Vorschaubild festlegen" eyeCatchingImageRemove: "Vorschaubild entfernen" chooseBlock: "Block hinzufügen" @@ -1643,7 +1658,7 @@ _pages: text: "Text" textarea: "Textfeld" section: "Abschnitt" - image: "Bild" + image: "Bilder" button: "Knopf" if: "Falls" _if: @@ -1929,7 +1944,7 @@ _notification: renote: "Renote" voted: haben bei deiner Umfrage abgestimmt reacted: hat auf deinen Beitrag reagiert - renoted: hat Ihren Beitrag geteilt + renoted: hat deinen Beitrag geteilt _deck: alwaysShowMainColumn: "Hauptspalte immer zeigen" columnAlign: "Spaltenausrichtung" @@ -1971,9 +1986,8 @@ enableEmojiReactions: Emoji-Reaktionen aktivieren flagSpeakAsCat: Wie eine Katze sprechen showEmojisInReactionNotifications: Emojis in Reaktionsbenachrichtigungen anzeigen userSaysSomethingReason: '{name} sagte {reason}' -hiddenTagsDescription: 'Geben sie hier die Schlagworte (ohne #hashtag) an, die vom - "Trending and Explore" ausgeschlossen werden sollen. Versteckte Schlagworte sind - immer noch über andere Wege auffindbar.' +hiddenTagsDescription: 'Liste die Hashtags (ohne #) welche du von Trending und Explore + verstecken möchtest. Versteckte Hashtags sind durch andere Wege weiterhin auffindbar.' addInstance: Server hinzufügen flagSpeakAsCatDescription: Deine Beiträge werden im Katzenmodus nyanisiert hiddenTags: Versteckte Hashtags @@ -1983,8 +1997,8 @@ renoteMute: Boosts stummschalten renoteUnmute: Stummschaltung von Boosts aufheben noInstances: Keine Server gefunden privateModeInfo: Wenn diese Option aktiviert ist, können nur als vertrauenswürdig - eingestufte Server mit diesem Server kommunizieren. Alle Beiträge werden für die - Öffentlichkeit verborgen. + eingestufte Server mit diesem Server föderieren. Alle Beiträge werden für die Öffentlichkeit + verborgen. allowedInstances: Vertrauenswürdige Server selectInstance: Wähle einen Server aus silencedInstancesDescription: Liste die Hostnamen der Server auf, die du stummschalten @@ -2019,14 +2033,14 @@ moveAccountDescription: 'Dieser Vorgang kann nicht rückgängig gemacht werden! wie folgt ein: @name@server.xyz' findOtherInstance: Einen anderen Server finden sendPushNotificationReadMessage: Löschung der Push-Benachrichtigungen sobald die entsprechenden - Benachrichtigungen oder Beiträge gelesen wurden. + Benachrichtigungen oder Nachrichten gelesen wurden signupsDisabled: Derzeit sind keine Anmeldungen auf diesem Server möglich! Anmeldungen auf anderen Servern sind jedoch möglich! Wenn Sie einen Einladungscode für diesen Server haben, geben Sie ihn bitte unten ein. swipeOnDesktop: Am Desktop PC das Wischen wie bei mobilen Geräten zulassen enterSendsMessage: Drücken sie zum Senden des Beitrages die Eingabetaste (Strg-Taste ausgeschaltet) -showUpdates: Zeigt ein Popup-Fenster an, wenn Calckey aktualisiert wird. +showUpdates: Zeige ein Popup-Fenster an, wenn Firefish aktualisiert wird socialTimeline: Social-Timeline moveFrom: Bisheriges Nutzerkonto zu diesem Nutzerkonto umziehen _messaging: @@ -2039,7 +2053,7 @@ userSaysSomethingReasonReply: '{name} hat auf einen Beitrag geantwortet der {rea userSaysSomethingReasonRenote: '{name} hat einen Beitrag geteilt der {reason} beinhaltet' userSaysSomethingReasonQuote: '{name} hat einen Beitrag zitiert der {reason} beinhaltet' seperateRenoteQuote: Getrennte Boost- und Zitat-Schaltflächen -showAds: Anzeigen anzeigen +showAds: Community-Banner anzeigen splash: Begrüßungsbildschirm customSplashIconsDescription: URLs für benutzerdefinierte Splash-Screen-Symbole, die durch Zeilenumbrüche getrennt sind und nach dem Zufallsprinzip jedes Mal angezeigt @@ -2053,18 +2067,17 @@ adminCustomCssWarn: Diese Einstellung sollte nur verwendet werden, wenn Sie wiss mehr normal funktionieren. Bitte stellen Sie sicher, dass Ihr CSS ordnungsgemäß funktioniert, indem Sie es in Ihren Benutzereinstellungen testen. customMOTD: Benutzerdefinierte Meldung des Tages (Begrüßungsbildschirmmeldungen) -allowedInstancesDescription: Hosts von Servern, die zur Verbindung auf die Liste vertrauenswürdiger - Server gesetzt werden sollen, werden jeweils durch eine neue Zeile getrennt eingegeben - (gilt nur im privaten Modus). +allowedInstancesDescription: Hostnamen von Servern, die auf der Liste vertrauenswürdiger + Server für die Föderation stehen sollen, jeweils getrennt in einer neuen Zeile (tritt + nur im privaten Modus in Kraft). migration: Migration -updateAvailable: Es könnte eine Aktualisierung verfügbar sein! -showAdminUpdates: Anzeigen, dass eine neue Calckey-Version verfügbar ist (nur Administrator) +updateAvailable: Es könnte ein Update verfügbar sein! +showAdminUpdates: Anzeigen, dass eine neue Firefish-Version verfügbar ist (nur Administrator) customMOTDDescription: Benutzerdefinierte Meldungen für die Meldung des Tages (Begrüßungsbildschirm), die durch Zeilenumbrüche getrennt sind und nach dem Zufallsprinzip jedes Mal angezeigt werden, wenn ein Benutzer die Seite (neu) lädt. recommendedInstancesDescription: Empfohlene Server, die durch Zeilenumbrüche getrennt - sind, werden in der "Favoriten"-Timeline angezeigt. Fügen Sie NICHT "https://" hinzu, - sondern NUR die Domain. + sind, werden in der "Favoriten"-Timeline angezeigt. sendModMail: Moderationshinweis senden moveFromDescription: 'Dadurch wird ein Alias Ihres alten Nutzerkontos festgelegt, sodass Sie von ihrem bisherigen Konto zu diesem Nutzerkonto wechseln können. Tun @@ -2073,7 +2086,7 @@ moveFromDescription: 'Dadurch wird ein Alias Ihres alten Nutzerkontos festgelegt preventAiLearning: KI gestütztes bot-scraping unterdrücken preventAiLearningDescription: Fordern Sie KI-Sprachmodelle von Drittanbietern auf, die von Ihnen hochgeladenen Inhalte, wie z. B. Beiträge und Bilder, nicht zu untersuchen. -license: Genehmigung +license: Lizenz indexPosts: Gelistete Beiträge migrationConfirm: "Sind Sie absolut sicher, dass Sie Ihr Nutzerkonto zu diesem {account} umziehen möchten? Sobald Sie dies bestätigt haben, kann dies nicht mehr rückgängig @@ -2085,33 +2098,33 @@ customKaTeXMacro: Individuelle KaTeX Makros enableCustomKaTeXMacro: Individuelle KaTeX-Makros aktivieren replayTutorial: Wiederhole die Benutzeranleitung apps: Apps -caption: Automatische Untertitelung +caption: Automatische Beschreibung pwa: PWA installieren cw: Inhaltswarnung older: älter newer: neuer -accessibility: Erreichbarkeit +accessibility: Barrierefreiheit jumpToPrevious: Zum Vorherigen springen silencedWarning: Diese Meldung wird angezeigt, weil diese Nutzer von Servern stammen, die Ihr Administrator abgeschaltet hat, so dass es sich möglicherweise um Spam handelt. _experiments: title: Funktionstests enablePostImports: Beitragsimporte aktivieren - postImportsCaption: Erlaubt es Nutzer:innen ihre Posts von alten Calckey, Misskey, + postImportsCaption: Erlaubt es Nutzer:innen ihre Posts von alten Firefish, Misskey, Mastodon, Akkoma und Pleroma Accounts zu importieren. Bei Engpässen in der Warteschlange kann es zu Verlangsamungen beim Laden während des Imports kommen. noGraze: Bitte deaktivieren Sie die Browsererweiterung "Graze for Mastodon", da sie - die Funktion von Calckey stört. + die Funktion von Firefish stört. indexFrom: Indexieren ab Beitragskennung aufwärts indexNotice: Wird jetzt indexiert. Dies wird wahrscheinlich eine Weile dauern, bitte starten Sie Ihren Server für mindestens eine Stunde nicht neu. customKaTeXMacroDescription: "Richten Sie Makros ein, um mathematische Ausdrücke einfach - zu schreiben! Die Notation entspricht den LaTeX-Befehlsdefinitionen und wird als\n - \\newcommand{\\name}{content} or \\newcommand{\\name}[number of arguments]{content}\n - geschrieben.\nZum Beispiel wird\n\\newcommand{\\add}[2]{#1 + #2} \\add{3}{foo} um - 3 + foo erweitert.\nDie geschweiften Klammern, die den Makronamen umgeben, können - in runde oder eckige Klammern geändert werden. Dies hat Auswirkungen auf die Klammern, - die für die Argumente verwendet werden. Pro Zeile kann ein (und nur ein) Makro definiert + zu schreiben! Die Notation entspricht den LaTeX-Befehlsdefinitionen und wird als + \\newcommand{\\name}{content} oder \\newcommand{\\name}[number of arguments]{content} + geschrieben. Zum Beispiel wird \\newcommand{\\add}[2]{#1 + #2} \\add{3}{foo} erweitern + zu 3 + foo. Die geschweiften Klammern, die den Makro-Namen umgeben, können in runde + oder eckige Klammern geändert werden. Dies hat Auswirkungen auf die Klammern, die + für die Argumente verwendet werden. Pro Zeile kann ein (und nur ein) Makro definiert werden, und Sie können die Zeile nicht mitten in der Definition umbrechen. Ungültige Zeilen werden einfach ignoriert. Es werden nur einfache Funktionen zur Substitution von Zeichenketten unterstützt; erweiterte Syntax, wie z. B. bedingte Verzweigungen, @@ -2131,6 +2144,7 @@ _filters: fromDomain: Von Domain notesBefore: Beiträge vor followingOnly: Nur Folgende + followersOnly: Nur Follower isBot: Dieses Konto ist ein Bot isModerator: Moderator isAdmin: Administrator @@ -2138,10 +2152,10 @@ _dialog: charactersExceeded: 'Maximale Anzahl an Zeichen aufgebraucht! Limit: {current} / {max}' charactersBelow: Nicht genug Zeichen! Du hast aktuell {current} von {min} Zeichen -searchPlaceholder: Calckey durchsuchen +searchPlaceholder: Firefish durchsuchen antennasDesc: "Antennen zeigen neue Posts an, die deinen definierten Kriterien entsprechen!\n Sie können von der Timeline-Seite aufgerufen werden." -isPatron: Calckey Patron +isPatron: Firefish-Patron removeReaction: Entferne deine Reaktion listsDesc: Listen lassen dich Timelines mit bestimmten Nutzer:innen erstellen. Sie können von der Timeline-Seite erreicht werden. @@ -2150,3 +2164,52 @@ clipsDesc: Clips sind wie teilbare, kategorisierte Lesezeichen. Du kannst Clips channelFederationWarn: Kanäle föderieren noch nicht zu anderen Servern reactionPickerSkinTone: Bevorzugte Emoji-Hautfarbe swipeOnMobile: Wischen zwischen den Seiten erlauben +enableServerMachineStats: Server-Hardware-Statistik einschalten +enableIdenticonGeneration: Identicon-Generierung einschalten +verifiedLink: Verifizierter Link +_feeds: + copyFeed: Feed kopieren + jsonFeed: JSON-Feed + rss: RSS + atom: Atom +youHaveUnreadAnnouncements: Du hast ungelesene Ankündigungen +donationLink: Link zur Spenden-Seite +remindMeLater: Vielleicht später +neverShow: Nicht wieder zeigen +removeRecipient: Empfänger entfernen +removeMember: Mitglied entfernen +alt: ALT +xl: XL +isLocked: Dieser Account hat Folge-Anfragen aktiviert +_skinTones: + mediumLight: Mittelhell + yellow: Gelb + light: Hell + medium: Mittel + dark: Dunkel + mediumDark: Mitteldunkel +showPopup: Benutzer mit Popup benachrichtigen +showWithSparkles: Mit Glitzer anzeigen +removeQuote: Zitat entfernen +objectStorageS3ForcePathStyle: Verwende pfadbasierte Endpunkt-URLs +objectStorageS3ForcePathStyleDesc: Wenn aktiviert, werden Endpunkt-URLs im Format + 's3.amazonaws.com//' statt '.s3.amazonaws.com' erstellt. +origin: Herkunft +delete2fa: 2FA deaktivieren +deletePasskeys: Passkeys löschen +delete2faConfirm: Passkeys werden unwiderruflich von diesem Account gelöscht. Fortfahren? +deletePasskeysConfirm: Alle Passkeys und Security-Keys werden unwiderruflich von diesem + Account gelöscht. Fortfahren? +inputNotMatch: Eingabe stimmt nicht überein +addRe: Ein "re:" am Anfang des Kommentars hinzufügen, um einem Beitrag mit einer Inhaltswarnung + zu antworten +confirm: Bestätigen +importZip: ZIP Importieren +emojiPackCreator: Emoji-Pack Ersteller +exportZip: ZIP exportieren +detectPostLanguage: Sprache automatisch erkennen und eine Schaltfläche zum Übersetzen + von Beiträgen in Fremdsprachen anzeigen +indexableDescription: Der integrierten Suche erlauben, Ihre öffentlichen Beiträge + anzuzeigen +indexable: Indexierbar +languageForTranslation: Übersetzungssprache veröffentlichen diff --git a/locales/el-GR.yml b/locales/el-GR.yml index d444882b44..68556cb384 100644 --- a/locales/el-GR.yml +++ b/locales/el-GR.yml @@ -568,9 +568,9 @@ yourAccountSuspendedTitle: Αυτός ο λογαριασμός έχει απο leaveConfirm: Υπάρχουν αλλαγές που δεν έχουν σωθεί. Θέλετε να τις απορρίψετε; height: Ύψος edit: Επεξεργασία -headlineMisskey: Μία ανοιχτού λογισμικού, αποκεντρωμένη πλατφόρμα κοινωνικής δικτύωσης +headlineFirefish: Μία ανοιχτού λογισμικού, αποκεντρωμένη πλατφόρμα κοινωνικής δικτύωσης που θα είναι για πάντα ελεύθερη! 🚀 -introMisskey: Καλώς ήρθατε! Το Calckey είναι μία ανοιχτού λογισμικού, αποκεντρωμένη +introFirefish: Καλώς ήρθατε! Το Firefish είναι μία ανοιχτού λογισμικού, αποκεντρωμένη πλατφόρμα κοινωνικής δικτύωσης που θα είναι για πάντα ελεύθερη! 🚀 markAsSensitive: Επισήμανση ως Ευαίσθητο Περιεχόμενο (NSFW) autoAcceptFollowed: Αυτόματη έγκριση αιτημάτων ακολούθησης από λογαριασμούς που ακολουθείτε @@ -603,7 +603,7 @@ blockedInstances: Μπλοκαρισμένα Instances blockedInstancesDescription: Παραθέστε τις διευθύνσεις (hostnames) των instances που θέλετε να μπλοκάρετε. Τα παρακάτω instances δεν θα μπορούν πλέον να επικοινωνούν με αυτό το instance. -intro: Η εγκατάσταση του Calckey τελείωσε! Παρακαλώ δημιουργήστε ένα μέλος διαχειριστή/στρια. +intro: Η εγκατάσταση του Firefish τελείωσε! Παρακαλώ δημιουργήστε ένα μέλος διαχειριστή/στρια. noThankYou: Όχι, ευχαριστώ addInstance: Προσθήκη instance renoteMute: Σίγαση προωθήσεων @@ -619,7 +619,7 @@ renoteUnmute: Διακοπή σίγασης προωθήσεων flagAsBotDescription: Ενεργοποιήστε αυτή την επιλογή αν αυτός ο λογαριασμός ελέγχεται από ένα πρόγραμμα. Αν ενεργοποιηθεί, θα λειτουργεί σαν σημάδι για τους προγραμματιστές, ώστε να αποφύγουν ατέρμονη αλληλεπίδραση με άλλα bots και για να ρυθμίσει τα εσωτερικά - συστήματα του Calckey ώστε να αντιμετωπίζουν αυτόν τον λογαριασμό ως bot. + συστήματα του Firefish ώστε να αντιμετωπίζουν αυτόν τον λογαριασμό ως bot. flagShowTimelineRepliesDescription: Εμφάνιση απαντήσεων μελών σε δημοσιεύσεις άλλων μελών στο χρονολόγιο. latestRequestReceivedAt: Τελευταίο αίτημα ελήφθη @@ -711,7 +711,7 @@ installedDate: Εξουσιοδοτήθηκε στις lastUsedDate: Χρησιμοποιήθηκε τελευταία φορά στις scratchpadDescription: Το σημειωματάριο παρέχει ένα περιβάλλον για πειραματισμό με AiScript. Σε αυτό μπορείτε να γράψετε, να εκτελέσετε, και να δοκιμάσετε τα αποτελέσματα - της αλληλεπίδρασης του AiScript με το Calckey. + της αλληλεπίδρασης του AiScript με το Firefish. scratchpad: Σημειωματάριο output: Αποτέλεσμα updateRemoteUser: Ανανέωση πληροφοριών απομακρυσμένου μέλους @@ -762,7 +762,7 @@ dayOverDayChanges: Αλλαγές την τελευταία ημέρα promotion: Προμοταρισμένα promote: Προμοτάρισμα squareAvatars: Εμφάνιση τετραγωνισμένων άβαταρ -aboutMisskey: Σχετικά με το Calckey +aboutFirefish: Σχετικά με το Firefish maintainerName: Προγραμματιστής/στρια uploadFromUrlRequested: Το ανέβασμα ζητήθηκε themeForLightMode: Θέμα για τη Φωτεινή Λειτουργία diff --git a/locales/en-US.yml b/locales/en-US.yml index b7248e033f..46242d5fc1 100644 --- a/locales/en-US.yml +++ b/locales/en-US.yml @@ -1,11 +1,11 @@ _lang_: "English" -headlineMisskey: "An open source, decentralized social media platform that's free +headlineFirefish: "An open source, decentralized social media platform that's free forever! 🚀" -introMisskey: "Welcome! Calckey is an open source, decentralized social media platform +introFirefish: "Welcome! Firefish is an open source, decentralized social media platform that's free forever! 🚀" monthAndDay: "{month}/{day}" search: "Search" -searchPlaceholder: "Search Calckey" +searchPlaceholder: "Search Firefish" notifications: "Notifications" username: "Username" password: "Password" @@ -51,7 +51,7 @@ deleted: "Deleted" deleteAndEdit: "Delete and edit" deleteAndEditConfirm: "Are you sure you want to delete this post and edit it? You will lose all reactions, boosts and replies to it." -editNote: "Edit note" +editNote: "Edit post" edited: "Edited at {date} {time}" addToList: "Add to list" sendMessage: "Send a message" @@ -105,7 +105,7 @@ privacy: "Privacy" makeFollowManuallyApprove: "Follow requests require approval" defaultNoteVisibility: "Default visibility" follow: "Follow" -followRequest: "Follow" +followRequest: "Follow Request" followRequests: "Follow requests" unfollow: "Unfollow" followRequestPending: "Follow request pending" @@ -165,7 +165,7 @@ cacheRemoteFilesDescription: "When this setting is disabled, remote files are lo flagAsBot: "Mark this account as a bot" flagAsBotDescription: "Enable this option if this account is controlled by a program. If enabled, it will act as a flag for other developers to prevent endless interaction - chains with other bots and adjust Calckey's internal systems to treat this account + chains with other bots and adjust Firefish's internal systems to treat this account as a bot." flagAsCat: "Are you a cat? 😺" flagAsCatDescription: "You'll get cat ears and speak like a cat!" @@ -177,7 +177,7 @@ flagShowTimelineRepliesDescription: "Shows replies of users to posts of other us autoAcceptFollowed: "Automatically approve follow requests from users you're following" addAccount: "Add account" loginFailed: "Failed to sign in" -showOnRemote: "View on remote server" +showOnRemote: "Open original page" general: "General" accountMoved: "User has moved to a new account:" wallpaper: "Wallpaper" @@ -246,7 +246,7 @@ noInstances: "There are no servers" editProfile: "Edit profile" noteDeleteConfirm: "Are you sure you want to delete this post?" pinLimitExceeded: "You cannot pin any more posts" -intro: "Installation of Calckey has been finished! Please create an admin user." +intro: "Installation of Firefish has been finished! Please create an admin user." done: "Done" processing: "Processing" preview: "Preview" @@ -337,11 +337,11 @@ emptyDrive: "Your Drive is empty" emptyFolder: "This folder is empty" unableToDelete: "Unable to delete" inputNewFileName: "Enter a new filename" -inputNewDescription: "Enter new caption" +inputNewDescription: "Enter new description" inputNewFolderName: "Enter a new folder name" circularReferenceFolder: "The destination folder is a subfolder of the folder you wish to move." -hasChildFilesOrFolders: "Since this folder is not empty, it can not be deleted." +hasChildFilesOrFolders: "Since this folder is not empty, it cannot be deleted." copyUrl: "Copy URL" rename: "Rename" avatar: "Avatar" @@ -438,7 +438,7 @@ exploreFediverse: "Explore the Fediverse" popularTags: "Popular tags" userList: "Lists" about: "About" -aboutMisskey: "About Calckey" +aboutFirefish: "About Firefish" administrator: "Administrator" token: "Token" twoStepAuthentication: "Two-factor authentication" @@ -566,6 +566,9 @@ objectStorageUseProxy: "Connect over Proxy" objectStorageUseProxyDesc: "Turn this off if you are not going to use a Proxy for API connections" objectStorageSetPublicRead: "Set \"public-read\" on upload" +objectStorageS3ForcePathStyle: "Use path-based endpoint URLs" +objectStorageS3ForcePathStyleDesc: "Turn this on to construct endpoint URLs in the + format of 's3.amazonaws.com//' over '.s3.amazonaws.com'." serverLogs: "Server logs" deleteAll: "Delete all" showFixedPostForm: "Display the posting form at the top of the timeline" @@ -593,7 +596,7 @@ ascendingOrder: "Ascending" descendingOrder: "Descending" scratchpad: "Scratchpad" scratchpadDescription: "The scratchpad provides an environment for AiScript experiments. - You can write, execute, and check the results of it interacting with Calckey in + You can write, execute, and check the results of it interacting with Firefish in it." output: "Output" script: "Script" @@ -631,8 +634,8 @@ disablePlayer: "Close video player" expandTweet: "Expand tweet" themeEditor: "Theme editor" description: "Description" -describeFile: "Add caption" -enterFileDescription: "Enter caption" +describeFile: "Add description" +enterFileDescription: "Enter description" author: "Author" leaveConfirm: "There are unsaved changes. Do you want to discard them?" manage: "Management" @@ -644,6 +647,7 @@ useBlurEffectForModal: "Use blur effect for modals" useFullReactionPicker: "Use full-size reaction picker" width: "Width" height: "Height" +xl: "XL" large: "Big" medium: "Medium" small: "Small" @@ -671,7 +675,7 @@ emptyToDisableSmtpAuth: "Leave username and password empty to disable SMTP verif smtpSecure: "Use implicit SSL/TLS for SMTP connections" smtpSecureInfo: "Turn this off when using STARTTLS" testEmail: "Test email delivery" -wordMute: "Word mute" +wordMute: "Word and language mutes" regexpError: "Regular Expression error" regexpErrorDescription: "An error occurred in the regular expression on line {line} of your {tab} word mutes:" @@ -738,7 +742,7 @@ unclip: "Unclip" confirmToUnclipAlreadyClippedNote: "This post is already part of the \"{name}\" clip. Do you want to remove it from this clip instead?" public: "Public" -i18nInfo: "Calckey is being translated into various languages by volunteers. You can +i18nInfo: "Firefish is being translated into various languages by volunteers. You can help at {link}." manageAccessTokens: "Manage access tokens" accountInfo: "Account Info" @@ -758,8 +762,7 @@ no: "No" driveFilesCount: "Number of Drive files" driveUsage: "Drive space usage" noCrawle: "Reject crawler indexing" -noCrawleDescription: "Ask search engines to not index your profile page, posts, Pages, - etc." +noCrawleDescription: "Ask external search engines to not index your content." lockedAccountInfo: "Unless you set your post visiblity to \"Followers only\", your posts will be visible to anyone, even if you require followers to be manually approved." alwaysMarkSensitive: "Mark as NSFW by default" @@ -796,9 +799,9 @@ nUsers: "{n} Users" nNotes: "{n} Posts" sendErrorReports: "Send error reports" sendErrorReportsDescription: "When turned on, detailed error information will be shared - with Calckey when a problem occurs, helping to improve the quality of Calckey.\n + with Firefish when a problem occurs, helping to improve the quality of Firefish.\n This will include information such the version of your OS, what browser you're using, - your activity in Calckey, etc." + your activity in Firefish, etc." myTheme: "My theme" backgroundColor: "Background color" accentColor: "Accent color" @@ -871,7 +874,7 @@ gallery: "Gallery" recentPosts: "Recent pages" popularPosts: "Popular pages" shareWithNote: "Share with post" -ads: "Advertisements" +ads: "Community banners" expiration: "Deadline" memo: "Memo" priority: "Priority" @@ -904,7 +907,7 @@ hashtags: "Hashtags" troubleshooting: "Troubleshooting" useBlurEffect: "Use blur effects in the UI" learnMore: "Learn more" -misskeyUpdated: "Calckey has been updated!" +misskeyUpdated: "Firefish has been updated!" whatIsNew: "Show changes" translate: "Translate" translatedFrom: "Translated from {x}" @@ -937,7 +940,7 @@ ffVisibility: "Follows/Followers Visibility" ffVisibilityDescription: "Allows you to configure who can see who you follow and who follows you." continueThread: "Continue thread" -deleteAccountConfirm: "This will irreversibly delete your account. Proceed?" +deleteAccountConfirm: "This will irreversibly delete this account. Proceed?" incorrectPassword: "Incorrect password." voteConfirm: "Confirm your vote for \"{choice}\"?" hide: "Hide" @@ -1034,7 +1037,7 @@ sendPushNotificationReadMessage: "Delete push notifications once the relevant no sendPushNotificationReadMessageCaption: "A notification containing the text \"{emptyPushNotificationMessage}\"\ \ will be displayed for a short time. This may increase the battery usage of your device, if applicable." -showAds: "Show ads" +showAds: "Show community banners" enterSendsMessage: "Press Return in Messaging to send message (off is Ctrl + Return)" adminCustomCssWarn: "This setting should only be used if you know what it does. Entering improper values may cause EVERYONE'S clients to stop functioning normally. Please @@ -1046,17 +1049,17 @@ customSplashIcons: "Custom splash screen icons (urls)" customSplashIconsDescription: "URLs for custom splash screen icons separated by line breaks to be shown randomly every time a user loads/reloads the page. Please make sure the images are on a static URL, preferably all resized to 192x192." -showUpdates: "Show a popup when Calckey updates" +showUpdates: "Show a popup when Firefish updates" recommendedInstances: "Recommended servers" recommendedInstancesDescription: "Recommended servers separated by line breaks to - appear in the recommended timeline. Do NOT add `https://`, ONLY the domain." -caption: "Auto Caption" + appear in the recommended timeline." +caption: "Auto description" splash: "Splash Screen" updateAvailable: "There might be an update available!" swipeOnMobile: "Allow swiping between pages" swipeOnDesktop: "Allow mobile-style swiping on desktop" logoImageUrl: "Logo image URL" -showAdminUpdates: "Indicate a new Calckey version is avaliable (admin only)" +showAdminUpdates: "Indicate a new Firefish version is avaliable (admin only)" replayTutorial: "Replay tutorial" migration: "Migration" moveTo: "Move current account to new account" @@ -1103,20 +1106,44 @@ preventAiLearning: "Prevent AI bot scraping" preventAiLearningDescription: "Request third-party AI language models not to study content you upload, such as posts and images." noGraze: "Please disable the \"Graze for Mastodon\" browser extension, as it interferes - with Calckey." + with Firefish." silencedWarning: "This page is showing because these users are from servers your admin silenced, so they may potentially be spam." isBot: "This account is a bot" isLocked: "This account has follow approvals" isModerator: "Moderator" isAdmin: "Administrator" -isPatron: "Calckey Patron" +isPatron: "Firefish Patron" reactionPickerSkinTone: "Preferred emoji skin tone" enableServerMachineStats: "Enable server hardware statistics" enableIdenticonGeneration: "Enable Identicon generation" showPopup: "Notify users with popup" showWithSparkles: "Show with sparkles" youHaveUnreadAnnouncements: "You have unread announcements" +donationLink: "Link to donation page" +neverShow: "Don't show again" +remindMeLater: "Maybe later" +removeQuote: "Remove quote" +removeRecipient: "Remove recipient" +removeMember: "Remove member" +verifiedLink: "Verified link" +origin: "Origin" +delete2fa: "Disable 2FA" +deletePasskeys: "Delete passkeys" +delete2faConfirm: "This will irreversibly delete 2FA on this account. Proceed?" +deletePasskeysConfirm: "This will irreversibly delete all passkeys and security keys on this account. Proceed?" +inputNotMatch: "Input does not match" +addRe: "Add \"re:\" at the beginning of comment in reply to a post with a content warning" +confirm: "Confirm" +importZip: "Import ZIP" +exportZip: "Export ZIP" +emojiPackCreator: "Emoji pack creator" +indexable: "Indexable" +indexableDescription: "Allow built-in search to show your public posts" +languageForTranslation: "Post translation language" +detectPostLanguage: "Automatically detect the language and show a translate button for posts in foreign languages" +vibrate: "Play vibrations" +openServerInfo: "Show server information by clicking the server ticker on a post" _sensitiveMediaDetection: description: "Reduces the effort of server moderation through automatically recognizing @@ -1207,17 +1234,23 @@ _registry: keys: "Keys" domain: "Domain" createKey: "Create key" -_aboutMisskey: - about: "Calckey is a fork of Misskey made by ThatOneCalculator, which has been in +_aboutFirefish: + about: "Firefish is a fork of Misskey made by ThatOneCalculator, which has been in development since 2022." contributors: "Main contributors" allContributors: "All contributors" + misskeyContributors: "Misskey contributors" source: "Source code" - translation: "Translate Calckey" - donate: "Donate to Calckey" + translation: "Translate Firefish" + donate: "Donate to Firefish" + donateTitle: "Enjoying Firefish?" + pleaseDonateToFirefish: "Please consider donating to Firefish to support its development." + pleaseDonateToHost: "Please also consider donating to your home server, {host}, to help support its operation costs." + donateHost: "Donate to {host}" morePatrons: "We also appreciate the support of many other helpers not listed here. Thank you! 🥰" - patrons: "Calckey patrons" + sponsors: "Firefish sponsors" + patrons: "Firefish patrons" patronsList: "Listed chronologically, not by donation size. Donate with the link above to get your name on here!" _nsfw: respect: "Hide NSFW media" @@ -1229,9 +1262,9 @@ _mfm: warn: "MFM may contain rapidly moving or flashy animations" alwaysPlay: "Always autoplay all animated MFM" cheatSheet: "MFM Cheatsheet" - intro: "MFM is a markup language used on Misskey, Calckey, Akkoma, and more that + intro: "MFM is a markup language used on Misskey, Firefish, Akkoma, and more that can be used in many places. Here you can view a list of all available MFM syntax." - dummy: "Calckey expands the world of the Fediverse" + dummy: "Firefish expands the world of the Fediverse" advanced: "Advanced MFM" advancedDescription: "If disabled, only allows for basic markup unless animated MFM is playing" mention: "Mention" @@ -1342,14 +1375,19 @@ _menuDisplay: hide: "Hide" _wordMute: muteWords: "Muted words" + muteLangs: "Muted Languages" muteWordsDescription: "Separate with spaces for an AND condition or with line breaks for an OR condition." muteWordsDescription2: "Surround keywords with slashes to use regular expressions." + muteLangsDescription: "Separate with spaces or line breaks for an OR condition." + muteLangsDescription2: "Use language code e.g. en, fr, ja, zh." softDescription: "Hide posts that fulfil the set conditions from the timeline." + langDescription: "Hide posts that match set language from the timeline." hardDescription: "Prevents posts fulfilling the set conditions from being added to the timeline. In addition, these posts will not be added to the timeline even if the conditions are changed." soft: "Soft" + lang: "Language" hard: "Hard" mutedNotes: "Muted posts" _instanceMute: @@ -1464,7 +1502,7 @@ _filters: followingOnly: "Following only" followersOnly: "Followers only" _tutorial: - title: "How to use Calckey" + title: "How to use Firefish" step1_1: "Welcome!" step1_2: "Let's get you set up. You'll be up and running in no time!" step2_1: "First, please fill out your profile." @@ -1489,9 +1527,9 @@ _tutorial: step5_7: "The Global {icon} timeline is where you can see posts from every other\ \ connected server." step6_1: "So, what is this place?" - step6_2: "Well, you didn't just join Calckey. You joined a portal to the Fediverse, + step6_2: "Well, you didn't just join Firefish. You joined a portal to the Fediverse, an interconnected network of thousands of servers." - step6_3: "Each server works in different ways, and not all servers run Calckey. + step6_3: "Each server works in different ways, and not all servers run Firefish. This one does though! It's a bit complicated, but you'll get the hang of it in no time." step6_4: "Now go, explore, and have fun!" @@ -1664,8 +1702,10 @@ _profile: youCanIncludeHashtags: "You can also include hashtags in your bio." metadata: "Additional Information" metadataEdit: "Edit additional Information" - metadataDescription: "Using these, you can display additional information fields - in your profile." + metadataDescription: + "Using these, you can display additional information fields + in your profile. You can add an {a} tag or {l} tag with {rel} + to verify the link on your profile!" metadataLabel: "Label" metadataContent: "Content" changeAvatar: "Change avatar" @@ -2076,7 +2116,7 @@ _deck: _experiments: title: "Experiments" enablePostImports: "Enable post imports" - postImportsCaption: "Allows users to import their posts from past Calckey,\ + postImportsCaption: "Allows users to import their posts from past Firefish,\ \ Misskey, Mastodon, Akkoma, and Pleroma accounts. It may cause slowdowns during\ \ load if your queue is bottlenecked." _dialog: @@ -2089,3 +2129,8 @@ _skinTones: medium: "Medium" mediumDark: "Medium Dark" dark: "Dark" +_feeds: + copyFeed: "Copy feed" + rss: "RSS" + atom: "Atom" + jsonFeed: "JSON feed" diff --git a/locales/es-ES.yml b/locales/es-ES.yml index 0bd874f331..045f2d616c 100644 --- a/locales/es-ES.yml +++ b/locales/es-ES.yml @@ -1,7 +1,7 @@ _lang_: "Español" -headlineMisskey: "¡Un proyecto de código abierto y una plataforma de medios de comunicación +headlineFirefish: "¡Un proyecto de código abierto y una plataforma de medios de comunicación descentralizada que es gratis para siempre! 🚀" -introMisskey: "¡Bienvenido! ¡Calckey es un proyecto de código abierto, plataforma +introFirefish: "¡Bienvenido! ¡Firefish es un proyecto de código abierto, plataforma descentralizado medios de comunicación social que es gratis para siempre! 🚀" monthAndDay: "{day}/{month}" search: "Buscar" @@ -150,7 +150,7 @@ cacheRemoteFilesDescription: "Si desactiva esta configuración, los archivos rem flagAsBot: "Esta cuenta es un bot" flagAsBotDescription: "En caso de que esta cuenta fuera usada por un programa, active esta opción. Al hacerlo, esta opción servirá para otros desarrolladores para evitar - cadenas infinitas de reacciones, y ajustará los sistemas internos de Calckey para + cadenas infinitas de reacciones, y ajustará los sistemas internos de Firefish para que trate a esta cuenta como un bot." flagAsCat: "Esta cuenta es un gato" flagAsCatDescription: "Vas a tener orejas de gato y hablar como un gato!" @@ -161,7 +161,7 @@ autoAcceptFollowed: "Aceptar automáticamente las solicitudes de seguimiento de usuarios que sigues" addAccount: "Agregar Cuenta" loginFailed: "Error al iniciar sesión" -showOnRemote: "Ver en servidor remoto" +showOnRemote: "Abrir página original" general: "General" wallpaper: "Fondo de pantalla" setWallpaper: "Establecer fondo de pantalla" @@ -218,7 +218,7 @@ noUsers: "No hay usuarios" editProfile: "Editar perfil" noteDeleteConfirm: "¿Desea borrar esta publicación?" pinLimitExceeded: "Ya no se pueden fijar más publicaciones" -intro: "¡La instalación de Calckey ha terminado! Crea el usuario administrador." +intro: "¡La instalación de Firefish ha terminado! Crea el usuario administrador." done: "Terminado" processing: "Procesando" preview: "Vista previa" @@ -406,7 +406,7 @@ exploreFediverse: "Explorar fediverso" popularTags: "Etiquetas populares" userList: "Lista" about: "Información" -aboutMisskey: "Sobre Calckey" +aboutFirefish: "Sobre Firefish" administrator: "Administrador" token: "Token" twoStepAuthentication: "Autenticación de dos factores" @@ -540,7 +540,7 @@ objectStorageSetPublicRead: "Seleccionar \"public-read\" al subir " serverLogs: "Registros del servidor" deleteAll: "Eliminar todos" showFixedPostForm: "Mostrar el formulario de las entradas encima de la línea de tiempo" -newNoteRecived: "Tienes unas publicaciones nuevas" +newNoteRecived: "Hay publicaciones nuevas" sounds: "Sonidos" listen: "Escuchar" none: "Ninguna" @@ -564,7 +564,7 @@ ascendingOrder: "Ascendente" descendingOrder: "Descendente" scratchpad: "Scratch pad" scratchpadDescription: "Scratchpad proporciona un entorno experimental para AiScript. - Puede escribir, ejecutar y verificar los resultados que interactúan con Calckey." + Puede escribir, ejecutar y verificar los resultados que interactúan con Firefish." output: "Salida" script: "Script" disablePagesScript: "Deshabilitar AiScript en Páginas" @@ -572,8 +572,8 @@ updateRemoteUser: "Actualizar información de usuario remoto" deleteAllFiles: "Borrar todos los archivos" deleteAllFilesConfirm: "¿Desea borrar todos los archivos?" removeAllFollowing: "Retener todos los siguientes" -removeAllFollowingDescription: "Cancelar todos los siguientes del servidor {host}. - Ejecutar en caso de que esta instancia haya dejado de existir." +removeAllFollowingDescription: "Al ejecutar esto todas las cuentas de {host} dejarán + de seguirse. Por favor, ejecuta esto si el servidor ya no existe." userSuspended: "Este usuario ha sido suspendido." userSilenced: "Este usuario ha sido silenciado." yourAccountSuspendedTitle: "Esta cuenta ha sido suspendida" @@ -642,7 +642,7 @@ wordMute: "Silenciar palabras" regexpError: "Error de la expresión regular" regexpErrorDescription: "Ocurrió un error en la expresión regular en la linea {line} de las palabras muteadas {tab}" -instanceMute: "Instancias silenciadas" +instanceMute: "Servidores silenciados" userSaysSomething: "{name} dijo algo" makeActive: "Activar" display: "Apariencia" @@ -671,14 +671,14 @@ sample: "Muestra" abuseReports: "Reportes" reportAbuse: "Reportar" reportAbuseOf: "Reportar a {name}" -fillAbuseReportDescription: "Ingrese los detalles del reporte. Si hay una nota en - particular, ingrese la URL de esta." +fillAbuseReportDescription: "Ingrese los detalles del reporte. Si hay una publicación + en particular, ingrese la URL de esta." abuseReported: "Se ha enviado el reporte. Muchas gracias." reporter: "Reportador" reporteeOrigin: "Reportar a" reporterOrigin: "Origen del reporte" -forwardReport: "Transferir un informe a una instancia remota" -forwardReportIsAnonymous: "No puede ver su información de la instancia remota y aparecerá +forwardReport: "Transferir reporte a un servidor remoto" +forwardReportIsAnonymous: "No puede ver su información del servidor remoto y aparecerá como una cuenta anónima del sistema" send: "Enviar" abuseMarkAsResolved: "Marcar reporte como resuelto" @@ -686,29 +686,29 @@ openInNewTab: "Abrir en una Nueva Pestaña" openInSideView: "Abrir en una vista al costado" defaultNavigationBehaviour: "Navegación por defecto" editTheseSettingsMayBreakAccount: "Editar estas configuraciones puede dañar su cuenta." -instanceTicker: "Información de notas de la instancia" +instanceTicker: "Información de publicaciones de el servidor" waitingFor: "Esperando a {x}" random: "Aleatorio" system: "Sistema" -switchUi: "Cambiar interfaz de usuario" +switchUi: "Interfaz" desktop: "Escritorio" clip: "Clip" createNew: "Crear" optional: "Opcional" createNewClip: "Crear clip nuevo" unclip: "Quitar clip" -confirmToUnclipAlreadyClippedNote: "Esta nota ya está incluida en el clip \"{name}\"\ - . ¿Quiere quitar la nota del clip?" +confirmToUnclipAlreadyClippedNote: "Esta publicación ya está incluida en el clip \"\ + {name}\". ¿Quiere quitar la nota del clip?" public: "Público" -i18nInfo: "Calckey está siendo traducido a varios idiomas gracias a voluntarios. Se - puede colaborar traduciendo en {link}" +i18nInfo: "Firefish está siendo traducido a varios idiomas gracias a voluntarios. + Se puede colaborar traduciendo en {link}" manageAccessTokens: "Administrar tokens de acceso" accountInfo: "Información de la Cuenta" -notesCount: "Cantidad de notas" +notesCount: "Cantidad de publicaciones" repliesCount: "Cantidad de respuestas hechas" -renotesCount: "Cantidad de renotas hechas" +renotesCount: "Número de impulsos enviados" repliedCount: "Cantidad de respuestas recibidas" -renotedCount: "Cantidad de renotas recibidas" +renotedCount: "Cantidad de impulsos recibidos" followingCount: "Cantidad de seguidos" followersCount: "Cantidad de seguidores" sentReactionsCount: "Cantidad de reacciones hechas" @@ -720,11 +720,11 @@ no: "No" driveFilesCount: "Cantidad de archivos en el drive" driveUsage: "Uso del drive" noCrawle: "Rechazar indexación del crawler" -noCrawleDescription: "Pedir a los motores de búsqueda que no indexen tu perfil, notas, +noCrawleDescription: "Pedir a los motores de búsqueda que no indexen tu perfil, publicaciones, páginas, etc." -lockedAccountInfo: "A menos que configures la visibilidad de tus notas como \"Sólo - seguidores\", tus notas serán visibles para cualquiera, incluso si requieres que - los seguidores sean aprobados manualmente." +lockedAccountInfo: "A menos que configures la visibilidad de tus publicaciones como + \"Sólo seguidores\", tus publicaciones serán visibles para cualquiera, incluso si + requieres que los seguidores sean aprobados manualmente." alwaysMarkSensitive: "Marcar los medios de comunicación como contenido sensible por defecto" loadRawImages: "Cargar las imágenes originales en lugar de mostrar las miniaturas" @@ -734,7 +734,7 @@ verificationEmailSent: "Se le ha enviado un correo electrónico de confirmación configuración." notSet: "Sin especificar" emailVerified: "Su dirección de correo electrónico ha sido verificada." -noteFavoritesCount: "Número de notas favoritas" +noteFavoritesCount: "Número de publicaciones favoritas" pageLikesCount: "Número de favoritos en la página" pageLikedCount: "Número de favoritos de su página" contact: "Contacto" @@ -758,12 +758,12 @@ showTitlebar: "Mostrar la barra de título" clearCache: "Limpiar caché" onlineUsersCount: "{n} usuarios en línea" nUsers: "{n} Usuarios" -nNotes: "{n} Notas" +nNotes: "{n} Publicaciones" sendErrorReports: "Envíar informe de errores" sendErrorReportsDescription: "Si habilita esta opción, los detalles de los errores - serán compartidos con Calckey cuando ocurra un problema, lo que ayudará a mejorar - la calidad de Calckey. \nEsto incluye información como la versión del sistema operativo, - el tipo de navegador que está utilizando y su historial en Calckey, entre otros + serán compartidos con Firefish cuando ocurra un problema, lo que ayudará a mejorar + la calidad de Firefish. \nEsto incluye información como la versión del sistema operativo, + el tipo de navegador que está utilizando y su historial en Firefish, entre otros datos." myTheme: "Mi Tema" backgroundColor: "Fondo" @@ -788,7 +788,7 @@ capacity: "Capacidad" inUse: "Usado" editCode: "Editar código" apply: "Aplicar" -receiveAnnouncementFromInstance: "Recibir notificaciones de la instancia" +receiveAnnouncementFromInstance: "Recibir notificaciones de este servidor" emailNotification: "Notificaciones por correo electrónico" publish: "Publicar" inChannelSearch: "Buscar en el canal" @@ -804,9 +804,10 @@ unlikeConfirm: "¿Quitar como favorito?" fullView: "Vista completa" quitFullView: "quitar vista completa" addDescription: "Agregar descripción" -userPagePinTip: "Puede mantener sus notas visibles aquí seleccionando Pin en el menú - de notas individuales" -notSpecifiedMentionWarning: "Algunas menciones no están incluidas en el destino" +userPagePinTip: "Puede mantener tus publicaciones visibles aquí seleccionando Pin + en el menú de notas individuales." +notSpecifiedMentionWarning: "Esta publicacion contiene menciones a usuarios no incluídos + como destinatarios" info: "Información" userInfo: "Información del usuario" unknown: "Desconocido" @@ -819,7 +820,7 @@ active: "Activo" offline: "Sin conexión" notRecommended: "obsoleto" botProtection: "Protección contra bots" -instanceBlocking: "Instancias bloqueadas" +instanceBlocking: "Gestión de la Federación" selectAccount: "Elija una cuenta" switchAccount: "Cambiar de cuenta" enabled: "Activado" @@ -836,8 +837,8 @@ postToGallery: "Crear una nueva publicación en la galería" gallery: "Galería" recentPosts: "Posts recientes" popularPosts: "Más vistos" -shareWithNote: "Compartir con una nota" -ads: "Anuncios" +shareWithNote: "Compartir con una publicación" +ads: "Banners de la comunidad" expiration: "Termina el" memo: "Notas" priority: "Prioridad" @@ -859,7 +860,7 @@ hashtags: "Hashtag" troubleshooting: "Solución de problemas" useBlurEffect: "Utilizar efecto de desenfoque en la interfaz de usuario" learnMore: "Ver más" -misskeyUpdated: "¡Calckey ha sido actualizado!" +misskeyUpdated: "¡Firefish ha sido actualizado!" whatIsNew: "Mostrar cambios" translate: "Traducir" translatedFrom: "Traducido de {x}" @@ -873,7 +874,7 @@ pubSub: "Cuentas Pub/Sub" lastCommunication: "Última comunicación" resolved: "Resuelto" unresolved: "Sin resolver" -breakFollow: "Dejar de seguir" +breakFollow: "Quitar seguidor" itsOn: "¡Está encendido!" itsOff: "¡Está apagado!" emailRequiredForSignup: "Se requere una dirección de correo electrónico para el registro @@ -885,14 +886,14 @@ manageAccounts: "Administrar cuenta" makeReactionsPublic: "Hacer el historial de reacciones público" makeReactionsPublicDescription: "Todas las reacciones que hayas hecho serán públicamente visibles." -classic: "Clásico" +classic: "Centrado" muteThread: "Ocultar hilo" unmuteThread: "Mostrar hilo" ffVisibility: "Visibilidad de seguidores y seguidos" ffVisibilityDescription: "Puedes configurar quien puede ver a quienes sigues y quienes te siguen" -continueThread: "Ver la continuación del hilo" -deleteAccountConfirm: "La cuenta será borrada. ¿Está seguro?" +continueThread: "Continuar hilo" +deleteAccountConfirm: "La cuenta será borrada irreversiblemente. ¿Está seguro?" incorrectPassword: "La contraseña es incorrecta" voteConfirm: "¿Confirma su voto a {choice}?" hide: "Ocultar" @@ -905,12 +906,12 @@ overridedDeviceKind: "Tipo de dispositivo" smartphone: "Teléfono smartphone" tablet: "Tablet" auto: "Automático" -themeColor: "Color del tema" +themeColor: "Color de la marquesina del servidor" size: "Tamaño" numberOfColumn: "Cantidad de columnas" searchByGoogle: "Buscar" -instanceDefaultLightTheme: "Tema claro por defecto de la instancia" -instanceDefaultDarkTheme: "Tema oscuro por defecto de la instancia" +instanceDefaultLightTheme: "Tema claro por defecto del servidor" +instanceDefaultDarkTheme: "Tema oscuro por defecto del servidor" instanceDefaultThemeDescription: "Ingrese el código del tema en formato objeto" mutePeriod: "Período de silenciamiento" indefinitely: "Sin límite de tiempo" @@ -934,7 +935,9 @@ driveCapOverrideLabel: "Cambiar la capacidad de la unidad para este usuario" driveCapOverrideCaption: "Restablecer la capacidad a su predeterminado ingresando un valor de 0 o menos" requireAdminForView: "Necesitas iniciar sesión como administrador para ver esto." -isSystemAccount: "Cuenta creada y operada automáticamente por el sistema" +isSystemAccount: "Esta cuenta es creada y operada automaticamente por el sistema. + Porfavor no moderar, editar, borrar o manipular de ninguna forma esta cuenta, o + podría romper tu servidor." typeToConfirm: "Ingrese {x} para confirmar" deleteAccount: "Borrar cuenta" document: "Documento" @@ -965,7 +968,7 @@ beta: "Beta" enableAutoSensitive: "Marcar automáticamente contenido NSFW" enableAutoSensitiveDescription: "Permite la detección y marcado automático de contenido NSFW usando 'Machine Learning' cuando sea posible. Incluso si esta opción está desactivada, - puede ser activado para toda la instancia." + puede ser activado para todo el servidor." activeEmailValidationDescription: "Habilita la validación estricta de direcciones de correo electrónico, lo cual incluye la revisión de direcciones desechables y si se puede comunicar con éstas. Cuando está deshabilitado, sólo el formato de la @@ -975,7 +978,7 @@ shuffle: "Aleatorio" account: "Cuentas" move: "Mover" _sensitiveMediaDetection: - description: "Reduce el esfuerzo de la moderación el el servidor a través del reconocimiento + description: "Reduce el esfuerzo de la moderación de el servidor a través del reconocimiento automático de contenido NSFW usando 'Machine Learning'. Esto puede incrementar ligeramente la carga en el servidor." sensitivity: "Sensibilidad de detección" @@ -1019,8 +1022,9 @@ _forgotPassword: enterEmail: "Ingrese el correo usado para registrar la cuenta. Se enviará un link para resetear la contraseña." ifNoEmail: "Si no utilizó un correo para crear la cuenta, contáctese con el administrador." - contactAdmin: "Esta instancia no admite el uso de direcciones de correo electrónico, - póngase en contacto con el administrador de la instancia para restablecer su contraseña" + contactAdmin: "Este servidor no admite el uso de direcciones de correo electrónico, + póngase en contacto con la persona que administra el servidor para restablecer + su contraseña." _gallery: my: "Mi galería" liked: "Publicaciones que me gustan" @@ -1062,17 +1066,26 @@ _registry: keys: "Clave" domain: "Dominio" createKey: "Crear una llave" -_aboutMisskey: - about: "Calckey es una bifurcación de Misskey creada por ThatOneCalculator, que +_aboutFirefish: + about: "Firefish es una bifurcación de Misskey creada por ThatOneCalculator, que ha estado en desarrollo desde el 2022." contributors: "Principales colaboradores" allContributors: "Todos los colaboradores" source: "Código fuente" - translation: "Traducir Calckey" - donate: "Donar a Calckey" + translation: "Traducir Firefish" + donate: "Donar a Firefish" morePatrons: "También apreciamos el apoyo de muchos más que no están enlistados aquí. ¡Gracias! 🥰" - patrons: "Mecenas de Calckey" + patrons: "Mecenas de Firefish" + pleaseDonateToFirefish: Por favor considera donar a Firefish para apollar su desarrollo. + donateHost: Dona a {host} + patronsList: Listados cronológicamente no por monto de la donación. ¡Dona con el + vínculo de arriba para que tu nombre aparezca aquí! + donateTitle: ¿Te gusta Firefish? + pleaseDonateToHost: También considera donar a tu propio servidor , {host}, para + ayudar con los costos de operación. + sponsors: Patrocinadores de Firefish + misskeyContributors: Contribuidores de Misskey _nsfw: respect: "Ocultar medios NSFW" ignore: "No esconder medios NSFW " @@ -1080,9 +1093,9 @@ _nsfw: _mfm: cheatSheet: "Hoja de referencia de MFM" intro: "MFM es un lenguaje de marcado dedicado que se puede usar en varios lugares - dentro de Misskey, Calckey, Akkoma, y mucho más. Aquí puede ver una lista de sintaxis - disponibles en MFM." - dummy: "Calckey expande el mundo de la Fediverso" + dentro de Misskey, Firefish, Akkoma, y mucho más. Aquí puede ver una lista de + sintaxis disponibles en MFM." + dummy: "Firefish expande el mundo de la Fediverso" mention: "Menciones" mentionDescription: "El signo @ seguido de un nombre de usuario se puede utilizar para notificar a un usuario en particular." @@ -1106,7 +1119,7 @@ _mfm: inlineMath: "Fórmula (insertado)" inlineMathDescription: "Muestra fórmulas (KaTeX) insertadas" blockMath: "Fórmula (bloque)" - blockMathDescription: "Muestra fórmulas (KaTeX) de varias líneas en un bloque" + blockMathDescription: "Muestra fórmulas matemáticas (KaTeX) en un bloque" quote: "Citar" quoteDescription: "Muestra el contenido como una cita" emoji: "Emojis personalizados" @@ -1151,6 +1164,24 @@ _mfm: plainDescription: "Desactiva los efectos de todo el contenido MFM con este efecto MFM." position: Posición + warn: MFM podría contener movimientos rápidos o animaciones destellantes + advancedDescription: Si está desactivado, solo permitir markup básico, excepto cuando + un MFM animado se reproduce + scale: Escalar + foreground: Color en primer plano + scaleDescription: Ajustar el contenido según un valor especificado. + stop: Detener MFM + crop: Recortar + cropDescription: Recortar contenido. + backgroundDescription: Cambiar el color de fondo del texto. + alwaysPlay: Siempre reproducir todos los MFM animados + fade: Fundido + advanced: MFM avanzado + play: Reproducir MFM + foregroundDescription: Cambiar el color del texto en primer plano. + background: Color de fondo + positionDescription: Mueve el contenido en una cantidad especificada. + fadeDescription: Funde el contenido dentro y fuera. _instanceTicker: none: "No mostrar" remote: "Mostrar a usuarios remotos" @@ -1169,7 +1200,7 @@ _channel: owned: "Dueño" following: "Siguiendo" usersCount: "{n} participantes" - notesCount: "{n} notas" + notesCount: "{n} Publicaciones" nameOnly: Nombre solamente nameAndDescription: Nombre y descripción _menuDisplay: @@ -1183,18 +1214,20 @@ _wordMute: con lineas nuevas indica una declaracion Or。" muteWordsDescription2: "Encerrar las palabras clave entre numerales para usar expresiones regulares" - softDescription: "Ocultar en la linea de tiempo las notas que cumplen las condiciones" - hardDescription: "Evitar que se agreguen a la linea de tiempo las notas que cumplen - las condiciones. Las notas no agregadas seguirán quitadas aunque cambien las condiciones." + softDescription: "Ocultar en la linea de tiempo las publicaciones que cumplen las + condiciones" + hardDescription: "Evitar que se agreguen a la linea de tiempo las publicaciones + que cumplen las condiciones, estas no serán agregadas a la linea de tiempo incluso + si cambian las condiciones." soft: "Suave" hard: "Duro" - mutedNotes: "Notas silenciadas" + mutedNotes: "Publicaciones silenciadas" _instanceMute: - instanceMuteDescription: "Silencia todas las notas y reposts de la instancias seleccionadas, - incluyendo respuestas a los usuarios de las mismas" + instanceMuteDescription: "Silencia todas las publicaciones e impusos de los servidores + seleccionados, incluyendo respuestas a los usuarios de las mismas." instanceMuteDescription2: "Separar por líneas" - title: "Oculta las notas de las instancias listadas." - heading: "Instancias a silenciar" + title: "Oculta las publicaciones de los servidores listados." + heading: "Servidores a silenciar" _theme: explore: "Explorar temas" install: "Instalar tema" @@ -1243,7 +1276,7 @@ _theme: hashtag: "Hashtag" mention: "Menciones" mentionMe: "Menciones (yo)" - renote: "Renotar" + renote: "Impulsar" modalBg: "Fondo modal" divider: "Divisor" scrollbarHandle: "Cuadro de la barra de desplazamiento" @@ -1270,59 +1303,59 @@ _theme: accentLighten: "Acento (claro)" fgHighlighted: "Texto resaltado" _sfx: - note: "Notas" - noteMy: "Nota (a mí mismo)" + note: "Nueva publicación" + noteMy: "Publicación propia" notification: "Notificaciones" chat: "Chat" chatBg: "Chat (Fondo)" - antenna: "Antena receptora" + antenna: "Antenas" channel: "Notificaciones del canal" _ago: future: "Futuro" justNow: "Recién ahora" - secondsAgo: "Hace {n} segundos" - minutesAgo: "Hace {n} minutos" - hoursAgo: "Hace {n} horas" - daysAgo: "Hace {n} días" - weeksAgo: "Hace {n} semanas" - monthsAgo: "Hace {n} meses" - yearsAgo: "Hace {n} años" + secondsAgo: "Hace {n} s" + minutesAgo: "Hace {n} m" + hoursAgo: "Hace {n} hora(s)" + daysAgo: "Hace {n} d" + weeksAgo: "Hace {n} sem" + monthsAgo: "Hace {n} mes(es)" + yearsAgo: "Hace {n} año(s)" _time: second: "Segundos" minute: "Minutos" hour: "Horas" day: "Días" _tutorial: - title: "Cómo usar Calckey" + title: "Cómo usar Firefish" step1_1: "¡Bienvenido!" - step1_2: "Vamos a configurarte. Estarás listo y funcionando en poco tiempo" + step1_2: "Vamos a configurarte. ¡Estarás listo y funcionando en poco tiempo!" step2_1: "En primer lugar, rellena tu perfil" step2_2: "Proporcionar algo de información sobre quién eres hará que sea más fácil - para los demás saber si quieren ver tus notas o seguirte." + para los demás saber si quieren ver tus publicaciones o seguirte." step3_1: "¡Ahora es el momento de seguir a algunas personas!" step3_2: "Tu página de inicio y tus líneas de tiempo sociales se basan en quién sigues, así que intenta seguir un par de cuentas para empezar.\nHaz clic en el círculo más en la parte superior derecha de un perfil para seguirlos." step4_1: "Vamos a salir a la calle" - step4_2: "Para tu primer post, a algunas personas les gusta hacer un post de {introduction} - o un simple \"¡Hola mundo!\"" + step4_2: "Para tu primer publicación, a algunas personas les gusta escribir una + {introduction} o un simple \"¡Hola mundo!\"" step5_1: "¡Líneas de tiempo, líneas de tiempo por todas partes!" - step5_2: "Su instancia tiene {timelines} diferentes líneas de tiempo habilitadas" + step5_2: "Tu servidor tiene {timelines} diferentes líneas de tiempo habilitadas." step5_3: "La línea de tiempo Inicio {icon} es donde puedes ver las publicaciones - de tus seguidores." + de personas que sigues." step5_4: "La línea de tiempo Local {icon} es donde puedes ver las publicaciones - de todos los demás en esta instancia." - step5_5: "La línea de tiempo {icon} recomendada es donde puedes ver las publicaciones - de las instancias que los administradores recomiendan." - step5_6: "La línea de tiempo Social {icon} es donde puedes ver las publicaciones - de los amigos de tus seguidores." - step5_7: "La línea de tiempo Global {icon} es donde puedes ver las publicaciones - de todas las demás instancias conectadas." + de todos los demás en este servidor." + step5_5: "La línea de tiempo {icon} social es una combinación de las líneas de tiempo + Inicio y Local." + step5_6: "La línea de tiempo {icon} recomendada es donde puedes ver las publicaciones + de los servidores que los administradores recomiendan." + step5_7: "La línea de tiempo {icon} global es donde puedes ver las publicaciones + de todos los demás servidores a los cuales este servidor conecta." step6_1: "Entonces, ¿qué es este lugar?" - step6_2: "Bueno, no sólo te has unido a Calckey. Te has unido a un portal del Fediverso, + step6_2: "Bueno, no sólo te has unido a Firefish. Te has unido a un portal del Fediverso, una red interconectada de miles de servidores, llamada \"instancias\"" step6_3: "Cada servidor funciona de forma diferente, y no todos los servidores ejecutan - Calckey. Sin embargo, ¡éste lo hace! Es un poco complicado, pero le cogerás el + Firefish. Sin embargo, ¡éste lo hace! Es un poco complicado, pero le cogerás el tranquillo enseguida" step6_4: "¡Ahora ve, explora y diviértete!" _2fa: @@ -1338,6 +1371,26 @@ _2fa: securityKeyInfo: "Se puede configurar el inicio de sesión usando una clave de seguridad de hardware que soporte FIDO2 o con un certificado de huella digital o con un PIN" + chromePasskeyNotSupported: Contraseñas de Chrome no están soportadas. + removeKeyConfirm: ¿Realmente deseas borrar la clave {name}? + step3Title: Ingresa un código de autorización + renewTOTP: Reconfigurar la aplicación autorizadora + whyTOTPOnlyRenew: La aplicación autorizadora no puede ser quitada mientras la clave + de seguridad siga registrada. + renewTOTPConfirm: Esto causará que los códigos de verificación de la aplicación + anterior dejen de funcionar + renewTOTPOk: Reconfigurar + securityKeyNotSupported: Tu navegador no soporta claves de seguridad. + step2Click: Presionar este código QR te permitirá registrar la autorización 2FA + a tu clave de seguridad o aplicación autorizadora. + registerTOTPBeforeKey: Por favor configura una aplicación autorizadora para registrar + una clave de seguridad o de paso. + securityKeyName: Ingresa el nombre de la clave + tapSecurityKey: Por favor, espera al navegador para registrar la clave de seguridad + o de paso + renewTOTPCancel: Cancelar + token: Token 2FA + removeKey: Quitar clave de seguridad _permissions: "read:account": "Ver información de la cuenta" "write:account": "Editar información de la cuenta" @@ -1353,7 +1406,7 @@ _permissions: "write:messaging": "Administrar chat" "read:mutes": "Ver usuarios silenciados" "write:mutes": "Administrar usuarios silenciados" - "write:notes": "Crear/borrar notas" + "write:notes": "Crear o borrar publicaciones" "read:notifications": "Ver notificaciones" "write:notifications": "Administrar notificaciones" "read:reactions": "Ver reacciones" @@ -1375,16 +1428,19 @@ _auth: shareAccess: "¿Desea permitir el acceso a la cuenta \"{name}\"?" shareAccessAsk: "¿Está seguro de que desea autorizar esta aplicación para acceder a su cuenta?" - permissionAsk: "Esta aplicación requiere los siguientes permisos" + permissionAsk: "Esta aplicación requiere los siguientes permisos:" pleaseGoBack: "Por favor, vuelve a la aplicación" callback: "Volviendo a la aplicación" denied: "Acceso denegado" + copyAsk: 'Por favor, pega el siguiente código de autorización en la aplicación:' + allPermissions: Acceso completo _antennaSources: - all: "Todas las notas" - homeTimeline: "Notas de los usuarios que sigues" - users: "Notas de un usuario o varios" - userList: "Notas de los usuarios de una lista" - userGroup: "Notas de los usuarios de una grupo" + all: "Todas las publicaciones" + homeTimeline: "Publicaciones de los usuarios que sigues" + users: "Publicaciones de usuarios específicos" + userList: "Publicaciones de una lista de usuarios específica" + userGroup: "Publicaciones de usuarios de un grupo" + instances: Publicaciones de todos los usuarios en un servidor _weekday: sunday: "Domingo" monday: "Lunes" @@ -1401,24 +1457,28 @@ _widgets: trends: "Tendencias" clock: "Reloj" rss: "Lector RSS" - rssTicker: "Ticker-RSS" + rssTicker: "Marquesina RSS" activity: "Actividad" photos: "Fotos" digitalClock: "Reloj digital" unixClock: "Reloj UNIX" federation: "Federación" - instanceCloud: "Nube de palabras de la instancia" + instanceCloud: "Nube de servidores" postForm: "Formulario" slideshow: "Diapositivas" button: "Botón" - onlineUsers: "Usuarios en linea" + onlineUsers: "Usuarios en línea" jobQueue: "Cola de trabajos" serverMetric: "Estadísticas del servidor" aiscript: "Consola de AiScript" aichan: "indigo" - userList: Lista Usuarios + userList: Lista de usuarios _userList: chooseList: Seleccione una lista + serverInfo: Información del servidor + meiliStatus: Estado del servidor + meiliSize: Tamaño del índice + meiliIndexCount: Publicaciones indizadas _cw: hide: "Ocultar" show: "Ver más" @@ -1448,18 +1508,18 @@ _poll: remainingSeconds: "Quedan {s} segundos para que finalice" _visibility: public: "Público" - publicDescription: "Visible para todos los usuarios" - home: "Inicio" + publicDescription: "Tu publicación será visible en todas las líneas de tiempo" + home: "Sin listar (Inicio)" homeDescription: "Visible sólo en la linea de tiempo de inicio" followers: "Seguidores" - followersDescription: "Visible sólo para tus seguidores" + followersDescription: "Hacer sólo visible sólo para tus seguidores y usuarios mencionados" specified: "Mensaje directo" specifiedDescription: "Visible sólo para los usuarios elegidos" localOnly: "Solo local" localOnlyDescription: "Oculto para usuarios remotos" _postForm: - replyPlaceholder: "Responder a esta nota" - quotePlaceholder: "Citar esta nota" + replyPlaceholder: "Responder a esta publicación..." + quotePlaceholder: "Citar esta publicación..." channelPlaceholder: "Postear en el canal" _placeholders: a: "¿Qué haces?" @@ -1475,7 +1535,8 @@ _profile: youCanIncludeHashtags: "Puedes añadir hashtags" metadata: "información adicional" metadataEdit: "Editar información adicional" - metadataDescription: "Muestra la información adicional en el perfil" + metadataDescription: "Muestra la información adicional en el perfil. ¡Puede agregar + una etiqueta {a} o una etiqueta {l} con {rel} para verificar el enlace en su perfil!" metadataLabel: "Etiqueta" metadataContent: "Contenido" changeAvatar: "Cambiar avatar" @@ -1483,7 +1544,7 @@ _profile: locationDescription: Si ingresas tu ciudad primero, el tiempo local tuyo será visible para otros usuarios. _exportOrImport: - allNotes: "Todas las notas" + allNotes: "Todas las publicaciones" followingList: "Siguiendo" muteList: "Silenciados" blockingList: "Bloqueados" @@ -1496,10 +1557,10 @@ _charts: usersIncDec: "Variación de usuarios" usersTotal: "Total de usuarios" activeUsers: "Cantidad de usuarios activos" - notesIncDec: "Variación de la cantidad de notas" - localNotesIncDec: "Variación de la cantidad de notas locales" - remoteNotesIncDec: "Variación de la cantidad de notas remotas" - notesTotal: "Total de notas" + notesIncDec: "Diferencia en la cantidad de publicaciones" + localNotesIncDec: "Diferencia en la cantidad de publicaciones locales" + remoteNotesIncDec: "Diferencia en el número de publicaciones remotas" + notesTotal: "Total de publicaciones" filesIncDec: "Variación de cantidad de archivos" filesTotal: "Total de archivos" storageUsageIncDec: "Variación de uso del almacenamiento" @@ -1508,8 +1569,8 @@ _instanceCharts: requests: "Pedidos" users: "Variación de usuarios" usersTotal: "Total acumulado de usuarios" - notes: "Variación de la cantidad de notas" - notesTotal: "Total acumulado de la cantidad de notas" + notes: "Diferencia en el número de publicaciones" + notesTotal: "Total acumulado de publicaciones" ff: "Variación de cantidad de seguidos/seguidores" ffTotal: "Total acumulado de cantidad de seguidos/seguidores" cacheSize: "Variación del tamaño de la caché" @@ -1596,10 +1657,10 @@ _pages: id: "Lienzo ID" width: "Ancho" height: "Altura" - note: "Nota embebida" + note: "Publicación incrustada" _note: - id: "Id de la nota" - idDescription: "Pega la URL de la nota para configurarla" + id: "ID de la publicación" + idDescription: "Puedes también pegar la URL de la publicación aquí." detailed: "Ver Detalles" switch: "Interruptor" _switch: @@ -1789,7 +1850,7 @@ _pages: splitStrByLine: "Separar texto en lineas" _splitStrByLine: arg1: "Texto" - ref: "Variables" + ref: "Variable" aiScriptVar: "Variable de AiScript" fn: "funciones" _fn: @@ -1800,8 +1861,8 @@ _pages: _for: arg1: "Cantidad de repeticiones" arg2: "Acción" - typeError: "El slot {slot} acepta el tipo {expect} pero fue ingresado el tipo - {actual}" + typeError: "El slot {slot} acepta el tipo \"{expect}\" pero fue ingresado el tipo + \"{actual}\"" thereIsEmptySlot: "El slot {slot} está vacío" types: string: "Texto" @@ -1822,7 +1883,7 @@ _notification: youGotMention: "Mención de {name}" youGotReply: "Respuesta de {name}" youGotQuote: "Citado por {name}" - youRenoted: "Renotado por {name}" + youRenoted: "Impulsado por {name}" youGotPoll: "Encuestado por {name}" youGotMessagingMessageFromUser: "{name} comenzó un chat contigo" youGotMessagingMessageFromGroup: "Tienes un chat de {name}" @@ -1837,7 +1898,7 @@ _notification: follow: "Siguiendo" mention: "Menciones" reply: "Respuestas" - renote: "Renotar" + renote: "Impulsos" quote: "Citar" reaction: "Reacción" pollVote: "Votado en la encuesta" @@ -1849,7 +1910,10 @@ _notification: _actions: followBack: "Te sigue de vuelta" reply: "Responder" - renote: "Renotar" + renote: "Impulsos" + renoted: impulsó tu publicación + reacted: reaccionó a tu publicación + voted: votó en tu encuesta _deck: alwaysShowMainColumn: "Siempre mostrar la columna principal" columnAlign: "Alinear columnas" @@ -1861,9 +1925,9 @@ _deck: swapDown: "Mover abajo" stackLeft: "Apilar a la izquierda" popRight: "Sacar a la derecha" - profile: "Perfil" - newProfile: "Nuevo perfil" - deleteProfile: "Eliminar perfil" + profile: "Espacio de trabajo" + newProfile: "Nuevo espacio de trabajo" + deleteProfile: "Eliminar espacio de trabajo" introduction: "¡Crea la interfaz perfecta para tí organizando las columnas libremente!" introduction2: "Presiona en la + de la derecha de la pantalla para añadir nuevas columnas donde quieras." @@ -1874,10 +1938,13 @@ _deck: widgets: "Widgets" notifications: "Notificaciones" tl: "Linea de tiempo" - antenna: "Antenas" + antenna: "Antena" list: "Listas" mentions: "Menciones" - direct: "Mensaje directo" + direct: "Mensajes directos" + channel: Canal + renameProfile: Renombrar espacio de trabajo + nameAlreadyExists: Este nombre de espacio de trabajo ya existe. manageGroups: Administrar grupos replayTutorial: Repetir Tutorial privateMode: Modo privado @@ -1887,16 +1954,18 @@ renoteUnmute: Dejar de silenciar impulsos flagSpeakAsCat: Habla como un gato selectInstance: Selecciona un servidor flagSpeakAsCatDescription: Tu publicación se "nyanified" cuando esté en modo gato -allowedInstances: Instancias en la lista blanca +allowedInstances: Servidores autorizados breakFollowConfirm: ¿Estás seguro de que quieres eliminar el seguidor? subscribePushNotification: Habilitar notificaciones unsubscribePushNotification: Desactivar notificaciones pushNotificationAlreadySubscribed: Las notificaciones ya están activados -pushNotificationNotSupported: Su navegador o instancia no admite notificaciones +pushNotificationNotSupported: Su navegador o servidor no admite notificaciones moveAccount: ¡Mover cuenta! moveFrom: Mueve a esta cuenta de una cuenta antigua moveFromLabel: 'La cuenta que estás moviendo de:' -moveAccountDescription: '' +moveAccountDescription: 'Este proceso es irreversible. Asegúrate de configurar un + alias para ésta cuenta en tu cuenta nueva antes de comenzar. Por favor, ingresa + la etiqueta de la cuenta en el formato siguiente: @persona@servidor.tld' license: Licencia noThankYou: No gracias userSaysSomethingReason: '{name} dijo {reason}' @@ -1904,12 +1973,12 @@ hiddenTags: Etiquetas Ocultas noInstances: No hay servidores accountMoved: 'Usuario ha movido a una cuenta nueva:' caption: Auto Subtítulos -showAds: Mostrar Anuncios +showAds: Mostrar banners enterSendsMessage: Presione "RETORNO" en los mensajes para enviar el mensaje (para apagarlo es Ctrl + RETORNO) -recommendedInstances: Instancias Recomendadas -instanceSecurity: Seguridad de la instancia -seperateRenoteQuote: Separar impulsados y Citar botones +recommendedInstances: Servidores recomendados +instanceSecurity: Seguridad del servidor +seperateRenoteQuote: Separar botones de Impulsar y Citar _messaging: groups: Grupos dms: Privado @@ -1924,7 +1993,7 @@ silenceThisInstance: Silenciar este servidor findOtherInstance: Buscar otro servidor userSaysSomethingReasonRenote: '{name} impulsó una publicación que contiene {reason]' enableRecommendedTimeline: Habilitar línea de tiempo "Recomendado" -searchPlaceholder: Buscar en Calckey +searchPlaceholder: Buscar en Firefish listsDesc: Las listas te permiten crear líneas de tiempo con usuarios específicos. Puedes acceder a ellas desde la pestaña "Línea de tiempo". removeReaction: Quitar tu reacción @@ -1941,3 +2010,157 @@ hiddenTagsDescription: 'Escriba los hashtags (sin el #) que desea ocultar de las jumpToPrevious: Ver anterior enableEmojiReactions: Habilitar reacciones de emoji cw: Aviso de contenido +sendPushNotificationReadMessage: Eliminar notificaciones una vez que la notificación + o mensaje ha sido leído +sendPushNotificationReadMessageCaption: Una notificación con el texto "{emptyPushNotificationMessage}" + será mostrada por un breve período. Esto podría aumentar el uso de batería de tu + dispositivo. +enableServerMachineStats: Permitir estadísticas del hardware del servidor +customMOTD: Mensaje del día personalizado (mensajes de la pantalla de presentación) +antennasDesc: "Las Antennas muestran nuevas publicaciones que conciden con los criterios + que estableciste.\nPueden ser accedidas desde la sección de Lineas de tiempo." +antennaInstancesDescription: Escribe un servidor por cada linea +expandOnNoteClickDesc: Si está desactivado, puedes abrir publicaciones usando el menú + del botón derecho del ratón o presionando sobre la fecha. +channelFederationWarn: Los Canales aún no federan con otras instancias +clipsDesc: Los clips como marcadores categorizados que pueden ser compartidos. Puedes + crear clips desde el menú de publicaciones. +verifiedLink: Vínculo verificado +cannotUploadBecauseExceedsFileSizeLimit: Este archivo no pudo ser cargado porque excede + el tamaño máximo permitido. +accessibility: Accesibilidad +_filters: + fromUser: Del usuario + fromDomain: Desde el dominio + notesAfter: Publicaciones posteriores + followingOnly: Sólo seguidos + withFile: Con archivo + followersOnly: Sólo seguidores + notesBefore: Publicaciones anteriores +userSaysSomethingReasonReply: '{name} respondió a una publicación que contiene {reason}' +userSaysSomethingReasonQuote: '{name} citó una publicación que contiene {reason}' +privateModeInfo: Al activar, solo servidores autorizados podrán federar con tu servidor. + Todas las publicaiones estáran ocultas del público. +customMOTDDescription: Mensajes del día personalizados (MOTD) de la pantalla de presentación, + separados cada salto de linea. Para ser mostrados aleatoriamente cada vez que un + usuario carga/recarga una página. +customSplashIcons: Icono personalizado de la pantalla de presentación (url) +donationLink: Vinculo a página de donación +delete2fa: Desactivar autentificación en dos pasos +delete2faConfirm: Esto eliminara irreversiblemente la autentificación en dos pasos + de esta cuenta. ¿Quieres continuar? +allowedInstancesDescription: Host de los servidores autorizados para federar, cada + uno separado por una nueva linea (solo aplica en modo pivado). +adminCustomCssWarn: Está configuración solo debería ser utilizado si sabes lo que + hace. Ingresar valores erroneos podría causar que TODOS los clientes dejaran de + funcionar normalmente. Porfavor asegurate que tus CSS funcionan adecuadamente al + probar los en tus configuraciones de usuario. +image: Imagen +showPopup: Notificar a los usuarios con una ventana emergente +showWithSparkles: Mostrar con destellos +youHaveUnreadAnnouncements: Tienes anuncios sin leer +neverShow: No mostrar nuevamente +remindMeLater: Recordar nuevamente +removeQuote: Eliminar cita +removeRecipient: Eliminar destinatario +removeMember: Eliminar miembro +_skinTones: + light: Claro + dark: Obscuro + yellow: Amarillo + medium: Medio + mediumLight: Claro medio + mediumDark: Obscuro medio +secureModeInfo: Al pedir a otros servidores, no mandar si no hay prueba de confianza. +enableIdenticonGeneration: Activar la generación de Identicon +sendModMail: Enviar aviso de moderación +reactionPickerSkinTone: Tono de piel preferido en emojis +_dialog: + charactersExceeded: '¡Límite de caracteres excedido! Actual: {current}/Límite: {max}' + charactersBelow: '¡Caracteres insuficientes! Actual: {current}/Límite: {min}' +expandOnNoteClick: Abrir publicación al hacer click +_experiments: + enablePostImports: Habilitar importación de publicaciones + title: Experimentos + postImportsCaption: Permite a los usuarios importar sus publicaciones desde Firefish, + Misskey, Mastodon, Akkoma y Pleroma. Puede causar una bajada en el rendimiento + del servidor si la cola de trabajos está atascada. +showUpdates: Mostrar una notificación emergente cuando Firefish se actualice +recommendedInstancesDescription: Servidores recomendados separador por saltos de línea + para que aparezcan el la línea de tiempo recomendados. +swipeOnMobile: Permitir el pase entre páginas +addRe: Añadir "re:" al comienzo del comentario en una respuesta a una publicación + sin aviso de contenido +showAdminUpdates: Avisar si hay una nueva versión de Firefish disponible (sólo adminsitrador) +_feeds: + rss: RSS + copyFeed: Copiar feed + atom: Atom + jsonFeed: Feed JSON +secureMode: Modo seguro (Recuperación Autorizada) +splash: Pantalla de bienvenida +moveToLabel: 'Cuenta a la cual estás migrando:' +alt: ALT +video: Video +audio: Audio +swipeOnDesktop: Permitir el pase de páginas del estilo móvil en el escritorio +enableCustomKaTeXMacro: Habilitar macros KaTeX personalizadas +noteId: ID de publicación +preventAiLearning: Prevenir el uso por parte de bots de IA +isLocked: Esta cuenta requiere aprobación de seguidores +origin: Origen +newer: reciente +older: antiguo +objectStorageS3ForcePathStyle: Usar URL de punto final basada en rutas +objectStorageS3ForcePathStyleDesc: Activa esto para construir puntos finales URL en + el formato 's3.amazonaws.com//' en lugar de '.s3.amazonaws.com'. +customSplashIconsDescription: URL para los iconos de la pantalla de bienvenida separadas + por saltos de línea para ser mostrados al azar cada vez que el usuario carga/recarga + la página. Por favor, asegúrate que las imágenes sean URL estáticas, preferentemente + a 192x192. +updateAvailable: ¡Quizá hay una actualización disponible! +moveTo: Mover la cuenta actual a una cuenta nueva +moveFromDescription: 'Esto pondrá un alias en tu cuenta antigua para así poder migrar + desde esa cuenta a la nueva. Haz esto ANTES de migrar tu cuenta antigua. Por favor, + ingresa la etiqueta de la cuenta con el formato siguiente: @persona@servidor.tld' +defaultReaction: Emoji por defecto para reaccionar a las publicaciones entrantes y + salientes +indexFromDescription: Deja en blanco para indizar todas las publicaciones +deletePasskeys: Borrar claves de paso +deletePasskeysConfirm: Esto borrará irreversiblemente todas las claves de paso y de + seguridad en esta cuenta, ¿Proceder? +inputNotMatch: Las entradas no coinciden +indexFrom: Indizar desde la ID de la publicación en adelante +indexPosts: Indizar publicaciones +isModerator: Moderador +isAdmin: Administrador +isPatron: Mecenas de Firefish +logoImageUrl: URL de la imagen del logotipo +xl: XL +migrationConfirm: "¿Estás absolutamente seguro de que quieres migrar a tu cuenta a + {account}? Una vez hecho esto, no podrás revertir el cambio, ni tampoco usar tu + cuenta normalmente.\nTambién, asegúrate de que has configurado ésta cuenta como + la cuenta desde la cual estás migrando." +indexNotice: Indizando ahora. Esto puede llevar bastante tiempo, por favor, no reinicies + el servidor por lo menos hasta dentro de una hora. +customKaTeXMacro: Macros KaTeX personalizadas +customKaTeXMacroDescription: '¡Configura macros para escribir expresiones matemáticas + fácilmente! La notación es conforme la las definiciones de comandos LaTeX y puede + ser escrita como \nuevocomando{\ nombre}{contenido} o \nuevocomando{\nombre}[número + de argumentos]{contenido}. Por ejemplo, \nuevocomando{\añadir}[2]{#1 + #2} expanderá + \añadir{3}{foo} a 3 + foo. Las llaves que contienen al nombre de la macro serán + cambiadas a paréntesis o corchetes. Esto afecta a los corchetes usados para argumentos. + Una (y sólo una) macro puede ser definida por línea, y no podrás saltar la línea + en medio de la definición. Líneas erróneas son ignoradas. Sólo funciones de sustitución + simple son soportadas; sintaxis avanzada, como ramificación condicional no puede + ser usada aquí.' +signupsDisabled: Los registros en esta instancia están desactivados, pero, ¡siempre + podrás registrarte en otro servidor! Si tienes un código de invitación para este + servidor, por favor, rellena el campo siguiente. +preventAiLearningDescription: Pedir a los modelos de IA no analizar el contenido de + publicas, como publicaciones e imágenes. +noGraze: Por favor desactiva la extensión de navegador "Graze for Mastodon" ya que + interfiere con Firefish. +silencedWarning: Esta página se muestra debido a que estos usuarios son de servidores + que tu administrador ha silenciado, ya que son presumiblemente fuente de spam. +isBot: Esta cuenta es un bot diff --git a/locales/fi.yml b/locales/fi.yml index 9646231f47..c4bd16ed22 100644 --- a/locales/fi.yml +++ b/locales/fi.yml @@ -55,7 +55,7 @@ attachCancel: Poista liite enterFileName: Anna tiedostonimi mute: Hiljennä unmute: Poista hiljennys -headlineMisskey: Avoimen lähdekoodin, hajautettu sosiaalisen median alusta, joka on +headlineFirefish: Avoimen lähdekoodin, hajautettu sosiaalisen median alusta, joka on ikuisesti ilmainen! 🚀 monthAndDay: '{day}/{month}' deleteAndEditConfirm: Oletko varma, että haluat poistaa tämän lähetyksen ja muokata @@ -127,7 +127,7 @@ cacheRemoteFiles: Taltioi etätiedostot välimuistiin flagAsBot: Merkitse tili botiksi flagAsBotDescription: Ota tämä vaihtoehto käyttöön, jos tätä tiliä ohjaa ohjelma. Jos se on käytössä, se toimii lippuna muille kehittäjille, jotta estetään loputtomat - vuorovaikutusketjut muiden bottien kanssa ja säädetään Calckeyn sisäiset järjestelmät + vuorovaikutusketjut muiden bottien kanssa ja säädetään Firefishn sisäiset järjestelmät käsittelemään tätä tiliä botina. flagAsCat: Oletko kissa? 🐱 flagAsCatDescription: Saat kissan korvat ja puhut kuin kissa! @@ -214,7 +214,7 @@ perDay: Päivässä version: Versio statistics: Tilastot clearQueueConfirmTitle: Oletko varma, että haluat tyhjentää jonon? -introMisskey: Tervetuloa! Calckey on avoimen lähdekoodin, hajautettu sosiaalisen median +introFirefish: Tervetuloa! Firefish on avoimen lähdekoodin, hajautettu sosiaalisen median alusta, joka on ikuisesti ilmainen! 🚀 clearQueueConfirmText: Mitkään välittämättömät lähetykset, jotka ovat jonossa, eivät federoidu. Yleensä tätä toimintoa ei tarvita. @@ -251,7 +251,7 @@ noInstances: Ei yhtään instanssia editProfile: Muokkaa profiilia noteDeleteConfirm: Oletko varma, että haluat poistaa tämän viestin? pinLimitExceeded: Et voi kiinnittää enempää viestejä -intro: Calckey -asennus valmis! Ole hyvä ja luo admin-käyttäjä. +intro: Firefish -asennus valmis! Ole hyvä ja luo admin-käyttäjä. done: Valmis processing: Suorittaa preview: Esikatselu @@ -472,7 +472,7 @@ silence: Hiljennä popularTags: Suositut tagit userList: Listat about: Tietoja -aboutMisskey: Tietoja Calckeystä +aboutFirefish: Tietoja Firefishstä exploreFediverse: Tutustu fediverseen recentlyUpdatedUsers: Vastikään lisätyt käyttäjät recentlyRegisteredUsers: Uudet liittyneet jäyttäjät @@ -618,7 +618,7 @@ sort: Järjestä ascendingOrder: Nousevasti scratchpadDescription: Raaputusalusta tarjoaa ympäristön AiScript-kokeiluja varten. Voit kirjoittaa, suorittaa ja tarkistaa sen tulokset vuorovaikutuksessa siinä olevan - Calckeyn kanssa. + Firefishn kanssa. script: Skripti disablePagesScript: Poista AiScript käytöstä sivuilla updateRemoteUser: Päivitä etäkäyttäjän tiedot @@ -800,14 +800,14 @@ smtpSecure: Käytä implisiittistä SSL/TLS:ää SMTP-yhteyksissä useGlobalSettingDesc: Jos se on päällä, käytetään tilisi ilmoitusasetuksia. Jos se on pois päältä, voit tehdä yksilöllisiä asetuksia. public: Julkinen -i18nInfo: Vapaaehtoiset kääntävät Calckeyta eri kielille. Voit auttaa osoitteessa +i18nInfo: Vapaaehtoiset kääntävät Firefishta eri kielille. Voit auttaa osoitteessa {link}. lockedAccountInfo: Ellet aseta postauksen näkyvyydeksi "Vain seuraajille", postauksesi näkyvät kaikille, vaikka vaatisitkin seuraajilta manuaalista hyväksyntää. sendErrorReportsDescription: "Kun tämä on päällä, yksityiskohtaiset virhetiedot jaetaan\ - \ Calckeyn kanssa ongelman ilmetessä, mikä auttaa parantamaan Calckeyn laatua.\n\ + \ Firefishn kanssa ongelman ilmetessä, mikä auttaa parantamaan Firefishn laatua.\n\ Näihin tietoihin sisältyy esimerkiksi käyttöjärjestelmäversio, käyttämäsi selain,\ - \ toimintasi Calckeyssä jne." + \ toimintasi Firefishssä jne." createdAt: Luotu youAreRunningUpToDateClient: Käytössäsi on asiakasohjelman uusin versio. needReloadToApply: Uudelleenlataus vaaditaan, jotta tämä näkyy. @@ -882,7 +882,7 @@ squareAvatars: Näytä neliön malliset kuvakkeet seperateRenoteQuote: Erilliset buustaa ja lainaa -napit sent: Lähetetty useBlurEffect: Käytä blur-efektejä käyttöliittymässä -misskeyUpdated: Calckey on päivitetty! +misskeyUpdated: Firefish on päivitetty! whatIsNew: Näytä muutokset translate: Käännä translatedFrom: Käännetty kielestä {x} diff --git a/locales/fr-FR.yml b/locales/fr-FR.yml index 633b393ffc..ee112b7a1b 100644 --- a/locales/fr-FR.yml +++ b/locales/fr-FR.yml @@ -1,10 +1,8 @@ _lang_: "Français" -headlineMisskey: "Réseau relié par des notes" -introMisskey: "Bienvenue ! Calckey est un service de microblogage décentralisé, libre - et ouvert.\nÉcrivez des « notes » et partagez ce qui se passe à l’instant présent, - autour de vous avec les autres 📡\nLa fonction « réactions », vous permet également - d’ajouter une réaction rapide aux notes des autres utilisateur·rice·s 👍\nExplorons - un nouveau monde 🚀" +headlineFirefish: "Une plateforme de réseaux sociaux décentralisé, open source qui + est gratuit pour toujours ! 🚀" +introFirefish: "Bienvenue ! Firefish est une plateforme de réseau social décentralisé + et open source qui est gratuite pour toujours ! 🚀" monthAndDay: "{day}/{month}" search: "Rechercher" notifications: "Notifications" @@ -16,10 +14,10 @@ ok: "OK" gotIt: "J’ai compris !" cancel: "Annuler" enterUsername: "Entrer un nom d’utilisateur·rice" -renotedBy: "Renoté par {user}" -noNotes: "Aucune note" +renotedBy: "Boosté par {user}" +noNotes: "Aucune publication" noNotifications: "Aucune notification" -instance: "Instance" +instance: "Serveur" settings: "Paramètres" basicSettings: "Paramètres généraux" otherSettings: "Paramètres avancés" @@ -32,14 +30,14 @@ login: "Se connecter" loggingIn: "Connexion en cours" logout: "Se déconnecter" signup: "S’inscrire" -uploading: "Envoi en cours" +uploading: "Envoi en cours..." save: "Enregistrer" users: "Utilisateur·rice·s" addUser: "Ajouter un·e utilisateur·rice" favorite: "Ajouter aux favoris" favorites: "Favoris" unfavorite: "Retirer des favoris" -favorited: "Ajouté à mes favoris" +favorited: "Ajouté à mes favoris." alreadyFavorited: "Déjà ajouté aux favoris." cantFavorite: "Impossible d'ajouter aux favoris." pin: "Épingler sur le profil" @@ -48,37 +46,37 @@ copyContent: "Copier le contenu" copyLink: "Copier le lien" delete: "Supprimer" deleteAndEdit: "Supprimer et réécrire" -deleteAndEditConfirm: "Êtes-vous sûr·e de vouloir supprimer cette note et la reformuler - ? Vous perdrez toutes les réactions, renotes et réponses y afférentes." +deleteAndEditConfirm: "Êtes-vous sûr·e de vouloir supprimer cette publication et la + reformuler ? Vous perdrez toutes les réactions, boosts et réponses liées." addToList: "Ajouter à une liste" sendMessage: "Envoyer un message" copyUsername: "Copier le nom d’utilisateur·rice" searchUser: "Chercher un·e utilisateur·rice" reply: "Répondre" -loadMore: "Afficher plus …" -showMore: "Afficher plus …" +loadMore: "Charger plus" +showMore: "Afficher plus" showLess: "Fermer" youGotNewFollower: "Vous suit" receiveFollowRequest: "Demande d’abonnement reçue" followRequestAccepted: "La demande d’abonnement a été acceptée" mention: "Mentionner" mentions: "Mentions" -directNotes: "Notes directes" +directNotes: "Messages directs" importAndExport: "Import et export" import: "Importer" export: "Exporter" files: "Fichiers" download: "Télécharger" driveFileDeleteConfirm: "Êtes-vous sûr·e de vouloir supprimer le fichier \"{name}\"\ - \ ? Il sera retiré de toutes ses notes liées." + \ ? Il sera retiré de toutes les publications qui le contiennent comme pièce-jointe." unfollowConfirm: "Désirez-vous vous désabonner de {name} ?" exportRequested: "Vous avez demandé une exportation. L’opération pourrait prendre - un peu de temps. Une terminée, le fichier résultant sera ajouté au Drive." + un peu de temps. Une fois terminée, le fichier résultant sera ajouté au Drive." importRequested: "Vous avez initié un import. Cela pourrait prendre un peu de temps." lists: "Listes" noLists: "Vous n’avez aucune liste" -note: "Post" -notes: "Posts" +note: "Publier" +notes: "Publications" following: "Abonnements" followers: "Abonné·e·s" followsYou: "Vous suit" @@ -97,20 +95,20 @@ youShouldUpgradeClient: "Si la page ne s'affiche pas correctement, rechargez-la enterListName: "Nom de la liste" privacy: "Confidentialité" makeFollowManuallyApprove: "Accepter manuellement les demandes d’abonnement" -defaultNoteVisibility: "Visibilité des notes par défaut" +defaultNoteVisibility: "Visibilité des publications par défaut" follow: "S’abonner" followRequest: "Demande d’abonnement" followRequests: "Demandes d’abonnement" unfollow: "Se désabonner" followRequestPending: "Demande d'abonnement en attente de confirmation" enterEmoji: "Insérer un émoji" -renote: "Renoter" -unrenote: "Annuler la Renote" -renoted: "Renoté." -cantRenote: "Ce message ne peut pas être renoté." -cantReRenote: "Impossible de renoter une Renote." +renote: "Booster" +unrenote: "Annuler le boost" +renoted: "Boosté." +cantRenote: "Cette publication ne peut pas être boosté." +cantReRenote: "Impossible de partager ce boost." quote: "Citer" -pinnedNote: "Note épinglée" +pinnedNote: "Publication épinglée" pinned: "Épingler sur le profil" you: "Vous" clickToShow: "Cliquer pour afficher" @@ -120,12 +118,10 @@ reaction: "Réactions" reactionSetting: "Réactions à afficher dans le sélecteur de réactions" reactionSettingDescription2: "Déplacer pour réorganiser, cliquer pour effacer, utiliser « + » pour ajouter." -rememberNoteVisibility: "Activer l'option \" se souvenir de la visibilité des notes - \" vous permet de réutiliser automatiquement la visibilité utilisée lors de la publication - de votre note précédente." +rememberNoteVisibility: "Se souvenir des paramètres de visibilité des publications" attachCancel: "Supprimer le fichier attaché" -markAsSensitive: "Marquer comme sensible" -unmarkAsSensitive: "Supprimer le marquage comme sensible" +markAsSensitive: "Marquer comme sensible (NSFW)" +unmarkAsSensitive: "Supprimer le marquage comme sensible (NSFW)" enterFileName: "Entrer le nom du fichier" mute: "Masquer" unmute: "Ne plus masquer" @@ -151,22 +147,22 @@ addEmoji: "Ajouter un émoji" settingGuide: "Configuration proposée" cacheRemoteFiles: "Mise en cache des fichiers distants" cacheRemoteFilesDescription: "Lorsque cette option est désactivée, les fichiers distants - sont chargés directement depuis l’instance distante. La désactiver diminuera certes + sont chargés directement depuis le serveur distant. La désactiver diminuera certes l’utilisation de l’espace de stockage local mais augmentera le trafic réseau puisque les miniatures ne seront plus générées." flagAsBot: "Ce compte est un robot" flagAsBotDescription: "Si ce compte est géré de manière automatisée, choisissez cette option. Si elle est activée, elle agira comme un marqueur pour les autres développeurs afin d'éviter des chaînes d'interaction sans fin avec d'autres robots et d'ajuster - les systèmes internes de Calckey pour traiter ce compte comme un robot." + les systèmes internes de Firefish pour traiter ce compte comme un robot." flagAsCat: "Ce compte est un chat" -flagAsCatDescription: "Activer l'option \" Je suis un chat \" pour ce compte." +flagAsCatDescription: "Vous aurez des oreilles de chat et parlerez comme un chat !" flagShowTimelineReplies: "Afficher les réponses dans le fil" autoAcceptFollowed: "Accepter automatiquement les demandes d’abonnement venant d’utilisateur·rice·s que vous suivez" addAccount: "Ajouter un compte" loginFailed: "Échec de la connexion" -showOnRemote: "Voir sur l’instance distante" +showOnRemote: "Ouvrir la page d’origine" general: "Général" wallpaper: "Fond d’écran" setWallpaper: "Définir le fond d’écran" @@ -176,17 +172,17 @@ youHaveNoLists: "Vous n’avez aucune liste" followConfirm: "Êtes-vous sûr·e de vouloir suivre {name} ?" proxyAccount: "Compte proxy" proxyAccountDescription: "Un compte proxy se comporte, dans certaines conditions, - comme un·e abonné·e distant·e pour les utilisateurs d'autres instances. Par exemple, - quand un·e utilisateur·rice ajoute un·e utilisateur·rice distant·e à une liste, - ses notes ne seront pas visibles sur l'instance si personne ne suit cet·te utilisateur·rice. - Le compte proxy va donc suivre cet·te utilisateur·rice pour que ses notes soient - acheminées." + comme un·e abonné·e distant·e pour les utilisateur·rice·s d'autres serveurs. Par + exemple, quand un·e utilisateur·rice local ajoute un·e utilisateur·rice distant·e + à une liste, ses publications ne seront pas visibles sur le serveur si personne + ne suit cet·te utilisateur·rice. Le compte proxy va donc suivre cet·te utilisateur·rice + pour que ses publications soient acheminées." host: "Serveur distant" selectUser: "Sélectionner un·e utilisateur·rice" recipient: "Destinataire" annotation: "Commentaires" federation: "Fédération" -instances: "Instance" +instances: "Serveurs" registeredAt: "Premier contact le" latestRequestSentAt: "Dernière requête envoyée" latestRequestReceivedAt: "Dernière requête reçue" @@ -196,7 +192,7 @@ charts: "Graphiques" perHour: "par heure" perDay: "par jour" stopActivityDelivery: "Arrêter l’envoi de l’activité" -blockThisInstance: "Bloquer cette instance" +blockThisInstance: "Bloquer ce serveur" operations: "Opérations" software: "Logiciel" version: "Version" @@ -206,26 +202,26 @@ jobQueue: "File d’attente" cpuAndMemory: "Processeur et mémoire" network: "Réseau" disk: "Disque" -instanceInfo: "Informations sur l’instance" +instanceInfo: "Informations du serveur" statistics: "Statistiques" clearQueue: "Vider la file d’attente" clearQueueConfirmTitle: "Êtes-vous sûr·e de vouloir vider la file d’attente ?" -clearQueueConfirmText: "Les notes non distribuées ne seront pas délivrées. Normalement, - vous n'avez pas besoin d'effectuer cette opération." +clearQueueConfirmText: "Les publications non distribuées ne seront pas délivrées. + Normalement, vous n'avez pas besoin d'effectuer cette opération." clearCachedFiles: "Vider le cache" clearCachedFilesConfirm: "Êtes-vous sûr·e de vouloir vider tout le cache de fichiers distants ?" -blockedInstances: "Instances bloquées" -blockedInstancesDescription: "Listez les instances que vous désirez bloquer, une par - ligne. Ces instances ne seront plus en capacité d'interagir avec votre instance." +blockedInstances: "Serveurs bloqués" +blockedInstancesDescription: "Listez les serveurs que vous désirez bloquer, un par + ligne. Ces serveurs ne seront plus en capacité d'interagir avec votre serveur." muteAndBlock: "Masqué·e·s / Bloqué·e·s" mutedUsers: "Utilisateur·rice·s en sourdine" blockedUsers: "Utilisateur·rice·s bloqué·e·s" noUsers: "Il n’y a pas d’utilisateur·rice·s" editProfile: "Modifier votre profil" -noteDeleteConfirm: "Êtes-vous sûr·e de vouloir supprimer cette note ?" -pinLimitExceeded: "Vous ne pouvez plus épingler d’autres notes." -intro: "L’installation de Calckey est terminée ! Veuillez créer un compte administrateur." +noteDeleteConfirm: "Êtes-vous sûr·e de vouloir supprimer cette publication ?" +pinLimitExceeded: "Vous ne pouvez pas épingler plus de publications" +intro: "L’installation de Firefish est terminée ! Veuillez créer un compte administrateur." done: "Terminé" processing: "Traitement en cours" preview: "Aperçu" @@ -239,9 +235,9 @@ all: "Tous" subscribing: "Abonné" publishing: "Publié" notResponding: "Ne répond pas" -instanceFollowing: "Abonnements de l'instance" -instanceFollowers: "Abonné·e·s de l’instance" -instanceUsers: "Utilisateur·rice·s de cette l’instance" +instanceFollowing: "Abonnements d’un serveur" +instanceFollowers: "Abonné·e·s du serveur" +instanceUsers: "Utilisateur·rice·s de ce serveur" changePassword: "Modifier votre mot de passe" security: "Sécurité" retypedNotMatch: "Les saisies ne correspondent pas." @@ -258,8 +254,8 @@ announcements: "Annonces" imageUrl: "URL de l’image" remove: "Supprimer" removed: "Supprimé" -removeAreYouSure: "Êtes-vous sûr·e de vouloir supprimer「{x}」?" -deleteAreYouSure: "Êtes-vous sûr·e de vouloir supprimer「{x}」?" +removeAreYouSure: "Êtes-vous sûr·e de vouloir supprimer \"{x}\" ?" +deleteAreYouSure: "Êtes-vous sûr·e de vouloir supprimer \"{x}\" ?" resetAreYouSure: "Voulez-vous réinitialiser ?" saved: "Enregistré" messaging: "Discuter" @@ -313,28 +309,28 @@ emptyDrive: "Le Drive est vide" emptyFolder: "Le dossier est vide" unableToDelete: "Suppression impossible" inputNewFileName: "Entrez un nouveau nom de fichier" -inputNewDescription: "Veuillez entrer une nouvelle description" +inputNewDescription: "Veuillez entrer une nouvelle description au fichier" inputNewFolderName: "Entrez un nouveau nom de dossier" circularReferenceFolder: "Le dossier de destination est un sous-dossier du dossier que vous souhaitez déplacer." -hasChildFilesOrFolders: "Impossible de supprimer ce dossier car il n'est pas vide." +hasChildFilesOrFolders: "Impossible de supprimer ce dossier, car il n'est pas vide." copyUrl: "Copier l’URL" rename: "Renommer" avatar: "Avatar" banner: "Bannière" -nsfw: "Contenu sensible" +nsfw: "Contenu sensible (NSFW)" whenServerDisconnected: "Lorsque la connexion au serveur est perdue" disconnectedFromServer: "Déconnecté·e du serveur" reload: "Rafraîchir" doNothing: "Ignorer" -reloadConfirm: "Voulez-vous recharger?" +reloadConfirm: "Voulez-vous recharger le fil ?" watch: "Surveiller" unwatch: "Ne plus surveiller" accept: "Autoriser" reject: "Refuser" normal: "Normal" -instanceName: "Nom de l’instance" -instanceDescription: "Description de l’instance" +instanceName: "Nom du serveur" +instanceDescription: "Description du serveur" maintainerName: "L’administrateur·rice" maintainerEmail: "Email de l’administrateur·rice" tosUrl: "URL des conditions d’utilisation" @@ -366,10 +362,10 @@ pinnedUsers: "Utilisateur·rice épinglé·e" pinnedUsersDescription: "Listez les utilisateur·rice·s que vous souhaitez voir épinglé·e·s sur la page \"Découvrir\", un·e par ligne." pinnedPages: "Pages épinglées" -pinnedPagesDescription: "Inscrivez le chemin des pages que vous souhaitez épingler - en haut de la page de l'instance. Séparez les pages d'un retour à la ligne." +pinnedPagesDescription: "Inscrivez le chemin des Pages que vous souhaitez épingler + en haut de la page du serveur. Séparez les d'un retour à la ligne." pinnedClipId: "Identifiant du clip épinglé" -pinnedNotes: "Note épinglée" +pinnedNotes: "Publications épinglées" hcaptcha: "hCaptcha" enableHcaptcha: "Activer hCaptcha" hcaptchaSiteKey: "Clé du site" @@ -389,14 +385,14 @@ antennaKeywords: "Mots clés à recevoir" antennaExcludeKeywords: "Mots clés à exclure" antennaKeywordsDescription: "Séparer avec des espaces pour la condition AND. Séparer avec un saut de ligne pour une condition OR." -notifyAntenna: "Je souhaite recevoir les notifications des nouvelles notes" -withFileAntenna: "Notes ayant des attachements uniquement" +notifyAntenna: "Je souhaite recevoir les notifications des nouvelles publications" +withFileAntenna: "Publications ayant des pièces-jointes uniquement" enableServiceworker: "Activer ServiceWorker" antennaUsersDescription: "Saisissez un seul nom d’utilisateur·rice par ligne" caseSensitive: "Sensible à la casse" withReplies: "Inclure les réponses" connectedTo: "Vous êtes connectés aux services suivants" -notesAndReplies: "Notes et Réponses" +notesAndReplies: "Publications et Réponses" withFiles: "Avec fichiers joints" silence: "Mettre en sourdine" silenceConfirm: "Êtes-vous sûr·e de vouloir mettre l’utilisateur·rice en sourdine @@ -413,7 +409,7 @@ exploreFediverse: "Explorer le Fediverse" popularTags: "Mots-clés populaires" userList: "Listes" about: "Informations" -aboutMisskey: "À propos de Calckey" +aboutFirefish: "À propos de Firefish" administrator: "Administrateur" token: "Jeton" twoStepAuthentication: "Authentification à deux facteurs" @@ -434,7 +430,7 @@ notFoundDescription: "Aucune page ne correspond à l’URL spécifiée." uploadFolder: "Emplacement de téléversement par défaut" cacheClear: "Vider le cache" markAsReadAllNotifications: "Marquer toutes les notifications comme lues" -markAsReadAllUnreadNotes: "Marquer toutes les notes comme lues" +markAsReadAllUnreadNotes: "Marquer toutes les publications comme lues" markAsReadAllTalkMessages: "Marquer toutes les discussions comme lues" help: "Aide" inputMessageHere: "Écrivez votre message ici" @@ -455,7 +451,7 @@ text: "Texte" enable: "Activer" next: "Suivant" retype: "Confirmation" -noteOf: "Notes de {user}" +noteOf: "Publications de {user}" inviteToGroup: "Inviter dans un groupe" quoteAttached: "Avec citation" quoteQuestion: "Souhaitez-vous ajouter une citation ?" @@ -469,7 +465,7 @@ checking: "Vérification en cours..." available: "Disponible" unavailable: "Non disponible" usernameInvalidFormat: "Le nom d'utilisateur peut contenir uniquement des lettres - (minuscules et/ou majuscules), des chiffres et des _" + (minuscules et/ou majuscules), des chiffres et des tirets du bas." tooShort: "Trop court" tooLong: "Trop long" weakPassword: "Mot de passe faible" @@ -515,15 +511,16 @@ accountSettings: "Paramètres du compte" promotion: "Promu" promote: "Promouvoir" numberOfDays: "Nombre de jours" -hideThisNote: "Masquer cette note" -showFeaturedNotesInTimeline: "Afficher les notes des Tendances dans le fil d'actualité" +hideThisNote: "Masquer cette publication" +showFeaturedNotesInTimeline: "Afficher les publications des Tendances dans le fil + d'actualité" objectStorage: "Stockage d'objets" useObjectStorage: "Utiliser le stockage d'objets" -objectStorageBaseUrl: "Base URL" +objectStorageBaseUrl: "URL racine" objectStorageBaseUrlDesc: "Préfixe d’URL utilisé pour construire l’URL vers le référencement d’objet (média). Spécifiez son URL si vous utilisez un CDN ou un proxy, sinon spécifiez - l’adresse accessible au public selon le guide de service que vous allez utiliser. - P.ex. 'https://.s3.amazonaws.com' pour AWS S3 et 'https://storage.googleapis.com/' + l’adresse accessible au public selon le guide de service que vous allez utiliser.\n + Ex : 'https://.s3.amazonaws.com' pour AWS S3 et 'https://storage.googleapis.com/' pour GCS." objectStorageBucket: "Bucket" objectStorageBucketDesc: "Veuillez spécifier le nom du compartiment utilisé sur le @@ -532,7 +529,7 @@ objectStoragePrefix: "Prefix" objectStoragePrefixDesc: "Les fichiers seront stockés sous le répertoire de ce préfixe." objectStorageEndpoint: "Endpoint" objectStorageEndpointDesc: "Laissez ce champ vide si vous utilisez AWS S3, sinon spécifiez - le point de terminaison comme '' ou ': ' selon le guide de service + le point de terminaison comme '' ou ':' selon le guide de service que vous allez utiliser." objectStorageRegion: "Région" objectStorageRegionDesc: "Spécifiez une région comme 'xx-east-1'. Si votre service @@ -547,7 +544,7 @@ objectStorageSetPublicRead: "Régler sur « public » lors de l'envoi" serverLogs: "Journal du serveur" deleteAll: "Supprimer tout" showFixedPostForm: "Afficher le formulaire de publication en haut du fil d'actualité" -newNoteRecived: "Voir les nouvelles notes" +newNoteRecived: "Voir les nouvelles publications" sounds: "Sons" listen: "Écouter" none: "Rien" @@ -557,7 +554,7 @@ volume: "Volume" masterVolume: "Volume principal" details: "Détails" chooseEmoji: "Choisissez un émoji" -unableToProcess: "L’opération n’a pas pu être complétée." +unableToProcess: "L’opération n’a pas pu être complétée" recentUsed: "Utilisé récemment" install: "Installation" uninstall: "Désinstaller" @@ -572,7 +569,7 @@ descendingOrder: "Descendant" scratchpad: "ScratchPad" scratchpadDescription: "ScratchPad fournit un environnement expérimental pour AiScript. Vous pouvez vérifier la rédaction de votre code, sa bonne exécution et le résultat - de son interaction avec Calckey." + de son interaction avec Firefish." output: "Sortie" script: "Script" disablePagesScript: "Désactiver AiScript sur les Pages" @@ -581,12 +578,12 @@ deleteAllFiles: "Supprimer tous les fichiers" deleteAllFilesConfirm: "Êtes-vous sûr·e de vouloir supprimer tous les fichiers ?" removeAllFollowing: "Retenir tous les abonnements" removeAllFollowingDescription: "Se désabonner de tous les comptes de {host}. Veuillez - lancer cette action uniquement si l’instance n’existe plus." + lancer cette action uniquement si le serveur n’existe plus." userSuspended: "Cet·te utilisateur·rice a été suspendu·e." userSilenced: "Cette utilisateur·trice a été mis·e en sourdine." yourAccountSuspendedTitle: "Ce compte est suspendu" yourAccountSuspendedDescription: "Ce compte est suspendu car vous avez enfreint les - conditions d'utilisation de l'instance, ou pour un motif similaire. Si vous souhaitez + conditions d'utilisation du serveur, ou pour un motif similaire. Si vous souhaitez connaître en détail les raisons de cette suspension, renseignez-vous auprès de l'administrateur·rice de votre instance. Merci de ne pas créer de nouveau compte." menu: "Menu" @@ -594,11 +591,11 @@ divider: "Séparateur" addItem: "Ajouter un élément" relays: "Relais" addRelay: "Ajouter un relais" -inboxUrl: "Inbox URL" +inboxUrl: "URL de boîte de récéption" addedRelays: "Relais ajoutés" serviceworkerInfo: "Devrait être activé pour les notifications push." -deletedNote: "Note supprimée" -invisibleNote: "Note invisible" +deletedNote: "Publication supprimée" +invisibleNote: "Publication invisible" enableInfiniteScroll: "Activer le défilement infini" visibility: "Visibilité" poll: "Sondage" @@ -608,7 +605,7 @@ disablePlayer: "Fermer le lecteur vidéo" expandTweet: "Étendre le tweet" themeEditor: "Éditeur de thèmes" description: "Description" -describeFile: "Ajouter une description d'image" +describeFile: "Ajouter une description" enterFileDescription: "Saisissez une description" author: "Auteur·rice" leaveConfirm: "Vous avez des modifications non-sauvegardées. Voulez-vous les ignorer @@ -636,8 +633,8 @@ edit: "Editer" emailServer: "Serveur mail" enableEmail: "Activer la distribution de courriel" emailConfigInfo: "Utilisé pour confirmer votre adresse de courriel et la réinitialisation - de votre mot de passe en cas d’oubli." -email: "E-mail " + de votre mot de passe en cas d’oubli" +email: "E-mail" emailAddress: "Adresses e-mail" smtpConfig: "Paramètres du serveur SMTP" smtpHost: "Serveur distant" @@ -651,7 +648,7 @@ smtpSecureInfo: "Désactiver cette option lorsque STARTTLS est utilisé" testEmail: "Tester la distribution de courriel" wordMute: "Filtre de mots" regexpError: "Erreur d’expression régulière" -instanceMute: "Instance en sourdine" +instanceMute: "Serveur masqué" userSaysSomething: "{name} a dit quelque chose" makeActive: "Activer" display: "Affichage" @@ -661,10 +658,10 @@ overview: "Aperçu" logs: "Journaux" delayed: "en retard" database: "Base de données" -channel: "Canaux" +channel: "Chaînes" create: "Créer" -notificationSetting: "Paramètres des notifications " -notificationSettingDesc: "Sélectionnez le type de notification à afficher" +notificationSetting: "Paramètres des notifications" +notificationSettingDesc: "Sélectionnez le type de notification à afficher." useGlobalSetting: "Utiliser paramètre général" useGlobalSettingDesc: "S'il est activé, les paramètres de notification de votre compte seront utilisés. S'il est désactivé, des configurations individuelles peuvent être @@ -673,7 +670,7 @@ other: "Autre" regenerateLoginToken: "Régénérer le jeton de connexion" regenerateLoginTokenDescription: "Générer un nouveau jeton d'authentification. Cette opération ne devrait pas être nécessaire ; lors de la génération d'un nouveau jeton, - tous les appareils seront déconnectés. " + tous les appareils seront déconnectés." setMultipleBySeparatingWithSpace: "Vous pouvez en définir plusieurs, en les séparant par des espaces." fileIdOrUrl: "ID du fichier ou URL" @@ -683,11 +680,11 @@ abuseReports: "Signalements" reportAbuse: "Signaler" reportAbuseOf: "Signaler {name}" fillAbuseReportDescription: "Veuillez expliquer les raisons du signalement. S'il s'agit - d'une note précise, veuillez en donner le lien." + d'une publication en particulier, veuillez inclure le lien." abuseReported: "Le rapport est envoyé. Merci." reporter: "Signalé par" -reporteeOrigin: "Origine du signalement" -reporterOrigin: "Signalé par" +reporteeOrigin: "Origine du signalé" +reporterOrigin: "Origine du signalement" forwardReport: "Transférer le signalement à l’instance distante" send: "Envoyer" abuseMarkAsResolved: "Marquer le signalement comme résolu" @@ -696,26 +693,26 @@ openInSideView: "Ouvrir en vue latérale" defaultNavigationBehaviour: "Navigation par défaut" editTheseSettingsMayBreakAccount: "La modification de ces paramètres peut endommager votre compte." -instanceTicker: "Nom de l'instance d'origine des notes" +instanceTicker: "Nom du serveur d'origine des publications" waitingFor: "En attente de {x}" random: "Aléatoire" system: "Système" -switchUi: "Modifier l'interface utilisateur" +switchUi: "Mise en page" desktop: "Bureau" clip: "Clip" createNew: "Créer nouveau" optional: "Facultatif" createNewClip: "Créer un nouveau clip" public: "Public" -i18nInfo: "Calckey est traduit dans différentes langues par des bénévoles. Vous pouvez +i18nInfo: "Firefish est traduit dans différentes langues par des bénévoles. Vous pouvez contribuer à {link}." manageAccessTokens: "Gérer les jetons d'accès" -accountInfo: " Informations du compte " -notesCount: "Nombre de notes" +accountInfo: "Informations du compte" +notesCount: "Nombre de publications" repliesCount: "Nombre de réponses envoyées" -renotesCount: "Nombre de notes que vous avez renotées" +renotesCount: "Nombre de boosts que vous avez envoyé" repliedCount: "Nombre de réponses reçues" -renotedCount: "Nombre de vos notes renotées" +renotedCount: "Nombre de vos publications boostées" followingCount: "Nombre de comptes suivis" followersCount: "Nombre d'abonnés" sentReactionsCount: "Nombre de réactions envoyées" @@ -728,18 +725,18 @@ driveFilesCount: "Nombre de fichiers dans le Drive" driveUsage: "Utilisation du Drive" noCrawle: "Refuser l'indexation par les robots" noCrawleDescription: "Demandez aux moteurs de recherche de ne pas indexer votre page - de profil, vos notes, vos pages, etc." -lockedAccountInfo: "À moins que vous ne définissiez la visibilité de votre note sur - \"Abonné-e-s\", vos notes sont visibles par tous, même si vous exigez que les demandes - d'abonnement soient approuvées manuellement." -alwaysMarkSensitive: "Marquer les médias comme contenu sensible par défaut" + de profil, vos publications, vos pages, etc." +lockedAccountInfo: "À moins que vous ne définissiez la visibilité de votre publication + sur \"Abonné-e-s\", vos publications sont visibles par tous, même si vous exigez + que les demandes d'abonnement soient approuvées manuellement." +alwaysMarkSensitive: "Marquer les médias comme contenu sensible (NSFW) par défaut" loadRawImages: "Affichage complet des images jointes au lieu des vignettes" disableShowingAnimatedImages: "Désactiver l'animation des images" verificationEmailSent: "Un e-mail de vérification a été envoyé. Veuillez accéder au lien pour compléter la vérification." notSet: "Non défini" -emailVerified: "Votre adresse e-mail a été vérifiée." -noteFavoritesCount: "Nombre de notes dans les favoris" +emailVerified: "Votre adresse e-mail a été vérifiée" +noteFavoritesCount: "Nombre de publications dans les favoris" pageLikesCount: "Nombre de pages aimées" pageLikedCount: "Nombre de vos pages aimées" contact: "Contact" @@ -747,10 +744,10 @@ useSystemFont: "Utiliser la police par défaut du système" clips: "Clips" experimentalFeatures: "Fonctionnalités expérimentales" developer: "Développeur" -makeExplorable: "Rendre le compte visible sur la page \"Découvrir\"." +makeExplorable: "Rendre le compte visible sur la page \"Découvrir\"" makeExplorableDescription: "Si vous désactivez cette option, votre compte n'apparaîtra pas sur la page \"Découvrir\"." -showGapBetweenNotesInTimeline: "Afficher un écart entre les notes sur la Timeline" +showGapBetweenNotesInTimeline: "Afficher un écart entre les publications du fil d’actualité" duplicate: "Duliquer" left: "Gauche" center: "Centrer" @@ -763,13 +760,13 @@ showTitlebar: "Afficher la barre de titre" clearCache: "Vider le cache" onlineUsersCount: "{n} utilisateur(s) en ligne" nUsers: "{n} utilisateur·rice·s" -nNotes: "{n} Notes" +nNotes: "{n} Publications" sendErrorReports: "Envoyer les rapports d’erreur" sendErrorReportsDescription: "Si vous activez l'envoi des rapports d'erreur, vous - contribuerez à améliorer la qualité de Calckey grâce au partage d'informations détaillées - sur les erreurs lorsqu'un problème survient.\nCela inclut des informations telles - que la version de votre système d'exploitation, le type de navigateur que vous utilisez, - votre historique d'activité, etc." + contribuerez à améliorer la qualité de Firefish grâce au partage d'informations + détaillées sur les erreurs lorsqu'un problème survient.\nCela inclut des informations + telles que la version de votre système d'exploitation, le type de navigateur que + vous utilisez, votre historique d'activité, etc." myTheme: "Mes thèmes" backgroundColor: "Arrière-plan" accentColor: "Accentuation" @@ -779,8 +776,8 @@ advanced: "Avancé" value: "Valeur" createdAt: "Date de création" updatedAt: "Mis à jour le" -saveConfirm: "Voulez-vous sauvegarder les modifications?" -deleteConfirm: "Confirmez-vous la suppression?" +saveConfirm: "Voulez-vous sauvegarder les modifications ?" +deleteConfirm: "Confirmez-vous la suppression ?" invalidValue: "Cette valeur est invalide." registry: "Registre" closeAccount: "Fermer le compte" @@ -793,14 +790,14 @@ capacity: "Capacité " inUse: "utilisé" editCode: "Modifier le code" apply: "Appliquer" -receiveAnnouncementFromInstance: "Recevoir les messages d'information de l'instance" +receiveAnnouncementFromInstance: "Recevoir les messages d'information du serveur" emailNotification: "Notifications par mail" publish: "Public" -inChannelSearch: "Chercher dans le canal" +inChannelSearch: "Chercher dans la chaîne" useReactionPickerForContextMenu: "Clic-droit pour ouvrir le panneau de réactions" typingUsers: "{users} est en train d'écrire" jumpToSpecifiedDate: "Se rendre à la date" -showingPastTimeline: "Un fil ancien est affiché" +showingPastTimeline: "Un fil âgé est affiché" clear: "Effacer" markAllAsRead: "Tout marquer comme lu" goBack: "Retour" @@ -808,8 +805,8 @@ unlikeConfirm: "Êtes-vous sûr·e de ne plus vouloir aimer cette publication ?" fullView: "Plein écran" quitFullView: "Quitter le plein écran" addDescription: "Ajouter une description" -userPagePinTip: "Vous pouvez afficher des notes ici en sélectionnant l'option « Épingler - au profil » dans le menu de chaque note." +userPagePinTip: "Vous pouvez afficher des publications ici en sélectionnant l'option + « Épingler au profil » dans le menu de chaque publication." notSpecifiedMentionWarning: "Vous avez mentionné des utilisateur·rice·s qui ne font pas partie de la liste des destinataires" info: "Informations" @@ -818,13 +815,13 @@ unknown: "Inconnu" onlineStatus: "Statut" hideOnlineStatus: "Se rendre invisible" hideOnlineStatusDescription: "Rendre votre statut invisible peut diminuer les performances - de certaines fonctionnalités, telles que la Recherche." + de certaines fonctionnalités, telles que la recherche." online: "En ligne" active: "Actif·ve" offline: "Hors ligne" notRecommended: "Déconseillé" botProtection: "Protection contre les bots" -instanceBlocking: "Instances bloquées/mise en sourdine" +instanceBlocking: "Gestion de la Fédération" selectAccount: "Sélectionner un compte" switchAccount: "Changer de compte" enabled: "Activé" @@ -839,10 +836,10 @@ noBotProtectionWarning: "La protection contre les bots n'est pas configurée." configure: "Configurer" postToGallery: "Publier dans la galerie" gallery: "Galerie" -recentPosts: "Les plus récentes" -popularPosts: "Les plus consultées" -shareWithNote: "Partager dans une note" -ads: "Publicité" +recentPosts: "Publications récentes" +popularPosts: "Publications populaires" +shareWithNote: "Partager dans une publication" +ads: "Bannières communautaires" expiration: "Échéance" memo: "Pense-bête" priority: "Priorité" @@ -865,7 +862,7 @@ hashtags: "Hashtags" troubleshooting: "Résolution de problèmes" useBlurEffect: "Utiliser des effets de flou dans l'interface" learnMore: "Plus d'informations" -misskeyUpdated: "Calckey a été mis à jour !" +misskeyUpdated: "Firefish a été mis à jour !" whatIsNew: "Voir les derniers changements" translate: "Traduire" translatedFrom: "Traduit depuis {x}" @@ -889,16 +886,16 @@ filter: "Filtre" controlPanel: "Panneau de contrôle" manageAccounts: "Gérer les comptes" makeReactionsPublic: "Rendre les réactions publiques" -makeReactionsPublicDescription: "Ceci rendra la liste de toutes vos réactions données - publique." -classic: "Classique" +makeReactionsPublicDescription: "Ceci rendra public la liste de toutes vos réactions + passées." +classic: "Centré" muteThread: "Masquer cette discussion" unmuteThread: "Ne plus masquer le fil" ffVisibility: "Visibilité des abonnés/abonnements" ffVisibilityDescription: "Permet de configurer qui peut voir les personnes que tu suis et les personnes qui te suivent." -continueThread: "Afficher la suite du fil" -deleteAccountConfirm: "Votre compte sera supprimé. Êtes vous certain ?" +continueThread: "Continuer le fil" +deleteAccountConfirm: "Ce compte sera définitivement supprimé. Êtes vous certain ?" incorrectPassword: "Le mot de passe est incorrect." voteConfirm: "Confirmez-vous votre vote pour « {choice} » ?" hide: "Masquer" @@ -913,12 +910,12 @@ overridedDeviceKind: "Type d’appareil" smartphone: "Smartphone" tablet: "Tablette" auto: "Automatique" -themeColor: "Couleur du thème" +themeColor: "Couleur du bandeau d’information du serveur" size: "Taille" numberOfColumn: "Nombre de colonnes" searchByGoogle: "Google" -instanceDefaultLightTheme: "Thème clair par défaut sur toute l’instance" -instanceDefaultDarkTheme: "Thème sombre par défaut sur toute l’instance" +instanceDefaultLightTheme: "Thème clair par défaut sur tout le serveur" +instanceDefaultDarkTheme: "Thème sombre par défaut sur tout le serveur" instanceDefaultThemeDescription: "Saisissez le code du thème en format objet." mutePeriod: "Durée de mise en sourdine" indefinitely: "Illimité" @@ -929,7 +926,7 @@ oneWeek: "1 semaine" rateLimitExceeded: "Limite de taux dépassée" cropImage: "Recadrer l'image" cropImageAsk: "Voulez-vous recadrer cette image ?" -file: "Fichiers" +file: "Fichier" reverse: "Inverser" colored: "Coloré" label: "Étiquette" @@ -969,13 +966,13 @@ _forgotPassword: Un lien vous permettant de réinitialiser votre mot de passe sera envoyé à cette adresse." ifNoEmail: "Si vous n'avez pas enregistré d'adresse e-mail, merci de contacter l'administrateur·rice - de votre instance." - contactAdmin: "Cette instance ne permettant pas l'utilisation d'adresses e-mail, - prenez contact avec l'administrateur·rice pour procéder à la réinitialisation - de votre mot de passe." + de votre serveur." + contactAdmin: "Ce serveur ne permettant pas l'utilisation d'adresses e-mail, prenez + contact avec l'administrateur·rice pour procéder à la réinitialisation de votre + mot de passe." _gallery: my: "Mes publications" - liked: " Publications que j'ai aimées" + liked: "Publications que j'ai aimé" like: "J'aime" unlike: "Je n’aime pas" _email: @@ -989,67 +986,76 @@ _plugin: manage: "Gestion des plugins" _registry: scope: "Portée" - key: "Clé " - keys: "Clé " + key: "Clé" + keys: "Clés" domain: "Domaine" createKey: "Créer une clé" -_aboutMisskey: +_aboutFirefish: about: "Misskey est un logiciel libre et ouvert, développé par syuilo depuis 2014." contributors: "Principaux contributeurs" allContributors: "Tous les contributeurs" source: "Code source" - translation: "Traduire Calckey" - donate: "Soutenir Calckey" + translation: "Traduire Firefish" + donate: "Soutenir Firefish" morePatrons: "Nous apprécions vraiment le soutien de nombreuses autres personnes non mentionnées ici. Merci à toutes et à tous ! 🥰" patrons: "Contributeurs" + pleaseDonateToFirefish: Merci de considérer de faire un don pour soutenir le développement + de Firefish. + sponsors: Sponsors Firefish + donateTitle: Firefish vous plaît ? + pleaseDonateToHost: Également, veuillez envisager de faire un don à votre serveur + d'accueil, {host}, pour contribuer à couvrir ses frais de fonctionnement. + donateHost: Faire un don à {host} + patronsList: Listé chronologiquement, pas par taille de donation. Faite un don avec + le lien ci-dessus pour avoir votre nom affiché ici ! + misskeyContributors: Contributeurs Misskey _nsfw: - respect: "Cacher les médias marqués comme contenu sensible" - ignore: "Afficher les médias sensibles" + respect: "Cacher les médias marqués comme contenu sensible (NSFW)" + ignore: "Afficher les médias sensibles (NSFW)" force: "Cacher tous les médias" _mfm: cheatSheet: "Antisèche MFM" - intro: "MFM est un langage Markdown spécifique utilisable ici et là dans Calckey. + intro: "MFM est un langage Markdown spécifique utilisable ici et là dans Firefish. Vous pouvez vérifier ici les structures utilisables avec MFM." - dummy: "La Fédiverse s'agrandit avec Calckey" + dummy: "La Fédiverse s'agrandit avec Firefish" mention: "Mentionner" mentionDescription: "Vous pouvez afficher un utilisateur spécifique en indiquant - une arobase suivie d'un nom d'utilisateur" + le symbole d'arobase (@) suivie d'un nom d'utilisateur." hashtag: "Hashtags" - hashtagDescription: "Vous pouvez afficher un mot-dièse en utilisant un croisillon - et du texte" + hashtagDescription: "Vous pouvez afficher les hashtags en utilisant un croisillon + et du texte." url: "URL" urlDescription: "L'adresse web peut être affichée." link: "Lien" linkDescription: "Une partie précise d'une phrase peut être liée à l'adresse web." bold: "Gras" - boldDescription: "Il est possible de mettre le texte en exergue en le mettant en - gras." + boldDescription: "Mise en évidence du texte en le rendant plus épais." small: "Diminuer l'emphase" smallDescription: "Le contenu peut être affiché en petit et fin." center: "Centrer" - centerDescription: "Le contenu peut être centré" + centerDescription: "Centre le contenu sur la page." inlineCode: "Code (inline)" - inlineCodeDescription: "Coloration syntaxique des lignes de code." + inlineCodeDescription: "Affiche la coloration syntaxique des lignes de code." blockCode: "Bloc de code" - blockCodeDescription: "Coloration syntaxique des lignes de code pour les blocs multi-lignes." + blockCodeDescription: "Afficher la coloration syntaxique de multiples lignes de + code dans un bloc." inlineMath: "Formule mathématique (inline)" - inlineMathDescription: "Afficher les formules mathématiques (KaTeX)." + inlineMathDescription: "Afficher les formules mathématiques (KaTeX)" blockMath: "Formule mathématique (bloc)" - blockMathDescription: "Afficher les formules mathématiques (KaTeX) multi-lignes - dans un bloc." + blockMathDescription: "Afficher les formules mathématiques (KaTeX) dans un bloc" quote: "Citer" quoteDescription: "Affiche le contenu sous forme de citation." emoji: "Émojis personnalisés" - emojiDescription: "Entourez le nom de l'émoji personnalisé de deux points pour l'afficher." + emojiDescription: "Encadrer le nom de l'émoji personnalisé de deux points pour l'afficher." search: "Rechercher" searchDescription: "Affiche une boîte de recherche avec du texte pré-saisi." flip: "Inverser" - flipDescription: "Rotation verticale ou horizontale du contenu" + flipDescription: "Rotation verticale ou horizontale du contenu." jelly: "Animation (Gelée)" - jellyDescription: "Donne une animation d'étirement." + jellyDescription: "Donne une animation d'étirement comme de la gelée." tada: "Animation (Tada)" - tadaDescription: "Donne une animation qui donne une impression de \"Tada !\"" + tadaDescription: "Donne une animation qui donne une impression de \"Tada !\"." jump: "Animation (Saut)" jumpDescription: "Donne une animation qui saute." bounce: "Animation (Rebond)" @@ -1065,12 +1071,11 @@ _mfm: x3: "Très grand" x3Description: "Afficher le contenu en très grand." x4: "Plus grand" - x4Description: "Afficher le contenu en plus grand." + x4Description: "Afficher le contenu encore plus grand que grand." blur: "Flou" - blurDescription: "Le contenu peut être flouté ; il sera visible en le survolant - avec le curseur." + blurDescription: "Floutage du contenu. Il sera visible en le survolant avec le curseur." font: "Police de caractères" - fontDescription: "Il est possible de choisir la police." + fontDescription: "Choisir la police du contenu." rainbow: "Arc-en-ciel" rainbowDescription: "Permet d'afficher le contenu en couleurs arc-en-ciel." sparkle: "Paillettes" @@ -1082,8 +1087,25 @@ _mfm: MFM. rotateDescription: Pivoter le contenu d'un angle spécifique. position: Position + advanced: MFM avancées + warn: Les MFM peuvent contenir des animations à mouvement rapide ou clignotantes + crop: Rogner + positionDescription: Déplacer le contenu selon une valeur spécifiée. + play: Animer les MFM + stop: Arrêter les MFM + alwaysPlay: Toujours lire automatiquement toutes les MFM animées + advancedDescription: Si désactivé, n'autorise que la mise en forme de base, sauf + si une MFM animée est en cours de lecture + cropDescription: Rogner le contenu. + scale: Mettre à l'échelle + scaleDescription: Mettre le contenu à l'échelle selon une valeur spécifiée. + foreground: Couleur de premier plan + foregroundDescription: Changer la couleur de premier plan d'un texte. + backgroundDescription: Changer la couleur d'arrière-plan d'un texte. + background: Couleur d'arrière-plan + plain: Simple _instanceTicker: - none: "Cacher " + none: "Cacher" remote: "Montrer pour les utilisateur·ice·s distant·e·s" always: "Toujours afficher" _serverDisconnectedBehavior: @@ -1092,16 +1114,17 @@ _serverDisconnectedBehavior: quiet: "Afficher un avertissement discret" nothing: Ne rien faire _channel: - create: "Créer un canal" - edit: "Éditer le canal" + create: "Créer une chaîne" + edit: "Éditer la chaîne" setBanner: "Sélectionner la bannière" removeBanner: "Supprimer la bannière" featured: "Tendances" - owned: "Mes canaux" + owned: "Mes chaînes" following: "Abonné·e" usersCount: "{n} Participant·e·s" - notesCount: "{n} Notes" + notesCount: "{n} publications" nameAndDescription: Nom et description + nameOnly: Nom uniquement _menuDisplay: sideFull: "Latéral" sideIcon: "Latéral (icônes)" @@ -1113,20 +1136,21 @@ _wordMute: un saut de ligne pour une condition OR." muteWordsDescription2: "Pour utiliser des expressions régulières (regex), mettez les mots-clés entre barres obliques." - softDescription: "Masquez les notes de votre fil selon les paramètres que vous définissez." - hardDescription: "Empêchez votre fil de charger les notes selon les paramètres que - vous définissez. Cette action est irréversible : si vous modifiez ces paramètres - plus tard, les notes précédemment filtrées ne seront pas récupérées." + softDescription: "Masquez de votre fil d’actualité les publications qui répondent + aux conditions définies." + hardDescription: "Empêche les publications, qui remplissent les conditions définies, + d'être ajoutées au fil d'actualité. Cette action est irréversible : si vous modifiez + ces conditions plus tard, les publications précédemment filtrées ne seront pas + récupérées." soft: "Doux" hard: "Strict" - mutedNotes: "Notes filtrées" + mutedNotes: "Publications masquées" _instanceMute: - instanceMuteDescription2: "Séparer avec de nouvelles lignes" - title: "Masque les notes venant des instances listées." - heading: "Instances à mettre en sourdine" - instanceMuteDescription: Ceci va masquer toute publication ou partage des instances - listées, incluant celles des personnes répondant à des personnes des instances - masquées. + instanceMuteDescription2: "Séparer avec des sauts de lignes" + title: "Masque les publications provenant des serveurs listés." + heading: "Serveurs à mettre en sourdine/masquer" + instanceMuteDescription: Ceci va masquer toute publication ou boost de serveurs + listés, incluant celles des personnes répondant à des personnes des serveurs masqués. _theme: explore: "Explorer les thèmes" install: "Installer un thème" @@ -1146,17 +1170,17 @@ _theme: color: "Couleur" refProp: "Appeler une propriété" refConst: "Appeler une constante" - key: "Clé " + key: "Clé" func: "Fonction" funcKind: "Type de fonction" argument: "Argument" basedProp: "Nom de la propriété référencée" alpha: "Transparence" - darken: "Sombre" + darken: "Assombrir" lighten: "Clair" inputConstantName: "Insérez un nom de constante" importInfo: "Vous pouvez importer un thème vers l’éditeur de thèmes en saisissant - son code ici." + son code ici" deleteConstantConfirm: "Êtes-vous sûr·e de vouloir supprimer la constante {const} ?" keys: @@ -1177,7 +1201,7 @@ _theme: hashtag: "Hashtags" mention: "Mentionner" mentionMe: "Mentions (Moi)" - renote: "Renoter" + renote: "Booster" modalBg: "Modal d'arrière-plan" divider: "Séparateur" scrollbarHandle: "Poignée de la barre de navigation" @@ -1204,20 +1228,20 @@ _theme: accentLighten: "Plus clair" fgHighlighted: "Texte mis en évidence" _sfx: - note: "Nouvelle note" - noteMy: "Ma note" + note: "Nouvelle publication" + noteMy: "Ma publication" notification: "Notifications" chat: "Discuter" chatBg: "Discussion (arrière-plan)" antenna: "Réception de l’antenne" - channel: "Notifications de canal" + channel: "Notifications de chaîne" _ago: future: "Futur" justNow: "à l’instant" secondsAgo: "Il y a {n}s" minutesAgo: "Il y a {n}min" - hoursAgo: "Il y a {n} heures" - daysAgo: "Il y a {n} jours" + hoursAgo: "Il y a {n}h" + daysAgo: "Il y a {n}j" weeksAgo: "Il y a {n} semaines" monthsAgo: "Il y a {n} mois" yearsAgo: "Il y a {n} ans" @@ -1227,37 +1251,36 @@ _time: hour: "h" day: "j" _tutorial: - title: "Comment utiliser Calckey" - step1_1: "Bienvenue!" - step1_2: "On va vous installer. Vous serez opérationnel en un rien de temps" - step2_1: "Tout d'abord, remplissez votre profil" + title: "Comment utiliser Firefish" + step1_1: "Bienvenue !" + step1_2: "On va vous installer. Vous serez opérationnel en un rien de temps !" + step2_1: "Tout d'abord, remplissez votre profil." step2_2: "En fournissant quelques informations sur qui vous êtes, il sera plus facile - pour les autres de savoir s'ils veulent voir vos notes ou vous suivre." + pour les autres de savoir s'ils veulent voir vos publcations ou vous suivre." step3_1: "Maintenant il est temps de suivre des gens !" - step3_2: "Votre page d'accueil et vos timelines sociales sont basées sur les personnes - que vous suivez, alors essayez de suivre quelques comptes pour commencer.\nCliquez + step3_2: "Vos fil d’actualité Principal et Social sont basés sur les personnes que + vous suivez, alors essayez de suivre quelques comptes pour commencer.\nCliquez sur le cercle plus en haut à droite d'un profil pour le suivre." step4_1: "On y va." - step4_2: "Pour votre premier post, certaines personnes aiment faire un post {introduction} - ou un simple post 'Hello world'." - step5_1: "Lignes de temps, lignes de temps partout !" - step5_2: "Votre instance a {timelines} différentes chronologies activées !" - step5_3: "La timeline Home {icon} est l'endroit où vous pouvez voir les publications - de vos followers." - step5_4: "La timeline locale {icon} est l'endroit où vous pouvez voir les messages - de tout le monde sur cette instance." - step5_5: "La chronologie {icon} sociale est l'endroit où vous pouvez voir uniquement - les publications des comptes que vous suivez." - step5_6: "La chronologie {icon} recommandée est l'endroit où vous pouvez voir les - publications des instances recommandées par les administrateurs." - step5_7: "La timeline globale {icon} est l'endroit où vous pouvez voir les messages - de toutes les autres instances connectées." + step4_2: "Pour votre première publication, certaines personnes aiment faire une + {introduction} ou un simple 'Bonjour tout le monde !'" + step5_1: "Des fils, des fils d’actualité partout !" + step5_2: "Votre serveur a {timelines} fils différents activés." + step5_3: "Le fil {icon} Principal est l'endroit où vous pouvez voir les publications + de vos abonnements." + step5_4: "La fil {icon} Local est l'endroit où vous pouvez voir les publications + de tout le monde sur ce serveur." + step5_5: "Le fil {icon} Social est une combinaison des fils Principal et Local." + step5_6: "Le fil {icon} Recommandé est l'endroit où vous pouvez voir les publications + des serveurs recommandés par vos administrateurs." + step5_7: "Le fil {icon} Global est l'endroit où vous pouvez voir les publications + de tout les autres serveurs connectés." step6_1: "Alors quel est cet endroit ?" - step6_2: "Eh bien, vous ne venez pas de rejoindre Calckey. Vous avez rejoint un + step6_2: "Eh bien, vous ne venez pas de rejoindre Firefish. Vous avez rejoint un portail vers le Fediverse, un réseau interconnecté de milliers de serveurs, appelés \"instances\"." step6_3: "Chaque serveur fonctionne différemment, et tous les serveurs n'utilisent - pas Calckey. Cependant, celui-ci le fait ! C'est un peu délicat, mais vous aurez + pas Firefish. Cependant, celui-ci le fait ! C'est un peu délicat, mais vous aurez le coup de main en un rien de temps." step6_4: "Maintenant, allez-y, explorez et amusez-vous !" _2fa: @@ -1276,6 +1299,28 @@ _2fa: davantage le processus de connexion grâce à une clé de sécurité matérielle qui prend en charge FIDO2, ou bien en configurant l'authentification par empreinte digitale ou par code PIN sur votre appareil." + token: Jeton 2FA + step3Title: Entrez un code d’authentification + chromePasskeyNotSupported: Les clés de passe Chrome ne sont actuellement pas prises + en charge. + step2Click: En cliquant sur ce QR code, vous pourrez enregistrer l'authentification + à deux facteurs (2FA) sur votre clé de sécurité ou votre application d'authentification + sur téléphone. + whyTOTPOnlyRenew: L'application d'authentification ne peut pas être supprimée tant + qu'une clé de sécurité est enregistrée. + securityKeyName: Entrez un nom de clé + removeKeyConfirm: Voulez-vous vraiment supprimer la clé {name} ? + renewTOTP: Reconfigurer l'application d'authentification + renewTOTPConfirm: Cela entraînera l'arrêt de fonctionnement des codes de vérification + provenant de votre application précédente + renewTOTPOk: Reconfigurer + securityKeyNotSupported: Votre navigateur ne prend pas en charge les clés de sécurité. + removeKey: Supprimer la clé de sécurité + renewTOTPCancel: Annuler + registerTOTPBeforeKey: Veuillez configurer une application d'authentification pour + enregistrer une clé de sécurité ou un mot de passe. + tapSecurityKey: Veuillez suivre les instructions de votre navigateur pour enregistrer + la clé de sécurité ou le mot de passe _permissions: "read:account": "Afficher les informations du compte" "write:account": "Mettre à jour les informations de votre compte" @@ -1291,7 +1336,7 @@ _permissions: "write:messaging": "Gérer les discussions" "read:mutes": "Voir les comptes masqués" "write:mutes": "Gérer les comptes masqués" - "write:notes": "Créer / supprimer des notes" + "write:notes": "Créer / supprimer des publications" "read:notifications": "Afficher les notifications" "write:notifications": "Gérer vos notifications" "read:reactions": "Lire les réactions" @@ -1303,27 +1348,30 @@ _permissions: "write:page-likes": "Gérer les mentions « J'aime » sur les pages" "read:user-groups": "Voir les groupes d'utilisateur·rice·s" "write:user-groups": "Éditer les groupes des utilisateur·rice·s" - "read:channels": "Lire les canaux" - "write:channels": "Gérer les canaux" + "read:channels": "Lire vos chaînes" + "write:channels": "Gérer vos chaînes" "read:gallery": "Voir la galerie" "write:gallery": "Éditer la galerie" - "read:gallery-likes": "Voir les mentions « J'aime » dans la galerie" - "write:gallery-likes": "Gérer les mentions « J'aime » dans la galerie" + "read:gallery-likes": "Voir vos favoris de la galerie" + "write:gallery-likes": "Gérer vos favoris de la galerie" _auth: shareAccess: "Autoriser \"{name}\" à accéder à votre compte ?" shareAccessAsk: "Voulez-vous vraiment autoriser cette application à accéder à votre - compte?" + compte ?" permissionAsk: "Cette application nécessite les autorisations suivantes :" pleaseGoBack: "Veuillez retourner à l’application" callback: "Retour vers l’application" denied: "Accès refusé" - copyAsk: Veuillez coller le code d’autorisation à l'application + copyAsk: "Veuillez coller le code d’autorisation suivant dans l'application :" + allPermissions: Accès complet au compte _antennaSources: - all: "Toutes les notes" - homeTimeline: "Notes venant des utilisateur·rice·s auxquel·les je suis abonné" - users: "Notes venant de la part d’utilisateur·rice·s précis" - userList: "Notes venant d’une liste spécifique" - userGroup: "Notes venant d’utilisateur·rice·s du groupe spécifié" + all: "Toutes les publications" + homeTimeline: "Publications provenant des utilisateur·rice·s auxquel·les je suis + abonné" + users: "Publications venant de la part d’utilisateur·rice·s précis" + userList: "Publications venant d’une liste spécifique" + userGroup: "Publications venant d’utilisateur·rice·s du groupe spécifié" + instances: Publications de tous les utilisateurs d'un serveur _weekday: sunday: "Dimanche" monday: "Lundi" @@ -1333,9 +1381,9 @@ _weekday: friday: "Vendredi" saturday: "Samedi" _widgets: - memo: "Note collante" + memo: "Post-it" notifications: "Notifications" - timeline: "Fil" + timeline: "Fil d’actualité" calendar: "Calendrier" trends: "Tendances" clock: "Horloge" @@ -1344,7 +1392,7 @@ _widgets: photos: "Photos" digitalClock: "Horloge numérique" federation: "Fédération" - postForm: "Formulaire de publication" + postForm: "Champ de publication" slideshow: "Diaporama" button: "Bouton" onlineUsers: "Utilisateurs en ligne" @@ -1356,9 +1404,15 @@ _widgets: _userList: chooseList: Sélectionner une liste unixClock: Horloge UNIX + meiliIndexCount: Publications indexées + serverInfo: Info serveur + meiliStatus: État du serveur + meiliSize: Taille de l’index + instanceCloud: Nuage de serveurs + rssTicker: Bandeau RSS _cw: hide: "Masquer" - show: "Afficher plus …" + show: "Afficher contenu" chars: "{count} caractères" files: "{count} fichiers" _poll: @@ -1368,8 +1422,8 @@ _poll: canMultipleVote: "Autoriser le multi-choix" expiration: "Fin du sondage" infinite: "Illimité" - at: "Choisir une date" - after: "Choisir la durée" + at: "Expire le..." + after: "Expire après..." deadlineDate: "Date de fin" deadlineTime: "Heure de fin" duration: "Durée" @@ -1385,26 +1439,26 @@ _poll: remainingSeconds: "{s} secondes restantes" _visibility: public: "Public" - publicDescription: "Publier à tou·te·s les utilisateur·rice·s" - home: "Principal" + publicDescription: "Publier sur tous les fils publics" + home: "Non-listé" homeDescription: "Publier sur le fil principal uniquement" followers: "Abonné·e·s" - followersDescription: "Publier à vos abonné·e·s uniquement" + followersDescription: "Publier à vos abonné·e·s et mentions uniquement" specified: "Direct" specifiedDescription: "Publier uniquement aux utilisateur·rice·s mentionné·e·s" localOnly: "Local seulement" - localOnlyDescription: "Caché pour les utilisateurs distant" + localOnlyDescription: "Caché pour les utilisateur·rice·s distant" _postForm: - replyPlaceholder: "Répondre à cette note ..." - quotePlaceholder: "Citez cette note ..." - channelPlaceholder: "Publier vers le canal" + replyPlaceholder: "Répondre à cette publication…" + quotePlaceholder: "Citez cette publication…" + channelPlaceholder: "Publier sur une chaîne…" _placeholders: a: "Quoi de neuf ?" b: "Il s'est passé quelque chose ?" c: "Qu’avez-vous en tête ?" d: "Désirez-vous publier quelques mots ?" - e: "Écrivez ici" - f: "En attente de vos écrits ..." + e: "Commencez à écrire…" + f: "En attente de vos écrits…" _profile: name: "Nom" username: "Nom d’utilisateur·rice" @@ -1413,15 +1467,16 @@ _profile: metadata: "Informations supplémentaires" metadataEdit: "Éditer les informations supplémentaires" metadataDescription: "Vous pouvez afficher jusqu'à quatre informations supplémentaires - dans votre profil." + dans votre profil. Vous pouvez ajouter une balise {a} ou une balise {l} avec {rel} + pour vérifier le lien sur votre profil !" metadataLabel: "Étiquette" metadataContent: "Contenu" changeAvatar: "Changer l'image de profil" changeBanner: "Changer de bannière" locationDescription: Si vous entrez votre ville en premier, votre heure locale sera - affiché aux autres utilisateurs. + affichée aux autres utilisateur·rice·s. _exportOrImport: - allNotes: "Toutes les notes" + allNotes: "Toutes les publications" followingList: "Abonnements" muteList: "Comptes masqués" blockingList: "Comptes bloqués" @@ -1434,10 +1489,10 @@ _charts: usersIncDec: "Variation du nombre d'utilisateur·rice·s" usersTotal: "Nombre des utilisateur·rice·s au total" activeUsers: "Nombre d'utilisateurices actif·ve·s" - notesIncDec: "Variation du nombre des notes" - localNotesIncDec: "Variation du nombre de notes locales" - remoteNotesIncDec: "Variation du nombre de notes distantes" - notesTotal: "Nombre total des notes" + notesIncDec: "Variation du nombre de publications" + localNotesIncDec: "Variation du nombre de publications locales" + remoteNotesIncDec: "Variation du nombre de publications distantes" + notesTotal: "Nombre total des publications" filesIncDec: "Variation du nombre de fichiers" filesTotal: "Nombre total de fichiers" storageUsageIncDec: "Variation de l'utilisation du stockage" @@ -1446,9 +1501,9 @@ _instanceCharts: requests: "Requêtes" users: "Variation du nombre d'utilisateur·rice·s" usersTotal: "Total cumulé du nombre d'utilisateur·rice·s" - notes: "Variation du nombre de notes" - notesTotal: "Nombre total cumulé des notes" - ff: "Variation des abonné·e·s / abonnements" + notes: "Variation du nombre de publications" + notesTotal: "Nombre total cumulé des publications" + ff: "Variation des abonnements / abonné·e·s " ffTotal: "Total cumulé du nombre d'abonné·e·s / abonnements" cacheSize: "Variation de la taille du cache" cacheSizeTotal: "Total cumulé de la taille du cache" @@ -1459,7 +1514,7 @@ _timelines: local: "Local" social: "Social" global: "Global" - recommended: Recommandée + recommended: Recommandé _pages: newPage: "Créer une page" editPage: "Modifier une page" @@ -1509,11 +1564,11 @@ _pages: button: "Bouton" if: "Si" _if: - variable: "Variables" - post: "Formulaire de publication" + variable: "Variable" + post: "Champ de publication" _post: text: "Contenu" - attachCanvasImage: "Publier avec Toile comme image" + attachCanvasImage: "Publier une image sur la Toile" canvasId: "Toile ID" textInput: "Entrée textuelle" _textInput: @@ -1535,11 +1590,10 @@ _pages: id: "Toile ID" width: "Largeur" height: "Hauteur" - note: "Note intégrée" + note: "Publication intégrée" _note: - id: "Identifiant de la note" - idDescription: "Pour configurer la note, vous pouvez aussi coller ici l'URL - correspondante." + id: "Identifiant de la publication" + idDescription: "Vous pouvez aussi coller l'URL de la publication ici." detailed: "Afficher les détails" switch: "Interrupteur" _switch: @@ -1577,7 +1631,7 @@ _pages: default: "Valeur par défaut" script: categories: - flow: "Contrôle" + flow: "Contrôle de flux" logical: "Opération logique" operation: "Calculer" comparison: "Comparer" @@ -1730,7 +1784,7 @@ _pages: splitStrByLine: "Séparer le texte par des sauts de lignes" _splitStrByLine: arg1: "Texte" - ref: "Variables" + ref: "Variable" aiScriptVar: "Variable d'AiScript" fn: "Fonction" _fn: @@ -1758,11 +1812,11 @@ _relayStatus: accepted: "Accepté" rejected: "Refusée" _notification: - fileUploaded: "Le fichier a été téléversé !" + fileUploaded: "Le fichier a été téléversé" youGotMention: "{name} vous a mentionné" youGotReply: "Réponse de {name}" youGotQuote: "Cité·e par {name}" - youRenoted: "{name} vous a Renoté" + youRenoted: "{name} vous a boosté" youGotPoll: "{name} a participé à votre sondage" youGotMessagingMessageFromUser: "{name} vous envoyé un message" youGotMessagingMessageFromGroup: "Un message a été envoyé au groupe {name}" @@ -1777,7 +1831,7 @@ _notification: follow: "Nouvel·le abonné·e" mention: "Mentions" reply: "Réponses" - renote: "Renotes" + renote: "Boosts" quote: "Citations" reaction: "Réactions" pollVote: "Votes dans des sondages" @@ -1789,7 +1843,10 @@ _notification: _actions: followBack: "Suivre" reply: "Répondre" - renote: "Renoter" + renote: "Boosts" + reacted: a réagit à votre publication + renoted: a boosté votre publication + voted: a voté pour votre sondage _deck: alwaysShowMainColumn: "Toujours afficher la colonne principale" columnAlign: "Aligner les colonnes" @@ -1800,29 +1857,37 @@ _deck: swapDown: "Déplacer vers le bas" stackLeft: "Empiler à gauche" popRight: "Extraire à droite" - profile: "Profil" + profile: "Espace de travail" _columns: main: "Principale" widgets: "Widgets" notifications: "Notifications" - tl: "Fil" - antenna: "Antennes" + tl: "Fil d’actualité" + antenna: "Antenne" list: "Listes" mentions: "Mentions" direct: "Direct" + channel: Chaîne introduction: Créer l'interface parfaite pour vous en arrangeant les colonnes librement ! introduction2: Cliquer sur le + sur la droite de l'écran pour ajouter de nouvelles colonnes à tout moment. + renameProfile: Renommer l’espace de travail + configureColumn: Paramètres de colonne + deleteProfile: Supprimer l’espace de travail + widgetsIntroduction: Sélectionner "Modifier les widgets" dans le menu de la colonne + et ajouter un widget. + nameAlreadyExists: Ce nom d’espace de travail existe déjà. + newProfile: Nouvel espace de travail keepOriginalUploadingDescription: Enregistrer l'image originale telle quelle. Si désactivé, une version à afficher sur le web sera générée au chargement. manageGroups: Gérer les groupes moderation: Modération -disableDrawer: Ne pas utiliser des menus à tiroir +disableDrawer: Ne pas utiliser de menus déroulants preferencesBackups: Sauvegarde des préférences -confirmToUnclipAlreadyClippedNote: Ce message fait déjà partie du clip "{name}". Voudriez-vous - plutôt le supprimer du clip ? -instanceSecurity: Sécurité de l'instance +confirmToUnclipAlreadyClippedNote: Cette publication fait déjà partie du clip "{name}". + Voudriez-vous plutôt le supprimer du clip ? +instanceSecurity: Sécurité du serveur recommended: Recommandé recentNDays: Les derniers {n} jours recentNHours: Les dernières {n} heures @@ -1834,18 +1899,18 @@ logoutConfirm: Confirmer la déconnexion ? lastActiveDate: Dernière utilisation le cannotUploadBecauseNoFreeSpace: Mise en ligne échouée faute de place sur le Drive. remoteOnly: Distant seulement -showUpdates: Afficher une fenêtre en sur-impression quand Calckey se met à jour -recommendedInstances: Instances recommandées +showUpdates: Afficher une fenêtre en sur-impression quand Firefish se met à jour +recommendedInstances: Serveurs recommandées caption: Description automatique migration: Migration -showAdminUpdates: Indiquer qu'une nouvelle version de Calckey est disponible (admin +showAdminUpdates: Indiquer qu'une nouvelle version de Firefish est disponible (admin seulement) replayTutorial: Relancer le tutoriel moveTo: Migrer le compte courant vers un nouveau compte moveFromDescription: Ceci va configurer un alias pour votre ancien compte afin que vous puissiez migrer de cet ancien compte à l'actuel. Faites ceci AVANT de migrer de votre ancien compte. Merci d'entrer la mention de l'ancien compte sous ce format - @personne@instance.com + @personne@server.com _sensitiveMediaDetection: sensitivityDescription: Réduire la sensibilité conduira à moins de mauvaises détections (faux positifs) alors que l'augmenter mènera à moins de détection manquées (faux @@ -1867,9 +1932,9 @@ cannotUploadBecauseExceedsFileSizeLimit: Le fichier n'a pas pu être chargé car dépasse la taille maximum autorisée. moveAccountDescription: Ce processus est irréversible. Soyez sûr⋅e que vous avez préparé un alias pour ce compte sur votre nouveau compte avant de migrer. Merci d'entrer - la mention du compte formaté comme ceci @personne@instance.com + la mention du compte formaté comme ceci @personne@server.com moveAccount: Déplacer le compte ! -seperateRenoteQuote: Séparer les renotes et les boutons de citation +seperateRenoteQuote: Séparer les boutons de boosts et de citation failedToFetchAccountInformation: Impossible de récupérer les informations de compte noEmailServerWarning: Serveur mail non configuré. deleteAccount: Supprimer le compte @@ -1878,8 +1943,8 @@ numberOfPageCache: Nombre de pages mise en cache fast: Rapide failedToUpload: Mise en ligne échouée enableAutoSensitiveDescription: Permet la détection automatique des médias sensibles - (NSFW) via une intelligence artificielle, quand c'est possible. Même si cette option - est désactivée, elle peut être enclenchée au niveau de l'instance. + (NSFW) via une intelligence artificielle, lorsque c'est possible. Même si cette + option est désactivée, elle peut être activée au niveau du serveur. activeEmailValidationDescription: Active une vérification plus poussée des adresses e-mail, ce qui inclut de vérifier la présence d’e-mail jetables et s'il est possible de communiquer avec ces adresses. Si désactivé, seul le format de l’e-mail est vérifié. @@ -1887,7 +1952,7 @@ adminCustomCssWarn: Ce paramètre ne devrait être utilisé que si vous savez ce fait. Entrer des valeurs impropres pourraient empêcher les clients de TOUT LE MONDE de fonctionner. Assurez-vous que votre CSS fonctionne correctement en l'essayant dans vos paramètres utilisateur. -swipeOnDesktop: Permettre le style de glissement de fenêtre de mobile sur PC +swipeOnDesktop: Permettre le style de balayage de fenêtre de mobile sur PC moveFromLabel: 'Compte depuis lequel vous migrez :' migrationConfirm: "Êtes-vous absolument certain⋅e que vous voulez migrer votre compte vers {account} ? Une fois fait, vous ne pourrez pas revenir en arrière, et vous @@ -1915,9 +1980,9 @@ _preferencesBackups: inputName: Merci d'entrer un nom pour cette sauvegarde cannotSave: La sauvegarde a échoué privateMode: Mode privé -privateModeInfo: Si activé, seules les instances autorisées peuvent fédérer avec votre - instance. Toutes les publications seront masquées de la visibilité publique. -allowedInstances: Instances autorisées +privateModeInfo: Si activé, seuls les serveurs autorisés peuvent fédérer avec votre + serveur. Toutes les publications seront masquées de la visibilité publique. +allowedInstances: Serveurs Autorisés driveCapOverrideLabel: Changer la capacité du drive pour cet utilisateur driveCapOverrideCaption: Réinitialiser la capacité à la valeur par défaut en entrant 0 ou moins. @@ -1928,39 +1993,37 @@ type: Type speed: Vitesse slow: Lent move: Déplacer -showAds: Afficher les annonces +showAds: Afficher les bannières communautaire (publicités) enterSendsMessage: Appuyer sur Entrée pendant la rédaction pour envoyer le message (sinon Ctrl+Entrée) -allowedInstancesDescription: Hôtes des instances autorisées pour la fédération, chacun +allowedInstancesDescription: Noms des serveurs autorisés pour la fédération, chacun séparé par une nouvelle ligne (s'applique uniquement en mode privé). enableAutoSensitive: Marquage automatique du contenu sensible (NSFW) regexpErrorDescription: "Il y a eu une erreur dans l'expression régulière à la ligne {line} de votre {tab} des mots masqués :" forwardReportIsAnonymous: À la place de votre compte, un compte système anonyme sera - affiché comme rapporteur à l'instance distante. + affiché comme rapporteur au serveur distant. noThankYou: Non merci -addInstance: Ajouter une instance -renoteMute: Mettre en silence les renotes +addInstance: Ajouter un serveur +renoteMute: Masquer les boosts flagSpeakAsCat: Parler comme un chat -flagSpeakAsCatDescription: Vos messages seront nyanifiés en mode chat +flagSpeakAsCatDescription: Vos messages seront "nyanifiés" en mode chat hiddenTags: Hashtags cachés hiddenTagsDescription: "Lister les hashtags (sans le #) que vous souhaitez cacher - de tendances et explorer. Les hashtags cachés sont toujours découvrables par d'autres - moyens. Les instances bloqués ne sont pas ne sont pas affectés, même si ils sont - présent dans cette liste." -antennaInstancesDescription: Lister un hôte d'instance par ligne + de Tendances et Découvrir. Les hashtags cachés sont toujours découvrables par d'autres + moyens." +antennaInstancesDescription: Lister un nom de serveur par ligne userSaysSomethingReason: '{name} a dit {reason}' breakFollowConfirm: Êtes vous sur de vouloir retirer l'abonné ? -recommendedInstancesDescription: Instances recommandées séparées par une nouvelle - ligne pour apparaître dans la timeline recommandée. Ne PAS ajouter `https://`, SEULEMENT - le domaine. +recommendedInstancesDescription: Serveurs recommandés séparés par une nouvelle ligne + pour apparaître dans le fil recommandé. sendPushNotificationReadMessage: Supprimer les notifications push une fois que les notifications ou messages concernés ont été lus sendPushNotificationReadMessageCaption: Une notification contenant le texte "{emptyPushNotificationMessage}" sera affichée pendant un court instant. Cela peut augmenter la consommation de batterie de votre appareil. splash: Écran d’Accueil -pushNotificationNotSupported: Votre navigateur ou instance ne supporte pas les notifications +pushNotificationNotSupported: Votre navigateur ou serveur ne supporte pas les notifications push customMOTDDescription: Messages personnalisé pour le message du jour (sur l'écran d’accueil), séparés par des retours à la ligne, affichés au hasard à chaque (re)chargement @@ -1971,17 +2034,19 @@ customSplashIconsDescription: URLs pour les icônes personnalisées de l'écran (re)chargement de page. Assurez-vous que les images sont sur des URL statiques, de préférence toutes de taille 192x192. updateAvailable: Une mise à jour est peut-être disponible ! -accountMoved: "L'utilisateur a migré vers un nouveau compte :" +accountMoved: "L'utilisateur·rice a migré vers un nouveau compte :" enableEmojiReactions: Activer les réactions par émojis showEmojisInReactionNotifications: Montrer les émojis dans les notifications de réactions -renoteUnmute: Notifier les renotes -selectInstance: Choisir une instance -noInstances: Il n'y a aucune instance +renoteUnmute: Ne plus masquer les boosts +selectInstance: Choisir un serveur +noInstances: Il n'y a aucun serveur showLocalPosts: 'Montrer les notes locales dans :' homeTimeline: Timeline d'Accueil socialTimeline: Timeline Sociale requireAdminForView: Vous avez besoin d'un compte d'administration pour voir cela. -isSystemAccount: Un compte créé et géré automatiquement par le système. +isSystemAccount: Ce compte est créé et géré automatiquement par le système. Veuillez + ne pas modérer, éditer, supprimer ou altérer d'une autre manière ce compte, ou cela + risque de perturber votre serveur. typeToConfirm: Entrer {x} pour confirmer statusbar: Barre d'état sensitiveMediaDetection: Détection des médias sensibles (NSFW) @@ -1997,44 +2062,151 @@ pushNotificationAlreadySubscribed: Notifications push déjà activées logoImageUrl: URL de l'image du logo moveToLabel: 'Compte vers lequel vous migrez :' moveFrom: Migrer vers ce compte depuis un ancien compte -defaultReaction: Émoji de réaction par défaut pour les notes entrantes et sortantes +defaultReaction: Émoji de réaction par défaut pour les publications entrantes et sortantes license: Licence -indexPosts: Indexer les Notes +indexPosts: Indexer les publications indexNotice: Indexation en cours. Cela prendra certainement du temps, veuillez ne pas redémarrer votre serveur pour au moins une heure. customKaTeXMacro: Macros KaTeX personnalisées enableCustomKaTeXMacro: Activer les macros KaTeX personnalisées -noteId: ID de note +noteId: ID des publications customKaTeXMacroDescription: "Définissez des macros pour écrire des expressions mathématiques - simplement ! La notation se conforme aux définitions de commandes LaTeX et s'écrit - \\newcommand{\\name}{content} ou \\newcommand{\\name}[number of arguments]{content}. + simplement ! La notation se conforme aux définitions de commandes LaTeX et s'écrit + \\newcommand{\\·name}{content} ou \\newcommand{\\name}[number of arguments]{content}. Par exemple, \\newcommand{\\add}[2]{#1 + #2} étendra \\add{3}{foo} en 3 + foo. Les accolades entourant le nom de la macro peuvent être changés pour des parenthèses ou des crochets. Cela affectera les types de parenthèses utilisées pour les arguments. Une (et une seule) macro peut être définie par ligne, et vous ne pouvez pas couper la ligne au milieu d'une définition. Les lignes invalides sont simplement ignorées. - Seulement de simples fonctions de substitution de chaines sont supportées; la syntaxe + Seulement de simples fonctions de substitution de chaines sont supportées ; la syntaxe avancée, telle que la ramification conditionnelle, ne peut pas être utilisée ici." -enableRecommendedTimeline: Activer la chronologie recommandée -silenceThisInstance: Ne plus montrer cet instance -silencedInstances: Instances silencieuses -silenced: Silencieux +enableRecommendedTimeline: Activer le fil recommandé +silenceThisInstance: Masquer ce serveur +silencedInstances: Serveurs masqués +silenced: Masqué deleted: Effacé -editNote: Modifier note +editNote: Modifier la publication edited: 'Modifié à {date} {time}' flagShowTimelineRepliesDescription: Si activé, affiche dans le fil les réponses des - personnes aux publications des autres. + utilisatieur·rice·s aux publications des autres. _experiments: alpha: Alpha beta: Beta - enablePostImports: Autoriser l'importation de messages + enablePostImports: Autoriser l'importation de publications title: Expérimentations + postImportsCaption: Permet aux utilisateurs d'importer leurs publications à partir + de leurs anciens comptes Firefish, Misskey, Mastodon, Akkoma et Pleroma. Cela + peut entraîner des ralentissements lors du chargement si votre file d'attente + est congestionnée. findOtherInstance: Trouver un autre serveur -userSaysSomethingReasonQuote: '{name} a cité une note contenant {reason}' +userSaysSomethingReasonQuote: '{name} a cité une publication contenant {reason}' signupsDisabled: Les inscriptions sur ce serveur sont actuellement désactivés, mais vous pouvez toujours vous inscrire sur un autre serveur ! Si vous avez un code d'invitation pour ce serveur, entrez-le ci-dessous s'il vous plait. apps: Applications -userSaysSomethingReasonReply: '{noms} a répondu à une note contenant {raison}' +userSaysSomethingReasonReply: '{noms} a répondu à une publication contenant {raison}' defaultValueIs: 'défaut : {valeur}' -searchPlaceholder: Recherchez sur Calckey +searchPlaceholder: Recherchez sur Firefish +removeReaction: Retirer votre réaction +selectChannel: Sélectionner une chaîne +expandOnNoteClick: Ouvrir la publications en cliquant +preventAiLearning: Empêcher le récupération de données par des IA +listsDesc: Les listes vous laissent créer des fils personnalisés avec des utilisateur·rice·s + spécifié·e·s. Elles sont accessibles depuis la page des fils. +indexFromDescription: Laisser vide pour indexer toutes les publications +_feeds: + jsonFeed: flux JSON + atom: Atom + copyFeed: Copier le flux + rss: RSS +alt: ALT +swipeOnMobile: Permettre le balayage entre les pages +expandOnNoteClickDesc: Si désactivé, vous pourrez toujours ouvrir les publications + dans le menu du clic droit et en cliquant sur l’horodatage. +indexFrom: Indexer à partir de l’ID des publications +older: ancien +newer: récent +accessibility: Accessibilité +silencedInstancesDescription: Listez les noms de domaine de serveurs que vous voulez + masquer. Les comptes des serveurs listés seront traités comme "Masqués", ne pourront + faire que des demandes d’abonnement, et ne pourront pas mentionner les comptes locaux + si non-suivis. Cela n’affectera en rien les serveurs bloqués. +antennasDesc: "Les Antennes affichent de nouvelles publications selon les critères + que vous indiqués.\nElles peuvent être consultées depuis la page des fils." +image: Image +video: Vidéo +audio: Audio +jumpToPrevious: Passer au précédent +cw: Avertissement de contenu +xl: XL +reflectMayTakeTime: Il pourra s’écouler un certain temps avant que les changements + ne soient reflétés. +userSaysSomethingReasonRenote: '{name} a boosté une publication contenant {reason}' +sendModMail: Envoyer un avis à la modération +clipsDesc: Les clips sont comme des favoris catégorisés pouvant être partagés. Vous + pouvez créer des clips à partir du menu de chaque publication. +unclip: Dé-clipper +secureMode: Mode sécurisé (Authorized Fetch) +secureModeInfo: Quand sollicité depuis d'autres serveurs, ne pas répondre sans preuve. +isModerator: Modérateur +enableServerMachineStats: Activer les statistiques matérielles du serveur +enableIdenticonGeneration: Activer la génération d’Identicon +reactionPickerSkinTone: Couleur de peau des emojis préférée +verifiedLink: Lien vérifié +isBot: Ce compte est un bot +isLocked: Ce compte nécessite une approbation pour être suivi +origin: Origine +showPopup: Notifier les utilisateurs avec un popup +showWithSparkles: Afficher avec des paillettes +youHaveUnreadAnnouncements: Vous avez des annonces non-lues +donationLink: Lien vers la page de donation +neverShow: Ne plus afficher +remindMeLater: Peut-être plus tard +removeQuote: Retirer la citation +removeRecipient: Retirer le destinataire +removeMember: Retirer un membre +preventAiLearningDescription: Demandez aux modèles d'IA de tiers de ne pas étudier + le contenu que vous téléchargez, tel que les publications et les images. +noGraze: Veuillez désactiver l'extension de navigateur "Graze for Mastodon", car elle + interfère avec Firefish. +silencedWarning: Cette page s'affiche car ces utilisateurs proviennent de serveurs + que votre administrateur a réduits au silence/masqué, il se peut donc qu'ils soient + de potentiels spams. +isAdmin: Administrateur +isPatron: Mécène Firefish +_filters: + fromUser: De l’utilisateur + withFile: Avec fichier + notesBefore: Publications précédentes + notesAfter: Publications suivantes + followersOnly: Abonnés uniquement + followingOnly: Abonnements uniquement + fromDomain: Du domaine +_dialog: + charactersBelow: 'Pas assez de caractères ! Actuel : {current}/Minimum : {min}' + charactersExceeded: 'Nombre maximal de caractères dépassé ! Actuel : {current}/Limite + : {max}' +channelFederationWarn: Les chaînes ne se fédèrent pas encore vers d'autres serveurs +_skinTones: + yellow: Jaune + dark: Peau Foncée + light: Claire + mediumLight: Moyennement Claire + medium: Légèrement Mate + mediumDark: Peau Mate +objectStorageS3ForcePathStyle: Utiliser des URL d'endpoints basées sur le chemin +objectStorageS3ForcePathStyleDesc: Activez cette option pour construire les URL d'endpoints + au format 's3.amazonaws.com//' au lieu de '.s3.amazonaws.com'. +delete2fa: Désativer A2F +deletePasskeys: Supprimer les clés d'accès +delete2faConfirm: Cela supprimera de manière irréversible la double authentification + sur ce compte. Souhaitez-vous continuer ? +inputNotMatch: L'entrée ne correspond pas +deletePasskeysConfirm: Cela supprimera de manière irréversible toutes les clés d'accès + et les clés de sécurité sur ce compte. Souhaitez-vous continuer ? +addRe: Ajouter "re:" au début d’un avertissement de contenu (CW) en réponse à une + publication avec un avertissement de contenu +confirm: Confirmer +importZip: Importer ZIP +exportZip: Exporter ZIP +emojiPackCreator: Créateur de pack d’émoji diff --git a/locales/gl.yml b/locales/gl.yml new file mode 100644 index 0000000000..3b8d60181a --- /dev/null +++ b/locales/gl.yml @@ -0,0 +1,357 @@ +_lang_: Inglés +introFirefish: Benvida! Firefish é unha plataforma de medios sociais de código aberto, + descentralizada e gratuíta para sempre!🚀 +monthAndDay: '{day}/{month}' +notifications: Notificacións +password: Contrasinal +forgotPassword: Esquecín o contrasinal +gotIt: Vale! +cancel: Cancelar +noThankYou: Non, grazas +headlineFirefish: Plataforma de medios sociais de código aberto e descentralizada, + gratuíta para sempre!🚀 +search: Buscar +searchPlaceholder: Buscar en Firefish +username: Identificador +fetchingAsApObject: Descargando desde o Fediverso +ok: OK +youShouldUpgradeClient: Actualiza esta páxina para recibir os últimos contidos no + teu cliente. +privacy: Privacidade +makeFollowManuallyApprove: As solicitudes de seguimento requiren aprobación +defaultNoteVisibility: Visibilidade por defecto +follow: Seguir +followRequests: Solicitudes de seguimento +followRequestPending: Solicitude de seguimento pendente +renote: Promover +unrenote: Retirar promoción +renoted: Promovida. +cantReRenote: Unha promoción non pode ser promovida. +quote: Citar +pinnedNote: Publicación fixada +pinned: Fixar no perfil +you: Ti +clickToShow: Preme para mostrar +sensitive: NSFW +add: Engadir +reaction: Reaccións +removeReaction: Quitar a túa reacción +enableEmojiReactions: Activar as reaccións con emojis +showEmojisInReactionNotifications: Mostrar emojis nas notificacións das reaccións +reactionSetting: Reaccións mostradas no selector de reaccións +reactionSettingDescription2: Arrastra para reordenar, preme para eliminar, preme "+" + para engadir. +rememberNoteVisibility: Lembrar os axustes da visibilidade da publicación +attachCancel: Quitar o anexo +markAsSensitive: Marcar como NSFW +unmarkAsSensitive: Retirar marca NSFW +enterFileName: Escribe nome do ficheiro +mute: Acalar +unmute: Reactivar +renoteMute: Acalar promocións +renoteUnmute: Reactivar promocións +block: Bloquear +unblock: Desbloquear +suspend: Suspender +unsuspend: Retirar suspensión +timeline: Cronoloxía +noAccountDescription: Esta usuaria aínda non escribiu a súa bio. +login: Acceder +loggingIn: Accedendo +logout: Pechar sesión +signup: Crear conta +uploading: Subindo... +save: Gardar +users: Usuarias +addUser: Engadir unha usuaria +addInstance: Engadir un servidor +favorite: Engadir aos marcadores +favorites: Marcadores +unfavorite: Quitar dos marcadores +favorited: Engadido aos marcadores. +alreadyFavorited: Xa está nos marcadores. +cantFavorite: Non se puido engadir aos marcadores. +pin: Fixar no perfil +unpin: Soltar do perfil +copyContent: Copiar contidos +copyLink: Copiar ligazón +delete: Eliminar +deleted: Eliminado +deleteAndEdit: Eliminar e editar +blockConfirm: Tes a certeza de querer bloquear esta conta? +deleteAndEditConfirm: Tes a certeza de querer eliminar esta publicación e editala? + Perderás todas as súas reaccións, promocións e respostas. +editNote: Editar publicación +edited: Editado o {date} {time} +sendMessage: Enviar unha mensaxe +copyUsername: Copiar identificador +searchUser: Buscar unha usuaria +reply: Responder +jumpToPrevious: Ir á anterior +loadMore: Cargar máis +showMore: Mostrar máis +newer: máis novo +older: máis antigo +showLess: Pechar +youGotNewFollower: seguíute +receiveFollowRequest: Recibida solicitude de seguimento +followRequestAccepted: Solicitude de seguimento aceptada +mention: Mención +mentions: Mencións +directNotes: Mensaxes directas +cw: Aviso sobre o contido +importAndExport: Importar/Exportar datos +import: Importar +export: Exportar +files: Ficheiros +download: Descargar +unblockConfirm: Tes a certeza de querer retirarlle o bloqueo a esta conta? +suspendConfirm: Tes a certeza de querer suspender esta conta? +unsuspendConfirm: Tes a certeza de querer retirarlle a suspensión a esta conta? +selectList: Elixe unha lista +selectAntenna: Elixe unha antena +selectWidget: Elixe un widget +selectChannel: Elixe unha canle +editWidgets: Editar widgets +editWidgetsExit: Feito +customEmojis: Emoji personalizado +emoji: Emoji +emojis: Emoji +emojiName: Nome do emoji +emojiUrl: URL do emoji +addEmoji: Engadir +settingGuide: Axustes recomendados +cacheRemoteFiles: Gardar na caché ficheiros remotos +cacheRemoteFilesDescription: Se desactivas este axuste, os ficheiros remotos cárganse + directamente desde o servidor remoto. Ao desactivalo diminuirá a almacenaxe usada, + pero incrementarás o tráfico, xa que non se crearán miniaturas. +flagAsBotDescription: Activa esta opción se esta conta está controlada por un programa. + Se está activada, será unha marca para que outras desenvolvedoras eviten interaccións + en bucle con outros bots e axustará os sistemas internos de Firefish para tratar + esta conta como un bot. +flagAsCat: Es un gato? 😺 +flagAsCatDescription: Vas ter orellas de gato e falar como un gato! +flagSpeakAsCat: Fala como un gato +flagSpeakAsCatDescription: As túas publicacións serán gatificadas ao estar no modo + gato +flagShowTimelineReplies: Mostrar respostas na cronoloxía +flagShowTimelineRepliesDescription: Se está activado mostra as respostas das usuarias + a publicacións de outras usuarias na cronoloxía. +autoAcceptFollowed: Aprobar automáticamente as solicitudes de seguimento das persoas + que ti xa segues +addAccount: Engadir conta +loginFailed: Fallou o inicio de sesión +showOnRemote: Abrir páxina orixinal +general: Xeral +accountMoved: 'A usuaria está nunha nova conta:' +wallpaper: Fondo de pantalla +setWallpaper: Establecer fondo +removeWallpaper: Eliminar fondo +searchWith: 'Buscar: {q}' +youHaveNoLists: Non tes ningunha lista +stopActivityDelivery: Deixar de enviar actividades +perDay: Por día +blockThisInstance: Bloquear este servidor +silenceThisInstance: Acalar este servidor +operations: Operacións +software: Software +version: Versión +metadata: Metadatos +monitor: Monitor +cantRenote: Non se pode promover esta publicación. +clearCachedFiles: Limpar caché +jobQueue: Cola de tarefas +cpuAndMemory: CPU e Memoria +network: Rede +disk: Disco +instanceInfo: Información do servidor +statistics: Estatísticas +clearQueue: Limpar cola +clearQueueConfirmTitle: Tes a certeza de querer limpara a cola? +clearQueueConfirmText: Todas as publicacións que aínda non fosen entregadas non estarán + federadas. Esta operación, normalmente, non é necesaria. +clearCachedFilesConfirm: Tes a certeza de que queres eliminar todos os ficheiros remotos + da caché? +blockedInstances: Servidores bloqueados +blockedInstancesDescription: Lista dos nomes dos servidores que queres bloquear. Os + servidores da lista non poderán comunicarse con este servidor. +silencedInstances: Servidores acalados +silencedInstancesDescription: Lista cos nomes de servidores que queres acalar. As + contas dos servidores acalados serán tratadas como "Silenciadas", só poden facer + solicitudes de seguimento e non poden mencionar contas locais se non a están a seguir. + Isto non afecta aos servidores bloqueados. +hiddenTags: Cancelos agochados +hiddenTagsDescription: 'Lista cos cancelos (sen o #) que queres ocultar das seccións + descubrir e en voga. Os cancelos agochados seguirán sendo accesibles por outros + medios.' +muteAndBlock: Bloquear e Silenciar +mutedUsers: Usuarias acaladas +blockedUsers: Usuarias bloqueadas +noUsers: Sen usuarias +noInstances: Sen servidores +editProfile: Editar perfil +noteDeleteConfirm: Tes a certeza de querer eliminar esta publicación? +pinLimitExceeded: Xa non podes fixar máis publicacións +intro: Rematou a instalación de Fishfox! Por favor crea a usuaria administradora. +done: Feito +processing: Procesando +preview: Vista previa +default: Por defecto +defaultValueIs: 'Por defecto: {value}' +noCustomEmojis: Non hai emojis +noJobs: Non hai tarefas +blocked: Bloqueado +federating: Federación +silenced: Acalado +suspended: Suspendido +all: Todo +subscribing: Subscrición +publishing: Publicar +notResponding: Non responde +instanceFollowing: Seguindo no servidor +instanceFollowers: Seguidoras desde o servidor +instanceUsers: Usuarias neste servidor +security: Seguridade +retypedNotMatch: Os valores escritos non concordan. +changePassword: Cambiar contrasinal +currentPassword: Contrasinal actual +newPassword: Novo contrasinal +newPasswordRetype: Volve escribir o contrasinal +attachFile: Adxunta ficheiros +more: Máis! +featured: Destacado +usernameOrUserId: Identificador ou id de usuaria +noSuchUser: Non se atopa a usuaria +remove: Eliminar +removed: Eliminada correctamente +removeAreYouSure: Tes a certeza de querer eliminar "{x}"? +announcements: Anuncios +imageUrl: URL da imaxe +enterUsername: Escribir identificador +renotedBy: Promovido por {user} +noNotes: Sen publicacións +noNotifications: Sen notificacións +instance: Servidor +settings: Axustes +basicSettings: Axustes básicos +otherSettings: Outros axustes +openInWindow: Abrir na ventá +profile: Perfil +addToList: Engadir á lista +lists: Listas +listsDesc: As listas permítenche crear cronoloxías coas usuarias escollidas. Podes + acceder a elas desde a páxina de cronoloxías. +noLists: Non tes ningunha lista +note: Publicación +notes: Publicacións +following: Seguindo +followers: Seguidoras +followsYou: Séguete +createList: Crear lista +manageLists: Xestionar listas +error: Erro +somethingHappened: Houbo un fallo +retry: Volver a intentar +pageLoadError: Algo fallou ao cargar a páxina. +pageLoadErrorDescription: Normalmente isto débese a problemas na rede ou na caché + do navegador. Intenta limpar a caché e volve a intentalo dentro dun anaco. +serverIsDead: Este servidor non responde. Agarda un anaco e volve intentalo. +enterListName: Dalle un nome á lista +unfollow: Deixar de seguir +enterEmoji: Escribe un emoji +flagAsBot: Marcar a conta como bot +followConfirm: Tes a certeza de querer seguir a {name}? +proxyAccount: Conta proxy +proxyAccountDescription: Unha conta proxy é unha conta que en determinadas situacións + actúa como unha seguidora remota para as usuarias. Por exemplo, cando unha usuaria + engade unha usuaria remota a unha lista, a actividade da usuaria remota non se entrega + ao servidor se a usuaria local non segue a esa outra usuaria, así a conta proxy + fará o seguimento no seu lugar. +host: Hóspede +selectUser: Escolle unha usuaria +selectInstance: Escolle un servidor +recipient: Correpondente(s) +annotation: Comentarios +federation: Federación +instances: Servidores +registeredAt: Data do rexistro +latestRequestSentAt: Última solicitude enviada +latestRequestReceivedAt: Última solicitude recibida +latestStatus: Último estado +storageUsage: Uso da almacenaxe +charts: Gráficas +perHour: Por hora +followRequest: Solicitar seguimento +messageRead: Ler +noMoreHistory: Non hai máis historial +images: Imaxes +manageGroups: Xestionar grupos +unableToDelete: Non se puido eliminar +syncDeviceDarkMode: Syncr Modo Escuro cos axustes do teu dispositivo +uploadFromUrl: Subir desde un URL +emptyDrive: O teu Disco está baleiro +copyUrl: Copiar URL +nUsersRead: lido por {n} +uploadFromUrlRequested: Solicitaches unha subida +circularReferenceFolder: O cartafol de destino é un subcartafol do cartafol que queres + mover. +selectFile: Elexir un ficheiro +inputNewFileName: Escribe o novo nome +agreeTo: Acepto os {0} +whenServerDisconnected: Cando se perda a conexión co servidor +selectFolder: Elexir un cartafol +saved: Gardado +selectFiles: Elexir ficheiros +fileName: Nome do ficheiro +explore: Descubrir +keepOriginalUploadingDescription: Garda a imaxe subida orixinalmente tal como é. Se + o desactivas, a versión que se mostrará na web será creada ao subila. +folderName: Nome do cartafol +lightThemes: Decorados claros +rename: Cambiar nome +activity: Actividade +fromUrl: Desde URL +darkThemes: Decorados escuros +birthday: Aniversario +registeredDate: Conta creada en +fromDrive: Desde Disco +uploadFromUrlMayTakeTime: Podería tardar una anaco en completarse a subida. +theme: Decorados +renameFolder: Cambiar nome a este cartafol +resetAreYouSure: Queres restablecer? +startMessaging: Comezar un novo chat +light: Claro +themeForLightMode: Decorado a usar no Modo Claro +inputNewDescription: Escribe a descrición +start: Comezar +selectFolders: Elexir cartafoles +remoteUserCaution: A información das usuarias remotas podería estar incompleta. +exportRequested: Solicitaches unha exportación. Vainos levar un pouco. Vai ser engadida + ao teu Disco cando estea completa. +deleteFolder: Eliminar este cartafol +drive: Disco +importRequested: Solicitaches unha importación. Vainos levar un anaco. +uploadFromUrlDescription: URL do ficheiro que queres subir +location: Localización +unfollowConfirm: Tes a certeza de que queres deixar de seguir a {name}? +banner: Cabeceira +dark: Escuro +home: Inicio +keepOriginalUploading: Manter imaxe orixinal +upload: Subir +yearsOld: '{age} anos de idade' +emptyFolder: Este cartafol está baleiro +messaging: Chat +nsfw: NSFW +addFile: Engadir un ficheiro +tos: Termos do Servizo +themeForDarkMode: Decorado a usar no Modo Escuro +deleteAreYouSure: Tes a certeza de querer desbotar "{x}"? +createFolder: Crear un cartafol +renameFile: Cambiar nome ao ficheiro +lookup: Buscar +avatar: Avatar +driveFileDeleteConfirm: Tes a certeza de querer eliminar o ficheiro "{name}"? Vai + ser retirado de todas as publicacións nas que estea como anexo. +inputNewFolderName: Escribe o novo nome do cartafol +hasChildFilesOrFolders: Como o cartafol non está baleiro, non pode ser eliminado. diff --git a/locales/id-ID.yml b/locales/id-ID.yml index 17bebe99cf..24a5bc25f0 100644 --- a/locales/id-ID.yml +++ b/locales/id-ID.yml @@ -1,9 +1,8 @@ _lang_: "Bahasa Indonesia" -headlineMisskey: "Jaringan terhubung melalui catatan" -introMisskey: "Selamat datang! Calckey adalah perangkat mikroblog tercatu bersifat\ - \ sumber terbuka.\nMulailah menuliskan catatan, bagikan peristiwa terkini, serta\ - \ ceritakan segala tentangmu.\U0001F4E1\nTunjukkan juga reaksimu pada catatan pengguna\ - \ lain.\U0001F44D\nMari jelajahi dunia baru\U0001F680" +headlineFirefish: "Platform media sosial sumber terbuka dan terdesentralisasi yang + merdeka sepenuhnya! 🚀" +introFirefish: "Selamat datang! Firefish adalah media sosial sumber terbuka dan terdesentralisasi + yang selamanya bebas! 🚀" monthAndDay: "{day} {month}" search: "Penelusuran" notifications: "Pemberitahuan" @@ -12,42 +11,42 @@ password: "Kata sandi" forgotPassword: "Lupa Kata Sandi" fetchingAsApObject: "Mengambil data dari Fediverse" ok: "OK" -gotIt: "Saya mengerti" +gotIt: "Mengerti!" cancel: "Batalkan" enterUsername: "Masukkan nama pengguna" -renotedBy: "direnote oleh {user}" -noNotes: "Tidak ada catatan" +renotedBy: "Diposting ulang oleh {user}" +noNotes: "Tidak ada postingan" noNotifications: "Tidak ada pemberitahuan" -instance: "Instansi" +instance: "Server" settings: "Pengaturan" basicSettings: "Pengaturan umum" otherSettings: "Pengaturan lainnya" openInWindow: "Buka di jendela" profile: "Profil" timeline: "Linimasa" -noAccountDescription: "Pengguna ini belum menulis bio" +noAccountDescription: "Pengguna ini belum menulis bio." login: "Masuk" loggingIn: "Sedang masuk" logout: "Keluar" signup: "Daftar" -uploading: "Sedang mengunggah" +uploading: "Mengunggah..." save: "Simpan" users: "Pengguna" addUser: "Tambah pengguna" favorite: "Favorit" favorites: "Favorit" unfavorite: "Hapus favorit" -favorited: "Ditambahkan ke favorit" -alreadyFavorited: "Telah ditambahkan ke favorit" -cantFavorite: "Tidak dapat menambahkan ke favorit" +favorited: "Ditambahkan ke markah." +alreadyFavorited: "Telah ditambahkan ke markah." +cantFavorite: "Tidak dapat menambahkan ke markah." pin: "Sematkan ke profil" unpin: "Lepas sematan dari profil" copyContent: "Salin konten" copyLink: "Salin tautan" delete: "Hapus" deleteAndEdit: "Hapus dan sunting" -deleteAndEditConfirm: "Apakah kamu yakin ingin menghapus note ini dan menyuntingnya?\ - \ Kamu akan kehilangan semua reaksi, renote dan balasan di note ini." +deleteAndEditConfirm: "Kamu yakin ingin menghapus postingan lalu menyuntingnya? Kamu + akan kehilangan semua reaksi, postingan ulang, dan balasan." addToList: "Tambahkan ke daftar" sendMessage: "Kirim pesan" copyUsername: "Salin nama pengguna" @@ -61,21 +60,22 @@ receiveFollowRequest: "Ingin mengikuti kamu" followRequestAccepted: "Permintaan mengikuti telah disetujui" mention: "Sebut" mentions: "Sebutan" -directNotes: "Catatan langsung" +directNotes: "Pesan langsung" importAndExport: "Impor & Ekspor" import: "Impor" export: "Ekspor" files: "Berkas" download: "Unduh" -driveFileDeleteConfirm: "Hapus {name}? Catatan dengan berkas terkait juga akan terhapus." +driveFileDeleteConfirm: "Kamu yakin ingin menghapus berkas \"{name}\"? Ini akan menghapus + semua postingan yang berisi lampiran tersebut." unfollowConfirm: "Berhenti mengikuti {name}?" -exportRequested: "Kamu telah meminta ekspor. Ini akan memakan waktu sesaat. Setelah\ - \ ekspor selesai, berkas yang dihasilkan akan ditambahkan ke Drive" +exportRequested: "Kamu telah meminta ekspor. Ini akan memakan waktu sesaat. Setelah + ekspor selesai, berkas yang dihasilkan akan ditambahkan ke Drive." importRequested: "Kamu telah meminta impor. Ini akan memakan waktu sesaat." lists: "Daftar" noLists: "Kamu tidak memiliki daftar apapun" -note: "Catat" -notes: "Catatan" +note: "Posting" +notes: "Postingan" following: "Ikuti" followers: "Pengikut" followsYou: "Mengikuti kamu" @@ -85,29 +85,29 @@ error: "Galat" somethingHappened: "Terjadi kesalahan" retry: "Coba lagi" pageLoadError: "Gagal memuat halaman." -pageLoadErrorDescription: "Umumnya disebabkan jaringan atau tembolok perambah. Cobalah\ - \ bersihkan tembolok peramban lalu tunggu sesaat sebelum mencoba kembali." -serverIsDead: "Tidak ada respon dari peladen. Mohon tunggu dan coba beberapa saat\ - \ lagi." -youShouldUpgradeClient: "Untuk melihat halaman ini, mohon muat ulang untuk memutakhirkan\ - \ klienmu." +pageLoadErrorDescription: "Umumnya disebabkan jaringan atau tembolok perambah. Cobalah + bersihkan tembolok peramban lalu tunggu sesaat sebelum mencoba kembali." +serverIsDead: "Tidak ada respon dari peladen. Mohon tunggu dan coba beberapa saat + lagi." +youShouldUpgradeClient: "Untuk melihat halaman ini, mohon muat ulang untuk memutakhirkan + klienmu." enterListName: "Masukkan nama daftar" privacy: "Privasi" makeFollowManuallyApprove: "Permintaan mengikuti membutuhkan persetujuan" -defaultNoteVisibility: "Privasi bawaan catatan" +defaultNoteVisibility: "Visibilitas bawaan" follow: "Ikuti" -followRequest: "Permintaan mengikuti" +followRequest: "Permintaan Mengikuti" followRequests: "Permintaan mengikuti" unfollow: "Berhenti mengikuti" followRequestPending: "Permintaan mengikuti yang menunggu" enterEmoji: "Masukkan emoji" -renote: "Renote" -unrenote: "Hapus renote" -renoted: "Telah direnote" -cantRenote: "Postingan ini tidak dapat direnote" -cantReRenote: "Renote tidak dapat direnote" +renote: "Posting ulang" +unrenote: "Batalkan posting ulang" +renoted: "Diposting ulang." +cantRenote: "Postingan ini tidak dapat diposting ulang." +cantReRenote: "Postingan ulang tidak dapat diposting ulang." quote: "Kutip" -pinnedNote: "Catatan yang disematkan" +pinnedNote: "Postingan tersemat" pinned: "Sematkan ke profil" you: "Kamu" clickToShow: "Klik untuk melihat" @@ -115,9 +115,9 @@ sensitive: "Konten sensitif" add: "Tambahkan" reaction: "Reaksi" reactionSetting: "Reaksi untuk dimunculkan di bilah reaksi" -reactionSettingDescription2: "Geser untuk memindah urutkan, klik untuk menghapus,\ - \ tekan \"+\" untuk menambahkan" -rememberNoteVisibility: "Ingat pengaturan visibilitas catatan" +reactionSettingDescription2: "Geser untuk memindah urutan, klik untuk menghapus, tekan + \"+\" untuk menambahkan." +rememberNoteVisibility: "Ingat pengaturan visibilitas postingan" attachCancel: "Hapus lampiran" markAsSensitive: "Tandai sebagai konten sensitif" unmarkAsSensitive: "Hapus tanda konten sensitif" @@ -145,44 +145,44 @@ emojiUrl: "URL Emoji" addEmoji: "Tambahkan emoji" settingGuide: "Pengaturan rekomendasi" cacheRemoteFiles: "Tembolokkan berkas remote" -cacheRemoteFilesDescription: "Ketika pengaturan ini dinonaktifkan, berkas luar akan\ - \ dimuat langsung dari instansi luar. Menonaktifkan ini akan mengurangi penggunaan\ - \ penyimpanan, namun dapat menyebabkan meningkatkan lalu lintas bandwidth, karena\ - \ thumbnail tidak dihasilkan." +cacheRemoteFilesDescription: "Ketika pengaturan ini dinonaktifkan, berkas luar akan + dimuat langsung dari server luar. Menonaktifkan ini akan mengurangi penggunaan penyimpanan, + tapi dapat menyebabkan meningkatkan lalu lintas, mengingat keluku tidak akan dihasilkan." flagAsBot: "Atur akun ini sebagai Bot" -flagAsBotDescription: "Jika akun ini dikendalikan oleh program, tetapkanlah opsi ini.\ - \ Jika diaktifkan, ini akan berfungsi sebagai tanda bagi pengembang lain untuk mencegah\ - \ interaksi berantai dengan bot lain dan menyesuaikan sistem internal Calckey untuk\ - \ memperlakukan akun ini sebagai bot." +flagAsBotDescription: "Jika akun ini dikendalikan oleh program, tetapkanlah opsi ini. + Jika diaktifkan, ini akan berfungsi sebagai tanda bagi pengembang lain untuk mencegah + interaksi berantai dengan bot lain dan menyesuaikan sistem internal Firefish untuk + memperlakukan akun ini sebagai bot." flagAsCat: "Atur akun ini sebagai kucing" -flagAsCatDescription: "Nyalakan tanda ini untuk menandai akun ini sebagai kucing." +flagAsCatDescription: "Kamu akan mendapatkan telinga kucing dan berbicara seperti + seekor kucing!" flagShowTimelineReplies: "Tampilkan balasan di linimasa" -flagShowTimelineRepliesDescription: "Menampilkan balasan pengguna dari note pengguna\ - \ lain di linimasa apabila dinyalakan." -autoAcceptFollowed: "Setujui otomatis permintaan mengikuti dari pengguna yang kamu\ - \ ikuti" +flagShowTimelineRepliesDescription: "Menampilkan balasan pengguna pada postingan pengguna + lain di linimasa jika diaktifkan." +autoAcceptFollowed: "Setujui otomatis permintaan mengikuti dari pengguna yang kamu + ikuti" addAccount: "Tambahkan akun" loginFailed: "Gagal untuk masuk" -showOnRemote: "Lihat profil asli" +showOnRemote: "Buka halaman asli" general: "Umum" -wallpaper: "Wallpaper" +wallpaper: "Kertas dinding" setWallpaper: "Atur wallpaper" removeWallpaper: "Hapus wallpaper" searchWith: "Cari: {q}" youHaveNoLists: "Kamu tidak memiliki daftar apapun" followConfirm: "Apakah kamu yakin ingin mengikuti {name}?" -proxyAccount: "Akun proksi" -proxyAccountDescription: "Akun proksi merupakan sebuah akun yang bertindak sebagai\ - \ pengikut luar untuk pengguna dalam kondisi tertentu. Sebagai contoh, ketika pengguna\ - \ menambahkan seorang pengguna luar ke dalam daftar, aktivitas dari pengguna luar\ - \ tidak akan disampaikan ke instansi apabila tidak ada pengguna lokal yang mengikuti\ - \ pengguna tersebut, dengan begitu akun proksilah yang akan mengikutinya." +proxyAccount: "Akun Proksi" +proxyAccountDescription: "Akun proksi merupakan sebuah akun yang bertindak sebagai + pengikut luar untuk pengguna dalam kondisi tertentu. Sebagai contoh, ketika pengguna + menambahkan pengguna luar ke dalam daftar, aktivitas dari pengguna luar tidak akan + dikirim ke server apabila tidak ada pengguna lokal yang mengikuti pengguna tersebut, + dengan begitu akun proksilah yang akan mengikutinya." host: "Host" selectUser: "Pilih pengguna" recipient: "Penerima" annotation: "Keterangan konten" federation: "Federasi" -instances: "Instansi" +instances: "Server" registeredAt: "Terdaftar" latestRequestSentAt: "Permintaan terakhir dikirim pada" latestRequestReceivedAt: "Permintaan terakhir diterima pada" @@ -192,7 +192,7 @@ charts: "Grafik" perHour: "per Jam" perDay: "per Hari" stopActivityDelivery: "Berhenti mengirim aktivitas" -blockThisInstance: "Blokir instansi ini" +blockThisInstance: "Blokir server ini" operations: "Tindakan" software: "Perangkat lunak" version: "Versi" @@ -202,27 +202,26 @@ jobQueue: "Antrian kerja" cpuAndMemory: "CPU dan Memori" network: "Jaringan" disk: "Diska" -instanceInfo: "Informasi Instansi" +instanceInfo: "Informasi Server" statistics: "Statistik" clearQueue: "Bersihkan antrian" clearQueueConfirmTitle: "Apakah kamu yakin ingin membersihkan antrian?" -clearQueueConfirmText: "Seluruh sisa catatan yang tidak tersampaikan di dalam antrian\ - \ tidak akan difederasi. Biasanya operasi ini TIDAK dibutuhkan." +clearQueueConfirmText: "Seluruh sisa postingan yang tidak tersampaikan di dalam antrian + tidak akan difederasi. Biasanya operasi ini TIDAK dibutuhkan." clearCachedFiles: "Hapus tembolok" -clearCachedFilesConfirm: "Apakah kamu yakin ingin menghapus seluruh tembolok berkas\ - \ remote?" -blockedInstances: "Instansi terblokir" -blockedInstancesDescription: "Daftar nama host dari instansi yang diperlukan untuk\ - \ diblokir. Instansi yang didaftarkan tidak akan dapat berkomunikasi dengan instansi\ - \ ini." +clearCachedFilesConfirm: "Apakah kamu yakin ingin menghapus seluruh tembolok berkas + remote?" +blockedInstances: "Server yang Diblokir" +blockedInstancesDescription: "Daftar nama host dari server yang diperlukan untuk diblokir. + Server yang didaftarkan tidak akan dapat berkomunikasi dengan server ini." muteAndBlock: "Bisukan / Blokir" mutedUsers: "Pengguna yang dibisukan" blockedUsers: "Pengguna yang diblokir" noUsers: "Tidak ada pengguna" editProfile: "Sunting profil" -noteDeleteConfirm: "Apakah kamu yakin ingin menghapus catatan ini?" -pinLimitExceeded: "Kamu tidak dapat menyematkan catatan lagi" -intro: "Instalasi Calckey telah selesai! Mohon untuk membuat pengguna admin." +noteDeleteConfirm: "Kamu yakin ingin menghapus postingan ini?" +pinLimitExceeded: "Kamu tidak dapat menyematkan postingan lagi" +intro: "Instalasi Firefish telah selesai! Mohon untuk membuat pengguna admin." done: "Selesai" processing: "Memproses" preview: "Pratinjau" @@ -236,17 +235,17 @@ all: "Semua" subscribing: "Berlangganan" publishing: "Sedang menyiarkan langsung" notResponding: "Tidak ada respon" -instanceFollowing: "Mengikuti instance" -instanceFollowers: "Pengikut instance" -instanceUsers: "Pengguna pada instance ini" +instanceFollowing: "Mengikuti di server" +instanceFollowers: "Pengikut server" +instanceUsers: "Pengguna di server ini" changePassword: "Ubah kata sandi" security: "Keamanan" -retypedNotMatch: "Input tidak sama" +retypedNotMatch: "Masukan tidak cocok." currentPassword: "Kata sandi saat ini" newPassword: "Kata sandi baru" newPasswordRetype: "Ulangi kata sandi baru" attachFile: "Lampirkan berkas" -more: "Lagi !" +more: "Lagi!" featured: "Sorotan" usernameOrUserId: "Nama pengguna atau User ID" noSuchUser: "Pengguna tidak ditemukan" @@ -262,14 +261,14 @@ saved: "Telah disimpan" messaging: "Pesan" upload: "Unggah" keepOriginalUploading: "Simpan gambar asli" -keepOriginalUploadingDescription: "Simpan gambar yang diunggah sebagaimana gambar\ - \ aslinya. Bila dimatikan, versi tampilan web akan dihasilkan pada saat diunggah." +keepOriginalUploadingDescription: "Simpan gambar yang diunggah sebagaimana gambar + aslinya. Bila dimatikan, versi tampilan web akan dihasilkan pada saat diunggah." fromDrive: "Dari Drive" fromUrl: "Dari URL" uploadFromUrl: "Unggah dari URL" uploadFromUrlDescription: "URL berkas yang ingin kamu unggah" uploadFromUrlRequested: "Pengunggahan telah diminta" -uploadFromUrlMayTakeTime: "Membutuhkan beberapa waktu hingga pengunggahan selesai" +uploadFromUrlMayTakeTime: "Membutuhkan beberapa waktu hingga pengunggahan selesai." explore: "Jelajahi" messageRead: "Telah dibaca" noMoreHistory: "Tidak ada sejarah lagi" @@ -279,8 +278,8 @@ agreeTo: "Saya setuju kepada {0}" tos: "Syarat dan ketentuan" start: "Mulai" home: "Beranda" -remoteUserCaution: "Informasi ini mungkin tidak mutakhir, karena pengguna ini berasal\ - \ dari instansi luar." +remoteUserCaution: "Informasi ini mungkin tidak mutakhir, karena pengguna ini berasal + dari instansi luar." activity: "Aktivitas" images: "Gambar" birthday: "Tanggal lahir" @@ -311,10 +310,10 @@ emptyDrive: "Drive kosong" emptyFolder: "Folder kosong" unableToDelete: "Tidak dapat menghapus" inputNewFileName: "Masukkan nama berkas yang baru" -inputNewDescription: "Masukkan keterangan disini" +inputNewDescription: "Masukkan deskripsi baru" inputNewFolderName: "Masukkan nama folder yang baru" -circularReferenceFolder: "Folder tujuan adalah subfolder dari folder yang ingin kamu\ - \ pindahkan." +circularReferenceFolder: "Folder tujuan adalah subfolder dari folder yang ingin kamu + pindahkan." hasChildFilesOrFolders: "Karena folder ini tidak kosong, maka tidak dapat dihapus." copyUrl: "Salin tautan" rename: "Ubah nama" @@ -331,8 +330,8 @@ unwatch: "Batal tonton" accept: "Terima" reject: "Tolak" normal: "Normal" -instanceName: "Nama instance" -instanceDescription: "Tentang instance" +instanceName: "Nama server" +instanceDescription: "Deskripsi server" maintainerName: "Pengelola" maintainerEmail: "Surel pengelola" tosUrl: "URL Syarat dan Ketentuan" @@ -348,8 +347,8 @@ connectService: "Sambungkan" disconnectService: "Putuskan" enableLocalTimeline: "Nyalakan linimasa lokal" enableGlobalTimeline: "Nyalakan linimasa global" -disablingTimelinesInfo: "Admin dan Moderator akan selalu memiliki akses ke semua linimasa\ - \ meskipun linimasa tersebut tidak diaktifkan." +disablingTimelinesInfo: "Admin dan Moderator akan selalu memiliki akses ke semua linimasa + meskipun linimasa tersebut tidak diaktifkan." registration: "Pendaftaran" enableRegistration: "Nyalakan pendaftaran pengguna baru" invite: "Undang" @@ -361,40 +360,40 @@ bannerUrl: "URL Banner" backgroundImageUrl: "URL Gambar latar" basicInfo: "Informasi Umum" pinnedUsers: "Pengguna yang disematkan" -pinnedUsersDescription: "Tuliskan satu nama pengguna dalam satu baris. Pengguna yang\ - \ dituliskan disini akan disematkan dalam bilah \"Jelajahi\"." +pinnedUsersDescription: "Tuliskan satu nama pengguna dalam satu baris. Pengguna yang + dituliskan disini akan disematkan dalam bilah \"Jelajahi\"." pinnedPages: "Halaman yang disematkan" -pinnedPagesDescription: "Masukkan tautan dari halaman yang kamu ingin sematkan ke\ - \ halaman utama dari instansi ini, dipisah dengan membuat baris baru." +pinnedPagesDescription: "Masukkan jalur dari halaman yang kamu ingin sematkan ke halaman + utama dari server ini, dipisah dengan membuat baris baru." pinnedClipId: "ID dari klip yang disematkan" -pinnedNotes: "Catatan yang disematkan" +pinnedNotes: "Postingan tersemat" hcaptcha: "hCaptcha" enableHcaptcha: "Nyalakan hCaptcha" hcaptchaSiteKey: "Site Key" hcaptchaSecretKey: "Secret Key" recaptcha: "reCAPTCHA" enableRecaptcha: "Nyalakan reCAPTCHA" -recaptchaSiteKey: "Site key" +recaptchaSiteKey: "Kunci situs" recaptchaSecretKey: "Secret Key" -avoidMultiCaptchaConfirm: "Menggunakan banyak Captcha dapat menyebabkan gangguan.\ - \ Apakah kamu ingin untuk menonaktifkan Captcha yang lain? Kamu dapat membiarkan\ - \ fitur ini tetap aktif dengan menekan tombol batal." +avoidMultiCaptchaConfirm: "Menggunakan banyak Captcha dapat menyebabkan gangguan. + Apakah kamu ingin untuk menonaktifkan Captcha yang lain? Kamu dapat membiarkan fitur + ini tetap aktif dengan menekan tombol batal." antennas: "Antena" manageAntennas: "Pengelola Antena" name: "Nama" antennaSource: "Sumber Antenna" antennaKeywords: "Kata kunci yang diterima" antennaExcludeKeywords: "Kata kunci yang dikecualikan" -antennaKeywordsDescription: "Pisahkan dengan spasi untuk kondisi AND. Pisahkan dengan\ - \ baris baru untuk kondisi OR." -notifyAntenna: "Beritahu untuk catatan baru" -withFileAntenna: "Hanya tampilkan catatan dengan berkas yang dilampirkan" +antennaKeywordsDescription: "Pisahkan dengan spasi untuk kondisi AND. Pisahkan dengan + baris baru untuk kondisi OR." +notifyAntenna: "Beri tahu tentang postingan baru" +withFileAntenna: "Hanya postingan dengan berkas" enableServiceworker: "Aktifkan ServiceWorker" antennaUsersDescription: "Tuliskan satu nama pengguna per baris" caseSensitive: "Peka huruf besar dan huruf kecil" withReplies: "Termasuk balasan" connectedTo: "Akun yang mengikuti telah terhubung" -notesAndReplies: "Catatan dan balasan" +notesAndReplies: "Postingan dan balasan" withFiles: "Media" silence: "Bungkam" silenceConfirm: "Apakah kamu yakin ingin membungkam pengguna ini?" @@ -409,7 +408,7 @@ exploreFediverse: "Jelajahi Fediverse" popularTags: "Tag populer" userList: "Daftar" about: "Informasi" -aboutMisskey: "Tentang Calckey" +aboutFirefish: "Tentang Firefish" administrator: "Admin" token: "Token" twoStepAuthentication: "Otentikasi dua faktor" @@ -429,9 +428,9 @@ notFound: "Tidak dapat ditemukan" notFoundDescription: "Tidak ada halaman sesuai dengan URL yang ditentukan." uploadFolder: "Lokasi unggah folder bawaan" cacheClear: "Bersihkan tembolok" -markAsReadAllNotifications: "Tandai semua pemberitahuan telah dibaca" -markAsReadAllUnreadNotes: "Tandai semua catatan telah dibaca" -markAsReadAllTalkMessages: "Tandai semua pesan telah dibaca" +markAsReadAllNotifications: "Tandai semua pemberitahuan sudah dibaca" +markAsReadAllUnreadNotes: "Tandai semua postingan sudah dibaca" +markAsReadAllTalkMessages: "Tandai semua pesan sudah dibaca" help: "Bantuan" inputMessageHere: "Ketik pesan disini" close: "Tutup" @@ -451,7 +450,7 @@ text: "Teks" enable: "Aktifkan" next: "Selanjutnya" retype: "Masukkan ulang" -noteOf: "Catatan milik {user}" +noteOf: "Diposting oleh {user}" inviteToGroup: "Undang ke grup" quoteAttached: "Dikutip" quoteQuestion: "Apakah kamu ingin menambahkan kutipan?" @@ -461,7 +460,7 @@ onlyOneFileCanBeAttached: "Kamu hanya dapat melampirkan satu berkas ke dalam pes signinRequired: "Silahkan login" invitations: "Undang" invitationCode: "Kode undangan" -checking: "Memeriksa" +checking: "Memeriksa..." available: "Tersedia" unavailable: "Tidak tersedia" usernameInvalidFormat: "Hanya dapat menerima karakter a-z, A-Z dan angka 0-9." @@ -473,8 +472,8 @@ strongPassword: "Kata sandi kuat" passwordMatched: "Kata sandi sama" passwordNotMatched: "Kata sandi tidak sama" signinWith: "Masuk dengan {x}" -signinFailed: "Tidak dapat masuk. Nama pengguna atau kata sandi yang kamu masukkan\ - \ salah." +signinFailed: "Tidak dapat masuk. Nama pengguna atau kata sandi yang kamu masukkan + salah." tapSecurityKey: "Ketuk kunci keamanan kamu" or: "atau" language: "Bahasa" @@ -490,7 +489,7 @@ signinHistory: "Riwayat masuk" disableAnimatedMfm: "Nonaktifkan MFM dengan animasi" doing: "Sedang berkerja..." category: "Kategori" -tags: "Tandai" +tags: "Tag" docSource: "Sumber dari dokumen ini" createAccount: "Buat akun" existingAccount: "Akun yang ada" @@ -500,7 +499,7 @@ noFollowRequests: "Kamu tidak memiliki permintaan mengikuti yang menunggu" openImageInNewTab: "Buka gambar di tab baru" dashboard: "Dasbor" local: "Lokal" -remote: "Remote" +remote: "Luar" total: "Jumlah" weekOverWeekChanges: "Mingguan" dayOverDayChanges: "Harian" @@ -510,49 +509,47 @@ accountSettings: "Pengaturan Akun" promotion: "Promosi" promote: "Promosikan" numberOfDays: "Jumlah hari" -hideThisNote: "Sembunyikan catatan ini" -showFeaturedNotesInTimeline: "Tampilkan catatan yang diunggulkan di linimasa" -objectStorage: "Object Storage" +hideThisNote: "Sembunyikan postingan ini" +showFeaturedNotesInTimeline: "Tampilkan postingan yang diunggulkan di linimasa" +objectStorage: "Penyimpanan Objek" useObjectStorage: "Gunakan object storage" -objectStorageBaseUrl: "Base URL" -objectStorageBaseUrlDesc: "Prefix URL digunakan untuk mengkonstruksi URL ke object\ - \ (media) referencing. Tentukan URL jika kamu menggunakan CDN atau Proxy, jika tidak\ - \ tentukan alamat yang dapat diakses secara publik sesuai dengan panduan dari layanan\ - \ yang akan kamu gunakan, contohnya. 'https://.s3.amazonaws.com' untuk AWS\ - \ S3, dan 'https://storage.googleapis.com/' untuk GCS." -objectStorageBucket: "Bucket" -objectStorageBucketDesc: "Mohon tentukan nama bucket yang digunakan pada layanan yang\ - \ telah dikonfigurasi." +objectStorageBaseUrl: "URL Dasar" +objectStorageBaseUrlDesc: "URL dipakai sebagai referensi. Tentukan URL CDN atau Proksimu + jika kamu menggunakan salah satunya.\nUntuk S3 gunakan 'https://.s3.amazonaws.com' + dan GCS atau layanan serupa gunakan 'https://storage.googleapis.com/', dll." +objectStorageBucket: "Ember" +objectStorageBucketDesc: "Mohon tentukan nama bucket yang digunakan pada layanan yang + telah dikonfigurasi." objectStoragePrefix: "Prefix" objectStoragePrefixDesc: "Berkas tidak akan disimpan dalam direktori dari prefix ini." -objectStorageEndpoint: "Endpoint" -objectStorageEndpointDesc: "Kosongkan bagian ini jika kamu menggunakan AWS S3, jika\ - \ tidak tentukan endpoint sebagai '' atau ':' sesuai dengan panduan\ - \ dari layanan yang akan kamu gunakan." +objectStorageEndpoint: "Titik akhir" +objectStorageEndpointDesc: "Kosongkan bagian ini jika kamu menggunakan AWS S3, jika + tidak tentukan endpoint sebagai '' atau ':' sesuai dengan panduan + dari layanan yang akan kamu gunakan." objectStorageRegion: "Region" -objectStorageRegionDesc: "Tentukan region seperti 'xx-east-1'. Jika layanan kamu tidak\ - \ memiliki perbedaan mengenai region, kosongkan saja atau isi dengan 'us-east-1'." +objectStorageRegionDesc: "Tentukan region seperti 'xx-east-1'. Jika layanan kamu tidak + memiliki perbedaan mengenai region, kosongkan saja atau isi dengan 'us-east-1'." objectStorageUseSSL: "Gunakan SSL" -objectStorageUseSSLDesc: "Matikan ini jika kamu tidak akan menggunakan HTTPS untuk\ - \ koneksi API" +objectStorageUseSSLDesc: "Matikan ini jika kamu tidak akan menggunakan HTTPS untuk + koneksi API" objectStorageUseProxy: "Hubungkan melalui Proxy" -objectStorageUseProxyDesc: "Matikan ini jika kamu tidak akan menggunakan Proxy untuk\ - \ koneksi ObjectStorage" +objectStorageUseProxyDesc: "Matikan ini jika kamu tidak akan menggunakan Proxy untuk + koneksi ObjectStorage" objectStorageSetPublicRead: "Setel \"public-read\" disaat mengunggah" serverLogs: "Log Peladen" deleteAll: "Hapus semua" -showFixedPostForm: "Tampilkan form posting di atas linimasa." -newNoteRecived: "Kamu mendapat catatan baru" +showFixedPostForm: "Tampilkan formulir posting di atas linimasa" +newNoteRecived: "Ada postingan baru" sounds: "Bunyi" listen: "Dengarkan" none: "Tidak ada" showInPage: "Tampilkan di halaman" -popout: "Pop-out" +popout: "Sembulan" volume: "Volume" masterVolume: "Master volume" details: "Selengkapnya" chooseEmoji: "Pilih emoji" -unableToProcess: "Operasi tersebut tidak dapat diselesaikan." +unableToProcess: "Tindakan tersebut tidak dapat diselesaikan" recentUsed: "Baru saja digunakan" install: "Pasang" uninstall: "Copot pemasangan" @@ -565,9 +562,8 @@ sort: "Urutkan" ascendingOrder: "Urutkan naik" descendingOrder: "Urutkan menurun" scratchpad: "Scratchpad" -scratchpadDescription: "Scratchpad menyediakan lingkungan eksperimen untuk AiScript.\ - \ Kamu bisa menulis, mengeksuksi, serta mengecek hasil yang berinteraksi dengan\ - \ Calckey." +scratchpadDescription: "Scratchpad menyediakan lingkungan eksperimen untuk AiScript. + Kamu bisa menulis, mengeksekusi, serta mengecek hasil yang berinteraksi dengan Firefish." output: "Keluaran" script: "Script" disablePagesScript: "Nonaktifkan script pada halaman" @@ -575,14 +571,14 @@ updateRemoteUser: "Perbaharui informasi pengguna luar" deleteAllFiles: "Hapus semua berkas" deleteAllFilesConfirm: "Apakah kamu yakin ingin menghapus semua berkas?" removeAllFollowing: "Tahan semua mengikuti" -removeAllFollowingDescription: "Batal mengikuti semua akun dari {host}. Mohon jalankan\ - \ ini ketika instansi sudah tidak ada lagi." +removeAllFollowingDescription: "Batal mengikuti semua akun dari {host}. Mohon jalankan + ini ketika server sudah tidak ada lagi." userSuspended: "Pengguna ini telah dibekukan." userSilenced: "Pengguna ini telah dibungkam." yourAccountSuspendedTitle: "Akun ini dibekukan" -yourAccountSuspendedDescription: "Akun ini dibekukan karena melanggar ketentuan penggunaan\ - \ layanan peladen atau semacamnya. Hubungi admin apabila ingin tahu alasan lebih\ - \ lanjut. Mohon untuk tidak membuat akun baru." +yourAccountSuspendedDescription: "Akun ini dibekukan karena melanggar ketentuan penggunaan + layanan peladen atau semacamnya. Hubungi admin apabila ingin tahu alasan lebih lanjut. + Mohon untuk tidak membuat akun baru." menu: "Menu" divider: "Pembagi" addItem: "Tambahkan item" @@ -591,8 +587,8 @@ addRelay: "Tambahkan relay" inboxUrl: "URL Kotak masuk" addedRelays: "Relay yang ditambahkan" serviceworkerInfo: "Harus diaktifkan untuk pemberitahuan push." -deletedNote: "Catatan yang dihapus" -invisibleNote: "Catatan yang disembunyikan" +deletedNote: "Postingan yang dihapus" +invisibleNote: "Postingan tidak terlihat" enableInfiniteScroll: "Aktifkan gulir tak terbatas" visibility: "Visibilitas" poll: "Angket" @@ -602,8 +598,8 @@ disablePlayer: "Tutup pemutar video" expandTweet: "Perluas utas" themeEditor: "Penyunting tema" description: "Deskripsi" -describeFile: "Tambahkan keterangan" -enterFileDescription: "Masukkan keterangan" +describeFile: "Tambahkan deskripsi" +enterFileDescription: "Masukkan deskripsi" author: "Pembuat" leaveConfirm: "Ada perubahan yang belum disimpan. Apakah kamu ingin membuangnya?" manage: "Manajemen" @@ -627,8 +623,8 @@ notificationType: "Jenis pemberitahuan" edit: "Sunting" emailServer: "Peladen surel" enableEmail: "Nyalakan distribusi surel" -emailConfigInfo: "Digunakan untuk mengonfirmasi surel kamu disaat mendaftar dan lupa\ - \ kata sandi" +emailConfigInfo: "Digunakan untuk mengonfirmasi surel kamu disaat mendaftar dan lupa + kata sandi" email: "Surel" emailAddress: "Alamat surel" smtpConfig: "Konfigurasi peladen SMTP" @@ -636,16 +632,16 @@ smtpHost: "Host" smtpPort: "Port" smtpUser: "Nama Pengguna" smtpPass: "Kata sandi" -emptyToDisableSmtpAuth: "Kosongkan nama pengguna dan kata sandi untuk menonaktifkan\ - \ verifikasi SMTP" +emptyToDisableSmtpAuth: "Kosongkan nama pengguna dan kata sandi untuk menonaktifkan + verifikasi SMTP" smtpSecure: "Gunakan SSL/TLS implisit untuk koneksi SMTP" smtpSecureInfo: "Matikan ini ketika menggunakan STARTTLS" testEmail: "Tes pengiriman surel" wordMute: "Bisukan kata" regexpError: "Kesalahan ekspresi reguler" -regexpErrorDescription: "Galat terjadi pada baris {line} ekspresi reguler dari {tab}\ - \ kata yang dibisukan:" -instanceMute: "Bisuka instansi" +regexpErrorDescription: "Galat terjadi pada baris {line} ekspresi reguler dari {tab} + kata yang dibisukan:" +instanceMute: "Server Dibisukan" userSaysSomething: "{name} mengatakan sesuatu" makeActive: "Aktifkan" display: "Tampilkan" @@ -658,62 +654,62 @@ database: "Basis data" channel: "Kanal" create: "Buat" notificationSetting: "Pengaturan Pemberitahuan" -notificationSettingDesc: "Pilih tipe pemberitahuan untuk ditampilkan" +notificationSettingDesc: "Pilih tipe pemberitahuan untuk ditampilkan." useGlobalSetting: "Gunakan setelan global" -useGlobalSettingDesc: "Jika dinyalakan, setelan pemberitahuan akun kamu akan digunakan.\ - \ Jika dimatikan, konfigurasi secara individu dapat dibuat." +useGlobalSettingDesc: "Jika dinyalakan, setelan pemberitahuan akun kamu akan digunakan. + Jika dimatikan, konfigurasi secara individu dapat dibuat." other: "Lainnya" regenerateLoginToken: "Perbarui token login" -regenerateLoginTokenDescription: "Perbarui token yang digunakan secara internal saat\ - \ login. Normalnya aksi ini tidak diperlukan. Jika diperbarui, semua perangkat akan\ - \ dilogout." -setMultipleBySeparatingWithSpace: "Kamu dapat menyetel banyak dengan memisahkannya\ - \ menggunakan spasi." +regenerateLoginTokenDescription: "Perbarui token yang digunakan secara internal saat + login. Normalnya aksi ini tidak diperlukan. Jika diperbarui, semua perangkat akan + dilogout." +setMultipleBySeparatingWithSpace: "Kamu dapat menyetel banyak dengan memisahkannya + menggunakan spasi." fileIdOrUrl: "File-ID atau URL" behavior: "Perilaku" sample: "Contoh" abuseReports: "Laporkan" reportAbuse: "Laporkan" reportAbuseOf: "Laporkan {name}" -fillAbuseReportDescription: "Mohon isi rincian laporan. Jika laporan ini mengenai\ - \ catatan yang spesifik, mohon lampirkan serta URL catatan tersebut." +fillAbuseReportDescription: "Mohon isi rincian laporan. Jika laporan ini mengenai + postingan yang spesifik, mohon lampirkan serta URL postingan tersebut." abuseReported: "Laporan kamu telah dikirimkan. Terima kasih." reporter: "Pelapor" reporteeOrigin: "Yang dilaporkan" reporterOrigin: "Pelapor" -forwardReport: "Teruskan laporan ke instansi luar" -forwardReportIsAnonymous: "Untuk melindungi privasi akun kamu, akun anonim dari sistem\ - \ akan digunakan sebagai pelapor pada instansi luar." +forwardReport: "Teruskan laporan ke server luar" +forwardReportIsAnonymous: "Untuk melindungi privasi akun kamu, akun anonim dari sistem + akan digunakan sebagai pelapor pada server luar." send: "Kirim" abuseMarkAsResolved: "Tandai laporan sebagai selesai" openInNewTab: "Buka di tab baru" openInSideView: "Buka di tampilan samping" defaultNavigationBehaviour: "Navigasi bawaan" -editTheseSettingsMayBreakAccount: "Menyunting pengaturan ini memiliki kemungkinan\ - \ untuk merusak akun kamu." -instanceTicker: "Informasi pengguna pada instansi" +editTheseSettingsMayBreakAccount: "Menyunting pengaturan ini memiliki kemungkinan + untuk merusak akun kamu." +instanceTicker: "Informasi server postingan" waitingFor: "Menunggu untuk {x}" random: "Acak" system: "Sistem" -switchUi: "Ubah UI" +switchUi: "Tata letak" desktop: "Desktop" clip: "Klip" createNew: "Buat baru" optional: "Opsional" createNewClip: "Buat klip baru" unclip: "Batalkan klip" -confirmToUnclipAlreadyClippedNote: "Catatan ini sudah disertakan di klip \"{name}\"\ - . Yakin ingin membatalkan catatan dari klip ini?" +confirmToUnclipAlreadyClippedNote: "Postingan ini sudah disertakan di klip \"{name}\"\ + . Yakin ingin menghapus postingan dari klip ini?" public: "Publik" -i18nInfo: "Calckey diterjemahkan ke dalam banyak bahasa oleh sukarelawan. Kamu dapat\ - \ ikut membantu di {link}." +i18nInfo: "Firefish diterjemahkan ke dalam banyak bahasa oleh sukarelawan. Kamu dapat + ikut membantu di {link}." manageAccessTokens: "Kelola access token" accountInfo: "Informasi akun" -notesCount: "Jumlah catatan" +notesCount: "Jumlah postingan" repliesCount: "Jumlah balasan terkirim" -renotesCount: "Jumlah renote terkirim" +renotesCount: "Jumlah postingan ulang terkirim" repliedCount: "Jumlah balasan diterima" -renotedCount: "Jumlah renote diterima" +renotedCount: "Jumlah postingan ulang diterima" followingCount: "Jumlah akun yang diikuti" followersCount: "Jumlah pengikut" sentReactionsCount: "Jumlah reaksi yang terkirim" @@ -725,19 +721,18 @@ no: "Tidak" driveFilesCount: "Jumlah berkas drive" driveUsage: "Penggunaan ruang penyimpanan drive" noCrawle: "Tolak pengindeksan crawler" -noCrawleDescription: "Meminta mesin pencari untuk tidak mengindeks halaman profil\ - \ kamu, catatan, Halaman, dll." -lockedAccountInfo: "Kecuali kamu menyetel visibilitas catatan milikmu ke \"Hanya pengikut\"\ - , catatan milikmu akan dapat dilihat oleh siapa saja, bahkan jika kamu memerlukan\ - \ pengikut untuk disetujui secara manual." -alwaysMarkSensitive: "Tandai media dalam catatan sebagai media sensitif" +noCrawleDescription: "Minta mesin pencari eksternal untuk tidak mengindeks kontenmu." +lockedAccountInfo: "Kecuali kamu mengatur visibilitas postingan milikmu ke \"Hanya + pengikut\", postingan milikmu akan dapat dilihat oleh siapa saja, bahkan jika kamu + memerlukan pengikut untuk disetujui secara manual." +alwaysMarkSensitive: "Tandai sebagai media sensitif secara bawaan" loadRawImages: "Tampilkan lampiran gambar secara penuh daripada thumbnail" disableShowingAnimatedImages: "Jangan mainkan gambar bergerak" -verificationEmailSent: "Surel verifikasi telah dikirimkan. Mohon akses tautan yang\ - \ telah disertakan untuk menyelesaikan verifikasi." +verificationEmailSent: "Surel verifikasi telah dikirimkan. Mohon akses tautan yang + telah disertakan untuk menyelesaikan verifikasi." notSet: "Tidak disetel" emailVerified: "Surel telah diverifikasi" -noteFavoritesCount: "Jumlah catatan yang difavoritkan" +noteFavoritesCount: "Jumlah postingan yang dimarkah" pageLikesCount: "Jumlah suka yang diterima Halaman" pageLikedCount: "Jumlah Halaman yang disukai" contact: "Kontak" @@ -746,27 +741,27 @@ clips: "Klip" experimentalFeatures: "Fitur eksperimental" developer: "Pengembang" makeExplorable: "Buat akun tampil di \"Jelajahi\"" -makeExplorableDescription: "Jika kamu mematikan ini, akun kamu tidak akan muncul di\ - \ bagian \"Jelajahi:" -showGapBetweenNotesInTimeline: "Tampilkan jarak diantara catatan pada linimasa" +makeExplorableDescription: "Jika kamu menonaktifkan ini, akun kamu tidak akan muncul + di bagian \"Jelajahi\"." +showGapBetweenNotesInTimeline: "Tampilkan jarak diantara postingan pada linimasa" duplicate: "Duplikat" left: "Kiri" center: "Tengah" wide: "Lebar" narrow: "Sempit" -reloadToApplySetting: "Pengaturan ini akan diterapkan saat memuat halaman kembali.\ - \ Apakah kamu ingin memuat halaman kembali sekarang?" +reloadToApplySetting: "Pengaturan ini akan diterapkan saat memuat halaman kembali. + Apakah kamu ingin memuat halaman kembali sekarang?" needReloadToApply: "Pengaturan ini hanya akan diterapkan setelah memuat ulang halaman." showTitlebar: "Tampilkan bilah judul" clearCache: "Hapus tembolok" onlineUsersCount: "{n} orang sedang daring" nUsers: "{n} Pengguna" -nNotes: "{n} Catatan" +nNotes: "{n} Postingan" sendErrorReports: "Kirim laporan kesalahan" -sendErrorReportsDescription: "Ketika dinyalakan, informasi kesalahan rinci akan dibagikan\ - \ dengan Calckey ketika masalah terjadi, hal ini untuk membantu kualitas Calckey.\ - \ Fitur ini memungkinkan memuat informasi seperti sistem operasi yang kamu gunakan\ - \ dan versinya, aplikasi peramban yang kamu gunakan, riwayat aktivitas kamu, dll." +sendErrorReportsDescription: "Ketika diaktifkan, informasi kesalahan rinci akan dibagikan + dengan Firefish ketika masalah terjadi, hal ini untuk membantu kualitas Firefish.\n + Ini akan memuat informasi antara lain versi sistem operasi yang kamu gunakan, peramban + yang dipakai, riwayat aktivitas kamu di Firefish, dll." myTheme: "Tema saya" backgroundColor: "Latar Belakang" accentColor: "Aksen" @@ -790,7 +785,7 @@ capacity: "Kapasitas" inUse: "Digunakan" editCode: "Sunting kode" apply: "Terapkan" -receiveAnnouncementFromInstance: "Terima pemberitahuan surel dari instansi ini" +receiveAnnouncementFromInstance: "Terima pemberitahuan dari server ini" emailNotification: "Pemberitahuan surel" publish: "Terbitkan" inChannelSearch: "Cari di kanal" @@ -799,29 +794,29 @@ typingUsers: "{users} sedang mengetik" jumpToSpecifiedDate: "Loncat ke tanggal spesifik" showingPastTimeline: "Sedang menampilkan linimasa lama" clear: "Bersihkan" -markAllAsRead: "Tandai semua telah dibaca" +markAllAsRead: "Tandai semua sudah dibaca" goBack: "Kembali" unlikeConfirm: "Yakin ingin hapus sukamu?" fullView: "Tampilan penuh" quitFullView: "Keluar tampilan penuh" addDescription: "Tambahkan deskripsi" -userPagePinTip: "Kamu dapat membuat catatan untuk ditampilkan disini dengan memilih\ - \ \"Sematkan ke profil\" dari menu pada catatan individu." -notSpecifiedMentionWarning: "Catatan ini mengandung sebutan dari pengguna yang tidak\ - \ dimuat sebagai penerima" +userPagePinTip: "Kamu dapat menampilkan postingan di sini dengan memilih \"Sematkan + ke profil\" dari menu pada sebuah postingan." +notSpecifiedMentionWarning: "Postingan ini mengandung sebutan dari pengguna yang tidak + disertakan sebagai penerima" info: "Informasi" userInfo: "Informasi pengguna" unknown: "Tidak diketahui" onlineStatus: "Status daring" hideOnlineStatus: "Sembunyikan status daring" -hideOnlineStatusDescription: "Menyembunyikan status daring kamu umengurangi kenyamanan\ - \ untuk beberapa fungsi seperti contohnya pencarian." +hideOnlineStatusDescription: "Menyembunyikan status daring kamu umengurangi kenyamanan + untuk beberapa fungsi seperti contohnya pencarian." online: "Daring" active: "Aktif" offline: "Luring" notRecommended: "Tidak disarankan" botProtection: "Perlindungan Bot" -instanceBlocking: "Instansi yang diblokir" +instanceBlocking: "Pengelolaan Federasi" selectAccount: "Pilih akun" switchAccount: "Ganti akun" enabled: "Aktif" @@ -838,8 +833,8 @@ postToGallery: "Posting ke galeri" gallery: "Galeri" recentPosts: "Postingan terbaru" popularPosts: "Postingan populer" -shareWithNote: "Bagikan dengan catatan" -ads: "Iklan" +shareWithNote: "Bagikan dengan postingan" +ads: "Spanduk komunitas" expiration: "Batas akhir" memo: "Memo" priority: "Prioritas" @@ -849,9 +844,9 @@ low: "Rendah" emailNotConfiguredWarning: "Alamat surel tidak disetel." ratio: "Rasio" previewNoteText: "Tampilkan pratinjau" -customCss: "Custom CSS" -customCssWarn: "Pengaturan ini seharusnya digunakan jika kamu tahu cara kerjanya.\ - \ Memasukkan nilai yang tidak tepat dapat menyebabkan klien tidak berfungsi semestinya." +customCss: "CSS khusus" +customCssWarn: "Pengaturan ini seharusnya digunakan jika kamu tahu cara kerjanya. + Memasukkan nilai yang tidak tepat dapat menyebabkan klien tidak berfungsi semestinya." global: "Global" squareAvatars: "Tampilkan avatar sebagai persegi" sent: "Kirim" @@ -861,14 +856,14 @@ hashtags: "Tagar" troubleshooting: "Penyelesaian Masalah" useBlurEffect: "Gunakan efek blur pada antarmuka" learnMore: "Pelajari lebih lanjut" -misskeyUpdated: "Calckey telah dimutakhirkan!" +misskeyUpdated: "Firefish telah dimutakhirkan!" whatIsNew: "Lihat perubahan pemutakhiran" translate: "Terjemahkan" translatedFrom: "Terjemahkan dari {x}" accountDeletionInProgress: "Penghapusan akun sedang dalam proses" -usernameInfo: "Nama yang mengidentifikasikan akun kamu dari yang lain pada peladen\ - \ ini. Kamu dapat menggunakan alfabet (a~z, A~Z), digit (0~9) atau garis bawah (_).\ - \ Username tidak dapat diubah setelahnya." +usernameInfo: "Nama yang mengidentifikasikan akun kamu dari yang lain pada peladen + ini. Kamu dapat menggunakan alfabet (a~z, A~Z), digit (0~9) atau garis bawah (_). + Username tidak dapat diubah setelahnya." aiChanMode: "Mode Ai" keepCw: "Biarkan Peringatan Konten" pubSub: "Akun Pub/Sub" @@ -884,35 +879,35 @@ filter: "Saring" controlPanel: "Panel kendali" manageAccounts: "Kelola Akun" makeReactionsPublic: "Tampilkan riwayat reaksi ke publik" -makeReactionsPublicDescription: "Pengaturan ini akan membuat daftar dari semua reaksi\ - \ masa lalu kamu ditampilkan secara publik." -classic: "Klasik" +makeReactionsPublicDescription: "Pengaturan ini akan membuat daftar dari semua reaksi + masa lalu kamu ditampilkan secara publik." +classic: "Tengah" muteThread: "Bisukan thread" unmuteThread: "Suarakan thread" ffVisibility: "Visibilitas Mengikuti/Pengikut" -ffVisibilityDescription: "Mengatur siapa yang dapat melihat pengikutmu dan yang kamu\ - \ ikuti." -continueThread: "Lihat lanjutan thread" -deleteAccountConfirm: "Akun akan dihapus. Apakah kamu yakin?" +ffVisibilityDescription: "Mengatur siapa yang dapat melihat pengikutmu dan yang kamu + ikuti." +continueThread: "Lihat lanjutan utas" +deleteAccountConfirm: "Akun ini akan dihapus secara permanen. Lanjutkan?" incorrectPassword: "Kata sandi salah." voteConfirm: "Konfirmasi suara kamu untuk ({choice})?" hide: "Sembunyikan" leaveGroup: "Keluar grup" leaveGroupConfirm: "Apakah kamu yakin untuk keluar dari \"{name}\"?" useDrawerReactionPickerForMobile: "Tampilkan bilah reaksi sebagai laci di ponsel" -welcomeBackWithName: "Selamat datang kembali, {name}." -clickToFinishEmailVerification: "Mohon klik [{ok}] untuk menyelesaikan verifikasi\ - \ email." +welcomeBackWithName: "Selamat datang kembali, {name}" +clickToFinishEmailVerification: "Mohon klik [{ok}] untuk menyelesaikan verifikasi + email." overridedDeviceKind: "Tipe perangkat" smartphone: "Ponsel" tablet: "Tablet" auto: "Otomatis" -themeColor: "Warna Tema" +themeColor: "Warna Jam Server" size: "Ukuran" numberOfColumn: "Jumlah per kolom" searchByGoogle: "Penelusuran" -instanceDefaultLightTheme: "Bawaan instan tema terang" -instanceDefaultDarkTheme: "Bawaan instan tema gelap" +instanceDefaultLightTheme: "Tema terang bawaan ranah server" +instanceDefaultDarkTheme: "Tema gelap bawaan ranah server" instanceDefaultThemeDescription: "Masukkan kode tema di format obyek." mutePeriod: "Batas waktu bisu" indefinitely: "Selamanya" @@ -933,7 +928,7 @@ localOnly: "Hanya lokal" account: "Akun" _emailUnavailable: used: "Alamat surel ini telah digunakan" - format: "Format tidak valid." + format: "Format alamat surel ini tidak valid" disposable: "Alamat surel temporer tidak dapat digunakan" mx: "Peladen alamat surel ini tidak valid" smtp: "Peladen alamat surel ini tidak merespon" @@ -944,30 +939,28 @@ _ffVisibility: _signup: almostThere: "Hampir selesai" emailAddressInfo: "Mohon masukkan alamat surel kamu." - emailSent: "Konfirmasi surel telah dikirimkan ke alamat surel kamu ({email}). Mohon\ - \ klik tautan yang tercantum di dalamnya untuk menyelesaikan pembuatan akun." + emailSent: "Konfirmasi surel telah dikirimkan ke alamat surel kamu ({email}). Mohon + klik tautan yang tercantum di dalamnya untuk menyelesaikan pembuatan akun." _accountDelete: accountDelete: "Hapus akun" - mayTakeTime: "Karena penghapusan akun merupakan proses yang berat dan intensif,\ - \ kemungkinan dapat membutuhkan waktu untuk menyelesaikan tergantung daripada\ - \ berapa banyak konten yang kamu buat dan berapa banyak berkas yang telah kamu\ - \ unggah." - sendEmail: "Setelah penghapusan akun selesai, pemberitahuan akan dikirimkan ke alamat\ - \ surel yang terdaftarkan pada akun ini." + mayTakeTime: "Karena penghapusan akun merupakan proses yang berat dan intensif, + kemungkinan dapat membutuhkan waktu untuk menyelesaikan tergantung daripada berapa + banyak konten yang kamu buat dan berapa banyak berkas yang telah kamu unggah." + sendEmail: "Setelah penghapusan akun selesai, pemberitahuan akan dikirimkan ke alamat + surel yang terdaftarkan pada akun ini." requestAccountDelete: "Minta penghapusan akun" - started: "Penghapusan telah dimulai" + started: "Penghapusan telah dimulai." inProgress: "Penghapusan sedang dalam proses" _ad: back: "Kembali" reduceFrequencyOfThisAd: "Tampilkan iklan ini lebih sedikit" _forgotPassword: - enterEmail: "Masukkan alamat surel yang kamu gunakan pada saat mendaftar. Sebuah\ - \ tautan untuk mengatur ulang kata sandi kamu akan dikirimkan ke alamat surel\ - \ tersebut." - ifNoEmail: "Apabila kamu tidak menggunakan surel pada saat pendaftaran, mohon hubungi\ - \ admin segera." - contactAdmin: "Instansi ini tidak mendukung menggunakan alamat surel, mohon kontak\ - \ admin untuk mengatur ulang password kamu." + enterEmail: "Masukkan alamat surel yang kamu gunakan pada saat mendaftar. Sebuah + tautan untuk mengatur ulang kata sandi kamu akan dikirimkan ke alamat surel tersebut." + ifNoEmail: "Apabila kamu tidak menggunakan surel pada saat pendaftaran, mohon hubungi + admin server segera." + contactAdmin: "Server ini tidak mendukung menggunakan alamat surel, mohon kontak + admin untuk mengatur ulang password kamu." _gallery: my: "Postingan saya" liked: "Postingan yang disukai" @@ -988,29 +981,39 @@ _registry: keys: "Kunci" domain: "Domain" createKey: "Buat kunci" -_aboutMisskey: - about: "Calckey adalah perangkat lunak sumber terbuka yang sedang dikembangkan oleh\ - \ syuilo sejak 2014." +_aboutFirefish: + about: "Firefish adalah perangkat lunak sumber terbuka yang sedang dikembangkan + oleh syuilo sejak 2014." contributors: "Kontributor utama" allContributors: "Seluruh kontributor" source: "Sumber kode" - translation: "Terjemahkan Calckey" - donate: "Donasi ke Calckey" - morePatrons: "Kami sangat mengapresiasi dukungan dari banyak penolong lain yang\ - \ tidak tercantum disini. Terima kasih! \U0001F970" + translation: "Terjemahkan Firefish" + donate: "Donasi ke Firefish" + morePatrons: "Kami sangat mengapresiasi dukungan dari banyak penolong lain yang + tidak tercantum disini. Terima kasih! 🥰" patrons: "Pendukung" + patronsList: Diurutkan secara kronologis, bukan berdasarkan jumlah donasi. Berdonasilah + dengan tautan di atas supaya nama kamu ada di sini! + sponsors: Sponsor Firefish + donateTitle: Suka Firefish? + pleaseDonateToFirefish: Silakan pertimbangkan berdonasi ke Firefish untuk mendukung + pengembangannya. + pleaseDonateToHost: Silakan pertimbangkan juga berdonasi ke server rumah kamu, {host}, + untuk membantu dengan biaya operasi. + donateHost: Berdonasi ke {host} + misskeyContributors: Kontributor Misskey _nsfw: respect: "Sembunyikan media NSFW" ignore: "Jangan sembunyikan media NSFW" force: "Sembunyikan semua media" _mfm: cheatSheet: "Contekan MFM" - intro: "MFM adalah Calckey-exclusive Markup Language yang dapat digunakan di banyak\ - \ tempat. Berikut kamu bisa melihat daftar dari syntax MFM yang ada." - dummy: "Calckey membentangkan dunia Fediverse" + intro: "MFM adalah Firefish-exclusive Markup Language yang dapat digunakan di banyak + tempat. Berikut kamu bisa melihat daftar dari syntax MFM yang ada." + dummy: "Firefish membentangkan dunia Fediverse" mention: "Sebut" - mentionDescription: "Kamu dapat menentukan pengguna tertentu dengan menggunakan\ - \ simbol-At dan nama engguna mereka." + mentionDescription: "Kamu dapat menentukan pengguna tertentu dengan menggunakan + simbol-At dan nama engguna mereka." hashtag: "Tagar" hashtagDescription: "Kamu dapat menentukan tagar dengan menggunakan angka dan teks." url: "URL" @@ -1026,24 +1029,23 @@ _mfm: inlineCode: "Kode (Dalam baris)" inlineCodeDescription: "Menampilkan sorotan sintaks dalam baris untuk kode(program-)." blockCode: "Kode (Blok)" - blockCodeDescription: "Menampilkan sorotan sintaks untuk kode(program-) multi baris\ - \ dalam sebuah blok." + blockCodeDescription: "Menampilkan sorotan sintaks untuk kode(program-) multi baris + dalam sebuah blok." inlineMath: "Matematika (Dalam baris)" - inlineMathDescription: "Menampilkan formula matematika (KaTeX) dalam baris." + inlineMathDescription: "Menampilkan formula matematika (KaTeX) dalam baris" blockMath: "Matematika (Blok)" - blockMathDescription: "Menampilkan formula matematika (KaTeX) multibaris dalam sebuah\ - \ blok." + blockMathDescription: "Tampilkan formula matematika (KaTeX) dalam blok" quote: "Kutip" quoteDescription: "Menampilkan konten sebagai kutipan." emoji: "Emoji kustom" - emojiDescription: "Emoji kustom dapat ditampilkan dengan mengurung nama emoji kustom\ - \ menggunakan tanda titik dua." + emojiDescription: "Emoji kustom dapat ditampilkan dengan mengurung nama emoji kustom + menggunakan tanda titik dua." search: "Penelusuran" searchDescription: "Menampilkan kotak pencarian dengan teks yang sudah dimasukkan." flip: "Balik" flipDescription: "Balikkan konten secara horizontal atau vertikal." jelly: "Animasi (Jelly)" - jellyDescription: "Menerapkan animasi seperti jelly" + jellyDescription: "Beri konten dengan animasi seperti jeli." tada: "Animasi (Tada)" tadaDescription: "Menerapkan animasi seperti \"Kejutan!\"." jump: "Animasi (Loncat)" @@ -1063,8 +1065,8 @@ _mfm: x4: "Sangat besar" x4Description: "Tampilka konten menjadi sangat besar." blur: "Buram" - blurDescription: "Konten dapat diburamkan dengan efek ini. Konten dapat ditampilkan\ - \ dengan jelas dengan melayangkan kursor tetikus di atasnya." + blurDescription: "Konten dapat diburamkan dengan efek ini. Konten dapat ditampilkan + dengan jelas dengan melayangkan kursor tetikus di atasnya." font: "Font" fontDescription: "Setel font yang ditampilkan untuk konten." rainbow: "Pelangi" @@ -1073,6 +1075,27 @@ _mfm: sparkleDescription: "Memberikan konten efek partikel kelap-kelip." rotate: "Putar" rotateDescription: "Putar konten sesuai sudut yang ditentukan." + play: Mainkan MFM + stop: Hentikan MFM + warn: MFM dapat berisi animasi yang sangat cepat + advanced: MFM tingkat lanjut + foreground: Warna latar depan + foregroundDescription: Ubah warna depan teks. + backgroundDescription: Ubah warna latar belakang teks. + plainDescription: Menonaktifkan efek dari semua MFM dalam efek MFM ini. + crop: Pangkas + alwaysPlay: Selalu mainkan MFM beranimasi secara otomatis + advancedDescription: Jika dinonaktifkan, hanya memperbolehkan markup dasar kecuali + jika MFM beranimasi dimainkan + positionDescription: Gerakkan konten dengan jumlah yang ditentukan. + scale: Skala + cropDescription: Pangkas konten. + background: Warna latar belakang + plain: Biasa + position: Posisi + scaleDescription: Ubah skala konten dengan jumlah yang ditentukan. + fade: Memudar + fadeDescription: Memudar konten. _instanceTicker: none: "Jangan tampilkan" remote: "Tampilkan untuk pengguna luar" @@ -1081,6 +1104,7 @@ _serverDisconnectedBehavior: reload: "Muat ulang otomatis" dialog: "Tampilkan dialog peringatan" quiet: "Tampilkan peringatan tidak mengganggu" + nothing: Jangan lakukan apa pun _channel: create: "Buat saluran" edit: "Sunting saluran" @@ -1090,7 +1114,9 @@ _channel: owned: "Dimiliki" following: "Mengikuti" usersCount: "{n} Partisipan" - notesCount: "terdapat {n} catatan" + notesCount: "{n} Postingan" + nameOnly: Nama saja + nameAndDescription: Nama dan deskripsi _menuDisplay: sideFull: "Horisontal" sideIcon: "Horisontal (Ikon)" @@ -1098,24 +1124,24 @@ _menuDisplay: hide: "Sembunyikan" _wordMute: muteWords: "Kata yang dibisukan" - muteWordsDescription: "Pisahkan dengan spasi untuk kondisi AND. Pisahkan dengan\ - \ baris baru untuk kondisi OR." - muteWordsDescription2: "Kurung kata kunci dengan garis miring untuk menggunakan\ - \ regular expressions." - softDescription: "Sembunyikan catatan yang memenuhi aturan kondisi dari linimasa." - hardDescription: "Cegah catatan memenuhi aturan kondisi dari ditambahkan ke linimasa.\ - \ Dengan tambahan, catatan berikut tidak akan ditambahkan ke linimasa meskipun\ - \ jika kondisi tersebut diubah." + muteWordsDescription: "Pisahkan dengan spasi untuk kondisi AND. Pisahkan dengan + baris baru untuk kondisi OR." + muteWordsDescription2: "Kurung kata kunci dengan garis miring untuk menggunakan + regular expressions." + softDescription: "Sembunyikan postingan yang memenuhi aturan kondisi dari lini masa." + hardDescription: "Cegah postingan memenuhi aturan kondisi dari ditambahkan ke lini + masa. Dengan tambahan, kiriman berikut tidak akan ditambahkan ke lini masa meskipun + jika kondisi tersebut diubah." soft: "Lembut" hard: "Keras" - mutedNotes: "Catatan yang dibisukan" + mutedNotes: "Postingan yang dibisukan" _instanceMute: - instanceMuteDescription: "Pengaturan ini akan membisukan note/renote apa saja dari\ - \ instansi yang terdaftar, termasuk pengguna yang membalas pengguna lain dalam\ - \ instansi yang dibisukan." + instanceMuteDescription: "Pengaturan ini akan membisukan postingan/pembagian apa + saja dari server yang terdaftar, termasuk pengguna yang membalas pengguna lain + dalam server yang dibisukan." instanceMuteDescription2: "Pisah dengan baris baru" - title: "Sembunyikan note dari instansi terdaftar." - heading: "Daftar instansi yang akan dibisukan" + title: "Sembunyikan note dari server terdaftar." + heading: "Daftar server yang akan dibisukan" _theme: explore: "Jelajahi tema" install: "Pasang tema" @@ -1144,8 +1170,8 @@ _theme: darken: "Mengelamkan" lighten: "Menerangkan" inputConstantName: "Masukkan nama untuk konstanta" - importInfo: "Jika kamu memasukkan kode tema disini, kamu dapat mengimpornya ke penyunting\ - \ tema" + importInfo: "Jika kamu memasukkan kode tema disini, kamu dapat mengimpornya ke penyunting + tema" deleteConstantConfirm: "apakah kamu ingin menghapus konstanta {const}?" keys: accent: "Aksen" @@ -1155,7 +1181,7 @@ _theme: indicator: "Indikator" panel: "Panel" shadow: "Bayangan" - header: "Header" + header: "Tajuk" navBg: "Latar belakang bilah samping" navFg: "Teks bilah samping" navHoverFg: "Teks bilah samping (Mengambang)" @@ -1165,7 +1191,7 @@ _theme: hashtag: "Tagar" mention: "Sebut" mentionMe: "Sebutan (saya)" - renote: "Renote" + renote: "Bagikan" modalBg: "Latar belakang modal" divider: "Pembagi" scrollbarHandle: "Pegangan bilah gulir" @@ -1192,8 +1218,8 @@ _theme: accentLighten: "Aksen (Terang)" fgHighlighted: "Teks yang disorot" _sfx: - note: "Catatan" - noteMy: "Catatan (Saya)" + note: "Postingan baru" + noteMy: "Postingan sendiri" notification: "Pemberitahuan" chat: "Pesan" chatBg: "Obrolan (Latar Belakang)" @@ -1215,58 +1241,81 @@ _time: hour: "jam" day: "hari" _tutorial: - title: "Cara menggunakan Calckey" + title: "Cara menggunakan Firefish" step1_1: "Selamat datang!" - step1_2: "Halaman ini disebut \"linimasa\". Halaman ini menampilkan \"catatan\"\ - \ yang diurutkan secara kronologis dari orang-orang yang kamu \"ikuti\"." - step1_3: "Linimasa kamu kosong, karena kamu belum mencatat catatan apapun atau mengikuti\ - \ siapapun." - step2_1: "Selesaikan menyetel profilmu sebelum menulis sebuah catatan atau mengikuti\ - \ seseorang." - step2_2: "Menyediakan beberapa informasi tentang siapa kamu akan membuat orang lain\ - \ mudah untuk mengikutimu kembali." + step1_2: "Ayo siapkan. Lekas mulai tanpa basa-basi!" + step1_3: "Linimasa kamu kosong, karena kamu belum mencatat catatan apapun atau mengikuti + siapapun." + step2_1: "Pertama, isi profilmu lebih dahulu." + step2_2: "Menyediakan beberapa informasi tentang siapa kamu akan membuatnya lebih + mudah bagi orang lain untuk menentukan jika mereka ingin postinganmu atau mengikutimu." step3_1: "Sekarang saatnya mengikuti beberapa orang!" - step3_2: "Langkah selanjutnya adalah membuat catatan. Kamu bisa lakukan ini dengan\ - \ mengklik ikon pensil pada layar kamu." - step3_3: "Isilah di dalam modal dan tekan tombol pada atas kanan untuk memcatat\ - \ catatan kamu." - step3_4: "Bingung tidak berpikiran untuk mengatakan sesuatu? Coba saja \"baru aja\ - \ ikutan bikin akun misskey punyaku\"!" - step4_1: "Selesai mencatat catatan pertamamu?" - step4_2: "Horee! Sekarang catatan pertamamu sudah ditampilkan di linimasa milikmu." - step5_1: "Sekarang, mari mencoba untuk membuat linimasamu lebih hidup dengan mengikuti\ - \ orang lain." - step5_2: "{featured} akan memperlihatkan catatan yang sedang tren saat ini untuk\ - \ kamu. {explore} akan membantumu untuk mencari pengguna yang sedang tren juga\ - \ saat ini. Coba ikuti seseorang yang kamu suka!" - step5_3: "Untuk mengikuti pengguna lain, klik pada ikon mereka dan tekan tombol\ - \ follow pada profil mereka." - step5_4: "Jika pengguna lain memiliki ikon gembok di sebelah nama mereka, maka pengguna\ - \ rersebut harus menyetujui permintaan mengikuti dari kamu secara manual." - step6_1: "Sekarang kamu dapat melihat catatan pengguna lain pada linimasamu." - step6_2: "Kamu juga bisa memberikan \"reaksi\" ke catatan orang lain untuk merespon\ - \ dengan cepat." - step6_3: "Untuk memberikan \"reaksi\", tekan tanda \"+\" pada catatan pengguna lain\ - \ dan pilih emoji yang kamu suka untuk memberikan reaksimu kepada mereka." - step7_1: "Yay, Selamat! Kamu sudah menyelesaikan tutorial dasar Calckey." - step7_2: "Jika kamu ingin mempelajari lebih lanjut tentang Calckey, cobalah berkunjung\ - \ ke bagian {help}." - step7_3: "Semoga berhasil dan bersenang-senanglah! \U0001F680" + step3_2: "Lini masa beranda dan sosial berdasarkan siapa yang kamu ikuti, jadi coba + ikuti beberapa akun untuk memulai.\nKlik lingkaran plus pada pojok kanan atas + pada profil untuk mengikuti mereka." + step3_3: "Isilah di dalam modal dan tekan tombol pada atas kanan untuk memcatat + catatan kamu." + step3_4: "Bingung tidak berpikiran untuk mengatakan sesuatu? Coba saja \"baru aja + ikutan bikin akun misskey punyaku\"!" + step4_1: "Mari kita lihat kamu di sana." + step4_2: "Untuk kiriman pertama kamu, beberapa orang biasanya membuat postingan + {introduction} atau \"Halo dunia!\" yang sederhana." + step5_1: "Linimasa, linimasa di mana-mana!" + step5_2: "Servermu memiliki {timelines} lini masa berbeda yang diaktifkan." + step5_3: "Lini masa Beranda {icon} adalah tempat di mana kamu bisa melihat postingan + dari akun yang kamu ikuti." + step5_4: "Linimasa Lokal {icon} adalah tempat kamu dapat melihat postingan dari + siapa pun di server ini." + step6_1: "Jadi, tempat apa ini?" + step6_2: "Ya, kamu tidak saja bergabung ke Firefish. Kamu telah bergabung ke sebuah + portal ke Fediverse, sebuah jaringan ribuan server yang saling berhubungan." + step6_3: "Setiap server bekerja dalam berbagai cara, dan tidak semua server menjalankan + Firefish. Ini salah satunya! Mungkin sedikit sulit, tetapi lama-lama kamu akan + mengerti." + step7_1: "Yay, Selamat! Kamu sudah menyelesaikan tutorial dasar Firefish." + step7_2: "Jika kamu ingin mempelajari lebih lanjut tentang Firefish, cobalah berkunjung + ke bagian {help}." + step7_3: "Semoga berhasil dan bersenang-senanglah! 🚀" + step5_6: Linimasa Rekomendasi {icon} adalah tempat kamu dapat melihat postingan + dari server yang direkomendasikan admin. + step6_4: Sekarang pergilah, bereksplorasi, dan senang-senang! + step5_5: Lini masa Sosial {icon} adalah kombinasi antara lini masa Beranda dan Lokal. + step5_7: Linimasa Global {icon} adalah tempat kamu dapat melihat postingan orang-orang + dari server yang terkoneksi. _2fa: alreadyRegistered: "Kamu telah mendaftarkan perangkat otentikasi dua faktor." registerTOTP: "Daftarkan perangkat baru" registerSecurityKey: "Daftarkan kunci keamanan baru" - step1: "Pertama, pasang aplikasi otentikasi (seperti {a} atau {b}) di perangkat\ - \ kamu." + step1: "Pertama, pasang aplikasi otentikasi (seperti {a} atau {b}) di perangkat + kamu." step2: "Lalu, pindai kode QR yang ada di layar." step2Url: "Di aplikasi desktop, masukkan URL berikut:" - step3: "Masukkan token yang telah disediakan oleh aplikasimu untuk menyelesaikan\ - \ pemasangan." - step4: "Mulai sekarang, upaya login apapun akan meminta token login dari aplikasi\ - \ otentikasi kamu." - securityKeyInfo: "Kamu dapat memasang otentikasi WebAuthN untuk mengamankan proses\ - \ login lebih lanjut dengan tidak hanya perangkat keras kunci keamanan yang mendukung\ - \ FIDO2, namun juga sidik jari atau otentikasi PIN pada perangkatmu." + step3: "Masukkan token yang telah disediakan oleh aplikasimu untuk menyelesaikan + pemasangan." + step4: "Mulai sekarang, upaya login apapun akan meminta token login dari aplikasi + otentikasi kamu." + securityKeyInfo: "Kamu dapat memasang otentikasi WebAuthN untuk mengamankan proses + login lebih lanjut dengan tidak hanya perangkat keras kunci keamanan yang mendukung + FIDO2, namun juga sidik jari atau otentikasi PIN pada perangkatmu." + renewTOTPConfirm: Ini akan menyebabkan kode verifikasi dari aplikasimu sebelumnya + berhenti bekerja + token: Token 2FA + chromePasskeyNotSupported: Kunci pas Chrome saat ini tidak didukung. + securityKeyName: Masukkan nama kunci + removeKey: Hapus kunci keamanan + step2Click: Mengklik kode QR ini akan mengizinkanmu mendaftarkan 2FA untuk kunci + keamanan atau apl ontentikasi ponsel. + step3Title: Masukkan kode otentikasi + securityKeyNotSupported: Perambanmu tidak mendukung kunci keamanan. + renewTOTPOk: Konfigurasi ulang + renewTOTPCancel: Batal + registerTOTPBeforeKey: Silakan atur apl otentikator untuk mendaftarkan kunci keamanan + atau kunci pas. + tapSecurityKey: Silakan ikuti perambanmu untuk mendaftarkan kunci keamanan atau + kunci pas + removeKeyConfirm: Yakin menghapus kunci {name}? + whyTOTPOnlyRenew: Apl otentikator tidak dapat dihapus selama kunci keamanan didaftarkan. + renewTOTP: Konfigurasi ulang apl otentikator _permissions: "read:account": "Lihat informasi akun" "write:account": "Sunting informasi akun" @@ -1282,7 +1331,7 @@ _permissions: "write:messaging": "Buat atau hapus obrolan" "read:mutes": "Lihat daftar orang yang dibisukan" "write:mutes": "Sunting daftar orang yang dibisukan" - "write:notes": "Buat atau hapus catatan" + "write:notes": "Buat atau hapus postingan" "read:notifications": "Lihat pemberitahuan" "write:notifications": "Sunting pemberitahuan" "read:reactions": "Lihat reaksi" @@ -1302,18 +1351,21 @@ _permissions: "write:gallery-likes": "Sunting daftar postingan galeri yang disukai" _auth: shareAccess: "Apakah kamu ingin mengijinkan \"{name}\" untuk mengakses akun ini?" - shareAccessAsk: "Apakah kamu ingin mengijinkan aplikasi ini untuk mengakses akun\ - \ kamu?" - permissionAsk: "Aplikasi ini membutuhkan beberapa ijin, yaitu:" + shareAccessAsk: "Apakah kamu ingin mengijinkan aplikasi ini untuk mengakses akun + kamu?" + permissionAsk: "Aplikasi ini membutuhkan izin berikut:" pleaseGoBack: "Mohon kembali ke aplikasi kamu" callback: "Mengembalikan kamu ke aplikasi" denied: "Akses ditolak" + copyAsk: 'Harap tempel kode otorisasi berikut ke aplikasi:' + allPermissions: Akses akun penuh _antennaSources: - all: "Semua catatan" - homeTimeline: "Catatan dari pengguna yang diikuti" - users: "Catatan dari pengguna tertentu" - userList: "Catatan dari daftar tertentu" - userGroup: "Catatan dari pengguna dalam grup yang ditentukan" + all: "Semua postingan" + homeTimeline: "Postingan dari pengguna yang diikuti" + users: "Postingan dari pengguna tertentu" + userList: "Postingan dari daftar tertentu" + userGroup: "Postingan dari pengguna dalam grup yang ditentukan" + instances: Postingan dari semua pengguna di server _weekday: sunday: "Minggu" monday: "Senin" @@ -1323,7 +1375,7 @@ _weekday: friday: "Jumat" saturday: "Sabtu" _widgets: - memo: "Catatan memo" + memo: "Catatan Tempel" notifications: "Pemberitahuan" timeline: "Linimasa" calendar: "Kalender" @@ -1332,16 +1384,26 @@ _widgets: rss: "Pembaca RSS" activity: "Aktivitas" photos: "Foto" - digitalClock: "Jam digital" + digitalClock: "Jam Digital" federation: "Federasi" - postForm: "Buat catatan" + postForm: "Formulir Posting" slideshow: "Slideshow" button: "Tombol" - onlineUsers: "Pengguna online" + onlineUsers: "Pengguna Daring" jobQueue: "Antrian kerja" - serverMetric: "Statistik peladen" + serverMetric: "Metrik Server" aiscript: "Konsol AiScript" aichan: "Ai" + rssTicker: Telegraf RSS + meiliIndexCount: Postingan yang terindeks + userList: Daftar Pengguna + instanceCloud: Server Awan + unixClock: Jam UNIX + meiliSize: Ukuran indeks + _userList: + chooseList: Pilih daftar + meiliStatus: Status Server + serverInfo: Info Server _cw: hide: "Sembunyikan" show: "Lihat konten" @@ -1371,19 +1433,19 @@ _poll: remainingSeconds: "Berakhir dalam {s} detik" _visibility: public: "Publik" - publicDescription: "Catat ke linimasa global" - home: "Beranda" - homeDescription: "Catat ke linimasa beranda saja" + publicDescription: "Postinganmu akan terlihat di semua linimasa publik" + home: "Tidak terdaftar" + homeDescription: "Posting ke lini masa beranda saja" followers: "Pengikut" - followersDescription: "Catat ke pengikut saja" + followersDescription: "Tampilkan ke pengikut dan pengguna yang disebut saja" specified: "Langsung" specifiedDescription: "Catat ke pengguna yang ditentukan saja" localOnly: "Hanya lokal" localOnlyDescription: "Hanya dapat dilihat di instansi lokal" _postForm: - replyPlaceholder: "Balas ke catatan ini..." - quotePlaceholder: "Kutip catatan ini..." - channelPlaceholder: "Posting ke kanal" + replyPlaceholder: "Balas ke postingan ini..." + quotePlaceholder: "Kutip postingan ini..." + channelPlaceholder: "Posting ke kanal..." _placeholders: a: "Sedang apa kamu saat ini?" b: "Apa yang terjadi di sekitarmu?" @@ -1398,14 +1460,17 @@ _profile: youCanIncludeHashtags: "Kamu juga dapat menambahkan tagar ke dalam bio." metadata: "Informasi tambahan" metadataEdit: "Sunting informasi tambahan" - metadataDescription: "Kamu dapat menampilkan hingga 4 bagian informasi tambahan\ - \ ke dalam profilmu." + metadataDescription: "Kamu dapat menampilkan hingga 4 bagian informasi tambahan + ke dalam profilmu. Kamu bisa menambahkan tag {a} atau tag {l} dengan {rel} untuk + memverifikasi tautan di profil kamu!" metadataLabel: "Label" metadataContent: "Isi" changeAvatar: "Ubah avatar" changeBanner: "Ubah header" + locationDescription: Jika kamu memasukkan kota lebih dahulu, ia akan menampilkan + waktu lokalmu ke pengguna lain. _exportOrImport: - allNotes: "Semua catatan" + allNotes: "Semua postingan" followingList: "Ikuti" muteList: "Bisukan" blockingList: "Blokir" @@ -1418,10 +1483,10 @@ _charts: usersIncDec: "Perbedaan dalam # pengguna" usersTotal: "Jumlah # pengguna" activeUsers: "Pengguna aktif" - notesIncDec: "Perbedaan # dalam catatan" - localNotesIncDec: "Perbedaan # dalam catatan lokal" - remoteNotesIncDec: "Perbedaan # dalam catatan luar" - notesTotal: "Total # catatan" + notesIncDec: "Perbedaan pada jumlah postingan" + localNotesIncDec: "Perbedaan di jumlah postingan lokal" + remoteNotesIncDec: "Perbedaan di jumlah postingan luar" + notesTotal: "Total jumlah postingan" filesIncDec: "Perbedaan # dalam berkas" filesTotal: "Jumlah # berkas" storageUsageIncDec: "Perbedaan dalam penggunaan penyimpanan" @@ -1430,9 +1495,9 @@ _instanceCharts: requests: "Permintaan" users: "Perbedaan dalam # pengguna" usersTotal: "Jumlah # pengguna kumulatif" - notes: "Perbedaan # dalam catatan" - notesTotal: "Jumlah # catatan kumulatif" - ff: "Perbedaan jumlah # dalam pengikut" + notes: "Perbedaan di jumlah postingan" + notesTotal: "Jumlah kumulatif postingan" + ff: "Perbedaan jumlah pengguna yang diikuti / pengikut " ffTotal: "Jumlah # pengikut kumulatif" cacheSize: "Perbedaan dalam ukuran tembolok" cacheSizeTotal: "Total ukuran tembolok kumulatif" @@ -1443,12 +1508,13 @@ _timelines: local: "Lokal" social: "Sosial" global: "Global" + recommended: Rekomendasi _pages: newPage: "Buat halaman baru" editPage: "Sunting halaman" readPage: "Lihat sumber kode aktif" created: "Halaman berhasil dibuat" - updated: "Halaman berhasil diperbaharui!" + updated: "Halaman berhasil disunting" deleted: "Halaman telah dihapus" pageSetting: "Pengaturan Halaman" nameAlreadyExists: "URL Halaman yang ditentukan sudah ada" @@ -1492,7 +1558,7 @@ _pages: if: "Jika" _if: variable: "Variabel" - post: "Buat catatan" + post: "Formulir posting" _post: text: "Isi" attachCanvasImage: "Posting dengan kanvas sebagai gambar" @@ -1517,10 +1583,10 @@ _pages: id: "ID Kanvas" width: "Lebar" height: "Tinggi" - note: "Catatan yang ditanam" + note: "Postingan tertanam" _note: - id: "ID Catatan" - idDescription: "Kamu dapat menyetel ini dengan menempelkan tautan URL Catatan." + id: "ID Postingan" + idDescription: "Kamu dapat menempelkan URL postingan di sini." detailed: "Tampilan rincian" switch: "Beralih" _switch: @@ -1720,8 +1786,8 @@ _pages: _for: arg1: "Jumlah angka untuk diulangi" arg2: "Aksi" - typeError: "Slot {slot} menerima tipe \"{expect}\", sayangnya nilai yang disediakan\ - \ adalah \"{actual}\"!" + typeError: "Slot {slot} menerima tipe \"{expect}\", sayangnya nilai yang disediakan + adalah \"{actual}\"!" thereIsEmptySlot: "Slot {slot} kosong!" types: string: "Teks" @@ -1742,7 +1808,7 @@ _notification: youGotMention: "{name} meyebut kamu" youGotReply: "{name} membalas kamu" youGotQuote: "{name} mengutip kamu" - youRenoted: "{name} me-renote kamu" + youRenoted: "Posting ulang dari {name}" youGotPoll: "{name} memilih di angket kamu" youGotMessagingMessageFromUser: "{name} mengirimi kamu pesan" youGotMessagingMessageFromGroup: "Sebuah pesan telah dikirim ke grup {name}" @@ -1757,7 +1823,7 @@ _notification: follow: "Ikuti" mention: "Sebut" reply: "Balasan" - renote: "Renote" + renote: "Postingan ulang" quote: "Kutip" reaction: "Reaksi" pollVote: "Memilih di angket" @@ -1769,7 +1835,10 @@ _notification: _actions: followBack: "Ikuti Kembali" reply: "Balas" - renote: "Renote" + renote: "Posting ulang" + reacted: mereaksi postinganmu + renoted: memposting ulang postinganmu + voted: memilih di angketmu _deck: alwaysShowMainColumn: "Selalu tampilkan kolom utama" columnAlign: "Luruskan kolom" @@ -1780,7 +1849,7 @@ _deck: swapDown: "Pindah ke bawah" stackLeft: "Tumpukkan di kolom kiri" popRight: "Keluarkan di kanan" - profile: "Profil" + profile: "Ruang Kerja" _columns: main: "Utama" widgets: "Widget" @@ -1789,4 +1858,318 @@ _deck: antenna: "Antena" list: "Daftar" mentions: "Sebutan" - direct: "Langsung" + direct: "Pesan langsung" + channel: Kanal + renameProfile: Ganti nama Ruang Kerja + nameAlreadyExists: Nama ruang kerja sudah ada. + newProfile: Ruang Kerja Baru + introduction: Buat antarmuka sempurna bagimu dengan mengatur kolom sesuka hati! + introduction2: Klik pada + di bagian kanan layar untuk menambah kolom baru yang + kamu inginkan. + deleteProfile: Hapus ruang kerja + configureColumn: Pengaturan kolom + widgetsIntroduction: Silakan pilih "Sunting gawit" pada menu kolom dan tambahkan + gawit. +instanceSecurity: Keamanan Server +removeReaction: Hapus reaksimu +accountMoved: 'Pengguna pindah ke akun baru:' +silencedInstances: Server yang Dibisukan +silencedInstancesDescription: Daftar nama host server yang ingin kamu bisukan. Akun + pada server yang didaftar dianggap sebagai "Dibisukan", dan hanya dapat membuat + permintaan mengikuti, dan tidak dapat menyebut akun lokal jika tidak diikuti. Ini + tidak akan mepengaruhi server yang diblokir. +noInstances: Tidak ada server +expandOnNoteClick: Buka postingan dengan klik +defaultValueIs: 'Bawaan: {value}' +enableRecommendedTimeline: Aktifkan linimasa rekomendasi +searchPlaceholder: Telusuri Firefish +addInstance: Tambah server +older: lebih lama +listsDesc: Daftar mengizinkanmu membuat linimasa berisi pengguna spesifik. Itu dapat + diakses dari halaman linimasa. +enableEmojiReactions: Aktifkan reaksi emoji +showEmojisInReactionNotifications: Tampilkan emoji dalam notifikasi reaksi +renoteMute: Bisukan postingan ulang +renoteUnmute: Bunyikan postingan ulang +antennasDesc: "Antena menampilkan postingan baru yang cocok dengan kriteriamu!\n Itu + dapat diakses dari halaman linimasa." +antennaInstancesDescription: Daftarkan satu host server per baris +expandOnNoteClickDesc: Jika nonaktif, kamu masih dapat membuka postingan dengan klik-kanan + menu atau mengklik tanggal waktu. +channelFederationWarn: Kanal belum terfederasi dengan server lain +clipsDesc: Klip seperti markah yang dikategorikan dan bisa dibagikan. Kamu dapat membuat + klip dari menu pada sebuah postingan. +recommended: Direkomendasikan +silenceThisInstance: Bisukan server ini +hiddenTags: Tagar Tersembunyi +preferencesBackups: Preferensi cadangan +editNote: Sunting kiriman +deleted: Dihapus +edited: Disunting pada {date} {time} +selectInstance: Pilih server +hiddenTagsDescription: 'Daftar tagar (tanpa #) dari tagar yang ingin kamu sembunyikan + dari tren dan eksplorasi. Tagar tersembunyi tetap dapat ditemukan dari tempat lainnya.' +silenced: Dibisukan +selectChannel: Pilih kanal +accessibility: Aksesibilitas +manageGroups: Kelola grup +moderation: Moderasi +userSaysSomethingReason: '{name} mengatakan {reason}' +secureMode: Mode Aman (Pengambilan Terotorisasi) +secureModeInfo: Saat meminta dari server lain, jangan kirim kembali tanpa bukti. +privateModeInfo: Saat aktif, hanya server yang masuk daftar putih dapat terfederasi + dengan servermu. Semua postingan akan disembunyikan dari publik. +allowedInstances: Server Masuk Daftar Putih +newer: lebih baru +userSaysSomethingReasonReply: '{name} membalas postingan berisi {reason}' +userSaysSomethingReasonRenote: '{name} memposting ulang postingan berisi {reason}' +userSaysSomethingReasonQuote: '{name} mengutip postingan berisi {reason}' +noThankYou: Tidak terima kasih +jumpToPrevious: Lompat ke sebelumnya +flagSpeakAsCatDescription: Postinganmu akan nyampak dalam mode kucing +cw: Peringatan konten +flagSpeakAsCat: Bicara sebagai kucing +allowedInstancesDescription: Host server akan masuk daftar putih untuk federasi, mereka + dipisahkan dengan baris baru (hanya diterapkan pada mode pribadi). +xl: XL +privateMode: Mode Pribadi +seperateRenoteQuote: Tombol posting ulang dan kutip terpisah +failedToUpload: Gagal unggah +beta: Beta +move: Pindahkan +navbar: Bilah navigasi +thereIsUnresolvedAbuseReportWarning: Ada laporal yang belum diselesaikan. +statusbar: Bilah status +isSystemAccount: Akun ini dibuat dan dioperasikan secara otomatis oleh sistem. Mohon + jangan memoderasi, menyunting, menghapus, atau mengutak-atik dengan akun ini, atau + itu akan merusak servermu. +lastActiveDate: Terakhir dipakai pada +deleteAccount: Hapus akun +numberOfPageCache: Jumlah halaman yang disinggah +fast: Cepat +cannotUploadBecauseInappropriate: Berkas ini tidak dapat diunggah karena sebagiannya + terdeteksi berpotensi Tidak Aman. +shuffle: Acak +enableAutoSensitive: Otomatis menandai Tidak Aman +enableAutoSensitiveDescription: Mengizinkan deteksi otomatis dan menandai media Tidak + Aman dengan Pembelajaran Mesin. Bahkan saat opsi ini nonaktif, ia bisa diaktifkan + pada ranah server. +activeEmailValidationDescription: Mengaktifkan validasi alamat surel yang lebih ketat, + yang termasuk memeriksa alamat sekali pakai dan memastikan apakah memang bisa berkomunikasi + dengan mereka. Saat tidak dicentang, format surel lah yang hanya akan divalidasi. +alt: ALT +requireAdminForView: Kamu harus masuk dengan akun administrator untuk melihat ini. +recentNHours: '{n} jam terakhir' +typeToConfirm: Harap masukkan {x} untuk konfirmasi +document: Dokumentasi +sensitiveMediaDetection: Deteksi media Tidak Aman +breakFollowConfirm: Yakin ingin menghapus pengikut? +cannotUploadBecauseNoFreeSpace: Gagal unggah karena kapasitas Drive kurang. +unsubscribePushNotification: Nonaktifkan pemberitahuan dorong +image: Gambar +video: Video +pleaseSelect: Pilih opsi +audio: Audio +numberOfPageCacheDescription: Naikkan angka ini akan meningkatkan kenyamanan pengguna + tapi menyebabkan beban server dan penggunaan memori lebih besar. +pushNotification: Pemberitahuan dorong +subscribePushNotification: Aktifkan pemberitahuan dorong +cannotUploadBecauseExceedsFileSizeLimit: Berkas ini tidak dapat diunggah karena melebihi + batas ukuran maksimum yang diizinkan. +recentNDays: '{n} hari terakhir' +noEmailServerWarning: Server surel tidak dikonfigurasi. +check: Cek +driveCapOverrideLabel: Ubah kapasitas drive untuk pengguna ini +driveCapOverrideCaption: Reset kapasitas ke bawaan dengan memasukkan nilai 0 atau + lebih rendah. +logoutConfirm: Yakin keluar? +refreshInterval: 'Perbarui interval ' +type: Tipe +speed: Kecepatan +slow: Pelan +remoteOnly: Jarak jauh saja +moveFrom: Dari akun lama pindahkan ke akun ini +indexNotice: Sedang mengindeks. Ini memerlukan beberapa waktu, mohon jangan mulai + ulang server setidaknya satu jam. +sendPushNotificationReadMessage: Hapus pemberitahuan dorong saat pemberitahuan atau + pesan relevan sudah dibaca +moveAccountDescription: Proses ini permanen. Pastikan kamu sudah mengatur alias dari + akun ini ke akun barumu sebelum pindah. Silakan masukkan tag akun dengan format + seperti @orang@server.com +sendModMail: Kirim Pemberitahuan Moderasi +signupsDisabled: Pendaftaran ke server ini nonaktif, tapi kamu dapat selalu mendaftar + ke server lain! Jika kamu memiliki kode undangan server ini, harap masukkan di bawah + ini. +enableCustomKaTeXMacro: Aktifkan makro KaTeX khusus +isBot: Akun ini bot +customMOTD: MOTD khusus (pesan layar percik) +recommendedInstancesDescription: Server yang direkomendasikan dipisahkan dengan garis + baru untuk tampil di linimasa rekomendasi. +preventAiLearningDescription: Minta model bahasa AI pihak ketiga untuk tidak mempelajari + konten yang kamu unggah, seperti postingan dan gambar. +pushNotificationAlreadySubscribed: Pemberitahuan dorong sudah aktif +pushNotificationNotSupported: Peramban atau servermu tidak mendukung pemberitahuan + dorong +apps: Aplikasi +showAds: Tampilkan spanduk komunitas +enterSendsMessage: Tekan Enter pada Pesan untuk mengirim pesan (matikan dengan Ctrl + + Enter) +showAdminUpdates: Indikasi versi Firefish baru tersedia (hanya admin) +indexFrom: Indeks dari Post ID berikutnya +noteId: ID Postingan +findOtherInstance: Cari server lain +caption: Deskripsi itomatis +splash: Layar Percik +migration: Migrasi +moveTo: Pindahkan akun sekarang ke akun baru +moveFromLabel: 'Akun tujuan pindah:' +moveFromDescription: Ini akan mengatur alias akun lamamu jadi kamu dapat pindah dari + akun tersebut ke akun sekarang. Lakukan ini SEBELUM memindahkan akun lama. Silakan + masukkan tag akun dengan format seperti @orang@server.com +defaultReaction: Reaksi emoji bawaan untuk postingan keluar dan masuk +indexPosts: Indeks Postingan +preventAiLearning: Cegah scraping bot AI +customKaTeXMacro: Makro KaTeX khusus +sendPushNotificationReadMessageCaption: Pemberitahuan yang berisi teks "{emptyPushNotificationMessage}" + akan ditampilkan dengan cepat. Ini mungkin meningkatkan penggunaan baterai perangkatmu, + jika berlaku. +adminCustomCssWarn: Pengaturan ini hanya dapat dipakai jika kamu tahu fungsinya. Memasukkan + nilai yang keliru akan membuat klien SIAPA PUN berhenti berfungsi secara normal. + Mohon pastikan CSS-mu bekerja secara benar dengan mengujinya lebih dahulu pada pengaturan + penggunamu. +customMOTDDescription: Pesan khusus untuk MOTD (layar percik) dipisahkan dengan baris + baru untuk ditampilkan secara acak ketika pengguna memuat/muat ulang halaman. +customSplashIcons: Ikon layar percik khusus (url) +customSplashIconsDescription: URL untuk ikon layar percik khusus dipisahkan dengan + garis baru untuk ditampilkan secara acak saat pengguna memuat/muat ulang halaman. + Harap pastikan gambar adalah URL statis, lebih utama berukuran 192x192. +showUpdates: Tampilkan sembulan saat pemutakhiran Firefish +recommendedInstances: Server yang direkomendasikan +updateAvailable: Ada pemutakhiran tersedia! +swipeOnMobile: Izinkan usap antar halaman +swipeOnDesktop: Izinkan usap ala mobile di desktop +logoImageUrl: URL gambar logo +replayTutorial: Ulangi tutorial +moveToLabel: 'Akun yang ingin kamu pindah:' +moveAccount: Pindahkan akun! +migrationConfirm: "Kamu sangat yakin ingin memindahkan akunmu ke {account}? Sekali + pindah, kamu tidak dapat membatalkannya, dan kamu tidak akan dapat menggunakan akunmu + lagi secara normal. \nDan juga, harap pastikan kamu sudah mengatur akun sekarang + sebagai akun yang dipindahkan." +license: Lisensi +indexFromDescription: Kosongkan untuk mengindeks setiap postingan +noGraze: Harap nonaktifkan ekstensi peramban "Graze for Mastodon", karena akan menganggu + Firefish. +silencedWarning: Halaman ini tampil karena pengguna ini datang dari server yang dibisukan + adminmu, jadi mereka berpotensi spam. +isLocked: Akun ini perlu persetujuan ikuti +_preferencesBackups: + list: Cadangan yang dibuat + saveNew: Simpan cadangan baru + loadFile: Muat dari berkas + save: Simpan perubahan + nameAlreadyExists: Cadangan bernama "{name}" sudah ada. Silakan masukkan nama yang + berbeda. + noBackups: Belum ada cadangan. Kamu bisa mencadangan pengaturan klien kamu di server + ini menggunakan "Buat cadangan baru". + updatedAt: 'Diperbarui pada: {date} {time}' + cannotLoad: Gagal memuat + cannotSave: Gagal menyimpan + invalidFile: Format berkas tidak valid + createdAt: 'Dibuat pada: {date} {time}' + inputName: Silakan masukkan nama untuk cadangan ini + apply: Terapkan ke perangkat ini + saveConfirm: Simpan cadangan sebagai {name}? + deleteConfirm: Hapus cadangan {name}? + renameConfirm: Ubah nama cadangan ini dari "{old}" ke "{new}"? + applyConfirm: Kamu yakin ingin menerapkan cadangan "{name}" di perangkat ini? Pengaturan + yang sudah ada akan ditimpa. +enableServerMachineStats: Aktifkan statistik perangkat keras server +enableIdenticonGeneration: Aktifkan pembuatan Identicon +reactionPickerSkinTone: Warna kulit emoji yang disukai +_sensitiveMediaDetection: + description: Mengurangi upaya moderasi server dengan mengenal media NSFW secara + otomatis melalui Pembelajaran Mesin. Ini akan sedikit menambah beban pada server. + sensitivity: Sensitivitas deteksi + sensitivityDescription: Mengurangi sensitivitas akan mengurangi kesalahan mendeteksi + (positif palsu). + analyzeVideosDescription: Menganalisa video selain gambar. Ini akan sedikit menambah + beban pada server. + setSensitiveFlagAutomatically: Tandai sebagai NSFW + setSensitiveFlagAutomaticallyDescription: Hasil deteksi internal akan disimpan bahkan + jika opsi ini dinonaktifkan. + analyzeVideos: Aktifkan analisa video +_filters: + fromDomain: Dari domain + notesAfter: Postingan setelah + followersOnly: Hanya pengikut + fromUser: Dari pengguna + withFile: Dengan berkas + followingOnly: Hanya mengikuti + notesBefore: Postingan sebelum +_messaging: + dms: Privat + groups: Grup +verifiedLink: Tautan terverifikasi +isPatron: Pendukung Firefish +customKaTeXMacroDescription: 'Siapkan makro untuk menulis ekspresi matematika dengan + mudah! Notasi ini sesuai dengan definisi perintah LaTeX dan ditulis sebagai \newcommand{\ + nama}{konten} atau \newcommand{\nama}[jumlah argumen]{konten}. Sebagai contoh, \newcommand{\add}[2]{#1 + + #2} akan memperluas \add{3}{foo} menjadi 3 + foo. Tanda kurung kurawal yang mengelilingi + nama makro dapat diubah menjadi tanda kurung bulat atau persegi. Hal ini mempengaruhi + tanda kurung yang digunakan untuk argumen. Satu (dan hanya satu) makro dapat didefinisikan + per baris, dan kamu tidak dapat memutus baris di tengah-tengah definisi. Baris yang + tidak valid akan diabaikan. Hanya fungsi substitusi string sederhana yang didukung; + sintaks lanjutan, seperti percabangan bersyarat, tidak dapat digunakan di sini.' +showPopup: Beri tahu pengguna dengan popup +showWithSparkles: Tampilkan dengan kelap-kelip +youHaveUnreadAnnouncements: Anda memiliki pengumuman yang belum dibaca +donationLink: Tautan ke laman donasi +neverShow: Jangan tampilkan lagi +remindMeLater: Mungkin nanti +removeQuote: Hapus kutipan +removeRecipient: Hapus penerima +removeMember: Hapus anggota +isModerator: Moderator +isAdmin: Administrator +_experiments: + title: Eksperimen + enablePostImports: Aktifkan impor postingan + postImportsCaption: Izinkan pengguna mengimpor postingan mereka dari akun Firefish + sebelumnya, Misskey, Mastodon, Akkoma, dan Pleroma. Ini mungkin menyebabkan perlambatan + saat memuat jika antreanmu bottleneck. +_dialog: + charactersExceeded: 'Karakter maksimal terlampaui! Kini: {current}/Batas: {max}' + charactersBelow: 'Karakter kurang! Kini: {current}/Batas: {min}' +_skinTones: + light: Terang + dark: Gelap + mediumDark: Gelap Medium + mediumLight: Terang Medium + medium: Medium + yellow: Kuning +_feeds: + copyFeed: Salin umpan + rss: RSS + atom: Atom + jsonFeed: Umpan JSON +origin: Asal +objectStorageS3ForcePathStyle: Gunakan URL titik akhir berbasis lokasi +objectStorageS3ForcePathStyleDesc: Aktifkan ini untuk membuat URL titik akhir dalam + format 's3.amazonaws.com//' di atas '.s3.amazonaws.com'. +deletePasskeys: Hapus passkeys +inputNotMatch: Masukan tidak cocok +delete2fa: Nonaktifkan 2FA +delete2faConfirm: Ini akan menghapus 2FA secara permanen pada akun ini. Lanjutkan? +deletePasskeysConfirm: Ini akan menghapus semua passkeys dan kunci keamanan pada akun + ini secara permanen. Lanjutkan? +addRe: Tambahkan "re:" pada awal komentar balasan postingan dengan peringatan konten +confirm: Konfirmasi +importZip: Impor ZIP +exportZip: Ekspor ZIP +emojiPackCreator: Pembuat paket emoji +detectPostLanguage: Deteksi bahasa secara otomatis dan tampilkan tombol terjemahkan + untuk kiriman dalam bahasa asing +indexableDescription: Perbolehkan pencarian di sini untuk menampilkan kiriman publikmu +indexable: Dapat diindeks +languageForTranslation: Bahasa terjemahan kiriman diff --git a/locales/index.js b/locales/index.js index 62e55e7e5c..1cee755fd1 100644 --- a/locales/index.js +++ b/locales/index.js @@ -70,20 +70,12 @@ module.exports = Object.entries(locales).reduce( (a, [k, v]) => ( (a[k] = (() => { const [lang] = k.split("-"); - switch (k) { - case "ja-JP": - return v; - case "ja-KS": - case "en-US": - return merge(locales["ja-JP"], v); - default: - return merge( - locales["ja-JP"], - locales["en-US"], - locales[`${lang}-${primaries[lang]}`] || {}, - v, - ); - } + return k === "en-US" ? v : + merge( + locales["en-US"], + locales[`${lang}-${primaries[lang]}`] || {}, + v, + ); })()), a ), diff --git a/locales/it-IT.yml b/locales/it-IT.yml index bdf7cab541..f9199ee271 100644 --- a/locales/it-IT.yml +++ b/locales/it-IT.yml @@ -1,25 +1,23 @@ _lang_: "Italiano" -headlineMisskey: "Rete collegata tramite note" -introMisskey: "Benvenut@! Calckey è un servizio di microblogging decentralizzato, - libero e aperto. \nScrivi \"note\" per condividere ciò che sta succedendo adesso - o per dire a tutti qualcosa di te. 📡\nGrazie alla funzione \"reazioni\" puoi anche - mandare reazioni rapide alle note delle altre persone del Fediverso. 👍\nEsplora - un nuovo mondo! 🚀" +headlineFirefish: "Una piattaforma social open source, decentralizzata che sarà gratuita + per sempre! 🚀" +introFirefish: "Benvenuti! Firefish è una piattaforma social open source, decentralizzata + che sarà sempre gratuita! 🚀" monthAndDay: "{day}/{month}" search: "Cerca" notifications: "Notifiche" username: "Nome utente" password: "Password" -forgotPassword: "Hai dimenticato la tua password?" -fetchingAsApObject: "Recuperando dal Fediverso" +forgotPassword: "Password dimenticata" +fetchingAsApObject: "Caricamento dal Fediverso" ok: "OK" gotIt: "Ho capito!" cancel: "Annulla" enterUsername: "Inserisci un nome utente" -renotedBy: "Rinotato da {user}" -noNotes: "Nessuna nota!" +renotedBy: "Boost da {user}" +noNotes: "Nessun post" noNotifications: "Nessuna notifica" -instance: "Istanza" +instance: "Server" settings: "Impostazioni" basicSettings: "Impostazioni generali" otherSettings: "Altre impostazioni" @@ -28,7 +26,7 @@ profile: "Profilo" timeline: "Timeline" noAccountDescription: "L'utente non ha ancora scritto niente nella biografia di profilo." login: "Accedi" -loggingIn: "Accesso in corso..." +loggingIn: "Accesso in corso" logout: "Esci" signup: "Iscriviti" uploading: "Caricamento..." @@ -37,18 +35,18 @@ users: "Utenti" addUser: "Aggiungi utente" favorite: "Aggiungi ai preferiti" favorites: "Preferiti" -unfavorite: "Rimuovi nota dai preferiti" -favorited: "Aggiunta ai tuoi preferiti." +unfavorite: "Rimuovi post dai preferiti" +favorited: "Aggiunto ai tuoi preferiti." alreadyFavorited: "Già tra i tuoi preferiti." -cantFavorite: "Impossibile aggiungere la nota ai preferiti." +cantFavorite: "Impossibile aggiungere il post ai preferiti." pin: "Fissa sul profilo" unpin: "Non fissare sul profilo" copyContent: "Copia il contenuto" copyLink: "Copia il link" delete: "Elimina" deleteAndEdit: "Elimina e modifica" -deleteAndEditConfirm: "Vuoi davvero cancellare questa nota e scriverla di nuovo? Verrano - eliminate anche tutte le reazioni, Rinote e risposte collegate." +deleteAndEditConfirm: "Vuoi davvero cancellare questo post e scriverlo di nuovo? Verrano + eliminate anche tutte le reazioni, boost e risposte collegate." addToList: "Aggiungi alla lista" sendMessage: "Invia messaggio" copyUsername: "Copia nome utente" @@ -60,55 +58,55 @@ showLess: "Chiudi" youGotNewFollower: "Ha iniziato a seguirti" receiveFollowRequest: "Hai ricevuto una richiesta di follow" followRequestAccepted: "Richiesta di follow accettata" -mention: "Menzioni" +mention: "Menzione" mentions: "Menzioni" -directNotes: "Note dirette" +directNotes: "Messaggi diretti" importAndExport: "Importa ed esporta" import: "Importa" export: "Esporta" files: "Allegati" download: "Scarica" -driveFileDeleteConfirm: "Vuoi davvero eliminare il file「{name}? Anche gli allegati - verranno eliminati." +driveFileDeleteConfirm: "Vuoi davvero eliminare il file \"{name}\"? Sarà rimosso da + tutti i post che lo contengono." unfollowConfirm: "Vuoi davvero smettere di seguire {name}?" exportRequested: "Hai richiesto un'esportazione, e potrebbe volerci tempo. Quando sarà compiuta, il file verrà aggiunto direttamente al Drive." -importRequested: "Hai richiesto un'importazione. Può volerci tempo. " +importRequested: "Hai richiesto un'importazione. Potrebbe impiegare del tempo." lists: "Liste" noLists: "Nessuna lista" -note: "Nota" -notes: "Note" -following: "Follows" -followers: "Followers" +note: "Post" +notes: "Post" +following: "Chi segui" +followers: "Chi ti segue" followsYou: "Ti segue" createList: "Aggiungi una nuova lista" manageLists: "Gestisci liste" error: "Errore" somethingHappened: "Si è verificato un problema" retry: "Riprova" -pageLoadError: "Caricamento pagina non riuscito. " -pageLoadErrorDescription: "Questo viene normalmente causato dalla rete o dalla cache - del browser. Si prega di pulire la cache, o di attendere e riprovare più tardi." -serverIsDead: "Il server non risponde. Si prega di attendere e riprovare più tardi." +pageLoadError: "Errore nel caricamento della pagina." +pageLoadErrorDescription: "Di solito succede per errori di rete o a causa della cache + del browser. Prova a pulire la cache o a riprovare più tardi." +serverIsDead: "Il server non risponde. Attendi e riprova più tardi." youShouldUpgradeClient: "Per visualizzare la pagina è necessario aggiornare il client alla nuova versione e ricaricare." enterListName: "Nome della lista" privacy: "Privacy" -makeFollowManuallyApprove: "Richiedi di approvare i follower manualmente" -defaultNoteVisibility: "Privacy predefinita delle note" +makeFollowManuallyApprove: "Approva manualmente le richieste di follow" +defaultNoteVisibility: "Privacy predefinita dei post" follow: "Segui" followRequest: "Richiesta di follow" followRequests: "Richieste di follow" unfollow: "Smetti di seguire" -followRequestPending: "La richiesta di follow deve essere approvata" +followRequestPending: "Richiesta di follow in approvazione" enterEmoji: "Inserisci emoji" -renote: "Rinota" -unrenote: "Annulla rinota" -renoted: "Rinotato!" -cantRenote: "È impossibile rinotare questa nota." -cantReRenote: "È impossibile rinotare una Rinota." +renote: "Boost" +unrenote: "Annulla boost" +renoted: "Boost effettuato." +cantRenote: "È impossibile dare un boost a questo post." +cantReRenote: "È impossibile dare un boost a un boost." quote: "Cita" -pinnedNote: "Nota fissata" +pinnedNote: "Post fissato" pinned: "Fissa sul profilo" you: "Tu" clickToShow: "Clicca per visualizzare" @@ -118,13 +116,13 @@ reaction: "Reazione" reactionSetting: "Reazioni visualizzate sul pannello" reactionSettingDescription2: "Trascina per riorganizzare, clicca per cancellare, usa il pulsante \"+\" per aggiungere." -rememberNoteVisibility: "Ricordare le impostazioni di visibilità delle note" +rememberNoteVisibility: "Ricorda le impostazioni di visibilità del post" attachCancel: "Rimuovi allegato" markAsSensitive: "Segna come sensibile" unmarkAsSensitive: "Segna come non sensibile" enterFileName: "Nome del file" mute: "Silenzia" -unmute: "Riattiva" +unmute: "Non silenziare" block: "Blocca" unblock: "Sblocca" suspend: "Sospendi" @@ -137,103 +135,102 @@ selectList: "Seleziona una lista" selectAntenna: "Scegli un'antenna" selectWidget: "Seleziona widget" editWidgets: "Modifica i widget" -editWidgetsExit: "Modifica fine" +editWidgetsExit: "Fine modifica" customEmojis: "Emoji personalizzati" emoji: "Emoji" emojis: "Emoji" emojiName: "Nome dell'emoji" emojiUrl: "URL dell'emoji" addEmoji: "Aggiungi un emoji" -settingGuide: "Configurazione suggerita" -cacheRemoteFiles: "Memorizzazione nella cache dei file remoti" +settingGuide: "Impostazioni suggerite" +cacheRemoteFiles: "Mantieni i file remoti nella cache" cacheRemoteFilesDescription: "Disabilitando questa opzione, i file remoti verranno - linkati direttamente senza essere memorizzati nella cache. Sarà possibile risparmiare - spazio di archiviazione sul server, ma il traffico aumenterà in quanto non verranno - generate anteprime." -flagAsBot: "Io sono un robot" + scaricati direttamente dal loro server. L'opzione permette di risparmiare spazio + ma aumenta il traffico di rete e non verranno generate anteprime." +flagAsBot: "Questo account è un bot" flagAsBotDescription: "Se l'account esegue principalmente operazioni automatiche, attiva quest'opzione. Quando attivata, opera come un segnalatore per gli altri sviluppatori allo scopo di prevenire catene d’interazione senza fine con altri bot, e di adeguare - i sistemi interni di Calckey perché trattino questo account come un bot." -flagAsCat: "Io sono un gatto" -flagAsCatDescription: "Abilita l'opzione \"Io sono un gatto\" per l'account." -autoAcceptFollowed: "Accetta automaticamente le richieste di follow da utenti che - già segui" + i sistemi interni di Firefish perché trattino questo account come un bot." +flagAsCat: "Sei un gatto? 😺" +flagAsCatDescription: "Ti compariranno le orecchie e parlerai come un gatto!" +autoAcceptFollowed: "Accetta in automatico i follow dagli account che segui" addAccount: "Aggiungi account" loginFailed: "Accesso non riuscito" -showOnRemote: "Sfoglia sull'istanza remota" +showOnRemote: "Visita la pagina di origine" general: "Generali" wallpaper: "Sfondo" setWallpaper: "Imposta sfondo" removeWallpaper: "Elimina lo sfondo" searchWith: "Cerca: {q}" youHaveNoLists: "Non hai ancora creato nessuna lista" -followConfirm: "Sei sicur@ di voler seguire {name}?" +followConfirm: "Confermi di voler seguire {name}?" proxyAccount: "Account proxy" proxyAccountDescription: "Un account proxy è un account che funziona da follower remoto - per gli utenti sotto certe condizioni. Ad esempio, quando un utente aggiunge un - utente remoto alla lista, dato che se nessun utente locale segue quell'utente le - sue attività non verranno distribuite, al suo posto lo seguirà un account proxy." -host: "Server remoto" + sotto certe condizioni. Ad esempio, quando un utente aggiunge un utente remoto a + una lista, le attività di quell'utente potrebbero comunque non essere visualizzate + in locale se nessun altro utente lo segue su questo server, l'account proxy si occuperà + di seguire e acquisire i post." +host: "Host" selectUser: "Seleziona utente" -recipient: "Destinatario" -annotation: "Descrizione" +recipient: "Destinatario(i)" +annotation: "Annotazioni" federation: "Federazione" -instances: "Istanza" +instances: "Server" registeredAt: "Registrato presso" latestRequestSentAt: "Ultima richiesta inviata" latestRequestReceivedAt: "Ultima richiesta ricevuta" latestStatus: "Ultimo stato" -storageUsage: "Volume di dischi" +storageUsage: "Spazio occupato" charts: "Grafici" perHour: "All'ora" perDay: "al giorno" stopActivityDelivery: "Interrompi la distribuzione di attività" -blockThisInstance: "Blocca l'istanza" +blockThisInstance: "Blocca questo server" operations: "Operazioni" software: "Software" version: "Versione" -metadata: "Metadato" -monitor: "Monitorare" -jobQueue: "Coda di lavoro" +metadata: "Metadati" +monitor: "Monitor" +jobQueue: "Coda dei job" cpuAndMemory: "CPU e Memoria" network: "Rete" disk: "Disco" -instanceInfo: "Informazioni sull'istanza" +instanceInfo: "Informazioni sul server" statistics: "Statistiche" clearQueue: "Svuota coda" clearQueueConfirmTitle: "Vuoi davvero svuotare la coda?" -clearQueueConfirmText: "Le note ancora non distribuite non verranno rilasciate. Solitamente, +clearQueueConfirmText: "I post ancora in coda non verranno più federati. Solitamente, non è necessario eseguire questa operazione." clearCachedFiles: "Svuota cache" -clearCachedFilesConfirm: "Vuoi davvero svuotare la cache da tutti i file remoti?" -blockedInstances: "Istanze bloccate" -blockedInstancesDescription: "Elenca le istanze che vuoi bloccare, una per riga. Esse - non potranno più interagire con la tua istanza." +clearCachedFilesConfirm: "Vuoi davvero svuotare la cache di tutti i file remoti?" +blockedInstances: "Server bloccati" +blockedInstancesDescription: "Elenca gli hostname dei server che vuoi bloccare. Non + potranno più comunicare con il tuo server." muteAndBlock: "Silenziati / Bloccati" mutedUsers: "Account silenziati" blockedUsers: "Account bloccati" noUsers: "Nessun utente trovato" editProfile: "Modifica profilo" -noteDeleteConfirm: "Eliminare questo Nota?" -pinLimitExceeded: "Non puoi fissare altre note " -intro: "L'installazione di Calckey è finita! Si prega di creare un account amministratore." +noteDeleteConfirm: "Vuoi eliminare questo post?" +pinLimitExceeded: "Hai già fissato il massimo possibile di post" +intro: "L'installazione di Firefish è finita! Si prega di creare un account amministratore." done: "Fine" -processing: "In elaborazione" +processing: "Elaborazione in corso" preview: "Anteprima" default: "Predefinito" noCustomEmojis: "Nessun emoji" -noJobs: "Nessun lavoro" -federating: "Federando" +noJobs: "Nessun job" +federating: "Federazione in corso" blocked: "Bloccato" -suspended: "Sospes@" +suspended: "Sospeso" all: "Tutti" -subscribing: "Iscrivendo" -publishing: "Pubblicando" +subscribing: "Sottoscrizione in corso" +publishing: "Pubblicazione in corso" notResponding: "Nessuna risposta" -instanceFollowing: "Seguiti dall'istanza" -instanceFollowers: "Followers dell'istanza" -instanceUsers: "Utenti dell'istanza" +instanceFollowing: "Seguiti da te su questo server" +instanceFollowers: "Chi ti segue su questo server" +instanceUsers: "Utenti del server" changePassword: "Aggiorna Password" security: "Sicurezza" retypedNotMatch: "Le password non corrispondono." @@ -241,18 +238,18 @@ currentPassword: "Password attuale" newPassword: "Nuova Password" newPasswordRetype: "Conferma password" attachFile: "Allega file" -more: "Altri!" -featured: "Tendenze" +more: "Altro!" +featured: "In primo piano" usernameOrUserId: "Nome utente o ID utente" -noSuchUser: "Nessun utente trovato" +noSuchUser: "Utente non trovato" lookup: "Cercare" announcements: "Annunci" imageUrl: "URL dell'immagine" remove: "Elimina" -removed: "Il tuo Tweet è stato eliminato" -removeAreYouSure: "Eliminare \"{x}\"?" -deleteAreYouSure: "Eliminare \"{x}\"?" -resetAreYouSure: "Reimposta" +removed: "Rimosso" +removeAreYouSure: "Rimuovere \"{x}\"?" +deleteAreYouSure: "Rimuovere \"{x}\"?" +resetAreYouSure: "Vuoi reimpostare?" saved: "Salvato" messaging: "Messaggi" upload: "Carica" @@ -263,71 +260,70 @@ uploadFromUrlDescription: "URL del file che vuoi caricare" uploadFromUrlRequested: "Caricamento richiesto" uploadFromUrlMayTakeTime: "Il caricamento del file può richiedere tempo." explore: "Esplora" -messageRead: "Visualizzato" -noMoreHistory: "Non c'è più cronologia da visualizzare" +messageRead: "Letto" +noMoreHistory: "Non c'è altra cronologia da mostrare" startMessaging: "Nuovo messaggio" nUsersRead: "Letto da {n} persone" agreeTo: "Sono d'accordo con {0}" -tos: "Termini di servizio" -start: "Inizia!" +tos: "Termini d'uso" +start: "Inizia" home: "Home" -remoteUserCaution: "Può darsi che le informazioni siano incomplete perché questo è - un utente remoto." +remoteUserCaution: "Le informazioni degli utenti remoti possono essere incomplete." activity: "Attività" images: "Immagini" birthday: "Compleanno" -yearsOld: "{age}Anni" -registeredDate: "Iscrizione a.." +yearsOld: "{age} anni" +registeredDate: "Iscrizione il" location: "Posizione" theme: "Tema" -themeForLightMode: "Tema da utilizzare per il modo chiaro" -themeForDarkMode: "Tema da utilizzare per il modo scuro" +themeForLightMode: "Tema per la modalità chiara" +themeForDarkMode: "Tema per la modalità scura" light: "Chiaro" dark: "Scuro" -lightThemes: "Tema Chiaro" -darkThemes: "Tema Scuro" +lightThemes: "Temi chiari" +darkThemes: "Temi scuri" syncDeviceDarkMode: "Sincronizza il tema scuro con le impostazioni del dispositivo" drive: "Drive" -fileName: "Nome dell'allegato" +fileName: "Nome file" selectFile: "Scelta allegato" -selectFiles: "Scelta allegato" +selectFiles: "Scelta allegati" selectFolder: "Seleziona cartella" -selectFolders: "Seleziona cartella" +selectFolders: "Seleziona cartelle" renameFile: "Rinomina file" folderName: "Nome della cartella" createFolder: "Nuova cartella" -renameFolder: "Rinominare cartella" +renameFolder: "Rinomina cartella" deleteFolder: "Elimina cartella" addFile: "Allega" emptyDrive: "Il Drive è vuoto" emptyFolder: "La cartella è vuota" -unableToDelete: "Eliminazione impossibile" -inputNewFileName: "Inserisci nome del nuovo file" -inputNewDescription: "Inserisci una nuova descrizione" -inputNewFolderName: "Inserisci nome della nuova cartella" +unableToDelete: "Impossibile rimuovere" +inputNewFileName: "Nuovo nome del file" +inputNewDescription: "Nuova descrizione" +inputNewFolderName: "Nuovo nome della cartella" circularReferenceFolder: "La cartella di destinazione è una sottocartella della cartella che vuoi spostare." -hasChildFilesOrFolders: "Impossibile eliminare la cartella perché non è vuota" +hasChildFilesOrFolders: "La cartella non può essere rimossa perché non è vuota." copyUrl: "Copia URL" rename: "Modifica nome" avatar: "Foto del profilo" banner: "Intestazione" nsfw: "Contenuti sensibili" whenServerDisconnected: "Quando la connessione col server è persa" -disconnectedFromServer: "Disconness@ dal server" +disconnectedFromServer: "Server disconnesso" reload: "Ricarica" doNothing: "Nessun'azione" reloadConfirm: "Vuoi ricaricare?" watch: "Osserva" -unwatch: "Smetti di Osserva" +unwatch: "Smetti di osservare" accept: "Accetta" reject: "Rifiuta" normal: "Normale" -instanceName: "Nome dell'istanza" -instanceDescription: "Descrizione dell'istanza" +instanceName: "Nome del server" +instanceDescription: "Descrizione del server" maintainerName: "Nome dell'Amministratore" maintainerEmail: "Indirizzo e-mail dell'Amministratore" -tosUrl: "Termini di servizio URL" +tosUrl: "URL Termini d'uso" thisYear: "Anno" thisMonth: "Mese" today: "Oggi" @@ -335,31 +331,31 @@ dayX: "{day}" monthX: "{month}" yearX: "{year}" pages: "Pagine" -integration: "App collegate" -connectService: "Connessione" -disconnectService: "Disconnessione " -enableLocalTimeline: "Abilita Timeline locale" -enableGlobalTimeline: "Abilita Timeline federata" +integration: "Integrazioni" +connectService: "Connetti" +disconnectService: "Disconnetti" +enableLocalTimeline: "Abilita timeline locale" +enableGlobalTimeline: "Abilita timeline federata" disablingTimelinesInfo: "Anche se disabiliti queste timeline, gli amministratori e i moderatori potranno sempre accederci." registration: "Iscriviti" -enableRegistration: "Permettere nuove registrazioni" +enableRegistration: "Permetti nuove registrazioni" invite: "Invita" -driveCapacityPerLocalAccount: "Volume del Drive per utente locale" -driveCapacityPerRemoteAccount: "Volume del Drive per utente remoto" -inMb: "in Megabytes" -iconUrl: "URL di icona (favicon, ecc.)" -bannerUrl: "URL dell'immagine d'intestazione" +driveCapacityPerLocalAccount: "Dimensione drive per utenti locali" +driveCapacityPerRemoteAccount: "Dimensione drive per utenti remoti" +inMb: "In megabytes" +iconUrl: "URL icona" +bannerUrl: "URL dell'immagine banner" backgroundImageUrl: "URL dello sfondo" -basicInfo: "Informazioni fondamentali" -pinnedUsers: "Utenti in evidenza" -pinnedUsersDescription: "Elenca gli/le utenti che vuoi fissare in cima alla pagina - \"Esplora\", un@ per riga." +basicInfo: "Informazioni di base" +pinnedUsers: "Utenti in fissati" +pinnedUsersDescription: "Elenca gli utenti che vuoi fissare in cima alla pagina \"\ + Esplora\", uno per riga." pinnedPages: "Pagine in evidenza" pinnedPagesDescription: "Specifica il percorso delle pagine che vuoi fissare in cima - alla pagina dell'istanza. Una pagina per riga." + alla home page del server. Una pagina per riga." pinnedClipId: "ID della clip in evidenza" -pinnedNotes: "Nota fissata" +pinnedNotes: "Post fissati" hcaptcha: "hCaptcha" enableHcaptcha: "Abilita hCaptcha" hcaptchaSiteKey: "Chiave del sito" @@ -372,22 +368,22 @@ avoidMultiCaptchaConfirm: "Utilizzare diversi Captcha può causare interferenze. disattivare l'altro Captcha? Puoi lasciare diversi Captcha attivi premendo \"Cancella\"\ ." antennas: "Antenne" -manageAntennas: "Gestore delle antenne" +manageAntennas: "Gestione antenne" name: "Nome" -antennaSource: "Fonte dell'antenna" +antennaSource: "Origine dell'antenna" antennaKeywords: "Parole chiavi da ricevere" antennaExcludeKeywords: "Parole chiavi da escludere" -antennaKeywordsDescription: "Separare con uno spazio indica la condizione \"E\". Separare - con un'interruzzione riga indica la condizione \"O\"." -notifyAntenna: "Invia notifiche delle nuove note" -withFileAntenna: "Solo note con file in allegato" +antennaKeywordsDescription: "Separare con uno spazio indica la condizione \"AND\" + . Separare con un'interruzione riga indica la condizione \"OR\"." +notifyAntenna: "Notifica i nuovi post" +withFileAntenna: "Solo post con allegati" enableServiceworker: "Abilita ServiceWorker" antennaUsersDescription: "Inserisci solo un nome utente per riga" -caseSensitive: "Sensibile alla distinzione tra maiuscole e minuscole" -withReplies: "Includere le risposte" -connectedTo: "Sei conness@ agli account qui sotto:" -notesAndReplies: "Note e risposte" -withFiles: "Con file in allegato" +caseSensitive: "Distingui maiuscole e minuscole" +withReplies: "Includi le risposte" +connectedTo: "Stai seguendo questi account" +notesAndReplies: "Post e risposte" +withFiles: "Con file allegati" silence: "Silenzia" silenceConfirm: "Vuoi davvero silenziare l'utente?" unsilence: "Riattiva" @@ -401,12 +397,12 @@ exploreFediverse: "Esplora il Fediverso" popularTags: "Tag di tendenza" userList: "Liste" about: "Informazioni" -aboutMisskey: "Informazioni di Calckey" +aboutFirefish: "Informazioni su Firefish" administrator: "Amministratore" token: "Token" twoStepAuthentication: "Autenticazione a due fattori" moderator: "Moderatore" -nUsersMentioned: "{n} utenti menzionatə" +nUsersMentioned: "Menzioni da {n} utenti" securityKey: "Chiave di sicurezza" securityKeyName: "Nome della chiave" registerSecurityKey: "Registra una chiave di sicurezza" @@ -418,78 +414,78 @@ newPasswordIs: "La tua nuova password è「{password}」" reduceUiAnimation: "Ridurre le animazioni dell'interfaccia" share: "Condividi" notFound: "Non trovato" -notFoundDescription: "Nessuna pagina corrisponde all'URL indicata." -uploadFolder: "Destinazione caricamento predefinita" +notFoundDescription: "Nessuna pagina corrisponde all'URL." +uploadFolder: "Cartella predefinita di caricamento" cacheClear: "Svuota cache" markAsReadAllNotifications: "Segna tutte le notifiche come lette" -markAsReadAllUnreadNotes: "Segna tutte le note come lette" +markAsReadAllUnreadNotes: "Segna tutti i post come letti" markAsReadAllTalkMessages: "Segna tutte le chat come lette" help: "Guida" -inputMessageHere: "Scrivi messaggio qui" +inputMessageHere: "Testo del messaggio" close: "Chiudi" group: "Gruppo" groups: "Gruppi" createGroup: "Nuovo gruppo" -ownedGroups: "I miei gruppi" -joinedGroups: "Gruppi a cui mi sono unit@" +ownedGroups: "Gruppi che gestisco" +joinedGroups: "Gruppi a cui partecipo" invites: "Inviti" groupName: "Nome del gruppo" members: "Membri" transfer: "Trasferisci" -messagingWithUser: "Iniziare una chat con un altr@ utente" -messagingWithGroup: "Chattare in gruppo" +messagingWithUser: "Chat privata" +messagingWithGroup: "Chat di gruppo" title: "Titolo" text: "Testo" enable: "Abilita" next: "Avanti" -retype: "Conferma" -noteOf: "Note di {user}" -inviteToGroup: "Invitare al gruppo" -quoteAttached: "Citazione allegata" +retype: "Ritenta" +noteOf: "Post di {user}" +inviteToGroup: "Invita nel gruppo" +quoteAttached: "Citazione" quoteQuestion: "Vuoi aggiungere una citazione?" -noMessagesYet: "Ancora nessuna chat" -newMessageExists: "Hai ricevuto un nuovo messaggio" -onlyOneFileCanBeAttached: "È possibile allegare al messaggio soltanto uno file" -signinRequired: "Devi essere registrat@ nel tuo account" -invitations: "Invita" +noMessagesYet: "Ancora nessun messaggio" +newMessageExists: "C'è un nuovo messaggio" +onlyOneFileCanBeAttached: "È possibile allegare al messaggio soltanto un file" +signinRequired: "Devi aver fatto login prima di continuare" +invitations: "Inviti" invitationCode: "Codice di invito" -checking: "Confermando" -available: "Consigliati" -unavailable: "Il nome utente è già in uso" -usernameInvalidFormat: "Il nome utente può contenere solo lettere, numeri e '_'" +checking: "Verifica in corso..." +available: "Disponibile" +unavailable: "Nome già in uso" +usernameInvalidFormat: "Puoi usare solo lettere maiuscole, minuscole, numeri e '_'" tooShort: "Troppo breve" tooLong: "Troppo lungo" weakPassword: "Password debole" normalPassword: "Password buona" strongPassword: "Password forte" passwordMatched: "Corretta" -passwordNotMatched: "Le password non corrispondono." +passwordNotMatched: "Le password non corrispondono" signinWith: "Accedi con {x}" signinFailed: "Autenticazione non riuscita. Controlla la tua password e nome utente." tapSecurityKey: "Premi la chiave di sicurezza" or: "oppure" language: "Lingua" -uiLanguage: "Lingua di visualizzazione dell'interfaccia" -groupInvited: "Invitat@ al gruppo" +uiLanguage: "Lingua dell'interfaccia" +groupInvited: "Hai un invito ad unirti a un gruppo" aboutX: "Informazioni su {x}" -useOsNativeEmojis: "Usare le emoji native del sistema operativo" +useOsNativeEmojis: "Usa le emoji native del sistema operativo" disableDrawer: "Non mostrare il menù sul drawer" youHaveNoGroups: "Nessun gruppo" -joinOrCreateGroup: "Puoi creare il tuo gruppo o essere invitat@ a gruppi che già esistono." +joinOrCreateGroup: "Puoi creare il tuo gruppo o partecipare a gruppi che già esistono." noHistory: "Nessuna cronologia" signinHistory: "Cronologia di accesso all'account" disableAnimatedMfm: "Disabilità i MFM animati" doing: "In corso..." category: "Categoria" tags: "Tag" -docSource: "Sorgente della scheda" +docSource: "Origine del documento" createAccount: "Crea il tuo account" existingAccount: "Account esistente" -regenerate: "Generare di nuovo" +regenerate: "Rigenera" fontSize: "Dimensione carattere" -noFollowRequests: "Non hai alcuna richiesta di follow" +noFollowRequests: "Non ci sono richieste di follow" openImageInNewTab: "Aprire immagini in una nuova scheda" -dashboard: "Pannello di controllo" +dashboard: "Dashboard" local: "Locale" remote: "Remoto" total: "Totale" @@ -498,115 +494,115 @@ dayOverDayChanges: "Giornaliero" appearance: "Aspetto" clientSettings: "Impostazioni client" accountSettings: "Impostazioni account" -promotion: "Promossa" -promote: "Pubblicizza" +promotion: "Promosso" +promote: "Promuovi" numberOfDays: "Numero di giorni" -hideThisNote: "Nasconda la nota" -showFeaturedNotesInTimeline: "Mostrare le note di tendenza nella tua timeline" -objectStorage: "Stoccaggio oggetti" -useObjectStorage: "Utilizza stoccaggio oggetti" +hideThisNote: "Nascondi questo post" +showFeaturedNotesInTimeline: "Mostra anche i post in primo piano nella tua timeline" +objectStorage: "Object storage" +useObjectStorage: "Utilizza l'object storage" objectStorageBaseUrl: "Base URL" -objectStorageBaseUrlDesc: "URL di riferimento. In caso di utilizzo di proxy o CDN - l'URL è 'https://.s3.amazonaws.com' per S3, 'https://storage.googleapis.com/' - per GCS eccetera. " +objectStorageBaseUrlDesc: "URL di riferimento. Specifica lo URL della tua CDN o del + Proxy se li stai usando.\nPer S3 usa 'https://.s3.amazonaws.com' e per CGS + o simili usa 'https://storage.googleapis.com/'." objectStorageBucket: "Bucket" objectStorageBucketDesc: "Specificare il nome del bucket utilizzato dal provider." objectStoragePrefix: "Prefix" objectStoragePrefixDesc: "I file saranno conservati sotto la directory di questo prefisso." objectStorageEndpoint: "Endpoint" -objectStorageEndpointDesc: "Lasciare vuoto se si sta utilizzando S3. In caso contrario - si prega di specificare l'endpoint come '' oppure ':' a seconda - del servizio utilizzato." +objectStorageEndpointDesc: "Lasciare vuoto se stai utilizzando S3. In caso contrario + , specifica l'endpoint come '' oppure ':' a seconda del servizio + utilizzato." objectStorageRegion: "Region" objectStorageRegionDesc: "Specificate una regione, quale 'xx-east-1'. Se il servizio in utilizzo non distingue tra regioni, lasciate vuoto o inserite 'us-east-1'." -objectStorageUseSSL: "Usare SSL" -objectStorageUseSSLDesc: "Disabilita quest'opzione se non utilizzi HTTPS per le connessioni - API." +objectStorageUseSSL: "Usa SSL" +objectStorageUseSSLDesc: "Disabilita quest'opzione se non usi HTTPS per connetterti + alle API" objectStorageUseProxy: "Usa proxy" -objectStorageUseProxyDesc: "Disabilita quest'opzione se non usi proxy per la connessione - API." -objectStorageSetPublicRead: "Imposta \"visibilità pubblica\" al momento di caricare" +objectStorageUseProxyDesc: "Disabilita quest'opzione se non usi proxy per connetterti + alle API" +objectStorageSetPublicRead: "Imposta \"visibilità pubblica\" al caricamento" serverLogs: "Log del server" -deleteAll: "Cancella cronologia" -showFixedPostForm: "Visualizzare la finestra di pubblicazione in cima alla timeline" -newNoteRecived: "Vedi le nuove note" -sounds: "Impostazioni suoni" +deleteAll: "Rimuovi tutto" +showFixedPostForm: "Mostra la finestra di pubblicazione sopra la timeline" +newNoteRecived: "Ci sono nuovi post" +sounds: "Suoni" listen: "Ascolta" none: "Niente" -showInPage: "Visualizza in pagina" +showInPage: "Mostra nella pagina" popout: "Finestra pop-out" volume: "Volume" masterVolume: "Volume principale" details: "Dettagli" chooseEmoji: "Scegli emoji" -unableToProcess: "Impossibile compiere l'operazione" +unableToProcess: "Impossibile completare l'operazione" recentUsed: "Usato di recente" install: "Installa" uninstall: "Disinstalla" -installedApps: "Applicazioni installate" +installedApps: "Applicazioni autorizzate" nothing: "Niente da visualizzare" -installedDate: "Data installazione" -lastUsedDate: "Data di ultimo uso" +installedDate: "Data autorizzazione" +lastUsedDate: "Data ultimo utilizzo" state: "Stato" sort: "Ordina per" ascendingOrder: "Ascendente" descendingOrder: "Discendente" -scratchpad: "ScratchPad" +scratchpad: "Scratchpad" scratchpadDescription: "Lo Scratchpad offre un ambiente per esperimenti di AiScript. - È possibile scrivere, eseguire e confermare i risultati dell'interazione del codice - con Calckey." -output: "Uscita" + Puoi scrivere, eseguire e verificare i risultati dell'interazione del codice con + Firefish." +output: "Output" script: "Script" disablePagesScript: "Disabilita AiScript nelle pagine" -updateRemoteUser: "Aggiornare le informazioni di utente remot@" +updateRemoteUser: "Aggiorna le informazioni dell'utente remoto" deleteAllFiles: "Elimina tutti i file" deleteAllFilesConfirm: "Vuoi davvero eliminare tutti i file?" -removeAllFollowing: "Cancella tutti i follows" -removeAllFollowingDescription: "Cancella tutti i follows del server {host}. Per favore, - esegui se, ad esempio, l'istanza non esiste più." -userSuspended: "L'utente è sospes@." -userSilenced: "L'utente è silenziat@." -yourAccountSuspendedTitle: "Questo account è sospeso." +removeAllFollowing: "Smetti di seguire tutti" +removeAllFollowingDescription: "Smetti di seguire tutti gli account del server {host}. + È utile specialmente se il server non esiste più." +userSuspended: "L'utente è sospeso." +userSilenced: "L'utente è silenziato." +yourAccountSuspendedTitle: "Questo account è sospeso" yourAccountSuspendedDescription: "Questo account è stato sospeso a causa di una violazione dei termini di servizio del server. Contattare l'amministrazione per i dettagli. Si prega di non creare un nuovo account." menu: "Menù" divider: "Linea di separazione" addItem: "Aggiungi elemento" -relays: "Ripetitori" -addRelay: "Aggiungi ripetitore" -inboxUrl: "Inbox URL" -addedRelays: "Ripetitori configurati" -serviceworkerInfo: "Deve essere abilitato per le notifiche push. " -deletedNote: "Nota eliminata" -invisibleNote: "Nota invisibile" +relays: "Relay" +addRelay: "Aggiungi realy" +inboxUrl: "URL Inbox" +addedRelays: "Relay configurati" +serviceworkerInfo: "Deve essere abilitato per le notifiche push." +deletedNote: "Post rimosso" +invisibleNote: "Post invisibile" enableInfiniteScroll: "Abilita scorrimento infinito" visibility: "Visibilità" poll: "Sondaggio" -useCw: "Nascondere media" -enablePlayer: "Apri in lettore video" -disablePlayer: "Chiudi lettore video" -expandTweet: "Espandi tweet" -themeEditor: "Editor di temi" +useCw: "Nascondi il contenuto" +enablePlayer: "Apri nel video player" +disablePlayer: "Chiudi video player" +expandTweet: "Espandi post" +themeEditor: "Editor del tema" description: "Descrizione" -describeFile: "Aggiungi una descrizione d'immagine" +describeFile: "Aggiungi descrizione" enterFileDescription: "Inserisci descrizione" author: "Autore" -leaveConfirm: "Ci sono delle modifiche ancora non salvate. Vuoi cancellarle?" -manage: "Gestione" -plugins: "Estensioni" +leaveConfirm: "Ci sono modifiche ancora non salvate. Vuoi cancellarle?" +manage: "Amministrazione" +plugins: "Plugin" deck: "Deck" undeck: "Esci dal deck" -useBlurEffectForModal: "Utilizza effetto sfocatura per i modali" -useFullReactionPicker: "Usa la totalità del pannello di reazioni" +useBlurEffectForModal: "Usa l'effetto sfocatura per le finestre modali" +useFullReactionPicker: "Massimizza il pannello delle reazioni" width: "Larghezza" height: "Altezza" large: "Grande" medium: "Predefinito" small: "Piccolo" generateAccessToken: "Genera token di accesso" -permission: "Autorizzazioni " +permission: "Autorizzazioni" enableAll: "Abilita tutto" disableAll: "Disabilita tutto" tokenRequested: "Autorizza accesso all'account" @@ -621,34 +617,34 @@ emailConfigInfo: "Utilizzato per verificare il tuo indirizzo di posta elettronic email: "Email" emailAddress: "Indirizzo di posta elettronica" smtpConfig: "Impostazioni del server SMTP" -smtpHost: "Server remoto" -smtpPort: "Porta" -smtpUser: "Nome utente" +smtpHost: "Host" +smtpPort: "Port" +smtpUser: "Username" smtpPass: "Password" -emptyToDisableSmtpAuth: "Lasciare il nome utente e la password vuoti per disabilitare - la verifica SMTP" -smtpSecure: "Usare la porta SSL/TLS implicito per le connessioni SMTP" -smtpSecureInfo: "Disabilitare quando è attivo STARTTLS." -testEmail: "Testare la consegna di posta elettronica" -wordMute: "Filtri parole" -instanceMute: "Silenzia l'istanza" +emptyToDisableSmtpAuth: "Lasciare username e password vuoti per disabilitare la verifica + SMTP" +smtpSecure: "Usa la porta SSL/TLS predefinita per le connessioni SMTP" +smtpSecureInfo: "Disabilita quando è attivo STARTTLS" +testEmail: "Test di consegna email" +wordMute: "Filtro parole" +instanceMute: "Server silenziati" userSaysSomething: "{name} ha detto qualcosa" makeActive: "Attiva" -display: "Visualizza" +display: "Mostra" copy: "Copia" metrics: "Statistiche" overview: "Anteprima" logs: "Log" delayed: "Ritardo" -database: "Base di dati" +database: "Database" channel: "Canale" create: "Crea" notificationSetting: "Impostazioni notifiche" -notificationSettingDesc: "Seleziona il tipo di notifiche da visualizzare." +notificationSettingDesc: "Seleziona il tipo di notifiche da mostrare." useGlobalSetting: "Usa impostazioni generali" useGlobalSettingDesc: "Se abilitato, le impostazioni notifiche dell'account verranno utilizzate. Se disabilitato, si possono definire diverse singole impostazioni." -other: "Avanzate" +other: "Altro" regenerateLoginToken: "Genera di nuovo un token di connessione" regenerateLoginTokenDescription: "Genera un nuovo token di autenticazione. Solitamente questa operazione non è necessaria: quando si genera un nuovo token, tutti i dispositivi @@ -658,41 +654,41 @@ fileIdOrUrl: "ID o URL del file" behavior: "Comportamento" sample: "Esempio" abuseReports: "Segnalazioni" -reportAbuse: "Segnalazioni" +reportAbuse: "Segnalazione" reportAbuseOf: "Segnala {name}" fillAbuseReportDescription: "Si prega di spiegare il motivo della segnalazione. Se - riguarda una nota precisa, si prega di collegare anche l'URL della nota." + riguarda un post specifico, inserisci anche l'URL di riferimento." abuseReported: "La segnalazione è stata inviata. Grazie." -reporter: "il corrispondente" +reporter: "Segnalatore" reporteeOrigin: "Origine del segnalato" reporterOrigin: "Origine del segnalatore" -send: "Inviare" +send: "Invia" abuseMarkAsResolved: "Contrassegna la segnalazione come risolta" openInNewTab: "Apri in una nuova scheda" openInSideView: "Apri in vista laterale" defaultNavigationBehaviour: "Navigazione preimpostata" editTheseSettingsMayBreakAccount: "Modificare queste impostazioni può danneggiare l'account." -instanceTicker: "Informazioni sull'istanza da cui vengono le note" -waitingFor: "Aspettando {x}" +instanceTicker: "Informazioni del server dei post" +waitingFor: "In attesa di {x}" random: "Casuale" system: "Sistema" -switchUi: "Cambiare interfaccia utente" +switchUi: "Interfaccia" desktop: "Desktop" clip: "Clip" -createNew: "Crea nuov@" +createNew: "Crea" optional: "Opzionale" createNewClip: "Nuova clip" public: "Pubblica" -i18nInfo: "Calckey è tradotto in diverse lingue da volontari. Anche tu puoi contribuire +i18nInfo: "Firefish è tradotto in diverse lingue da volontari. Anche tu puoi contribuire su {link}." manageAccessTokens: "Gestisci token di accesso" accountInfo: "Informazioni account" -notesCount: "Conteggio note" +notesCount: "Numero di post" repliesCount: "Numero di risposte inviate" -renotesCount: "Numero di note che hai ricondiviso" +renotesCount: "Numero di boost dati" repliedCount: "Numero di risposte ricevute" -renotedCount: "Numero delle tue note ricondivise" +renotedCount: "Numero dei boost ricevuti" followingCount: "Numero di account seguiti" followersCount: "Numero di account che ti seguono" sentReactionsCount: "Numero di reazioni inviate" @@ -701,33 +697,31 @@ pollVotesCount: "Numero di voti inviati" pollVotedCount: "Numero di voti ricevuti" yes: "Sì" no: "No" -driveFilesCount: "Numero di file nel Drive" -driveUsage: "Utilizzazione del Drive" -noCrawle: "Rifiuta l'indicizzazione dai robot." -noCrawleDescription: "Richiedi che i motori di ricerca non indicizzino la tua pagina - di profilo, le tue note, pagine, ecc." -lockedAccountInfo: "A meno che non imposti la visibilità delle tue note su \"Solo - ai follower\", le tue note sono visibili da tutti, anche se hai configurato l'account - per confermare manualmente le richieste di follow." -alwaysMarkSensitive: "Segnare i media come sensibili per impostazione predefinita" -loadRawImages: "Visualizza le intere immagini allegate invece delle miniature." +driveFilesCount: "Numero di file nel drive" +driveUsage: "Spazio occupato nel drive" +noCrawle: "Rifiuta l'indicizzazione dai robot" +noCrawleDescription: "Chiedi ai motori di ricerca di non indicizzare i tuoi contenuti." +lockedAccountInfo: "Se non imposti la visibilità a \"Solo chi ti segue\", i singoli + post saranno visibili a tutti, anche se per seguirti è necessaria la tua approvazione." +alwaysMarkSensitive: "Segna i media come sensibili come impostazione predefinita" +loadRawImages: "Mostra le immagini intere invece delle miniature" disableShowingAnimatedImages: "Disabilita le immagini animate" -verificationEmailSent: "Una mail di verifica è stata inviata. Si prega di accedere - al collegamento per compiere la verifica." +verificationEmailSent: "Una mail di verifica è stata inviata. Clicca sul link per + completare la verifica." notSet: "Non impostato" emailVerified: "Il tuo indirizzo email è stato verificato" -noteFavoritesCount: "Conteggio note tra i preferiti" +noteFavoritesCount: "Numero di post preferiti" pageLikesCount: "Numero di pagine che ti piacciono" pageLikedCount: "Numero delle tue pagine che hanno ricevuto \"Mi piace\"" contact: "Contatti" -useSystemFont: "Usa il carattere predefinito del sistema" +useSystemFont: "Usa il font predefinito del sistema" clips: "Clip" experimentalFeatures: "Funzioni sperimentali" developer: "Sviluppatore" makeExplorable: "Account visibile sulla pagina \"Esplora\"" -makeExplorableDescription: "Se disabiliti l'opzione, il tuo account non verrà visualizzato +makeExplorableDescription: "Se disabiliti l'opzione, il tuo account non verrà mostrato sulla pagina \"Esplora\"." -showGapBetweenNotesInTimeline: "Mostrare un intervallo tra le note sulla timeline" +showGapBetweenNotesInTimeline: "Mostra uno spazio tra i post sulla timeline" duplicate: "Duplica" left: "Sinistra" center: "Centro" @@ -735,146 +729,146 @@ wide: "Largo" reloadToApplySetting: "Le tue preferenze verranno impostate dopo il ricaricamento della pagina. Vuoi ricaricare adesso?" needReloadToApply: "È necessario riavviare per rendere effettive le modifiche." -showTitlebar: "Visualizza la barra del titolo" +showTitlebar: "Mostra la barra del titolo" clearCache: "Svuota cache" onlineUsersCount: "{n} utenti online" nUsers: "{n} utenti" -nNotes: "{n}Note" +nNotes: "{n} post" sendErrorReports: "Invia segnalazioni di errori" sendErrorReportsDescription: "Quando abilitato, se si verifica un problema, informazioni - dettagliate sugli errori verranno condivise con Calckey in modo da aiutare a migliorare - la qualità del software.\nCiò include informazioni come la versione del sistema - operativo, il tipo di navigatore web che usi, la cronologia delle attività, ecc." -myTheme: "I miei temi" + dettagliate sugli errori verranno condivise con Firefish in modo da aiutare a migliorare + la qualità del software.\nSaranno inclusi dati come la versione del sistema operativo, + il tipo di navigatore web che usi, la cronologia delle attività, ecc." +myTheme: "Il mio tema" backgroundColor: "Sfondo" textColor: "Testo" -saveAs: "Salva con nome" +saveAs: "Salva con nome..." value: "Valore" createdAt: "Data di creazione" updatedAt: "Aggiornato il" saveConfirm: "Vuoi salvare le modifiche?" deleteConfirm: "Rimuovere?" -invalidValue: "Questo non è un valore valido." +invalidValue: "Valore non valido." registry: "Registro" -closeAccount: "Disattiva account" -currentVersion: "Versione attuale" +closeAccount: "Chiudi l'account" +currentVersion: "Versione in uso" latestVersion: "Ultima versione" youAreRunningUpToDateClient: "Stai usando la versione più recente del client." newVersionOfClientAvailable: "Una nuova versione del tuo client è disponibile." -usageAmount: "In utilizzo" +usageAmount: "In uso" capacity: "Capacità" inUse: "In utilizzo" editCode: "Modifica codice" apply: "Applica" -receiveAnnouncementFromInstance: "Ricevi i messaggi informativi dall'istanza" +receiveAnnouncementFromInstance: "Ricevi notifiche da questo server" emailNotification: "Eventi per notifiche via mail" publish: "Pubblico" -inChannelSearch: "Cerca in canale" +inChannelSearch: "Cerca nel canale" useReactionPickerForContextMenu: "Cliccare sul tasto destro per aprire il pannello di reazioni" -typingUsers: "{users} sta(nno) scrivendo" -jumpToSpecifiedDate: "Vai alla data " +typingUsers: "{users} sta scrivendo" +jumpToSpecifiedDate: "Vai alla data" showingPastTimeline: "Stai visualizzando una vecchia timeline" -clear: "Cancella" +clear: "Pulisci" markAllAsRead: "Segna tutti come già letti" goBack: "Indietro" unlikeConfirm: "Non ti piace più?" fullView: "Schermo intero" quitFullView: "Esci dalla modalità a schermo intero" addDescription: "Aggiungi descrizione" -userPagePinTip: "Qui puoi appuntare note, premendo \"Fissa sul profilo\" nel menù - delle singole note." -notSpecifiedMentionWarning: "Sono menzionati account che non vengono inclusi fra i - destinatari" +userPagePinTip: "Puoi fissare i post qui, premendo \"Fissa sul profilo\" nel menù + dei singoli post." +notSpecifiedMentionWarning: "Questo post menziona utenti che non sono inclusi fra + i destinatari" info: "Informazioni" userInfo: "Informazioni utente" unknown: "Sconosciuto" -onlineStatus: "Stato di connessione" -hideOnlineStatus: "Stato invisibile" -hideOnlineStatusDescription: "Abilitare l'opzione di stato invisibile può guastare - la praticità di singole funzioni, come la ricerca." +onlineStatus: "Stato online" +hideOnlineStatus: "Nascondi lo stato online" +hideOnlineStatusDescription: "Nascondere lo stato online può rendere meno efficaci + alcune funzioni, come la ricerca." online: "Online" -active: "Attiv@" +active: "Attivo" offline: "Offline" notRecommended: "Sconsigliato" botProtection: "Protezione contro i bot" -instanceBlocking: "Istanze bloccate" +instanceBlocking: "Gestione della federazione" selectAccount: "Scegli account" enabled: "Attivo" disabled: "Inattivo" quickAction: "Azioni rapide" user: "Utente" -administration: "Gestione" +administration: "Amministrazione" accounts: "Account" switch: "Sostituisci" -noMaintainerInformationWarning: "Le informazioni amministratore non sono impostate." +noMaintainerInformationWarning: "Le informazioni sull'amministratore non sono impostate." noBotProtectionWarning: "Nessuna protezione impostata contro i bot." configure: "Imposta" -postToGallery: "Pubblicare nella galleria" +postToGallery: "Crea nuovo post della galleria" gallery: "Galleria" -recentPosts: "Le più recenti" -popularPosts: "Le più visualizzate" -shareWithNote: "Condividere in nota" -ads: "Pubblicità" +recentPosts: "Pagine più recenti" +popularPosts: "Pagine più visualizzate" +shareWithNote: "Condividi in un post" +ads: "Banner della comunità" expiration: "Scadenza" memo: "Promemoria" priority: "Priorità" high: "Alta" middle: "Media" low: "Bassa" -emailNotConfiguredWarning: "Non hai impostato nessun indirizzo e-mail." +emailNotConfiguredWarning: "Non hai impostato un indirizzo e-mail." ratio: "Rapporto" previewNoteText: "Anteprima del testo" customCss: "CSS personalizzato" -global: "Federata" -squareAvatars: "Mostra l'immagine del profilo come quadrato" -sent: "Inviare" +global: "Globale" +squareAvatars: "Mostra l'avatar quadrato" +sent: "Inviato" received: "Ricevuto" -searchResult: "Risultati della Ricerca" +searchResult: "Risultati della ricerca" hashtags: "Hashtag" troubleshooting: "Risoluzione problemi" useBlurEffect: "Utilizza effetto sfocatura per l'interfaccia utente" -learnMore: "Più dettagli" -misskeyUpdated: "Calckey è stato aggiornato!" -whatIsNew: "Visualizza le informazioni sull'aggiornamento" +learnMore: "Maggiori informazioni" +misskeyUpdated: "Firefish è stato aggiornato!" +whatIsNew: "Mostra le informazioni sull'aggiornamento" translate: "Traduzione" translatedFrom: "Tradotto da {x}" accountDeletionInProgress: "La cancellazione dell'account è in corso" usernameInfo: "Un nome per identificare univocamente il tuo account sul server. È possibile utilizzare caratteri alfanumerici (a~z, A~Z, 0~9) e il trattino basso (_). Non sarà possibile cambiare il nome utente in seguito." -aiChanMode: "Modalità Ai" -keepCw: "Mantieni il CW" +aiChanMode: "Modalità Ai-chan" +keepCw: "Mantieni i content warning" resolved: "Risolto" unresolved: "Non risolto" -breakFollow: "Smetti di seguire" +breakFollow: "Rimuovi follower" itsOn: "Abilitato" itsOff: "Disabilitato" emailRequiredForSignup: "È necessario un indirizzo mail per registrare un account" unread: "Non letto" filter: "Filtri" controlPanel: "Pannello di controllo" -manageAccounts: "Gestisci account" -classic: "Classico" +manageAccounts: "Gestisci gli account" +classic: "Centrato" muteThread: "Silenzia la discussione" -unmuteThread: "Riattiva la discussione" -deleteAccountConfirm: "L'account verrà cancellato. Procedere?" +unmuteThread: "Non silenziare la discussione" +deleteAccountConfirm: "L'account verrà rimosso in modo irreversibile. Procedere?" incorrectPassword: "La password è errata." voteConfirm: "Votare per「{choice}」?" -hide: "Nascondere" +hide: "Nascondi" leaveGroup: "Esci dal gruppo" leaveGroupConfirm: "Uscire da「{name}」?" useDrawerReactionPickerForMobile: "Mostra sul drawer da dispositivo mobile" -welcomeBackWithName: "Bentornato/a, {name}" +welcomeBackWithName: "Ciao {name}" clickToFinishEmailVerification: "Fai click su [{ok}] per completare la verifica dell'indirizzo email." searchByGoogle: "Cerca" -indefinitely: "Non scade" +indefinitely: "Senza scadenza" tenMinutes: "10 minuti" oneHour: "1 ora" oneDay: "1 giorno" oneWeek: "1 settimana" -file: "Allegati" +file: "File" reverse: "Inverti" colored: "Colorato" label: "Etichetta" @@ -888,37 +882,40 @@ _emailUnavailable: smtp: "Il server email non risponde" _ffVisibility: public: "Pubblico" - followers: "Mostra solo ai follower" + followers: "Mostra solo a chi ti segue" private: "Invisibile" _signup: almostThere: "Quasi completo" emailAddressInfo: "Inserisci il tuo indirizzo email. Non verrà reso pubblico." + emailSent: Un messaggio di conferma è stato inviato al tuo indirizzo email ({email}). + Clicca il link incluso per completare la creazione dell'account. _accountDelete: - accountDelete: "Cancellazione account" + accountDelete: "Rimuovi l'account" sendEmail: "Al termine della cancellazione dell'account, verrà inviata una mail all'indirizzo a cui era registrato." - requestAccountDelete: "Richiesta di cancellazione account" - started: "Il processo di cancellazione è iniziato." - inProgress: "Cancellazione in corso" + requestAccountDelete: "Richiesta di rimozione account" + started: "Il processo di rimozione è iniziato." + inProgress: "Rimozione in corso" + mayTakeTime: La rimozione di un account impiega molte risorse di sistema, potrebbe + durare molto tempo a seconda di quanti contenuti hai creato e quanti file hai + caricato. _ad: back: "Indietro" - reduceFrequencyOfThisAd: "Visualizza questa pubblicità meno spesso" + reduceFrequencyOfThisAd: "Mostra meno spesso questa pubblicità" _forgotPassword: - enterEmail: "Inserisci l'indirizzo di posta elettronica che hai registrato nel tuo - profilo. Il collegamento necessario per ripristinare la password verrà inviato - a questo indirizzo." - ifNoEmail: "Se nessun indirizzo e-mail è stato registrato, si prega di contattare - l'amministratore·trice dell'istanza." - contactAdmin: "Poiché questa istanza non permette l'utilizzo di una mail, si prega - di contattare l'amministratore·trice dell'istanza per poter ripristinare la password." + enterEmail: "Inserisci l'e-mail che hai registrato nel tuo profilo. Il link di ripristino + della password verrà inviato a questo indirizzo." + ifNoEmail: "Se non hai registrato alcun indirizzo e-mail, contatta l'admin del server." + contactAdmin: "Poiché questo server non permette l'uso di indirizzi e-mail, contatta + l'admin per poter ripristinare la password." _gallery: - my: "Le mie pubblicazioni" - liked: "Pubblicazioni che mi piacciono" - like: "Mi piace!" + my: "La mia galleria" + liked: "Post che mi piacciono" + like: "Mi piace" unlike: "Non mi piace più" _email: _follow: - title: "Ha iniziato a seguirti" + title: "Hai un nuovo follower" _receiveFollowRequest: title: "Hai ricevuto una richiesta di follow" _plugin: @@ -927,30 +924,41 @@ _plugin: affidabili." manage: "Gestisci estensioni" _registry: - key: "Dati" - keys: "Dati" + key: "Chiave" + keys: "Chiavi" domain: "Dominio" createKey: "Crea chiave" -_aboutMisskey: - about: "Misskey è un software libero e open source, sviluppato da syuilo dal 2014." - contributors: "Principali sostenitori" - allContributors: "Tutti i sostenitori" + scope: Ambito +_aboutFirefish: + about: "Firefish è un fork di Misskey creato da ThatOneCalculator, che è in sviluppo + dal 2022." + contributors: "Principali collaboratori" + allContributors: "Tutti i collaboratori" source: "Codice sorgente" - translation: "Tradurre Calckey" - donate: "Sostieni Calckey" - morePatrons: "Apprezziamo sinceramente il supporto di tante altre persone. Grazie - mille! 🥰" + translation: "Traduzione di Firefish" + donate: "Sostieni Firefish" + morePatrons: "Apprezziamo sinceramente l'aiuto di tante altre persone non elencate + qui. Grazie mille! 🥰" patrons: "Sostenitori" + sponsors: Gli sponsor di Firefish + misskeyContributors: Contributori di Misskey + donateTitle: Ti piace Firefish? + pleaseDonateToFirefish: Con una donazione puoi supportare lo sviluppo di Firefish. + pleaseDonateToHost: Considera anche una donazione al server che ti ospita, {host}, + per contribuire ai costi che sostiene. + donateHost: Dona a {host} + patronsList: Elencati in ordine cronologico, non per importo. Dona con il link sopra + per apparire in questa lista! _nsfw: - respect: "Nascondere i media segnati come sensibli" - ignore: "Visualizzare i media segnati come sensibili" - force: "Nascondere tutti i media" + respect: "Nascondi i media sensibli (NSFW)" + ignore: "Mostra i media sensibili (NSFW)" + force: "Nascondi tutti i media" _mfm: - cheatSheet: "Bigliettino MFM" + cheatSheet: "Riepilogo comandi MFM" intro: "MFM è un linguaggio Markdown particolare che si può usare in diverse parti - di Calckey. Qui puoi visualizzare a colpo d'occhio tutta la sintassi MFM utile." - dummy: "Il Fediverso si espande con Calckey" - mention: "Menzioni" + di Firefish. Qui puoi visualizzare a colpo d'occhio tutta la sintassi MFM utile." + dummy: "Firefish espande il mondo del Fediverso" + mention: "Menzione" mentionDescription: "Si può menzionare un utente specifico digitando il suo nome utente subito dopo il segno @." hashtag: "Hashtag" @@ -958,89 +966,144 @@ _mfm: link: "Link" bold: "Grassetto" blockCode: "Codice (blocco)" - inlineMath: "Espressione matematica(Immersione)" + inlineMath: "Formula matematica (inline)" blockMath: "Formula matematica (blocco)" - quote: "Cita il nota" + quote: "Citazione" emoji: "Emoji personalizzati" search: "Cerca" - flip: "Inverti" - jump: "Animazione(salto)" - jumpDescription: "Da un animazione che salta su e giù." - bounce: "Animazione(rimbalzo)" - bounceDescription: "Rende il testo rimbalzante" - shake: "rimbalzante" - shakeDescription: "Rende il testo traballante" - twitch: "testo" - twitchDescription: "Fa tremare il testo" + flip: "Ribalta" + jump: "Animazione (salto)" + jumpDescription: "Mostra il contenuto che salta su e giù." + bounce: "Animazione (rimbalzo)" + bounceDescription: "Mostra il contenuto che rimbalza." + shake: "Animazione (tremore)" + shakeDescription: "Mostra il contenuto che trema." + twitch: "Animazione (sussulto)" + twitchDescription: "Mostra il contenuto che sussulta con forza." x2: "Più grande" x2Description: "Mostra il contenuto ingrandito." x3: "Molto più grande" x3Description: "Mostra il contenuto molto più ingrandito." - x4: "Estremamente più grande" - x4Description: "Mostra il contenuto estremamente più ingrandito." + x4: "Estremamente grande" + x4Description: "Mostra il contenuto estremamente ingrandito." blur: "Sfocatura" - blurDescription: "È possibile rendere sfocato il contenuto. Spostando il cursore - su di esso tornerà visibile chiaramente." + blurDescription: "È possibile rendere sfocato il contenuto. Diventerà visibile al + passaggio del puntatore." font: "Tipo di carattere" fontDescription: "Puoi scegliere il tipo di carattere per il contenuto." rainbow: "Arcobaleno" rotate: "Ruota" fade: "Dissolvenza" fadeDescription: "Dissolvenza in entrata e in uscita del contenuto." + alwaysPlay: Riproduci automaticamente tutti i MFM + advanced: MFM avanzato + hashtagDescription: Puoi specificare un hashtag usando numeri e testo. + smallDescription: Mostra il contenuto piccolo e sottile. + centerDescription: Mostra il contenuto centrato. + inlineCodeDescription: Mostra il codice di programmazione all'interno di una riga + di testo evidenziando la sintassi. + blockMathDescription: Mostra le formule matematiche (KaTeX) in una riga dedicata + advancedDescription: Se disabilitato, permette solo comandi semplici MFM, a meno + che non sia in corso una animazione + tadaDescription: Mostra il contenuto con l'animazione "tadà". + spin: Animazione (ruotazione) + sparkleDescription: Mostra il contenuto con l'effetto scintille. + scale: Ridimensiona + rotateDescription: Ruota il contenuto di un angolo specificato. + boldDescription: Evidenzia le lettere usando il grassetto. + small: Piccolo + inlineCode: Codice (inline) + position: Posizione + cropDescription: Ritaglia il contenuto. + foreground: Colore in primo piano + backgroundDescription: Cambia il colore di sfondo del testo. + flipDescription: Ribalta il contenuto orizzontalmente o verticalmente. + play: Riproduci MFM + stop: Stop MFM + warn: MFM può avere animazioni veloci o lampeggianti + quoteDescription: Mostra il contenuto come citazione. + emojiDescription: Puoi mostrare un emoji personalizzato racchiudendo il nome tra + due ":" + jelly: Animazione (gelatina) + foregroundDescription: Cambia il colore del testo in primo piano. + background: Colore di sfondo + blockCodeDescription: Mostra il codice di programmazione in un blocco di più righe + evidenziando la sintassi. + urlDescription: Gli URL possono essere mostrati. + tada: Animazione (tadà) + jellyDescription: Mostra il contenuto con l'animazione gelatina. + positionDescription: Sposta il contenuto di quanto specificato. + crop: Ritaglia + scaleDescription: Ridimensiona il contenuto di quanto specificato. + inlineMathDescription: Mostra le formule matematiche (KaTeX) all'interno del testo + spinDescription: Mostra il contenuto che ruota. + plainDescription: Disattiva altri effetti MFM contenuti dentro questo effetto MFM. + plain: Senza effetti + searchDescription: Mostra un box di ricerca con testo già inserito. + linkDescription: Gli URL nel testo sono mostrati come link. + center: Centrato + rainbowDescription: Mostra il contenuto coi colori arcobaleno. + sparkle: Scintillante _instanceTicker: none: "Nascondi" - remote: "Mostra solo per gli/le utenti remotə" + remote: "Mostra solo agli utenti remoti" always: "Mostra sempre" _serverDisconnectedBehavior: reload: "Ricarica automaticamente" dialog: "Apri avviso in finestra" - quiet: "Visualizza avviso in modo discreto" + quiet: "Mostra un avviso discreto" + nothing: Non fare nulla _channel: create: "Nuovo canale" - edit: "Gerisci canale" + edit: "Modifica il canale" setBanner: "Scegli intestazione" removeBanner: "Rimuovi intestazione" featured: "Tendenze" owned: "I miei canali" - following: "Seguiti" + following: "Chi segui" usersCount: "{n} partecipanti" - notesCount: "{n} note" + notesCount: "{n} post" + nameAndDescription: Nome e descrizione + nameOnly: Solo nome _menuDisplay: - hide: "Nascondere" + hide: "Nascondi" + top: In alto + sideFull: Laterale + sideIcon: Laterale (icone) _wordMute: muteWords: "Parole da filtrare" - muteWordsDescription: "Separare con uno spazio indica la condizione \"E\". Separare - con un'interruzzione riga indica la condizione \"O\"." - muteWordsDescription2: "Metti le parole chiavi tra slash per usare espressioni regolari + muteWordsDescription: "Separa con uno spazio per la condizione \"AND\". Separa con + un'interruzione riga per la condizione \"OR\"." + muteWordsDescription2: "Metti le parole chiave tra \"/\" per usare espressioni regolari (regexp)." - softDescription: "Nascondi della timeline note che rispondono alle condizioni impostate - qui." - hardDescription: "Impedisci alla timeline di caricare le note che rispondono alle - condizioni impostate qui. Inoltre, le note scompariranno in modo irreversibile, - anche se le condizioni verranno successivamente rimosse." + softDescription: "Nascondi dalla timeline i post che rispondono alle condizioni + specificate." + hardDescription: "Impedisci alla timeline di caricare i post che rispondono alle + condizioni specificate. I post spariranno in modo irreversibile, anche se le condizioni + verranno cambiate successivamente." soft: "Moderato" hard: "Severo" - mutedNotes: "Note silenziate" + mutedNotes: "Post silenziati" _theme: explore: "Esplora temi" install: "Installa un tema" manage: "Gerisci temi" code: "Codice tema" description: "Descrizione" - installed: "{name} è installato" + installed: "{name} è stato installato" installedThemes: "Temi installati" builtinThemes: "Temi integrati" alreadyInstalled: "Questo tema è già installato" - invalid: "Il formato tema non è valido" + invalid: "Il formato del tema non è valido" make: "Crea un tema" base: "Base" addConstant: "Aggiungi costante" constant: "Costante" defaultValue: "Valore predefinito" color: "Colore" - refConst: "Chiama costante" + refConst: "Valore di una costante" key: "Chiave" - func: "Funzione" + func: "Funzioni" funcKind: "Tipo di funzione" argument: "Argomento" alpha: "Opacità" @@ -1051,53 +1114,66 @@ _theme: keys: bg: "Sfondo" fg: "Testo" - focus: "Focalizzazione" + focus: "Focus" indicator: "Indicatore" panel: "Pannello" shadow: "Ombra" header: "Intestazione" navBg: "Sfondo della barra laterale" navFg: "Testo della barra laterale" - navHoverFg: "Testo della barra laterale (al passaggio del mouse)" + navHoverFg: "Testo della barra laterale (hover)" navActive: "Testo della barra laterale (attivo)" - navIndicator: "Indicatore di barra laterale" + navIndicator: "Indicatore della barra laterale" link: "Link" hashtag: "Hashtag" - mention: "Menzioni" - mentionMe: "Menzioni (di me)" - renote: "Rinota" - divider: "Interruzione di linea" + mention: "Menzione" + mentionMe: "Menzioni (mie)" + renote: "Boost" + divider: "Delimitatore" infoBg: "Sfondo informazioni" - infoFg: "Testo di informazioni" + infoFg: "Testo informazioni" infoWarnBg: "Sfondo degli avvisi" - infoWarnFg: "Testo di avviso" - cwBg: "Sfondo del CW" - cwFg: "Testo del pulsante CW" - cwHoverBg: "Sfondo del pulsante CW (sorvolato)" + infoWarnFg: "Testo dell'avviso" + cwBg: "Sfondo content warning" + cwFg: "Testo bottone content warning" + cwHoverBg: "Sfondo bottone content warning (hover)" toastBg: "Sfondo di notifica a comparsa" toastFg: "Testo di notifica a comparsa" buttonBg: "Sfondo del pulsante" - buttonHoverBg: "Sfondo del pulsante (sorvolato)" + buttonHoverBg: "Sfondo del pulsante (hover)" inputBorder: "Inquadra casella di testo" - listItemHoverBg: "Sfondo della voce di elenco (sorvolato)" - driveFolderBg: "Sfondo della cartella di disco" - badge: "Distintivo" + listItemHoverBg: "Sfondo della voce di un elenco (hover)" + driveFolderBg: "Sfondo della cartella del drive" + badge: "Badge" messageBg: "Sfondo della chat" + modalBg: Sfondo finestra modale + scrollbarHandle: Barra di scorrimento + scrollbarHandleHover: Barra di scorrimento (hover) + accent: Accento + fgHighlighted: Testo evidenziato + accentLighten: Accento (chiaro) + dateLabelFg: Testo data + accentDarken: Accento (scuro) + wallpaperOverlay: Trasparenza rispetto allo sfondo + importInfo: Se inserisci qui il codice di un tema, potrai importarlo nell'editor + del tema + refProp: Valore di una proprietà + basedProp: Nome proprietà _sfx: - note: "Nota" - noteMy: "Mia nota" + note: "Nuovo post" + noteMy: "Post scritto da te" notification: "Notifiche" chat: "Messaggi" chatBg: "Chat (sfondo)" - antenna: "Ricezione dell'antenna" - channel: "Notifiche di canale" + antenna: "Antenne" + channel: "Notifiche canale" _ago: future: "Futuro" justNow: "Ora" secondsAgo: "{n}s fa" minutesAgo: "{n}min fa" - hoursAgo: "{n}h fa" - daysAgo: "{1} giorni fa" + hoursAgo: "{n} ore fa" + daysAgo: "{n} giorni fa" weeksAgo: "{n} settimane fa" monthsAgo: "{n} mesi fa" yearsAgo: "{n} anni fa" @@ -1107,81 +1183,120 @@ _time: hour: "ore" day: "giorni" _tutorial: - titolo: "Come usare Calckey" - step1_1: "Benvenuto!" - step1_2: "Vediamo di configurarla. Sarete operativi in men che non si dica!" - step2_1: "Per prima cosa, compila il tuo profilo" - step2_2: "Fornendo alcune informazioni su chi siete, sarà più facile per gli altri - capire se vogliono vedere le vostre note o seguirvi" - step3_1: "Ora è il momento di seguire alcune persone!" - step3_2: "La vostra home e le vostre timeline social si basano su chi seguite, quindi - provate a seguire un paio di account per iniziare.\nCliccate sul cerchio più in - alto a destra di un profilo per seguirlo" - step4_1: "Fatevi conoscere" - step4_2: "Per il vostro primo post, alcuni preferiscono fare un post di {introduction} - o un semplice \"Ciao mondo!\"" - step5_1: "Linee temporali, linee temporali dappertutto!" - step5_2: "La tua istanza ha attivato {timelines} diverse timelines" - step5_3: "La timeline Home {icon} è quella in cui si possono vedere i post dei propri - follower" - step5_4: "La timeline Locale {icon} è quella in cui si possono vedere i post di - tutti gli altri utenti di questa istanza" - step5_5: "La timeline Raccomandati {icon} è quella in cui si possono vedere i post - delle istanze raccomandate dagli amministratori" - step5_6: "La timeline Social {icon} è quella in cui si possono vedere i post degli - amici dei propri follower" + titolo: "Come usare Firefish" + step1_1: "Ciao!" + step1_2: "Impostiamo alcune preferenze. Sarà tutto operativo in men che non si dica!" + step2_1: "Per prima cosa, completa il tuo profilo." + step2_2: "Fornendo alcune informazioni su chi sei, sarà più facile per gli altri + capire se vogliono vedere i tuoi post o seguirti." + step3_1: "Ora è il momento di seguire qualcuno!" + step3_2: "Le tue timeline Home e Social si basano su chi segui, quindi prova a seguire + un paio di account per iniziare.\nClicca sul bottone in alto a destra di un profilo + per seguirlo." + step4_1: "Fatti conoscere." + step4_2: "Per il primo post, alcuni preferiscono fare un {introduction} o un semplice + \"Ciao mondo!\"" + step5_1: "Timeline, le timeline sono dovunque!" + step5_2: "La tua istanza ha attivato {timelines} diverse timeline." + step5_3: "La timeline Home {icon} è quella dove puoi vedere i post degli account + che segui." + step5_4: "La timeline Locale {icon} è dove si possono vedere i post di tutti gli + utenti di questo server." + step5_5: "La timeline Social {icon} è una combinazione delle timeline Home e Locale." + step5_6: "La timeline Suggeriti {icon} è quella in cui si possono vedere i post + dai server suggeriti dagli admin." step5_7: "La timeline Globale {icon} è quella in cui si possono vedere i post di - ogni altra istanza collegata" + ogni altro server collegato." step6_1: "Allora, cos'è questo posto?" - step6_2: "Beh, non ti sei semplicemente unito a Calckey. Sei entrato in un portale - del Fediverse, una rete interconnessa di migliaia di server, chiamata \"istanze\"" - step6_3: "Ogni server funziona in modo diverso, e non tutti i server eseguono Calckey. - Questo però lo fa! È un po' complicato, ma ci riuscirete in poco tempo" - step6_4: "Ora andate, esplorate e divertitevi!" + step6_2: "Beh, adesso non sei semplicemente parte di Firefish. Sei in un portale + del Fediverso, una rete interconnessa di migliaia di server." + step6_3: "Ogni server funziona in modo diverso e non tutti i eseguono Firefish. + Questo sì però! Sembra complicato, ma diventerà subito chiaro con un po' di pratica." + step6_4: "Ora vai, esplora e divertiti!" + title: Come usare Firefish _2fa: - registerTOTP: "Aggiungi dispositivo" + registerTOTP: "Aggiungi app di autenticazione" + securityKeyName: Scegli un nome per la chiave + renewTOTPOk: Riconfigura + step2: Poi, scansiona il QR code mostrato a schermo. + securityKeyInfo: Oltre alle impronte digitali o al PIN, puoi anche autenticarti + con chiavi di sicurezza hardware che supportano FIDO2 per rendere il tuo account + ancora più sicuro. + step3Title: Inserisci un codice di autenticazione + alreadyRegistered: Hai già registrato un dispositivo per l'autenticazione a due + fattori (2FA). + step3: Inserisci il token fornito dalla tua app per terminare. + step4: Da ora in poi i futuri tentativi di login necessiteranno del token. + registerTOTPBeforeKey: Prima installa una app di autenticazione o registra una chiave + di sicurezza o una pass key. + token: Token 2FA + whyTOTPOnlyRenew: La app di autenticazione non può essere rimossa finché la chiave + di sicurezza è registrata. + step2Click: Cliccando sul QR code potrai registrare la 2FA nella tua chiave di sicurezza + o nella app di autenticazione dello smartphone. + step2Url: 'Puoi anche chiamare questo URL se sei su desktop:' + securityKeyNotSupported: Il tuo browser non supporta le chiavi di sicurezza. + chromePasskeyNotSupported: Le passkey di Chrome non sono supportate. + renewTOTPConfirm: I codici di verifica già impostati in precedenza smetteranno di + funzionare + renewTOTP: Riconfigura la app di autenticazione + registerSecurityKey: Registra una chiave di sicurezza o pass key + step1: Prima di tutto, installa una app di autenticazione (tipo {a} o {b}) sul tuo + device. + tapSecurityKey: Segui le istruzioni del tuo browser per registrare la chiave di + sicurezza o la pass key + removeKey: Rimuovi la chiave di sicurezza + removeKeyConfirm: Confermi la rimozione della chiave {name} ? + renewTOTPCancel: Annulla _permissions: "read:account": "Visualizzare le informazioni dell'account" "write:account": "Modificare le informazioni dell'account" "read:blocks": "Visualizza gli account bloccati" "write:blocks": "Gestisci gli account bloccati" - "read:drive": "Aprire il Drive" - "write:drive": "Gestire il Drive" + "read:drive": "Aprire il drive" + "write:drive": "Modifica o elimina file e cartelle sul drive" "read:favorites": "Visualizza i tuoi preferiti" "write:favorites": "Gestisci i tuoi preferiti" - "read:following": "Vedi le informazioni di follow" - "write:following": "Seguiti/ Smetti di seguire" + "read:following": "Vedi le informazioni su chi segui" + "write:following": "Aggiungi o rimuovi account da seguire" "read:messaging": "Visualizzare la chat" - "write:messaging": "Gestire la chat" + "write:messaging": "Gestisci la chat" "read:mutes": "Vedi account silenziati" - "write:mutes": "Gerisci account silenziati" - "write:notes": "Creare / Eliminare note" + "write:mutes": "Gestisci account silenziati" + "write:notes": "Crea o rimuovi i post" "read:notifications": "Visualizza notifiche" - "write:notifications": "Gerisci notifiche" + "write:notifications": "Gestisci notifiche" "read:reactions": "Vedi reazioni" - "write:reactions": "Gerisci reazioni" + "write:reactions": "Gestisci reazioni" "write:votes": "Votare" "read:pages": "Visualizzare pagine" - "write:pages": "Gestire pagine" - "read:page-likes": "Visualizzare i \"Mi piace\" di pagine" - "write:page-likes": "Gestire i \"Mi piace\" di pagine" + "write:pages": "Gestisci pagine" + "read:page-likes": "Visualizza i \"Mi piace\" delle pagine" + "write:page-likes": "Gestisci i \"Mi piace\" delle pagine" "read:user-groups": "Vedi gruppi di utenti" - "write:user-groups": "Gestisci gruppi di utenti" + "write:user-groups": "Gestisci i gruppi di utenti" "read:channels": "Visualizza canali" - "write:channels": "Gerisci canali" + "write:channels": "Gestisci i canali" + "write:gallery": Modifica la galleria + "read:gallery": Vedi nella galleria + "read:gallery-likes": Guarda i preferiti della galleria + "write:gallery-likes": Modifica i preferiti della galleria _auth: - shareAccess: "Autorizzare「{name}」ad accedere al tuo account?" - shareAccessAsk: "Vuoi davvero consentire l'accesso al tuo account a questa app'?" + shareAccess: "Autorizzi \"{name}\" ad accedere al tuo account?" + shareAccessAsk: "Vuoi consentire l'accesso al tuo account a questa app?" permissionAsk: "Questa app richiede le seguenti autorizzazioni:" pleaseGoBack: "Si prega di ritornare sulla app" - callback: "Ritornando sulla app" + callback: "Sto ritornando alla app" denied: "Accesso negato" + copyAsk: "Incolla questo codice di autorizzazione nell'applicazione:" + allPermissions: Accesso completo all'account _antennaSources: - all: "Tutte le note" - homeTimeline: "Note dagli utenti che segui" - users: "Note dagli utenti selezionati" - userList: "Note dagli utenti della lista selezionata" - userGroup: "Note dagli utenti del gruppo selezionato" + all: "Tutti i post" + homeTimeline: "Post dagli account che segui" + users: "Post dagli utenti selezionati" + userList: "Post dagli utenti di una lista specifica" + userGroup: "Post dagli utenti in un gruppo specifico" + instances: Post di tutti gli utenti di un server _weekday: sunday: "Domenica" monday: "Lunedì" @@ -1191,43 +1306,53 @@ _weekday: friday: "Venerdì" saturday: "Sabato" _widgets: - memo: "Memo" + memo: "Promemoria" notifications: "Notifiche" timeline: "Timeline" calendar: "Calendario" trends: "Tendenze" clock: "Orologio" - rss: "Aggregatore rss" + rss: "Aggregatore RSS" activity: "Attività" photos: "Foto" digitalClock: "Orologio digitale" federation: "Federazione" postForm: "Finestra di pubblicazione" - slideshow: "Diapositive" - button: "Pulsante" + slideshow: "Slideshow" + button: "Bottone" onlineUsers: "Utenti online" - jobQueue: "Coda di lavoro" + jobQueue: "Coda dei job" serverMetric: "Statistiche server" aiscript: "Console AiScript" + _userList: + chooseList: Seleziona una lista + rssTicker: Riquadro RSS + instanceCloud: Cloud del server + unixClock: Orologio UNIX + serverInfo: Informazioni sul server + meiliIndexCount: Post indicizzati + meiliStatus: Stato del server + meiliSize: Dimensione indice + userList: Elenco utenti _cw: - hide: "Nascondere" - show: "Mostra di più" + hide: "Nascondi" + show: "Mostra" chars: "{count} caratteri" files: "{count} file" _poll: noOnlyOneChoice: "Sono necessarie almeno 2 risposte" choiceN: "Opzione {n}" - noMore: "Hai aggiunto il numero massimo di opzioni." - canMultipleVote: "Possibilità di risposte multiple" + noMore: "Non puoi aggiungere altre opzioni" + canMultipleVote: "Permetti risposte multiple" expiration: "Scadenza" - infinite: "Non scade" - at: "Seleziona data" - after: "Seleziona durata" + infinite: "Senza scadenza" + at: "Seleziona data..." + after: "Seleziona durata..." deadlineDate: "Data di scadenza" - deadlineTime: "Ora di scadenza" + deadlineTime: "Ora" duration: "Durata" votesCount: "{n} voti" - totalVotes: "Totale di {n} voti" + totalVotes: "{n} voti in totale" vote: "Vota" showResult: "Visualizza risultati" voted: "Hai votato" @@ -1238,107 +1363,114 @@ _poll: remainingSeconds: "Rimangono {s} secondi" _visibility: public: "Pubblica" - publicDescription: "Visibile per tutti sul Fediverso" + publicDescription: "Il tuo post sarà visibile in tutte le timeline pubbliche" home: "Home" homeDescription: "Visibile solo sulla timeline \"Home\"" - followers: "Followers" - followersDescription: "Visibile solo per i tuoi followers" - specified: "Diretta" - specifiedDescription: "Visibile solo per gli/le utenti menzionatə" + followers: "Chi ti segue" + followersDescription: "Visibile solo a chi ti segue e a chi menzioni" + specified: "Diretto" + specifiedDescription: "Visibile solo per gli account menzionati" localOnly: "Soltanto locale" - localOnlyDescription: "Nascosta per gli/le utenti remotə" + localOnlyDescription: "Non visibile dagli altri server" _postForm: - replyPlaceholder: "Nota la tua risposta.." - quotePlaceholder: "Cita Nota..." - channelPlaceholder: "Pubblica in canale" + replyPlaceholder: "Rispondi a questo post..." + quotePlaceholder: "Citazione da questo post..." + channelPlaceholder: "Visibile in un canale..." _placeholders: - a: "Che succede?" + a: "Che stai facendo?" b: "È successo qualcosa?" c: "Che cos'hai in mente?" d: "Vuoi dire qualcosa?" - e: "Scrivi qualcosa qui" - f: "Aspettando che scriva..." + e: "Scrivi qualcosa qui..." + f: "Aspetto che tu scriva..." _profile: name: "Nome" - username: "Nome utente" + username: "Username" description: "Bio" youCanIncludeHashtags: "Puoi anche includere hashtag." metadata: "Informazioni aggiuntive" metadataEdit: "Modifica informazioni aggiuntive" metadataDescription: "Puoi pubblicare fino a quattro informazioni aggiuntive sul - profilo." + profilo. Puoi aggiungere un tag {a} o {l} con {rel} per verificare il link sul + tuo profilo!" metadataLabel: "Etichetta" metadataContent: "Contenuto" changeAvatar: "Modifica immagine profilo" changeBanner: "Cambia intestazione" + locationDescription: Se inserisci la tua città, agli altri utenti sarà mostrata + l'ora locale in cui ti trovi. _exportOrImport: - allNotes: "Tutte le note" - followingList: "Follows" + allNotes: "Tutti i post" + followingList: "Account che segui" muteList: "Account silenziati" blockingList: "Account bloccati" userLists: "Liste" + excludeInactiveUsers: Escludi account non attivi + excludeMutingUsers: Escludi account silenziati _charts: federation: "Federazione" apRequest: "Richieste" usersIncDec: "Variazione del numero di utenti" usersTotal: "Numero totale di utenti" activeUsers: "Numero di utenti attivi" - notesIncDec: "Variazione del numero di note" - localNotesIncDec: "Variazione del numero di note locali" - remoteNotesIncDec: "Variazione del numero di note distanti" - notesTotal: "Conteggio totale di note" + notesIncDec: "Variazione del numero di post" + localNotesIncDec: "Variazione del numero di post locali" + remoteNotesIncDec: "Variazione del numero di post remoti" + notesTotal: "Numero totale di post" filesIncDec: "Variazione del numero dei file" filesTotal: "Numero totale di file" - storageUsageIncDec: "Variazione dell'utilizzo dell'immagazzinamento" - storageUsageTotal: "Utilizzo totale dell'immagazzinamento" + storageUsageIncDec: "Variazione dello spazio occupato" + storageUsageTotal: "Spazio totale occupato" _instanceCharts: requests: "Richieste" users: "Variazione del numero di utenti" - usersTotal: "Totale cumulativo di utenti" - notes: "Variazione del numero di note" - notesTotal: "Totale cumulato di note" - ff: "Variazione dei follow/ follower" - ffTotal: "Totale cumulato dei follow/ follower" + usersTotal: "Numero totale di utenti" + notes: "Differenza nel numero di post" + notesTotal: "Numero totale di post" + ff: "Differenza tra chi segui e chi ti segue " + ffTotal: "Totale tra chi segui e chi ti segue" cacheSize: "Variazione dello spazio occupato dalla cache" - cacheSizeTotal: "Totale cumulato dello spazio occupato dalla cache" + cacheSizeTotal: "Spazio totale occupato dalla cache" files: "Variazione del numero di file" - filesTotal: "Totale cumulato del numero di file" + filesTotal: "Numero totale di file" _timelines: home: "Home" local: "Locale" social: "Sociale" global: "Federata" + recommended: Suggerito _pages: newPage: "Crea pagina" editPage: "Modifica pagina" - readPage: "Visualizzando fonte " - created: "Pagina creata!" - updated: "Pagina aggiornata con successo!" + readPage: "Sorgente della pagina" + created: "Pagina creata" + updated: "Pagina aggiornata con successo" deleted: "Pagina eliminata" pageSetting: "Impostazioni pagina" - nameAlreadyExists: "Esiste già una pagina con lo stesso URL." - invalidNameTitle: "L'URL di pagina definito non è valido" - invalidNameText: "Verifica che il campo non è vuoto" + nameAlreadyExists: "Lo URL specificato per la pagina esiste già" + invalidNameTitle: "L'URL scelto per la pagina non è valido" + invalidNameText: "Verifica che il titolo non sia vuoto" editThisPage: "Modifica questa pagina" - viewSource: "Visualizza sorgente" - viewPage: "Visualizza pagina" + viewSource: "Mostra sorgente" + viewPage: "Visualizza le tue pagine" like: "Mi piace" - unlike: "Togli Mi piace" + unlike: "Togli \"mi piace\"" my: "Le mie pagine" liked: "Pagine che mi piacciono" - featured: "Popolari" + featured: "In evidenza" contents: "Contenuto" - content: "Blocco di pagina" + content: "Blocco di contenuti" variables: "Variabili" title: "Titolo" url: "URL della pagina" - summary: "Riassunto di pagina" - hideTitleWhenPinned: "Nascondere il titolo pagina quando è fissata in cima al profilo." - font: "Tipo di carattere" + summary: "Sommario" + hideTitleWhenPinned: "Nascondi il titolo della pagina quando è fissata in cima al + profilo" + font: "Font" fontSerif: "Serif" fontSansSerif: "Sans serif" - eyeCatchingImageSet: "Imposta un'immagine attrattiva" - eyeCatchingImageRemove: "Elimina l'immagine attrattiva" + eyeCatchingImageSet: "Scegli l'immagine abbinata" + eyeCatchingImageRemove: "Rimuovi l'immagine abbinata" chooseBlock: "Aggiungi blocco" selectType: "Seleziona tipo" enterVariableName: "Digita un nome di variabile" @@ -1351,24 +1483,26 @@ _pages: textarea: "Area di testo" section: "Sezione" image: "Immagini" - button: "Pulsante" + button: "Bottone" if: "Se" _if: - variable: "Variabili" + variable: "Variabile" post: "Finestra di pubblicazione" _post: text: "Contenuto" + canvasId: Canvas ID + attachCanvasImage: Allega una immagine canvas textInput: "Immissione testo" _textInput: name: "Nome della variabile" text: "Titolo" default: "Valore predefinito" - textareaInput: "Immissione testo a più righe" + textareaInput: "Immissione testo su più righe" _textareaInput: name: "Nome della variabile" text: "Titolo" default: "Valore predefinito" - numberInput: "Immissione numerica" + numberInput: "Immissione numero" _numberInput: name: "Nome della variabile" text: "Titolo" @@ -1376,16 +1510,17 @@ _pages: _canvas: width: "Larghezza" height: "Altezza" - note: "Nota integrata" + id: Canvas ID + note: "Post integrato" _note: - id: "ID nota" - idDescription: "Qui puoi anche incollare l'URL della nota che vuoi impostare." - detailed: "Visualizzazione dettagliata" - switch: "Interruttore" + id: "Post ID" + idDescription: "In alternativa puoi incollare qui l'URL del post." + detailed: "Vista dettagliata" + switch: "Switch" _switch: name: "Nome della variabile" text: "Titolo" - default: "Valore predefinito" + default: "Default" counter: "Contatore" _counter: name: "Nome della variabile" @@ -1394,47 +1529,58 @@ _pages: _button: text: "Titolo" colored: "Colorato" - action: "Operazione da eseguire quando viene premuto il pulsante" + action: "Azione abbinata al bottone" _action: - dialog: "Visualizzare una finestra di dialogo" + dialog: "Mostra una finestra di dialogo" _dialog: content: "Contenuto" - resetRandom: "Ripristinare un numero aleatorio" - pushEvent: "Inviare evento" + resetRandom: "Reset del seme random" + pushEvent: "Invia un evento" _pushEvent: event: "Nome evento" - message: "Messaggio da visualizzare quando abilitato" + message: "Messaggio all'attivazione" variable: "Variabile da inviare" no-variable: "Nessun contenuto" - callAiScript: "Chiamare AiScript" + callAiScript: "Invoca AiScript" _callAiScript: functionName: "Nome della funzione" - radioButton: "Opzioni" + radioButton: "Opzione" _radioButton: name: "Nome della variabile" title: "Titolo" default: "Valore predefinito" + values: Elenco di scelte, una per linea + canvas: Canvas script: categories: - comparison: "Metodo comparativo" - random: "Aleatorietà" - value: "Valore" - fn: "Funzione" + comparison: "Comparazione" + random: "Valore casuale" + value: "Valori" + fn: "Funzioni" list: "Liste" + flow: Controllo del flusso + logical: Operazione logica + text: Operazioni sul testo + convert: Conversioni + operation: Operazione blocks: text: "Testo" - multiLineText: "Testo (a più righe)" + multiLineText: "Testo (più righe)" textList: "Lista di testo" _strLen: arg1: "Testo" _strPick: arg1: "Testo" + arg2: Posizione della stringa _strReplace: arg1: "Testo" + arg3: Sostituisci con + arg2: Testo da sostituire _strReverse: arg1: "Testo" _join: arg1: "Liste" + arg2: Separatore _add: arg1: "A" arg2: "B" @@ -1457,11 +1603,11 @@ _pages: _notEq: arg1: "A" arg2: "B" - and: "A e B" + and: "A AND B" _and: arg1: "A" arg2: "B" - or: "A o B" + or: "A OR B" _or: arg1: "A" arg2: "B" @@ -1478,33 +1624,114 @@ _pages: arg1: "A" arg2: "B" _if: - arg1: "Se" - arg2: "Se" - random: "Aleatorietà" + arg1: "if" + arg2: "then" + arg3: else + random: "Casuale" _randomPick: - arg1: "Liste" + arg1: "Lista" _dailyRandomPick: - arg1: "Liste" + arg1: "Lista" _seedRandom: arg2: "Probabilità" + arg1: Seme _seedRandomPick: arg2: "Liste" + arg1: Seme _DRPWPM: arg1: "Lista di testo" _pick: arg1: "Liste" + arg2: Posizione _listLen: - arg1: "Liste" + arg1: "Lista" _stringToNumber: arg1: "Testo" _splitStrByLine: arg1: "Testo" - ref: "Variabili" + ref: "Variabile" fn: "Funzione" + not: NOT + _not: + arg1: not + _fn: + slots: Slot + arg1: Output + slots-info: Scrivi uno slot per riga + _for: + arg2: Azione + arg1: Numero di ripetizioni + add: Somma + _dailyRandom: + arg1: Probabilità + _dailyRannum: + arg1: Valore minimo + arg2: Valore massimo + strLen: Lunghezza del testo + join: Concatenazione testo + splitStrByLine: Suddividi per riga + subtract: Sottrazione + lt: < A minore di B + gt: '> A maggiore di B' + _seedRannum: + arg1: Seme + arg3: Valora massimo + arg2: Valore minimo + multiply: Moltiplicazione + _round: + arg1: Numero + numberToString: Da numero a testo + _numberToString: + arg1: Numero + strPick: Estrai stringa + _rannum: + arg2: Valore massimo + arg1: Valore minimo + listLen: Calcola la lunghezza della lista + strReverse: Ribalta il testo + _textList: + info: Inserisci un elemento per riga + strReplace: Stringa sostitutiva + ltEq: <= A minore o uguale a B + divide: Divisione + mod: Resto + _random: + arg1: probabilità + randomPick: Scegli a caso da una lista + number: Numero + gtEq: '>= A maggiore o uguale a B' + rannum: Casuale + dailyRannum: Numero casuale (Cambia una volta al giorno per ogni utente) + dailyRandomPick: Scegli a caso da una lista (Cambia una volta al giorno per + ogni utente) + seedRandom: Casuale (con seme) + seedRannum: Numero casuale (con seme) + seedRandomPick: Scegli a caso da una lista (con seme) + aiScriptVar: Variabile AiScript + for: Ciclo for + if: IF + dailyRandom: Casuale (Cambia una volta al giorno per ogni utente) + DRPWPM: Scegli a caso da una lista pesata (Cambia una volta al giorno per ogni + utente) + pick: Seleziona da una lista + stringToNumber: Da testo a numero + round: Arrotondamento decimale + eq: A e B sono uguali types: string: "Testo" - array: "Liste" + array: "Lista" stringArray: "Lista di testo" + number: Numero + boolean: Vero/Falso + emptySlot: Slot vuoto + typeError: Lo slot {slot} accetta valori di tipo "{expect}", ma il valore fornito + è di tipo "{actual}"! + enviromentVariables: Variabili d'ambiente + thereIsEmptySlot: Lo slot {slot} è vuoto! + pageVariables: Variabili di pagina + argVariables: Slot di input + inspector: Ispettore + alignCenter: Centra gli elementi _relayStatus: requesting: "In attesa di approvazione" accepted: "Approvato" @@ -1513,34 +1740,41 @@ _notification: fileUploaded: "File caricato correttamente" youGotMention: "{name} ti ha menzionato" youGotReply: "{name} ti ha risposto" - youGotQuote: "{name} ha citato il tuo Nota e ha detto" - youRenoted: "{name} ha rinotato" + youGotQuote: "{name} ti ha citato" + youRenoted: "Boost da {name}" youGotPoll: "{name} ha votato" youGotMessagingMessageFromUser: "{name} ti ha mandato un messaggio" youGotMessagingMessageFromGroup: "{name} ti ha mandato un messaggio nella chat" - youWereFollowed: "Ha iniziato a seguirti" + youWereFollowed: "ha iniziato a seguirti" youReceivedFollowRequest: "Hai ricevuto una richiesta di follow" yourFollowRequestAccepted: "La tua richiesta di follow è stata accettata" - youWereInvitedToGroup: "Invitat@ al gruppo" + youWereInvitedToGroup: "{userName} ti ha invitato in un gruppo" _types: all: "Tutto" - follow: "Nuovə follower" + follow: "Nuovi che ti seguono" mention: "Menzioni" reply: "Risposte" - renote: "Rinota" + renote: "Boost" quote: "Cita" reaction: "Reazioni" pollVote: "Voti ricevuti" - receiveFollowRequest: "Richiesta di follow ricevuta" - followRequestAccepted: "Richiesta di follow accettata" + receiveFollowRequest: "Hai una richiesta di follow" + followRequestAccepted: "Richiesta accettata" groupInvited: "Invito a un gruppo" - app: "Notifiche da applicazioni" + app: "Notifiche dalle app collegate" + pollEnded: Fine del sondaggio _actions: reply: "Rispondi" - renote: "Rinota" + renote: "Boost" + followBack: ha ricambiato il follow e ti segue + reacted: ha aggiunto una reazione al tuo post + renoted: ha dato un boost al tuo post + pollEnded: I risultati del sondaggio sono disponibili + voted: ha votato il tuo sondaggio + emptyPushNotificationMessage: Le notifiche push sono state aggiornate _deck: alwaysShowMainColumn: "Mostra sempre la colonna principale" - columnAlign: "Allineare colonne" + columnAlign: "Allinea colonne" addColumn: "Aggiungi colonna" swapLeft: "Sposta a sinistra" swapRight: "Sposta a destra" @@ -1548,16 +1782,383 @@ _deck: swapDown: "Sposta in basso" stackLeft: "Impila a sinistra" popRight: "Estrai a destra" - profile: "Profilo" + profile: "Workspace" _columns: main: "Principale" widgets: "Widget" notifications: "Notifiche" tl: "Timeline" - antenna: "Antenne" - list: "Liste" + antenna: "Antenna" + list: "Lista" mentions: "Menzioni" - direct: "Diretta" + direct: "Messaggi diretti" + channel: Canale + introduction: Crea l'interfaccia perfetta ordinando liberamente le colonne! + deleteProfile: Rimuovi il workspace + nameAlreadyExists: Esiste già un workspace con questo nome. + widgetsIntroduction: Scegli "Modifica widget" nel menu della colonna per aggiungere + un widget. + newProfile: Nuovo workspace + renameProfile: Rinomina il workspace + introduction2: Fai clic sul + a destra dello schermo per aggiungere nuove colonne + quando vuoi. + configureColumn: Impostazioni della colonna noThankYou: No grazie addInstance: Aggiungi un'istanza deleted: Eliminato +editNote: Modifica post +edited: Modificato {date} {time} +_skinTones: + medium: Medio + yellow: Giallo + light: Chiaro + dark: Scuro + mediumLight: Chiaro medio + mediumDark: Scuro medio +removeReaction: Elimina la tua reazione +showEmojisInReactionNotifications: Mostra le emoji nelle notifiche delle reazioni +flagSpeakAsCatDescription: Il testo dei post sarà "nyanified" quando sei in modalità + gatto +selectInstance: Scegli un server +keepOriginalUploading: Mantieni l'immagine originale +moderation: Moderazione +expandOnNoteClickDesc: Se disabilitato, potrai comunque aprire i post con il tasto + destro del mouse oppure cliccando sull'orario. +userSaysSomethingReasonQuote: '{name} ha citato un post che contiene {reason}' +narrow: Stretto +cropImageAsk: Vuoi ritagliare questa immagine? +recentNDays: Ultimi {n} giorni +noEmailServerWarning: Il server per le email non è configurato. +cannotUploadBecauseInappropriate: Non è stato possibile caricare questo contenuto + perché una o più parti sono state identificate come NSFW. +navbar: Barra di navigazione +activeEmailValidationDescription: Abilita la verifica rigorosa dell'indirizzo email, + che include il controllo di indirizzi usa e getta e dell'effettivo funzionamento. + Se non attivo, viene controllato solo il formato dell'indirizzo email. +customMOTDDescription: Messaggi personalizzati che sono mostrati sullo splash screen + durate il caricamento, uno per riga, saranno scelti a caso ogni volta che l'utente + carica o ricarica la pagina. +recommendedInstances: Server suggeriti +customSplashIconsDescription: Elenco degli URL di icone personalizzate da mostrare + casualmente ogni volta che l'utente carica o ricarica la pagina. Assicurati che + le immagini siano su un URL statico, preferibilmente di dimensioni 192x192. +swipeOnDesktop: Permetti lo swipe su desktop simile alla versione mobile +logoImageUrl: URL del logo +indexFrom: Indicizza dal post ID +customKaTeXMacro: Macro KaTeX personalizzate +indexPosts: Crea indice dei post +signupsDisabled: Le iscrizioni su questo server al momento non sono possibili, ma + puoi sempre iscriverti su un altro server! Se invece hai un codice di invito per + questo server, inseriscilo qua sotto. +findOtherInstance: Scegli un altro server +apps: App +expandOnNoteClick: Apri i post con un click +userSaysSomethingReasonReply: '{name} ha risposto a un post che contiene {reason}' +userSaysSomethingReasonRenote: '{name} ha dato un boost al post che contiene {reason}' +forwardReport: Inoltra la segnalazione al server remoto +size: Dimensione +numberOfColumn: Numero di colonne +enableServerMachineStats: Abilita le statistiche hardware del server +enableRecommendedTimeline: Abilita la timeline degli utenti suggeriti +regexpError: Errore nell'espressione regolare +forwardReportIsAnonymous: Al posto del proprio account, nel server remoto verrà mostrato + un account anonimo come autore della segnalazione. +unclip: Togli il clip +instanceSecurity: Sicurezza del server +recommended: Suggerimento +seperateRenoteQuote: Separa i bottoni di boost e citazione +ffVisibility: Visibilità di chi segui e chi ti segue +failedToFetchAccountInformation: Non è possibile ottenere informazioni sull'account +rateLimitExceeded: Limite di richieste superato +document: Documentazione +statusbar: Barra di stato +pleaseSelect: Seleziona un'opzione +cannotUploadBecauseNoFreeSpace: Caricamento fallito per mancanza di spazio sul drive. +migration: Migrazione +moveFromLabel: 'Account remoto da migrare:' +moveFrom: Migra verso questo account da uno vecchio +sendModMail: Invia un avviso di moderazione +isSystemAccount: Questo account è creato e gestito dal sistema. Non modificare, eliminare, + moderare o mettere mano a questo account altrimenti il sistema potrebbe smettere + di funzionare. +speed: Velocità +refreshInterval: 'Intervallo di aggiornamento ' +slow: Lento +customSplashIcons: URL icone personalizzate di caricamento (splash screen) +removeQuote: Rimuovi citazione +removeRecipient: Rimuovi destinatario +removeMember: Rimuovi membro +reactionPickerSkinTone: Tono della pelle preferito negli emoji +_experiments: + postImportsCaption: Permette agli utenti di importare i post da vecchi account Firefish, + Misskey, Mastodon, Akkoma e Pleroma. Potrebbe causare rallentamenti durante il + caricamento. + enablePostImports: Abilita l'importazione di post + title: Esperimenti +moveTo: Migra l'account corrente verso un nuovo account +searchPlaceholder: Cerca in Firefish +listsDesc: Le liste ti permettono di avere delle timeline con utenti specifici. Le + trovi sulla pagina timeline. +flagSpeakAsCat: Parla come un gatto +accountMoved: "L'utente si è trasferito su un nuovo account:" +flagShowTimelineRepliesDescription: Mostra le risposte degli utenti ai post di altri + utenti nella timeline, se attivata. +silencedInstances: Server silenziati +silencedInstancesDescription: Elenca gli hostname dei server che vuoi silenziare. + Tutti gli utenti di questi server saranno trattati come silenziati, possono fare + richieste di follow e non possono menzionare gli account locali che non li seguono. + I server bloccati non sono coinvolti. +hiddenTags: Hashtag nascosti +hiddenTagsDescription: 'Elenca gli hashtag (senza #) che vuoi nascondere da trending + ed esplora. Gli hashtag nascosti restano comunque accessibili in altre condizioni.' +defaultValueIs: 'Predefinito: {value}' +manageGroups: Gestisci i gruppi +antennasDesc: "Le antenne mostrano tutti i nuovi post che rientrano nei criteri che + imposti tu!\nSono visibili dalla pagina della timeline." +advanced: Avanzato +pubSub: Account Pub/Sub +driveCapOverrideLabel: Cambia lo spazio disco per questo utente +typeToConfirm: Inserisci {x} per confermare +check: Verifica +logoutConfirm: Confermi il log out? +lastActiveDate: Ultimo utilizzo +enterSendsMessage: Premi "Invio" nei messaggi per inviare (altrimenti è "Ctrl + Invio") +customMOTD: Messaggi di caricamento personalizzati (splash screen) +replayTutorial: Ripeti il tutorial +indexFromDescription: Lascia vuoto per indicizzare tutti i post +indexNotice: Creazione indice in corso. Sarà necessario del tempo, fai attenzione + a non riavviare il server per almeno un'ora. +enableCustomKaTeXMacro: Abilita le macro KaTeX personalizzate +preventAiLearningDescription: Richiedi ai bot di intelligenza artificiale di terze + parti di non studiare e acquisire il contenuto che carichi, come post e immagini. +preventAiLearning: Impedisci l'acquisizione dei contenuti da parte dei bot IA +confirmToUnclipAlreadyClippedNote: Questo post è già incluso nella clip "{name}". + Vuoi rimuoverlo dalla clip piuttosto? +moveToLabel: 'Account dove vuoi migrare:' +migrationConfirm: "Hai l'assoluta sicurezza di voler migrare il tuo account verso + {account}? Quando lo avrai fatto, non sarai in grado di tornare indietro e non potrai + più usare questo account normalmente.\nInoltre assicurati che l'account su questo + server sia quello da cui vuoi migrare e non il contrario." +moveAccount: Migra l'account! +verifiedLink: Link verificato +_feeds: + copyFeed: Copia il feed + jsonFeed: Feed JSON + rss: RSS + atom: Atom +alt: ALT +themeColor: Colore dell'indicatore del server +instanceDefaultThemeDescription: Inserisci il codice del tema nel formato a oggetti. +failedToUpload: Caricamento fallito +sendPushNotificationReadMessage: Rimuovi le notifiche push dopo che sono state lette +splash: Splash screen di caricamento +noteId: Post ID +noInstances: Non ci sono server +antennaInstancesDescription: Elenca un server per riga +switchAccount: Cambia account +swipeOnMobile: Permetti di fare swipe tra le pagine +showAdminUpdates: Segnala nuove versioni di Firefish (solo admin) +selectChannel: Seleziona un canale +clipsDesc: I clip sono come segnalibri categorizzati e condivisibili. Puoi creare + clip dal menu di ciascun post. +instanceDefaultDarkTheme: Tema scuro predefinito del server +origin: Origine +newer: più recente +older: più vecchio +silenceThisInstance: Silenzia questo server +silenced: Silenziato +keepOriginalUploadingDescription: Salva l'immagine caricata originariamente così com'è. + Se disattivato, al momento del caricamento verrà generata una versione da visualizzare + sul web. +accessibility: Accessibilità +ffVisibilityDescription: Puoi far vedere chi segui e chi ti segue. +continueThread: Continua la conversazione +smartphone: Smartphone +tablet: Tablet +mutePeriod: Durata del silenziamento +updateAvailable: Potrebbe essere disponibile un aggiornamento! +enableAutoSensitive: Riconoscimento automatico contenuto NSFW +enableAutoSensitiveDescription: Permette il riconoscimento dei contenuti NSFW tramite + Machine Learning, quando possibile. Se disattivi questa opzione, considera che potrebbe + essere comunque attiva per tutto il server. +instanceDefaultLightTheme: Tema chiaro predefinito del server +objectStorageS3ForcePathStyle: Usa URL basati sul path per gli endpoint +objectStorageS3ForcePathStyleDesc: Attiva questa opzione per costruire un URL dell'endpoint + nel formato 's3.amazonaws.com//' invece che '.s3.amazonaws.com'. +regexpErrorDescription: "Si è verificato un errore nell'espressione regolare alla + riga {line} del filtro parole {tab}:" +channelFederationWarn: I canali non vengono federati con altri server +secureMode: Modalità sicura (Acquisizione autorizzata) +secureModeInfo: Le richieste dai server remoti non ricevono risposta senza prima una + verifica. +privateMode: Modalità privata +allowedInstancesDescription: Gli host dei server che saranno federati in esclusiva, + uno per riga (funziona solo in modalità privata). +privateModeInfo: Se abilitata, solo i server in una whitelist potranno essere federati + con questo server. Tutti i post saranno nascosti al pubblico. +allowedInstances: Whitelist dei server +customCssWarn: Questa impostazione dovrebbe essere usata solo se sai cosa stai facendo. + Inserire valori errati potrebbe bloccare il funzionamento del client. +lastCommunication: Ultima comunicazione +breakFollowConfirm: Confermi la rimozione del follower? +makeReactionsPublic: Rendi pubblica la storia di tutte le reazioni +makeReactionsPublicDescription: Questa opzione rende visibile a tutti l'elenco delle + tue reazioni ai post nel passato. +overridedDeviceKind: Tipo di dispositivo +auto: Auto +reflectMayTakeTime: Potrebbe servire del tempo perché il cambiamento abbia effetto. +cropImage: Ritaglia l'immagine +recentNHours: Ultime {n} ore +deleteAccount: Rimuovi l'account +numberOfPageCache: Numero di pagine nella cache +sensitiveMediaDetection: Riconoscimento dei contenuti NSFW +move: Sposta +caption: Descrizione automatica +sendPushNotificationReadMessageCaption: Una notifica con il testo "{emptyPushNotificationMessage}" + sarà mostrata per breve tempo. Potrebbe aumentare il consumo di batteria del tuo + dispositivo. +moveAccountDescription: È un processo irreversibile. Assicurati di aver prima impostato + un alias per questo account sul tuo nuovo server prima di migrare. Inserisci l'account + nel formato @nomeutente@server.com +enableIdenticonGeneration: Abilita la generazione di Identicon +donationLink: Link alla pagina per le donazioni +delete2fa: Disabilita 2FA, autenticazione con 2 passaggi +deletePasskeys: Rimuovi le passkey +pushNotification: Notifiche push +pushNotificationNotSupported: Il tuo browser non supporta le notifiche push +userSaysSomethingReason: '{name} ha detto {reason}' +image: Immagine +video: Video +audio: Audio +thereIsUnresolvedAbuseReportWarning: Ci sono segnalazioni non ancora gestite. +requireAdminForView: Devi avere un account amministratore per vedere questo contenuto. +jumpToPrevious: Vai al precedente +flagShowTimelineReplies: Mostra le risposte nella timeline +cw: Content warning +renoteMute: Silenzia i boost +renoteUnmute: Non silenziare i boost +enableEmojiReactions: Abilita le reazioni con emoji +preferencesBackups: Backup delle preferenze +adminCustomCssWarn: Questa impostazione dovrebbe essere usata solo se ne comprendi + le conseguenze. Valori impropri potrebbero impedire il funzionamento dei client + di TUTTI gli utenti. Assicurati prima che il CSS funzioni correttamente testandolo + nelle tue impostazioni utente. +accentColor: Colore di accento +showPopup: Notifica gli utenti con popup +showWithSparkles: Mostra con le scintille +youHaveUnreadAnnouncements: Hai un annuncio da leggere +_dialog: + charactersBelow: 'La lunghezza in caratteri non è sufficiente! Attuale: {current}/Minimo: + {min}' + charactersExceeded: 'Hai superato il massimo di caratteri! Attuale: {current}/Massimo: + {max}' +cannotUploadBecauseExceedsFileSizeLimit: Il file non è stato caricato perché eccede + lo spazio disponibile. +xl: XL +shuffle: Casuale +subscribePushNotification: Abilita le notifiche push +unsubscribePushNotification: Disabilita le notifiche push +pushNotificationAlreadySubscribed: Le notifiche push sono già abilitate +driveCapOverrideCaption: Reimposta alla capacità predefinita inserendo 0. +numberOfPageCacheDescription: Aumentare questo numero migliorerà l'esperienza degli + utenti ma aumenterà il carico sul server e l'uso di memoria. +type: Tipo +fast: Veloce +remoteOnly: Solo remoto +showAds: Mostra i banner della comunità +showUpdates: Mostra un popup mentre Firefish si aggiorna +recommendedInstancesDescription: Server suggeriti, uno per riga, nell'ordine in cui + saranno mostrati nella timeline dei suggeriti. +beta: Beta +neverShow: Non mostrare più +remindMeLater: Non adesso +noGraze: Per favore disattiva l'estenzione del browser "Graze for Mastodon", perché + interferisce con Firefish. +silencedWarning: Vedi questa pagina perché gli utenti sono su un server che il tuo + admin ha silenziato, quindi potrebbero essere spam. +isBot: Questo account è un bot +isLocked: Serve una approvazione per seguire questo account +moveFromDescription: Questa operazione crea un alias del vecchio account in modo che + tu possa migrare su questo nuovo account. Fallo PRIMA di migrare il tuo vecchio + account. Usa il formato @nomeutente@server.com +defaultReaction: Emoji predefinita per le reazioni sui post ricevuti e inviati +license: Licenza +isModerator: Moderatore +isAdmin: Amministratore +isPatron: Firefish Patron +customKaTeXMacroDescription: 'Crea delle macro per scrivere facilmente espressioni + matematiche! La notazione rispetta i comandi definiti in LaTeX ed è scritta come + \newcommand{\ name}{content} oppure \newcommand{\name}[number of arguments]{content}. + Per esempio, \newcommand{\add}[2]{#1 + #2} espanderà \add{3}{foo} come 3 + foo. + Le parentesi graffe che circondano il nome della macro possono essere sostituite + con quelle tonde o quadre. Ciò implica di dover cambiare anche le parentesi degli + argomenti. Una (e solo una) macro può essere definita per ogni riga e non puoi andare + a capo nel mezzo di una definizione. Le linee non valide sono semplicemente ignorate. + Sono supportate solo funzioni semplici di sostituzione nella stringa; sintassi avanzate, + come comandi condizionali, non possono essere usate qui.' +deletePasskeysConfirm: Stai per eliminare in modo irreversibile le passkey e le chiavi + di sicurezza su questo account. Confermi? +delete2faConfirm: Stai per eliminare in modo irreversibile le impostazioni 2FA su + questo account. Confermi? +inputNotMatch: Il valore inserito non corrisponde +_sensitiveMediaDetection: + description: Riduce lo sforzo di moderare il server rilevando automaticamente i + contenuti NSFW tramite Machine Learning. Aumenterà leggermente il carico sul server. + setSensitiveFlagAutomaticallyDescription: Il risultato del riconoscimento verrà + conservato internamente anche quando l'opzione è disattivata. + analyzeVideos: Abilita l'analisi dei video + analyzeVideosDescription: Analizza anche i video oltre che le immagini. Aumenterà + leggermente il carico sul server. + sensitivityDescription: Riducendo l'accuratezza ridurrai i falsi positivi (censura + di contenuti accettabili), aumentandola ridurrai i falsi negativi (approvazione + di contenuti sensibili). + setSensitiveFlagAutomatically: Marca come NSFW + sensitivity: Accuratezza della rilevazione +_preferencesBackups: + nameAlreadyExists: Esiste già un backup con nome "{name}". Scegli un nome diverso. + applyConfirm: Vuoi veramente ripristinare il backup "{name}" su questo dispositivo? + Le impostazioni attuali saranno sovrascritte. + saveConfirm: Salvare in backup come "{name}"? + createdAt: 'Creazione: {date} {time}' + loadFile: Carica da file + list: Backup creati + saveNew: Salva un nuovo backup + apply: Applica a questo dispositivo + save: Salva i cambiamenti + cannotSave: Salvataggio fallito + noBackups: Non esistono backup. Puoi creare un backup delle impostazioni di questo + server usando "Crea un nuovo backup". + inputName: Inserisci il nome del backup + updatedAt: 'Aggiornamento: {date} {time}' + invalidFile: Formato file non valido + cannotLoad: Caricamento fallito + deleteConfirm: Rimuovere il backup "{name}"? + renameConfirm: Rinominare il backup da "{old}" a "{new}"? +_filters: + followersOnly: Solo chi ti segue + fromUser: Dall'utente + withFile: Con file + fromDomain: Dal dominio + notesAfter: Post successivi + notesBefore: Post precedenti + followingOnly: Solo chi segui +_instanceMute: + heading: Elenco di server da silenziare + title: Nascondi i post dai server elencati. + instanceMuteDescription2: Separa andando a capo + instanceMuteDescription: Per silenziare post e boost dai server elencati, saranno + silenziate anche tutte le risposte a quei contenuti. +_messaging: + dms: Privato + groups: Gruppi +confirm: Conferma +importZip: Importa ZIP +exportZip: Esporta ZIP +emojiPackCreator: Creazione di un pacchetto Emoji +addRe: Aggiungi "re:" all'inizio di un commento in risposta a un post che ha un content + warning +detectPostLanguage: Riconosci la lingua automaticamente e mostra il bottone per tradurre + verso altre lingue +indexableDescription: Mostra i tuoi post pubblici tramite il sistema di ricerca +indexable: Indicizzabile +languageForTranslation: Linguaggio di traduzione dei post diff --git a/locales/ja-JP.yml b/locales/ja-JP.yml index 95fb7bcf88..9c78e1de52 100644 --- a/locales/ja-JP.yml +++ b/locales/ja-JP.yml @@ -1,6 +1,6 @@ _lang_: "日本語" -headlineMisskey: "ずっと無料でオープンソースの非中央集権型ソーシャルメディアプラットフォーム🚀" -introMisskey: "ようこそ!Calckeyは、オープンソースの非中央集権型ソーシャルメディアプラットフォームです。\nいま起こっていることを共有したり、あなたについて皆に発信しましょう📡\n\ +headlineFirefish: "ずっと無料でオープンソースの非中央集権型ソーシャルメディアプラットフォーム🚀" +introFirefish: "ようこそ!Firefishは、オープンソースの非中央集権型ソーシャルメディアプラットフォームです。\nいま起こっていることを共有したり、あなたについて皆に発信したりしましょう📡\n\ 「リアクション」機能で、皆の投稿に素早く反応を追加できます👍\n新しい世界を探検しよう🚀" monthAndDay: "{month}月 {day}日" search: "検索" @@ -146,7 +146,7 @@ settingGuide: "おすすめ設定" cacheRemoteFiles: "リモートのファイルをキャッシュする" cacheRemoteFilesDescription: "この設定を無効にすると、リモートファイルをキャッシュせず直リンクします。サーバーのストレージを節約できますが、サムネイルが生成されないので通信量が増加します。" flagAsBot: "Botとして設定" -flagAsBotDescription: "このアカウントがBotである場合は、この設定をオンにします。オンにすると、反応の連鎖を防ぐためのフラグとして他の開発者に役立ったり、Calckeyのシステム上での扱いがBotに合ったものになります。" +flagAsBotDescription: "このアカウントがBotである場合は、この設定をオンにします。オンにすると、反応の連鎖を防ぐためのフラグとして他の開発者に役立ったり、Firefishのシステム上での扱いがBotに合ったものになります。" flagAsCat: "あなたは…猫?😺" flagAsCatDescription: "このアカウントが猫であることを示す猫モードを有効にするには、このフラグをオンにします。" flagSpeakAsCat: "猫語で話す" @@ -156,7 +156,7 @@ flagShowTimelineRepliesDescription: "オンにすると、タイムラインに autoAcceptFollowed: "フォローしているユーザーからのフォロー申請を自動承認" addAccount: "アカウントを追加" loginFailed: "ログインに失敗しました" -showOnRemote: "リモートで表示" +showOnRemote: "オリジナルのページを開く" general: "全般" accountMoved: "このユーザーは新しいアカウントに移行しました" wallpaper: "壁紙" @@ -213,7 +213,7 @@ noInstances: "サーバーがありません" editProfile: "プロフィールを編集" noteDeleteConfirm: "この投稿を削除しますか?" pinLimitExceeded: "これ以上ピン留めできません" -intro: "Calckeyのインストールが完了しました!管理者アカウントを作成しましょう。" +intro: "Firefishのインストールが完了しました!管理者アカウントを作成しましょう。" done: "完了" processing: "処理中" preview: "プレビュー" @@ -303,7 +303,7 @@ emptyDrive: "ドライブは空です" emptyFolder: "フォルダーは空です" unableToDelete: "削除できません" inputNewFileName: "新しいファイル名を入力してください" -inputNewDescription: "新しい説明を入力してください" +inputNewDescription: "新しい説明を入力" inputNewFolderName: "新しいフォルダ名を入力してください" circularReferenceFolder: "移動先のフォルダーは、移動するフォルダーのサブフォルダーです。" hasChildFilesOrFolders: "このフォルダは空でないため、削除できません。" @@ -396,7 +396,7 @@ exploreFediverse: "Fediverseを探索" popularTags: "人気のタグ" userList: "リスト" about: "情報" -aboutMisskey: "Calckeyについて" +aboutFirefish: "Firefishについて" administrator: "管理者" token: "トークン" twoStepAuthentication: "二段階認証" @@ -517,6 +517,8 @@ objectStorageUseSSLDesc: "API接続にhttpsを使用しない場合はオフに objectStorageUseProxy: "Proxyを利用する" objectStorageUseProxyDesc: "API接続にproxyを利用しない場合はオフにしてください" objectStorageSetPublicRead: "アップロード時に'public-read'を設定する" +objectStorageS3ForcePathStyle: "DNS名ではなくてパスを使用する" +objectStorageS3ForcePathStyleDesc: "EndpointのURLを作る際には、'.s3.amazonaws.com'の代わりに's3.amazonaws.com//'のようなスタイルを使用します。" serverLogs: "サーバーログ" deleteAll: "全て削除" showFixedPostForm: "タイムライン上部に投稿フォームを表示する" @@ -543,7 +545,7 @@ sort: "ソート" ascendingOrder: "昇順" descendingOrder: "降順" scratchpad: "スクラッチパッド" -scratchpadDescription: "スクラッチパッドは、AiScriptの実験環境を提供します。Calckeyと対話するコードの記述、実行、結果の確認ができます。" +scratchpadDescription: "スクラッチパッドは、AiScriptの実験環境を提供します。Firefishと対話するコードの記述、実行、結果の確認ができます。" output: "出力" script: "スクリプト" disablePagesScript: "ページのスクリプトを無効にする" @@ -575,7 +577,7 @@ disablePlayer: "プレイヤーを閉じる" expandTweet: "ツイートを展開する" themeEditor: "テーマエディター" description: "説明" -describeFile: "説明を付ける" +describeFile: "説明を追加" enterFileDescription: "説明を入力" author: "作者" leaveConfirm: "未保存の変更があります。破棄しますか?" @@ -672,7 +674,7 @@ createNewClip: "新しいクリップを作成" unclip: "クリップ解除" confirmToUnclipAlreadyClippedNote: "この投稿はすでにクリップ「{name}」に含まれています。投稿をこのクリップから除外しますか?" public: "公開" -i18nInfo: "Calckeyは有志によって様々な言語に翻訳されています。{link}で翻訳に協力できます。" +i18nInfo: "Firefishは有志によって様々な言語に翻訳されています。{link}で翻訳に協力できます。" manageAccessTokens: "アクセストークンの管理" accountInfo: "アカウント情報" notesCount: "投稿の数" @@ -723,7 +725,7 @@ onlineUsersCount: "{n}人がオンライン" nUsers: "{n}ユーザー" nNotes: "{n}投稿" sendErrorReports: "エラーリポートを送信" -sendErrorReportsDescription: "オンにすると、問題が発生したときにエラーの詳細情報がCalckeyに共有され、ソフトウェアの品質向上に役立てられます。\n\ +sendErrorReportsDescription: "オンにすると、問題が発生したときにエラーの詳細情報がFirefishに共有され、ソフトウェアの品質向上に役立てられます。\n\ エラー情報には、OSのバージョン、ブラウザの種類、行動履歴などが含まれます。" myTheme: "マイテーマ" backgroundColor: "背景" @@ -794,7 +796,7 @@ gallery: "ギャラリー" recentPosts: "最近の投稿" popularPosts: "人気の投稿" shareWithNote: "投稿で共有" -ads: "広告" +ads: "コミュニティバナー" expiration: "期限" memo: "メモ" priority: "優先度" @@ -824,7 +826,7 @@ hashtags: "ハッシュタグ" troubleshooting: "トラブルシューティング" useBlurEffect: "UIにぼかし効果を使用" learnMore: "詳しく" -misskeyUpdated: "Calckeyが更新されました!" +misskeyUpdated: "Firefishが更新されました!" whatIsNew: "更新情報を見る" translate: "翻訳" translatedFrom: "{x}から翻訳" @@ -847,14 +849,14 @@ filter: "フィルタ" controlPanel: "コントロールパネル" manageAccounts: "アカウントを管理" makeReactionsPublic: "リアクション一覧を公開する" -makeReactionsPublicDescription: "あなたがしたリアクション一覧を誰でも見れるようにします。" +makeReactionsPublicDescription: "あなたがしたリアクション一覧を誰でも見られるようにします。" classic: "中央寄せ" muteThread: "スレッドをミュート" unmuteThread: "スレッドのミュートを解除" ffVisibility: "つながりの公開範囲" ffVisibilityDescription: "自分のフォロー/フォロワー情報の公開範囲を設定できます。" continueThread: "さらにスレッドを見る" -deleteAccountConfirm: "アカウントが削除されます。よろしいですか?" +deleteAccountConfirm: "このアカウントが削除されます。よろしいですか?" incorrectPassword: "パスワードが間違っています。" voteConfirm: "「{choice}」に投票しますか?" hide: "隠す" @@ -926,7 +928,7 @@ beta: "ベータ" enableAutoSensitive: "自動NSFW判定" enableAutoSensitiveDescription: "利用可能な場合は、機械学習を利用して自動でメディアにNSFWフラグを設定します。この機能をオフにしても、サーバーによっては自動で設定されることがあります。" activeEmailValidationDescription: "ユーザーのメールアドレスのバリデーションを、捨てアドかどうかや実際に通信可能かどうかなどを判定しより積極的に行います。オフにすると単に文字列として正しいかどうかのみチェックされます。" -showAds: "広告を表示する" +showAds: "コミュニティバナーを表示する" navbar: "ナビゲーションバー" shuffle: "シャッフル" account: "アカウント" @@ -944,15 +946,15 @@ customMOTDDescription: "ユーザがページをロード/リロードするた customSplashIcons: "カスタムスプラッシュスクリーンアイコン" customSplashIconsDescription: "ユーザがページをロード/リロードするたびにランダムに表示される、改行で区切られたカスタムスプラッシュスクリーンアイコンの URL。画像は静的なURLで、できればすべて192x192にリサイズしてください。" -showUpdates: "Calckeyの更新時にポップアップを表示する" +showUpdates: "Firefishの更新時にポップアップを表示する" recommendedInstances: "おすすめサーバー" -recommendedInstancesDescription: "おすすめタイムラインに表示するサーバーを改行区切りで入力してください。`https://`は書かず、ドメインのみを入力してください。" -caption: "自動キャプション" +recommendedInstancesDescription: "おすすめタイムラインに表示するサーバーを改行区切りで入力してください。" +caption: "自動で説明をつける" splash: "スプラッシュスクリーン" updateAvailable: "アップデートがありますよ!" swipeOnDesktop: "デスクトップでモバイルスタイルのスワイプを可能にする" logoImageUrl: "ロゴのURL" -showAdminUpdates: "新しいCalckeyのバージョンが利用可能なときに通知する(管理者のみ)" +showAdminUpdates: "新しいFirefishのバージョンが利用可能なときに通知する(管理者のみ)" replayTutorial: "もう一度チュートリアルを見る" migration: "アカウントの引っ越し" moveTo: "このアカウントを新しいアカウントに引っ越す" @@ -977,12 +979,17 @@ customKaTeXMacroDescription: "数式入力を楽にするためのマクロを enableCustomKaTeXMacro: "カスタムKaTeXマクロを有効にする" preventAiLearning: "AIによる学習を防止" preventAiLearningDescription: "投稿したノート、添付した画像などのコンテンツを学習の対象にしないようAIに要求します。これはnoaiフラグをHTMLレスポンスに含めることによって実現されます。" -noGraze: "ブラウザの拡張機能「Graze for Mastodon」は、Calckeyの動作を妨げるため、無効にしてください。" +noGraze: "ブラウザの拡張機能「Graze for Mastodon」は、Firefishの動作を妨げるため、無効にしてください。" enableServerMachineStats: "サーバーのマシン情報を公開する" enableIdenticonGeneration: "ユーザーごとのIdenticon生成を有効にする" showPopup: "ポップアップを表示してユーザーに知らせる" showWithSparkles: "タイトルをキラキラさせる" youHaveUnreadAnnouncements: "未読のお知らせがあります" +neverShow: "今後表示しない" +remindMeLater: "また後で" +addRe: "閲覧注意の投稿への返信で、注釈の先頭に\"re:\"を追加する" +languageForTranslation: "投稿翻訳に使用する言語" +detectPostLanguage: "投稿の言語を自動検出し、外国語の投稿に翻訳ボタンを表示する" _sensitiveMediaDetection: description: "機械学習を使って自動でセンシティブなメディアを検出し、モデレーションに役立てられます。サーバーの負荷が少し増えます。" @@ -1058,24 +1065,30 @@ _registry: keys: "キー" domain: "ドメイン" createKey: "キーを作成" -_aboutMisskey: - about: "Calckeyは、2022年に生まれたThatOneCalculatorによるMisskeyのforkです。" +_aboutFirefish: + about: "Firefishは、2022年に生まれたThatOneCalculatorによるMisskeyのforkです。" contributors: "主なコントリビューター" allContributors: "全てのコントリビューター" + misskeyContributors: "フォーク元のMisskeyの主なコントリビューター" source: "ソースコード" - translation: "Calckeyを翻訳" - donate: "Calckeyに寄付" + translation: "Firefishを翻訳" + donate: "Firefishに寄付" morePatrons: "他にも多くの方が支援してくれています。ありがとうございます! 🥰" patrons: "支援者" patronsList: 寄付額ではなく時系列順に並んでいます。上記のリンクから寄付を行ってここにあなたのIDを載せましょう! + pleaseDonateToFirefish: Firefish開発への寄付をご検討ください。 + pleaseDonateToHost: また、このサーバー {host} の運営者への寄付もご検討ください。 + donateHost: '{host} に寄付する' + donateTitle: Firefishを気に入りましたか? + sponsors: Firefish の支援者 _nsfw: respect: "閲覧注意のメディアは隠す" ignore: "閲覧注意のメディアを隠さない" force: "常にメディアを隠す" _mfm: cheatSheet: "MFMチートシート" - intro: "MFMは、MisskeyやCalckey、Akkomaなどの様々な場所で使用できるマークアップ言語です。ここでは、MFMで使用可能な構文一覧が確認できます。" - dummy: "CalckeyでFediverseの世界が広がります" + intro: "MFMは、MisskeyやFirefish、Akkomaなどの様々な場所で使用できるマークアップ言語です。ここでは、MFMで使用可能な構文一覧が確認できます。" + dummy: "FirefishでFediverseの世界が広がります" mention: "メンション" mentionDescription: "アットマーク + ユーザー名で、特定のユーザーを示せます。" hashtag: "ハッシュタグ" @@ -1187,11 +1200,16 @@ _menuDisplay: hide: "隠す" _wordMute: muteWords: "ミュートするワード" + muteLangs: "ミュートされた言語" muteWordsDescription: "スペースで区切るとAND指定になり、改行で区切るとOR指定になります。" muteWordsDescription2: "キーワードをスラッシュで囲むと正規表現になります。" + muteLangsDescription: "OR 条件の場合はスペースまたは改行で区切ります。" + muteLangsDescription2: "言語コードを使用します。例: en, fr, ja, zh." softDescription: "指定した条件の投稿をタイムラインから隠します。" + langDescription: "設定した言語に一致する投稿をタイムラインから非表示にします。" hardDescription: "指定した条件の投稿をタイムラインに追加しないようにします。追加されなかった投稿は、条件を変更しても除外されたままになります。" soft: "ソフト" + lang: "言語" hard: "ハード" mutedNotes: "ミュートされた投稿" _instanceMute: @@ -1297,7 +1315,7 @@ _time: hour: "時間" day: "日" _tutorial: - title: "Calckeyの使い方" + title: "Firefishの使い方" step1_1: "ようこそ!" step1_2: "使い始める前に、いくつか設定を済ませましょう。すぐできますよ!" step2_1: "最初に、あなたのプロフィールを作りましょう。" @@ -1315,8 +1333,8 @@ _tutorial: step5_6: "おすすめ{icon}タイムラインでは、管理人がおすすめするサーバーの投稿を見られます。" step5_7: "グローバル{icon}タイムラインでは、接続している他のすべてのサーバーからの投稿を見られます。" step6_1: "じゃあ、ここはどんな場所なの?" - step6_2: "実は、あなたはただCalckeyに参加しただけではありません。ここは、何千もの相互接続されたサーバーが構成する Fediverse への入口です。" - step6_3: "それぞれのサーバーでは必ずしもCalckeyが使われているわけではなく、異なる動作をするサーバーもあります。しかし、あなたは他のサーバーのアカウントもフォローしたり、返信・ブーストができます。一見難しそうですが大丈夫!すぐ慣れます。" + step6_2: "実は、あなたはただFirefishに参加しただけではありません。ここは、何千もの相互接続されたサーバーが構成する Fediverse への入口です。" + step6_3: "それぞれのサーバーでは必ずしもFirefishが使われているわけではなく、異なる動作をするサーバーもあります。しかし、あなたは他のサーバーのアカウントもフォローしたり、返信・ブーストができます。一見難しそうですが大丈夫!すぐ慣れます。" step6_4: "これで完了です。お楽しみください!" _2fa: alreadyRegistered: "既に設定は完了しています。" @@ -1485,7 +1503,7 @@ _profile: youCanIncludeHashtags: "ハッシュタグを含められます。" metadata: "追加情報" metadataEdit: "追加情報を編集" - metadataDescription: "プロフィールに表として追加情報を表示できます。" + metadataDescription: "プロフィールに表として追加情報を表示できます。{a}タグまたは{l}タグを{rel}とともに追加すると、プロフィールのリンクを確認できます。" metadataLabel: "ラベル" metadataContent: "内容" changeAvatar: "アバター画像を変更" @@ -1896,7 +1914,7 @@ apps: "アプリ" _experiments: title: 試験的な機能 postImportsCaption: - ユーザーが過去の投稿をCalckey・Misskey・Mastodon・Akkoma・Pleromaからインポートすることを許可します。キューが溜まっているときにインポートするとサーバーに負荷がかかる可能性があります。 + ユーザーが過去の投稿をFirefish・Misskey・Mastodon・Akkoma・Pleromaからインポートすることを許可します。キューが溜まっているときにインポートするとサーバーに負荷がかかる可能性があります。 enablePostImports: 投稿のインポートを有効にする sendModMail: モデレーション通知を送る deleted: 削除済み @@ -1911,7 +1929,7 @@ accessibility: アクセシビリティ jumpToPrevious: 前に戻る cw: 閲覧注意 silencedWarning: スパムの可能性があるため、これらのユーザーが所属するサーバーは管理者によりサイレンスされています。 -searchPlaceholder: Calckeyを検索 +searchPlaceholder: Firefishを検索 channelFederationWarn: 現時点では、チャンネルは他のサーバーへ連合しません listsDesc: リストでは指定したユーザーだけのタイムラインを作れます。リストには「タイムライン」のページからアクセスできます。 antennasDesc: "アンテナでは指定した条件に合致する投稿が表示されます。\nアンテナには「タイムライン」のページからアクセスできます。" @@ -1936,7 +1954,7 @@ video: 動画 isBot: このアカウントはBotです isLocked: このアカウントのフォローは承認制です isAdmin: 管理者 -isPatron: Calckey 後援者 +isPatron: Firefish 後援者 _skinTones: light: ペールオレンジ mediumLight: ミディアムライト @@ -1948,3 +1966,25 @@ removeReaction: リアクションを取り消す alt: 代替テキスト swipeOnMobile: ページ間のスワイプを有効にする reactionPickerSkinTone: 優先する絵文字のスキン色 +xl: 特大 +donationLink: 寄付ページへのリンク +removeMember: メンバーを削除 +removeQuote: 引用を削除 +removeRecipient: 宛先を削除 +verifiedLink: 認証済みリンク +_feeds: + atom: Atom + rss: RSS + jsonFeed: JSONフィード + copyFeed: フィードのURLをコピー +origin: 元のサーバー +delete2fa: 2要素認証を無効化 +deletePasskeys: パスキーを削除 +delete2faConfirm: これで、このアカウントの2要素認証は完全に削除されます。続行しますか? +inputNotMatch: 入力が一致しません +deletePasskeysConfirm: これで、このアカウントのパスキーは完全に削除されます。続行しますか? +importZip: ZIPをインポート +emojiPackCreator: 絵文字パックの作者 +confirm: 確認 +exportZip: ZIPをエクスポート +openServerInfo: "投稿内のサーバー名をクリックでサーバー情報を開く" diff --git a/locales/ja-KS.yml b/locales/ja-KS.yml index 8a9b91486e..8d052d6175 100644 --- a/locales/ja-KS.yml +++ b/locales/ja-KS.yml @@ -1,7 +1,7 @@ ---- _lang_: "日本語 (関西弁)" -headlineMisskey: "ノートでつながるネットワーク" -introMisskey: "ようお越し!Misskeyは、オープンソースの分散型マイクロブログサービスやねん。\n「ノート」を作って、いま起こっとることを共有したり、あんたについて皆に発信しよう📡\n「リアクション」機能で、皆のノートに素早く反応を追加したりもできるで✌\nほな新しい世界を探検しよか🚀" +headlineFirefish: "ずっとタダでオープンソースの非中央集権型ソーシャルメディアプラットフォーム!🚀" +introFirefish: "おいでやす。Firefishは、オープンソースの分散型ソーシャルメディアプラットフォームどす。\nいま起きたはるもんを共有したり、あんさんについて皆に発信したりしとくれやす👘\n\ + 「リアクション」機能があるさかい、皆の投稿に素早う反応を送ることもできます🎎\nほんなら、新しい世界を探検しまひょか🎴" monthAndDay: "{month}月 {day}日" search: "探す" notifications: "通知" @@ -13,10 +13,10 @@ ok: "OKや" gotIt: "ほい" cancel: "やめとく" enterUsername: "ユーザー名を入れてや" -renotedBy: "{user}がRenote" -noNotes: "ノートはあらへん" +renotedBy: "{user}がブースト" +noNotes: "投稿はありまへん" noNotifications: "通知はあらへん" -instance: "インスタンス" +instance: "サーバー" settings: "設定" basicSettings: "基本設定" otherSettings: "その他の設定" @@ -44,7 +44,7 @@ copyContent: "内容をコピー" copyLink: "リンクをコピー" delete: "ほかす" deleteAndEdit: "ほかして直す" -deleteAndEditConfirm: "このノートをほかして書き直すんか?このノートへのリアクション、Renote、返信も全部消えてまうで。" +deleteAndEditConfirm: "この投稿をほかして書き直すんか?この投稿へのリアクション、ブースト、返信もみんな消えてまうで。" addToList: "リストに入れたる" sendMessage: "メッセージを送る" copyUsername: "ユーザー名をコピー" @@ -64,26 +64,26 @@ import: "インポート" export: "エクスポート" files: "ファイル" download: "ダウンロード" -driveFileDeleteConfirm: "ファイル「{name}」を消してしもうてええか?このファイルを添付したノートも消えてまうで。" +driveFileDeleteConfirm: "ファイル「{name}」を消してしもうてええか?このファイルを添付した投稿も消えてまうで。" unfollowConfirm: "{name}のフォローを解除してもええんか?" exportRequested: "エクスポートしてな、ってリクエストしたけど、これ多分めっちゃ時間かかるで。エクスポート終わったら「ドライブ」に突っ込んどくで。" importRequested: "インポートしてな、ってリクエストしたけど、これ多分めっちゃ時間かかるで。" lists: "リスト" noLists: "リストなんてあらへんで" -note: "ノート" -notes: "ノート" +note: "投稿" +notes: "投稿" following: "フォロー" followers: "フォロワー" followsYou: "フォローされとるで" createList: "リスト作る" manageLists: "リストの管理" error: "エラー" -somethingHappened: "なんかアカンことが起こったで" +somethingHappened: "なんやアカンことが起きたで" retry: "もっぺんやる?" -pageLoadError: "ページの読み込みに失敗してしもうたで…" +pageLoadError: "ページの読み込みに失敗してもた… えろうすんまへん" pageLoadErrorDescription: "これは普通、ネットワークかブラウザキャッシュが原因やからね。キャッシュをクリアするか、もうちっとだけ待ってくれへんか?" -serverIsDead: "The server is not responding. Please wait for a while before trying again." -youShouldUpgradeClient: "To display this page, please reload and use a new version client. " +serverIsDead: "サーバーの応答がおまへん。ちーとの間待ってからもっかい試してみぃな。" +youShouldUpgradeClient: "このページを表示するには、リロードして新しいバージョンのクライアントを使うてや。" enterListName: "リスト名を入れてや" privacy: "プライバシー" makeFollowManuallyApprove: "自分が認めた人だけがこのアカウントをフォローできるようにする" @@ -94,20 +94,20 @@ followRequests: "フォロー申請" unfollow: "フォローやめる" followRequestPending: "フォロー許してくれるん待っとる" enterEmoji: "絵文字を入れてや" -renote: "Renote" -unrenote: "Renoteやめる" -renoted: "Renoteしたで。" -cantRenote: "この投稿はRenoteできへんらしい。" -cantReRenote: "Renote自体はRenoteできへんで。" +renote: "ブースト" +unrenote: "ブーストやめる" +renoted: "ブーストしたで。" +cantRenote: "この投稿はブーストでけへんらしい。" +cantReRenote: "ブースト自体はブーストでけへんで。" quote: "引用" -pinnedNote: "ピン留めされとるノート" +pinnedNote: "ピン留めされとる投稿" pinned: "ピン留めしとく" you: "あんた" clickToShow: "押したら見えるで" sensitive: "ちょっとアカンやつやで" add: "増やす" reaction: "リアクション" -reactionSetting: "Reaction that will be displayed in Picker. " +reactionSetting: "ピッカーに表示しはるリアクション" reactionSettingDescription2: "ドラッグで並び替え、クリックで削除、+を押して追加やで。" rememberNoteVisibility: "公開範囲覚えといて" attachCancel: "のっけるのやめる" @@ -138,12 +138,12 @@ addEmoji: "絵文字を追加" settingGuide: "ええ感じの設定" cacheRemoteFiles: "リモートのファイルをキャッシュする" cacheRemoteFilesDescription: "この設定を切っとくと、リモートファイルをキャッシュせず直リンクするようになるで。サーバーの容量は節約できるけど、サムネイルが作られんくなるから通信量が増えるで。" -flagAsBot: "Botやで" -flagAsBotDescription: "もしこのアカウントがプログラムによって運用されるんやったら、このフラグをオンにしてたのむで。オンにすると、反応の連鎖を防ぐためのフラグとして他の開発者に役立ったり、Misskeyのシステム上での扱いがBotに合ったもんになるんやで。" -flagAsCat: "Catやで" -flagAsCatDescription: "ワレ、猫ちゃんならこのフラグをつけてみ?" -flagShowTimelineReplies: "It will display the reply to the note in the timeline. " -flagShowTimelineRepliesDescription: "It will display the reply to notes other than the user notes in the timeline when you turn it on. " +flagAsBot: "ワイはBotや 🤖" +flagAsBotDescription: "もしこのアカウントがプログラムによって運用されるんやったら、このフラグをオンにしてたのむで。オンにすると、反応の連鎖を防ぐためのフラグとして他の開発者に役立ったり、Firefishのシステム上での扱いがBotに合ったもんになったりするんやで。" +flagAsCat: "ワイはCatや 🐯" +flagAsCatDescription: "自分、猫ちゃんならこのフラグつけてみ?" +flagShowTimelineReplies: "タイムラインに返信を表示させたる" +flagShowTimelineRepliesDescription: "有効にすると、タイムラインに他のユーザー宛ての投稿も表示したるで。" autoAcceptFollowed: "フォローしとるユーザーからのフォローリクエストを勝手に許可しとく" addAccount: "アカウントを追加" loginFailed: "ログインに失敗してしもうた…" @@ -162,7 +162,7 @@ selectUser: "ユーザーを選ぶ" recipient: "宛先" annotation: "注釈" federation: "連合" -instances: "インスタンス" +instances: "サーバー" registeredAt: "初観測" latestRequestSentAt: "ちょっと前のリクエスト送信" latestRequestReceivedAt: "ちょっと前のリクエスト受信" @@ -172,7 +172,7 @@ charts: "チャート" perHour: "1時間ごと" perDay: "1日ごと" stopActivityDelivery: "アクティビティの配送をやめる" -blockThisInstance: "このインスタンスをブロック" +blockThisInstance: "このサーバーをブロック" operations: "操作" software: "ソフトウェア" version: "バージョン" @@ -182,23 +182,23 @@ jobQueue: "ジョブキュー" cpuAndMemory: "CPUとメモリ" network: "ネットワーク" disk: "ディスク" -instanceInfo: "インスタンス情報" +instanceInfo: "サーバー情報" statistics: "統計" clearQueue: "キューにさいなら" clearQueueConfirmTitle: "キューをクリアしまっか?" clearQueueConfirmText: "未配達の投稿は配送されなくなるで。通常この操作を行う必要はあらへんや。" clearCachedFiles: "キャッシュにさいなら" clearCachedFilesConfirm: "キャッシュされとるリモートファイルをみんなほかしてええか?" -blockedInstances: "インスタンスブロック" -blockedInstancesDescription: "ブロックしたいインスタンスのホストを改行で区切って設定してな。ブロックされてもうたインスタンスとはもう金輪際やり取りできひんくなるで。" +blockedInstances: "ブロックしたサーバー" +blockedInstancesDescription: "ブロックしたいサーバーのホストを改行で区切って設定してな。ブロックされてもうたサーバーとはもう金輪際やり取りできんくなるで。" muteAndBlock: "ミュートとブロック" mutedUsers: "ミュートしたユーザー" blockedUsers: "ブロックしたユーザー" noUsers: "ユーザーはおらへん" editProfile: "プロフィールをいじる" -noteDeleteConfirm: "このノートを削除しまっか?" +noteDeleteConfirm: "この投稿を削除しまっか?" pinLimitExceeded: "これ以上ピン留めできひん" -intro: "Misskeyのインストールが完了してん!管理者アカウントを作ってや。" +intro: "Firefishのインストールが完了してん!管理者アカウントを作ってや。" done: "でけた" processing: "処理しとる" preview: "プレビュー" @@ -213,9 +213,9 @@ all: "みんな" subscribing: "購読しとる" publishing: "配信しとる" notResponding: "応答してへんで" -instanceFollowing: "インスタンスのフォロー" -instanceFollowers: "インスタンスのフォロワー\n" -instanceUsers: "インスタンスのユーザー" +instanceFollowing: "サーバーのフォロー" +instanceFollowers: "サーバーのフォロワー" +instanceUsers: "このサーバーの利用者" changePassword: "パスワード変える" security: "セキュリティ" retypedNotMatch: "そやないねん。" @@ -238,8 +238,8 @@ resetAreYouSure: "リセットしてええん?" saved: "保存したで!" messaging: "チャット" upload: "アップロード" -keepOriginalUploading: "Retain the original image. " -keepOriginalUploadingDescription: "When uploading the clip, the original version will be retained. Turning it of then uploading will produce images for public use. " +keepOriginalUploading: "画質をそのまんまにする" +keepOriginalUploadingDescription: "オリジナルの画像をそのまんまアップロードするで。オフにすると、ファイルサイズを削減したWeb公開用画像を生成したるで。" fromDrive: "ドライブから" fromUrl: "URLから" uploadFromUrl: "URLアップロード" @@ -286,7 +286,7 @@ emptyDrive: "ドライブにはなんも残っとらん" emptyFolder: "ふぉろだーにはなんも残っとらん" unableToDelete: "消そうおもってんけどな、あかんかったわ" inputNewFileName: "今度のファイル名は何にするん?" -inputNewDescription: "新しいキャプションを入力しましょ" +inputNewDescription: "新しい説明文を入力しまひょ" inputNewFolderName: "今度のフォルダ名は何にするん?" circularReferenceFolder: "移動先のフォルダーは、移動するフォルダーのサブフォルダーや。" hasChildFilesOrFolders: "このフォルダ、まだなんか入っとるから消されへん" @@ -305,8 +305,8 @@ unwatch: "ウォッチやめる" accept: "ええで" reject: "あかん" normal: "ええ感じ" -instanceName: "インスタンス名" -instanceDescription: "インスタンスの紹介" +instanceName: "サーバー名" +instanceDescription: "サーバーの紹介" maintainerName: "管理者の名前" maintainerEmail: "管理者のメールアドレス" tosUrl: "利用規約のURL" @@ -336,9 +336,9 @@ basicInfo: "基本情報" pinnedUsers: "ピン留めしたユーザー" pinnedUsersDescription: "「みつける」ページとかにピン留めしたいユーザーをここに書けばええんやで。他ん人との名前は改行で区切ればええんやで。" pinnedPages: "ピン留めページ" -pinnedPagesDescription: "インスタンスのいっちゃん上にピン留めしたいページのパスを改行で区切って記述してな" +pinnedPagesDescription: "サーバーのいっちゃん上にピン留めしたいページのパスを、改行で区切って記述してな。" pinnedClipId: "ピン留めするクリップのID" -pinnedNotes: "ピン留めされとるノート" +pinnedNotes: "ピン留めされとる投稿" hcaptcha: "hCaptcha(キャプチャ)" enableHcaptcha: "hCaptcha(キャプチャ)をつけとく" hcaptchaSiteKey: "サイトキー" @@ -355,8 +355,8 @@ antennaSource: "受信ソース(このソースは食われへん)" antennaKeywords: "受信キーワード" antennaExcludeKeywords: "除外キーワード" antennaKeywordsDescription: "スペースで区切ったるとAND指定で、改行で区切ったるとOR指定や" -notifyAntenna: "新しいノートを通知すんで" -withFileAntenna: "なんか添付されたノートだけ" +notifyAntenna: "新しい投稿を通知すんで" +withFileAntenna: "ファイルが添付された投稿のみ" enableServiceworker: "ServiceWorkerをつこて" antennaUsersDescription: "ユーザー名を改行で区切ったってな" caseSensitive: "大文字と小文字は別もんや" @@ -377,7 +377,7 @@ exploreFediverse: "Fediverseを探ってみる" popularTags: "人気のタグ" userList: "リスト" about: "情報" -aboutMisskey: "Misskeyってなんや?" +aboutFirefish: "Firefishってなんやねん?" administrator: "管理者" token: "トークン" twoStepAuthentication: "二段階認証" @@ -420,7 +420,7 @@ text: "テキスト" enable: "有効にするで" next: "次" retype: "もっかい入力" -noteOf: "{user}のノート" +noteOf: "{user}の投稿" inviteToGroup: "グループに招く" quoteAttached: "引用付いとるで" quoteQuestion: "引用として添付してもええか?" @@ -478,12 +478,13 @@ accountSettings: "アカウントの設定" promotion: "宣伝" promote: "宣伝" numberOfDays: "日数" -hideThisNote: "このノートは表示せんでいい" -showFeaturedNotesInTimeline: "タイムラインにおすすめのノートを表示してや" +hideThisNote: "この投稿は表示せんでいい" +showFeaturedNotesInTimeline: "タイムラインにおすすめの投稿を表示してや" objectStorage: "オブジェクトストレージ" useObjectStorage: "オブジェクトストレージを使う" objectStorageBaseUrl: "Base URL" -objectStorageBaseUrlDesc: "参照に使うにURLやで。CDNやProxyを使用してるんならそのURL、S3: 'https://.s3.amazonaws.com'、GCSとかなら: 'https://storage.googleapis.com/'。" +objectStorageBaseUrlDesc: "参照に使うにURLやで。CDNやProxyを使用してるんならそのURL、S3: 'https://.s3.amazonaws.com'、GCSとかなら: + 'https://storage.googleapis.com/'。" objectStorageBucket: "Bucket" objectStorageBucketDesc: "使ってるサービスのbucket名を選んでな" objectStoragePrefix: "Prefix" @@ -500,7 +501,7 @@ objectStorageSetPublicRead: "アップロードした時に'public-read'を設 serverLogs: "サーバーログ" deleteAll: "全て削除してや" showFixedPostForm: "タイムラインの上の方で投稿できるようにやってくれへん?" -newNoteRecived: "新しいノートがあるで" +newNoteRecived: "新しい投稿があるで" sounds: "サウンド" listen: "聴く" none: "なし" @@ -523,7 +524,7 @@ sort: "仕分ける" ascendingOrder: "小さい順" descendingOrder: "大きい順" scratchpad: "スクラッチパッド" -scratchpadDescription: "スクラッチパッドではAiScriptを色々試すことができるんや。Misskeyに対して色々できるコードを書いて動かしてみたり、結果を見たりできるで。" +scratchpadDescription: "スクラッチパッドではAiScriptを色々試すことができるんや。Firefishに対して色々できるコードを書いて動かしてみたり、結果を見たりできるで。" output: "出力" script: "スクリプト" disablePagesScript: "Pagesのスクリプトを無効にしてや" @@ -531,7 +532,7 @@ updateRemoteUser: "リモートユーザー情報の更新してくれん?" deleteAllFiles: "すべてのファイルを削除" deleteAllFilesConfirm: "ホンマにすべてのファイルを削除するん?消したもんはもう戻ってこんのやで?" removeAllFollowing: "フォローを全解除" -removeAllFollowingDescription: "{host}からのフォローをすべて解除するで。そのインスタンスが消えて無くなった時とかには便利な機能やで。" +removeAllFollowingDescription: "{host}からのフォローをすべて解除するで。そのサーバーが消えて無くなった時とかに便利な機能やで。" userSuspended: "このユーザーは...凍結されとる。" userSilenced: "このユーザーは...サイレンスされとる。" yourAccountSuspendedTitle: "あんたのアカウント凍結されとるで" @@ -555,8 +556,8 @@ disablePlayer: "プレイヤーを閉じる" expandTweet: "ツイートを展開する" themeEditor: "テーマエディター" description: "説明" -describeFile: "キャプションを付ける" -enterFileDescription: "キャプションを入力" +describeFile: "画像説明文を付ける" +enterFileDescription: "" author: "作者" leaveConfirm: "未保存の変更があるで!ほかしてええか?" manage: "管理" @@ -577,7 +578,7 @@ disableAll: "全部使えへんようにする" tokenRequested: "アカウントへのアクセス許可" pluginTokenRequestedDescription: "このプラグインはここで設定した権限を使えるようになるで。" notificationType: "通知の種類" -edit: "編集" +edit: "投稿をいじる" emailServer: "メールサーバー" enableEmail: "メール配信を受け取る" emailConfigInfo: "メールアドレスの確認とかパスワードリセットの時に使うで" @@ -595,7 +596,7 @@ testEmail: "配信テスト" wordMute: "ワードミュート" regexpError: "正規表現エラー" regexpErrorDescription: "{tab}ワードミュートの{line}行目の正規表現にエラーが出てきたで:" -instanceMute: "インスタンスミュート" +instanceMute: "サーバーミュート" userSaysSomething: "{name}が何か言ったようやで" makeActive: "使うで" display: "表示" @@ -621,20 +622,20 @@ sample: "サンプル" abuseReports: "通報" reportAbuse: "通報" reportAbuseOf: "{name}を通報する" -fillAbuseReportDescription: "細かい通報理由を書いてなー。対象ノートがある時はそのURLも書いといてなー。" +fillAbuseReportDescription: "細かい通報理由を書いてなー。特定の投稿を通報するなら、そのURLも書いといてなー。" abuseReported: "無事内容が送信されたみたいやで。おおきに〜。" reporter: "通報者" reporteeOrigin: "通報先" reporterOrigin: "通報元" -forwardReport: "リモートインスタンスに通報を転送するで" -forwardReportIsAnonymous: "リモートインスタンスからはあんたの情報は見れへんくって、匿名のシステムアカウントとして表示されるで。" +forwardReport: "リモートサーバーに通報を転送するで" +forwardReportIsAnonymous: "リモートサーバーからはあんたの情報は見れへんくて、匿名のシステムアカウントとして表示されるで。" send: "送信" abuseMarkAsResolved: "対応したで" openInNewTab: "新しいタブで開く" openInSideView: "サイドビューで開く" defaultNavigationBehaviour: "デフォルトのナビゲーション" editTheseSettingsMayBreakAccount: "このへんの設定をようわからんままイジるとアカウントが壊れて使えんくなるかも知れへんで?" -instanceTicker: "ノートのインスタンス情報" +instanceTicker: "投稿のサーバー情報" waitingFor: "{x}を待っとるで" random: "ランダム" system: "システム" @@ -645,16 +646,16 @@ createNew: "新しく作るで" optional: "任意" createNewClip: "新しいクリップを作るで" unclip: "クリップ解除するで" -confirmToUnclipAlreadyClippedNote: "このノートはすでにクリップ「{name}」に含まれとるで。ノートをこのクリップから除外したる?" +confirmToUnclipAlreadyClippedNote: "この投稿はすでにクリップ「{name}」に含まれとるで。投稿をこのクリップから除外したる?" public: "パブリック" -i18nInfo: "Calckeyは有志によっていろんな言語に翻訳されとるで。{link}で翻訳に協力したってやー。" +i18nInfo: "Firefishは有志によっていろんな言語に翻訳されとるで。{link}で翻訳に協力したってやー。" manageAccessTokens: "アクセストークンの管理" accountInfo: "アカウント情報" -notesCount: "ノートの数やで" +notesCount: "投稿の数やで" repliesCount: "返信した数やで" -renotesCount: "Renoteした数やで" +renotesCount: "ブーストした数やで" repliedCount: "返信された数やで" -renotedCount: "Renoteされた数やで" +renotedCount: "ブーストされた数やで" followingCount: "フォロー数やで" followersCount: "フォロワー数やで" sentReactionsCount: "リアクションした数やで" @@ -666,15 +667,15 @@ no: "いいえ" driveFilesCount: "ドライブのファイル数" driveUsage: "ドライブ使用量やで" noCrawle: "クローラーによるインデックスを拒否するで" -noCrawleDescription: "検索エンジンにあんたのユーザーページ、ノート、Pagesとかのコンテンツを登録(インデックス)せぇへんように頼むで。" -lockedAccountInfo: "フォローを承認制にしとっても、ノートの公開範囲を「フォロワー」にせぇへん限り、誰でもあんたのノートを見れるで。" +noCrawleDescription: "検索エンジンにあんたのプロフィール、投稿、ページとかのコンテンツを登録(インデックス)せぇへんように頼むで。" +lockedAccountInfo: "フォローを承認制にしとっても、投稿の公開範囲を「フォロワー」にせん限り、誰でもあんたの投稿を見れるで。" alwaysMarkSensitive: "デフォルトでメディアを閲覧注意にするで" loadRawImages: "添付画像のサムネイルをオリジナル画質にするで" disableShowingAnimatedImages: "アニメーション画像を再生しやへんで" verificationEmailSent: "無事確認のメールを送れたで。メールに書いてあるリンクにアクセスして、設定を完了してなー。" notSet: "未設定" emailVerified: "メールアドレスは確認されたで" -noteFavoritesCount: "お気に入りノートの数やで" +noteFavoritesCount: "お気に入り投稿の数やで" pageLikesCount: "Pageにええやんと思った数" pageLikedCount: "Pageにええやんと思ってくれた数" contact: "連絡先" @@ -684,7 +685,7 @@ experimentalFeatures: "実験的機能やで" developer: "開発者やで" makeExplorable: "アカウントを見つけやすくするで" makeExplorableDescription: "オフにすると、「みつける」にアカウントが載らんくなるで。" -showGapBetweenNotesInTimeline: "タイムラインのノートを放して表示するで" +showGapBetweenNotesInTimeline: "タイムライン上の投稿を離して表示するで" duplicate: "複製" left: "左" center: "中央" @@ -696,9 +697,10 @@ showTitlebar: "タイトルバーを見せる" clearCache: "キャッシュをほかす" onlineUsersCount: "{n}人が起きとるで" nUsers: "{n}ユーザー" -nNotes: "{n}ノート" +nNotes: "{n}投稿" sendErrorReports: "エラーリポートを送る" -sendErrorReportsDescription: "オンにしたら、なんか変なことが起きたときにエラーの詳細がMisskeyに共有されて、ソフトウェアの品質向上に役立てられるんや。エラー情報には、OSのバージョン、ブラウザの種類、行動履歴などが含まれるで。" +sendErrorReportsDescription: "オンにしたら、なんやけったいなことが起きたときにエラーの詳細がFirefishに共有されて、ソフトウェアの品質向上に役立てられるんや。\n\ + エラー情報には、OSのバージョン、ブラウザの種類、行動履歴などが含まれるで。" myTheme: "マイテーマ" backgroundColor: "背景" accentColor: "アクセント" @@ -722,7 +724,7 @@ capacity: "容量" inUse: "使用中" editCode: "コードを編集" apply: "適用" -receiveAnnouncementFromInstance: "インスタンスからのお知らせを受け取る" +receiveAnnouncementFromInstance: "サーバーからのお知らせを受け取る" emailNotification: "メール通知" publish: "公開" inChannelSearch: "チャンネル内検索" @@ -733,11 +735,11 @@ showingPastTimeline: "過去のタイムラインを表示してるで" clear: "クリア" markAllAsRead: "もうみな読んでもうたわ" goBack: "戻る" -unlikeConfirm: "いいね解除するんか?" +unlikeConfirm: "ええやんを解除するんけ?" fullView: "フルビュー" quitFullView: "フルビュー解除" addDescription: "説明を追加するで" -userPagePinTip: "個々のノートのメニューから「ピン留め」を選んどくと、ここにノートを表示しておけるで。" +userPagePinTip: "個々の投稿のメニューから「ピン留め」を選んどくと、ここにそいつを表示しておけるで。" notSpecifiedMentionWarning: "宛先に含まれてへんメンションがあるで" info: "情報" userInfo: "ユーザー情報やで" @@ -750,7 +752,7 @@ active: "アクティブ" offline: "オフライン" notRecommended: "あんま推奨しやんで" botProtection: "Botプロテクション" -instanceBlocking: "インスタンスブロック" +instanceBlocking: "連合の管理" selectAccount: "アカウントを選んでなー" switchAccount: "アカウントを変えるで" enabled: "有効" @@ -767,7 +769,7 @@ postToGallery: "ギャラリーへ投稿" gallery: "ギャラリー" recentPosts: "最近の投稿" popularPosts: "人気の投稿" -shareWithNote: "ノートで共有" +shareWithNote: "投稿で共有" ads: "広告" expiration: "期限" memo: "メモ" @@ -789,7 +791,7 @@ hashtags: "ハッシュタグ" troubleshooting: "トラブルシューティング" useBlurEffect: "UIにぼかし効果を使うで" learnMore: "詳しく" -misskeyUpdated: "Misskeyが更新されたで!\nモデレーターの人らに感謝せなあかんで" +misskeyUpdated: "Firefishが更新されたで!\nモデレーターの人らに感謝やね" whatIsNew: "更新情報を見るで" translate: "翻訳" translatedFrom: "{x}から翻訳するで" @@ -808,7 +810,7 @@ searchByGoogle: "探す" indefinitely: "無期限" file: "ファイル" requireAdminForView: "これを見るには管理者アカウントでログインしとらなあかんで。" -isSystemAccount: "システムが自動で作成・管理しとるアカウントやで。" +isSystemAccount: "システムが自動で作成・管理しとるアカウントやで。モデレーション・編集・削除するとサーバーの動作が不正になる可能性があるので、操作せんといてください。" typeToConfirm: "この操作をやるんなら {x} と入力してなー" deleteAccount: "アカウント削除するで" document: "ドキュメント" @@ -834,7 +836,7 @@ cannotUploadBecauseInappropriate: "不適切な内容を含むかもしれへん cannotUploadBecauseNoFreeSpace: "ドライブの空き容量が無いでアップロードできまへん。" beta: "ベータ" enableAutoSensitive: "自動NSFW判定" -enableAutoSensitiveDescription: "使える時は、機械学習を使って自動でメディアにNSFWフラグを設定するで。この機能をオフにしても、インスタンスによっては自動で設定されることがあるで。" +enableAutoSensitiveDescription: "いけるときは、機械学習を使って自動でメディアにNSFWフラグを設定するで。この機能をオフにしても、サーバーによっては自動で設定されることがあるで。" activeEmailValidationDescription: "ユーザーのメールアドレスのバリデーションを、捨てアドかどうかや実際に通信可能かどうかとかを判定して積極的に行うで。オフにすると単に文字列として正しいかどうかだけチェックするで。" navbar: "ナビゲーションバー" shuffle: "シャッフルするで" @@ -851,7 +853,9 @@ _ffVisibility: _ad: back: "戻る" _gallery: - unlike: "良くないわ" + unlike: "やっぱよくないわ" + like: ええやん! + liked: ええやんと思った投稿 _email: _follow: title: "フォローされたで" @@ -867,15 +871,16 @@ _registry: keys: "キー" domain: "ドメイン" createKey: "キーを作る" -_aboutMisskey: - about: "Misskeyはsyuiloが2014年からずっと作ってはる、オープンソースなソフトウェアや。" +_aboutFirefish: + about: "Firefishは、ThatOneCalculatorが2022年にMisskeyをいじって作った、オープンなソースのソフトウェアや。" contributors: "主な貢献者" allContributors: "全ての貢献者" source: "ソースコード" - translation: "Misskeyを翻訳" - donate: "Misskeyに寄付" + translation: "Firefishを翻訳" + donate: "Firefishに寄付" morePatrons: "他にもぎょうさんの人からサポートしてもろてんねん。ほんまおおきに🥰" patrons: "支援者" + misskeyContributors: フォーク元のMisskeyを作らはった人ら _mfm: cheatSheet: "MFMチートシート" mention: "メンション" @@ -896,6 +901,7 @@ _mfm: blur: "ぼかし" font: "フォント" rotate: "回転" + intro: MFMは、MisskeyやFirefish、Akkomaなどの様々な場所で使用できるマークアップ言語なんよ。ここでは、MFMで使用可能な構文一覧が確認できるで。 _instanceTicker: none: "表示せん" remote: "リモートユーザーに表示" @@ -958,7 +964,7 @@ _theme: hashtag: "ハッシュタグ" mention: "メンション" mentionMe: "うち宛てのメンション" - renote: "Renote" + renote: "ブースト" modalBg: "モーダルの背景" divider: "分割線" scrollbarHandle: "スクロールバーの取っ手" @@ -985,8 +991,8 @@ _theme: accentLighten: "アクセント (明るめ)" fgHighlighted: "強調されとる文字" _sfx: - note: "ノート" - noteMy: "ノート(自分)" + note: "投稿" + noteMy: "投稿(自分)" notification: "通知" chat: "チャット" _ago: @@ -1017,8 +1023,8 @@ _permissions: _auth: permissionAsk: "このアプリは次の権限を要求しとるで" _antennaSources: - all: "みんなのノート" - homeTimeline: "フォローしとるユーザーのノート" + all: "みんなの投稿" + homeTimeline: "フォローしとるユーザーの投稿" _weekday: sunday: "日曜日" monday: "月曜日" @@ -1065,14 +1071,21 @@ _poll: votesCount: "{n}票" vote: "投票する" _visibility: - publicDescription: "みんなに公開" - home: "ホーム" - followers: "フォロワー" + publicDescription: "うちの投稿、みんな見てや" + home: "ホームタイムラインのみ" + followers: "フォロワーのみ" + localOnly: ローカルのみ + followersDescription: フォロワーと返信相手だけに見せたる + specified: ダイレクト + localOnlyDescription: 他のサーバーには見せとうない + specifiedDescription: 指定した相手だけに見せたる + public: 公開 + homeDescription: ローカルTLやグローバルTLには流さへん _profile: name: "名前" username: "ユーザー名" _exportOrImport: - allNotes: "全てのノート" + allNotes: "すべての投稿" followingList: "フォロー" muteList: "ミュート" blockingList: "ブロック" @@ -1082,10 +1095,10 @@ _charts: apRequest: "リクエスト" usersTotal: "ユーザーの合計" activeUsers: "アクティブユーザー数" - notesIncDec: "ノートの増減" - localNotesIncDec: "ローカルのノートの増減" - remoteNotesIncDec: "リモートのノートの増減" - notesTotal: "ノートの合計" + notesIncDec: "投稿の増減" + localNotesIncDec: "ローカルの投稿の増減" + remoteNotesIncDec: "リモートの投稿の増減" + notesTotal: "投稿の合計" filesIncDec: "ファイルの増減" filesTotal: "ファイルの合計" storageUsageIncDec: "ストレージ使用量の増減" @@ -1094,8 +1107,8 @@ _instanceCharts: requests: "リクエスト" users: "ユーザーの増減" usersTotal: "ユーザーの累積" - notes: "ノートの増減" - notesTotal: "ノートの累積" + notes: "投稿の増減" + notesTotal: "投稿の累積" ff: "フォロー/フォロワーの増減" ffTotal: "フォロー/フォロワーの累積" cacheSize: "キャッシュサイズの増減" @@ -1117,7 +1130,7 @@ _pages: pageSetting: "ページ設定" viewPage: "ページを見る" like: "ええやん" - unlike: "良くないわ" + unlike: "やっぱ気に入らん" liked: "ええと思ったページ" contents: "コンテンツ" summary: "ページの要約" @@ -1165,9 +1178,9 @@ _pages: id: "キャンバスID" width: "幅" height: "高さ" - note: "ノート埋め込み" + note: "投稿の埋め込み" _note: - id: "ノートID" + id: "投稿のID" detailed: "詳細な表示" switch: "スイッチ" _switch: @@ -1385,14 +1398,14 @@ _notification: all: "すべて" follow: "フォロー" mention: "メンション" - renote: "Renote" + renote: "ブースト" quote: "引用" reaction: "リアクション" receiveFollowRequest: "フォロー許可してほしいみたいやで" followRequestAccepted: "フォローが受理されたで" _actions: reply: "返事" - renote: "Renote" + renote: "ブースト" _deck: alwaysShowMainColumn: "いつもメインカラムを表示" columnAlign: "カラムの寄せ" @@ -1413,3 +1426,30 @@ _deck: list: "リスト" mentions: "あんた宛て" direct: "ダイレクト" +_experiments: + postImportsCaption: + ユーザーが過去の投稿をFirefish・Misskey・Mastodon・Akkoma・Pleromaからインポートできるようにするで。キューが溜まっとるときにインポートするとサーバーに負荷がかかるかもしれんね。 +searchPlaceholder: Firefishを検索 +addInstance: サーバーを追加 +editNote: 投稿を編集 +edited: '編集済み: {date} {time}' +deleted: 削除済み +noThankYou: いらんわ +_tutorial: + step3_1: ほな、何人かフォローしてみまひょ + step1_1: おこしやす + step1_2: 使い始める前に、いくつか設定を済ませまひょ。すぐできますえ。 + step2_1: 最初に、あんさんのプロフィールを作りまひょ + step2_2: プロフィールを設定しはることで、他ん人があんさんの投稿を見たり、フォローしたりするときの助けになってます。 +_postForm: + _placeholders: + b: なんかおましたか? + e: ここに書いとくれやす + c: なに考えとりまっか? + d: なんや言いたいんちゃいますか? + f: あんさん書くんを待っとるんどす... + a: いまなにしとん? +flagSpeakAsCat: 猫弁で話す +flagSpeakAsCatDescription: オンにすると、ワレの投稿の「な」を「にゃ」に変換したるで。 +welcomeBackWithName: おおきに、{name}はん +migration: アカウントの引っ越し diff --git a/locales/kn-IN.yml b/locales/kn-IN.yml index 77614812e7..04309d92cf 100644 --- a/locales/kn-IN.yml +++ b/locales/kn-IN.yml @@ -1,6 +1,6 @@ --- _lang_: "ಕನ್ನಡ" -introMisskey: "ಸ್ವಾಗತ! Calckey ಓಪನ್ ಸೋರ್ಸ್ ಒಕ್ಕೂಟ ಮೈಕ್ರೋಬ್ಲಾಗಿಂಗ್ ಸೇವೆಯಾಗಿದೆ.\n ಏನಾಗುತ್ತಿದೆ ಎಂಬುದನ್ನು ಹಂಚಿಕೊಳ್ಳಲು ಅಥವಾ ನಿಮ್ಮ ಬಗ್ಗೆ ಎಲ್ಲರಿಗೂ ಹೇಳಲು \"ಟಿಪ್ಪಣಿ\"ಗಳನ್ನು ರಚಿಸಿ📡\n \"ಸ್ಪಂದನೆ\" ಕ್ರಿಯೆಯೊಂದಿಗೆ, ನೀವು ಎಲ್ಲರ ಟಿಪ್ಪಣಿಗಳಿಗೆ ತ್ವರಿತವಾಗಿ ಸ್ಪಂದನೆಗಳನ್ನು ಕೂಡ ಸೇರಿಸಬಹುದು.👍\n ಹೊಸ ಜಗತ್ತನ್ನು ಅನ್ವೇಷಿಸಿ🚀" +introFirefish: "ಸ್ವಾಗತ! Firefish ಓಪನ್ ಸೋರ್ಸ್ ಒಕ್ಕೂಟ ಮೈಕ್ರೋಬ್ಲಾಗಿಂಗ್ ಸೇವೆಯಾಗಿದೆ.\n ಏನಾಗುತ್ತಿದೆ ಎಂಬುದನ್ನು ಹಂಚಿಕೊಳ್ಳಲು ಅಥವಾ ನಿಮ್ಮ ಬಗ್ಗೆ ಎಲ್ಲರಿಗೂ ಹೇಳಲು \"ಟಿಪ್ಪಣಿ\"ಗಳನ್ನು ರಚಿಸಿ📡\n \"ಸ್ಪಂದನೆ\" ಕ್ರಿಯೆಯೊಂದಿಗೆ, ನೀವು ಎಲ್ಲರ ಟಿಪ್ಪಣಿಗಳಿಗೆ ತ್ವರಿತವಾಗಿ ಸ್ಪಂದನೆಗಳನ್ನು ಕೂಡ ಸೇರಿಸಬಹುದು.👍\n ಹೊಸ ಜಗತ್ತನ್ನು ಅನ್ವೇಷಿಸಿ🚀" monthAndDay: "{month}ನೇ ತಿಂಗಳ {day}ನೇ ದಿನ" search: "ಹುಡುಕು" notifications: "ಅಧಿಸೂಚನೆಗಳು" diff --git a/locales/ko-KR.yml b/locales/ko-KR.yml index 2c8e548bde..f2e2d57b92 100644 --- a/locales/ko-KR.yml +++ b/locales/ko-KR.yml @@ -1,7 +1,6 @@ ---- _lang_: "한국어" -headlineMisskey: "노트로 연결되는 네트워크" -introMisskey: "환영합니다! Calckey 는 오픈 소스 분산형 마이크로 블로그 서비스입니다.\n\"노트\" 를 작성해서, 지금 일어나고 있는 일을 공유하거나, 당신만의 이야기를 모두에게 발신하세요📡\n\"리액션\" 기능으로, 친구의 노트에 총알같이 반응을 추가할 수도 있습니다👍\n새로운 세계를 탐험해 보세요🚀" +headlineFirefish: "영원히 무료로 제공되는 오픈 소스 탈중앙화 소셜 미디어 플랫폼 🚀" +introFirefish: "환영합니다! Firefish 는 영원히 무료로 제공되는 오픈 소스 분산형 소셜 미디어 플랫폼입니다! 🚀" monthAndDay: "{month}월 {day}일" search: "검색" notifications: "알림" @@ -10,41 +9,41 @@ password: "비밀번호" forgotPassword: "비밀번호 재설정" fetchingAsApObject: "연합에서 조회 중" ok: "OK" -gotIt: "알겠어요" +gotIt: "알겠어요!" cancel: "취소" enterUsername: "유저명 입력" -renotedBy: "{user}님이 Renote" -noNotes: "노트가 없습니다" +renotedBy: "{user}님이 부스트" +noNotes: "게시물이 없습니다" noNotifications: "표시할 알림이 없습니다" -instance: "인스턴스" +instance: "서버" settings: "설정" basicSettings: "기본 설정" otherSettings: "기타 설정" openInWindow: "창으로 열기" profile: "프로필" timeline: "타임라인" -noAccountDescription: "자기소개가 없습니다" +noAccountDescription: "자기소개가 없습니다." login: "로그인" loggingIn: "로그인 중" logout: "로그아웃" signup: "회원 가입" -uploading: "업로드 중" +uploading: "업로드 중..." save: "저장" users: "유저" addUser: "유저 추가" favorite: "즐겨찾기" favorites: "즐겨찾기" unfavorite: "즐겨찾기에서 제거" -favorited: "즐겨찾기에 등록했습니다" -alreadyFavorited: "이미 즐겨찾기에 등록되어 있습니다" -cantFavorite: "즐겨찾기에 등록하지 못했습니다" +favorited: "즐겨찾기에 등록했습니다." +alreadyFavorited: "이미 즐겨찾기에 등록되어 있습니다." +cantFavorite: "즐겨찾기에 등록하지 못했습니다." pin: "프로필에 고정" unpin: "프로필에서 고정 해제" copyContent: "내용 복사" copyLink: "링크 복사" delete: "삭제" deleteAndEdit: "삭제 후 편집" -deleteAndEditConfirm: "이 노트를 삭제한 뒤 다시 편집하시겠습니까? 이 노트에 대한 리액션, 리노트, 답글 또한 모두 삭제됩니다." +deleteAndEditConfirm: "이 게시물을 삭제한 뒤 다시 편집하시겠습니까? 이 게시물에 대한 리액션, 부스트, 답글 또한 모두 삭제됩니다." addToList: "리스트에 추가" sendMessage: "메시지 보내기" copyUsername: "유저명 복사" @@ -58,20 +57,20 @@ receiveFollowRequest: "새로운 팔로우 요청이 있습니다" followRequestAccepted: "팔로우가 수락되었습니다" mention: "멘션" mentions: "받은 멘션" -directNotes: "다이렉트 노트" +directNotes: "다이렉트 게시물" importAndExport: "가져오기와 내보내기" import: "가져오기" export: "내보내기" files: "파일" download: "다운로드" -driveFileDeleteConfirm: "파일 \"{name}\" 을 삭제하시겠습니까? 이 파일이 첨부된 노트도 함께 삭제됩니다." +driveFileDeleteConfirm: "파일 \"{name}\" 을 삭제하시겠습니까? 이 파일이 첨부되었더 게시물에서도 같이 삭제됩니다." unfollowConfirm: "{name}님을 언팔로우하시겠습니까?" exportRequested: "내보내기를 요청하였습니다. 이 작업은 시간이 걸릴 수 있습니다. 내보내기가 완료되면 \"드라이브\"에 추가됩니다." importRequested: "가져오기를 요청하였습니다. 이 작업에는 시간이 걸릴 수 있습니다." lists: "리스트" noLists: "리스트가 없습니다" -note: "노트" -notes: "노트" +note: "게시" +notes: "게시물" following: "팔로잉" followers: "팔로워" followsYou: "당신을 팔로우합니다" @@ -81,7 +80,8 @@ error: "오류" somethingHappened: "오류가 발생했습니다" retry: "다시 시도" pageLoadError: "페이지를 불러오지 못했습니다." -pageLoadErrorDescription: "네트워크 연결 또는 브라우저 캐시로 인해 발생했을 가능성이 높습니다. 캐시를 삭제하거나, 잠시 후 다시 시도해 주세요." +pageLoadErrorDescription: "네트워크 연결 또는 브라우저 캐시로 인해 발생했을 가능성이 높습니다. 캐시를 삭제하거나, 잠시 후 + 다시 시도해 주세요." serverIsDead: "서버로부터 응답이 없습니다. 잠시 후 다시 시도해주세요." youShouldUpgradeClient: "이 페이지를 표시하려면 새로고침하여 새로운 버전의 클라이언트를 이용해 주십시오." enterListName: "리스트 이름을 입력" @@ -94,13 +94,13 @@ followRequests: "팔로우 요청" unfollow: "팔로우 해제" followRequestPending: "팔로우 허가 대기중" enterEmoji: "이모지 입력" -renote: "Renote" -unrenote: "Renote 취소" -renoted: "Renote 하였습니다" -cantRenote: "이 게시물은 Renote할 수 없습니다." -cantReRenote: "Renote를 Renote할 수 없습니다." +renote: "부스트" +unrenote: "부스트 취소" +renoted: "부스트 하였습니다." +cantRenote: "이 게시물은 부스트할 수 없습니다." +cantReRenote: "부스트를 부스트할 수 없습니다." quote: "인용" -pinnedNote: "고정해놓은 노트" +pinnedNote: "고정해놓은 게시물" pinned: "프로필에 고정" you: "당신" clickToShow: "클릭하여 보기" @@ -137,17 +137,19 @@ emojiUrl: "이모지 URL" addEmoji: "이모지 추가" settingGuide: "추천 설정" cacheRemoteFiles: "리모트 파일을 캐시" -cacheRemoteFilesDescription: "이 설정을 해지하면 리모트 파일을 캐시하지 않고 해당 파일을 직접 링크하게 됩니다. 그에 따라 서버의 저장 공간을 절약할 수 있지만, 썸네일이 생성되지 않기 때문에 통신량이 증가합니다." +cacheRemoteFilesDescription: "이 설정을 해지하면 리모트 파일을 캐시하지 않고 해당 파일을 직접 링크하게 됩니다. 그에 따라 + 서버의 저장 공간을 절약할 수 있지만, 썸네일이 생성되지 않기 때문에 통신량이 증가합니다." flagAsBot: "나는 봇입니다" -flagAsBotDescription: "이 계정을 자동화된 수단으로 운용할 경우에 활성화해 주세요. 이 플래그를 활성화하면, 다른 봇이 이를 참고하여 봇 끼리의 무한 연쇄 반응을 회피하거나, 이 계정의 시스템 상에서의 취급이 Bot 운영에 최적화되는 등의 변화가 생깁니다." +flagAsBotDescription: "이 계정을 자동화된 수단으로 운용할 경우에 활성화해 주세요. 이 플래그를 활성화하면, 다른 봇이 이를 참고하여 + 봇 끼리의 무한 연쇄 반응을 회피하거나, 이 계정의 시스템 상에서의 취급이 Bot 운영에 최적화되는 등의 변화가 생깁니다." flagAsCat: "나는 고양이다냥" -flagAsCatDescription: "이 계정이 고양이라면 활성화 해주세요." -flagShowTimelineReplies: "타임라인에 노트의 답글을 표시하기" +flagAsCatDescription: "고양이귀를 쓰고 냥냥거려요!" +flagShowTimelineReplies: "타임라인에 게시물의 답글을 표시하기" flagShowTimelineRepliesDescription: "이 설정을 활성화하면 타임라인에 다른 유저 간의 답글을 표시합니다." autoAcceptFollowed: "팔로우 중인 유저로부터의 팔로우 요청을 자동 수락" addAccount: "계정 추가" loginFailed: "로그인에 실패했습니다" -showOnRemote: "리모트에서 보기" +showOnRemote: "원본 페이지 열기" general: "일반" wallpaper: "배경" setWallpaper: "배경화면 설정" @@ -156,13 +158,15 @@ searchWith: "검색: {q}" youHaveNoLists: "리스트가 없습니다" followConfirm: "{name}님을 팔로우 하시겠습니까?" proxyAccount: "프록시 계정" -proxyAccountDescription: "프록시 계정은 특정 조건 하에서 유저의 리모트 팔로우를 대행하는 계정입니다. 예를 들면, 유저가 리모트 유저를 리스트에 넣었을 때, 리스트에 들어간 유저를 아무도 팔로우한 적이 없다면 액티비티가 인스턴스로 배달되지 않기 때문에, 대신 프록시 계정이 해당 유저를 팔로우하도록 합니다." +proxyAccountDescription: "프록시 계정은 특정 조건 하에서 유저의 리모트 팔로우를 대행하는 계정입니다. 예를 들면, 유저가 리모트 + 유저를 리스트에 넣었을 때, 리스트에 들어간 유저를 아무도 팔로우한 적이 없다면 액티비티가 서버로 배달되지 않기 때문에, 대신 프록시 계정이 해당 + 유저를 팔로우하도록 합니다." host: "호스트" selectUser: "유저 선택" recipient: "수신인" annotation: "내용에 대한 주석" federation: "연합" -instances: "인스턴스" +instances: "서버" registeredAt: "등록 날짜" latestRequestSentAt: "마지막으로 요청을 보낸 시간" latestRequestReceivedAt: "마지막으로 요청을 받은 시간" @@ -172,7 +176,7 @@ charts: "차트" perHour: "1시간마다" perDay: "1일마다" stopActivityDelivery: "액티비티 보내지 않기" -blockThisInstance: "이 인스턴스를 차단" +blockThisInstance: "이 서버를 차단" operations: "작업" software: "소프트웨어" version: "버전" @@ -182,23 +186,24 @@ jobQueue: "작업 대기열" cpuAndMemory: "CPU와 메모리" network: "네트워크" disk: "디스크" -instanceInfo: "인스턴스 정보" +instanceInfo: "서버 정보" statistics: "통계" clearQueue: "대기열 비우기" clearQueueConfirmTitle: "대기열을 비우시겠습니까?" -clearQueueConfirmText: "대기열에 남아 있는 노트는 더이상 연합되지 않습니다. 보통의 경우 이 작업은 필요하지 않습니다." +clearQueueConfirmText: "대기열에 남아 있는 게시물이 연합되지 않습니다. 보통의 경우 이 작업은 필요하지 않습니다." clearCachedFiles: "캐시 비우기" clearCachedFilesConfirm: "캐시된 리모트 파일을 모두 삭제하시겠습니까?" -blockedInstances: "차단된 인스턴스" -blockedInstancesDescription: "차단하려는 인스턴스의 호스트 이름을 줄바꿈으로 구분하여 설정합니다. 차단된 인스턴스는 이 인스턴스와 통신할 수 없게 됩니다." +blockedInstances: "차단한 서버" +blockedInstancesDescription: "차단하려는 서버의 호스트 이름을 줄바꿈으로 구분하여 설정합니다. 차단된 서버는 이 서버와 통신할 + 수 없게 됩니다." muteAndBlock: "뮤트 및 차단" mutedUsers: "뮤트한 유저" blockedUsers: "차단한 유저" noUsers: "아무도 없습니다" editProfile: "프로필 수정" -noteDeleteConfirm: "이 노트를 삭제하시겠습니까?" -pinLimitExceeded: "더 이상 고정할 수 없습니다." -intro: "Misskey의 설치가 완료되었습니다! 관리자 계정을 생성해주세요." +noteDeleteConfirm: "이 게시물을 삭제하시겠습니까?" +pinLimitExceeded: "더 이상 고정할 수 없습니다" +intro: "Firefish의 설치가 완료되었습니다! 관리자 계정을 생성해주세요." done: "완료" processing: "처리중" preview: "미리보기" @@ -213,9 +218,9 @@ all: "전체" subscribing: "구독 중" publishing: "배포 중" notResponding: "응답 없음" -instanceFollowing: "인스턴스의 팔로잉" -instanceFollowers: "인스턴스의 팔로워" -instanceUsers: "인스턴스의 유저" +instanceFollowing: "서버 팔로잉" +instanceFollowers: "서버 팔로워" +instanceUsers: "서버 유저" changePassword: "비밀번호 변경" security: "보안" retypedNotMatch: "입력이 일치하지 않습니다." @@ -239,7 +244,8 @@ saved: "저장하였습니다" messaging: "대화" upload: "업로드" keepOriginalUploading: "원본 이미지를 유지" -keepOriginalUploadingDescription: "이미지를 업로드할 때에 원본을 그대로 유지합니다. 비활성화하면 업로드할 때 브라우저에서 웹 공개용 이미지를 생성합니다." +keepOriginalUploadingDescription: "이미지를 업로드할 때에 원본을 그대로 유지합니다. 비활성화하면 업로드할 때 브라우저에서 + 웹 공개용 이미지를 생성합니다." fromDrive: "드라이브에서" fromUrl: "URL로부터" uploadFromUrl: "URL 업로드" @@ -286,7 +292,7 @@ emptyDrive: "드라이브가 비어 있습니다" emptyFolder: "폴더가 비어 있습니다" unableToDelete: "삭제할 수 없습니다" inputNewFileName: "바꿀 파일명을 입력해 주세요" -inputNewDescription: "새 캡션을 입력해 주세요" +inputNewDescription: "새 설명을 입력해 주세요" inputNewFolderName: "바꿀 폴더명을 입력해 주세요" circularReferenceFolder: "지정한 폴더가 이동할 폴더의 하위 폴더입니다." hasChildFilesOrFolders: "이 폴더는 비어있지 않기 때문에 삭제할 수 없습니다." @@ -305,8 +311,8 @@ unwatch: "지켜보기 해제" accept: "허가" reject: "거부" normal: "정상" -instanceName: "인스턴스 이름" -instanceDescription: "인스턴스 소개" +instanceName: "서버 이름" +instanceDescription: "서버 소개" maintainerName: "관리자 이름" maintainerEmail: "관리자 이메일" tosUrl: "이용약관 URL" @@ -336,9 +342,9 @@ basicInfo: "기본 정보" pinnedUsers: "고정된 유저" pinnedUsersDescription: "\"발견하기\" 페이지 등에 고정하고 싶은 유저를 한 줄에 한 명씩 적습니다." pinnedPages: "고정한 페이지" -pinnedPagesDescription: "인스턴스의 대문에 고정하고 싶은 페이지의 경로를 한 줄에 하나씩 적습니다." +pinnedPagesDescription: "서버 대문에 고정할 페이지의 경로를 한 줄에 하나씩 적습니다." pinnedClipId: "고정할 클립의 ID" -pinnedNotes: "고정해놓은 노트" +pinnedNotes: "고정한 글" hcaptcha: "hCaptcha" enableHcaptcha: "hCaptcha 활성화" hcaptchaSiteKey: "사이트 키" @@ -347,16 +353,17 @@ recaptcha: "reCAPTCHA" enableRecaptcha: "reCAPTCHA 활성화" recaptchaSiteKey: "사이트 키" recaptchaSecretKey: "시크릿 키" -avoidMultiCaptchaConfirm: "여러 Captcha를 사용하는 경우 간섭이 발생할 가능성이 있습니다. 다른 Captcha를 비활성화하시겠습니까? 취소를 눌러 여러 Captcha를 활성화한 상태로 두는 것도 가능합니다." +avoidMultiCaptchaConfirm: "여러 Captcha를 사용하는 경우 간섭이 발생할 가능성이 있습니다. 다른 Captcha를 비활성화하시겠습니까? + 취소를 눌러 여러 Captcha를 활성화한 상태로 두는 것도 가능합니다." antennas: "안테나" manageAntennas: "안테나 관리" name: "이름" antennaSource: "받을 소스" antennaKeywords: "받을 키워드" antennaExcludeKeywords: "제외할 키워드" -antennaKeywordsDescription: "공백으로 구분하는 경우 AND, 줄바꿈으로 구분하는 경우 OR로 지정됩니다" -notifyAntenna: "새로운 노트를 알림" -withFileAntenna: "파일이 첨부된 노트만" +antennaKeywordsDescription: "공백으로 구분하는 경우 AND, 줄바꿈으로 구분하는 경우 OR로 지정됩니다." +notifyAntenna: "새로운 글을 알림" +withFileAntenna: "파일이 첨부된 게시물만" enableServiceworker: "ServiceWorker 사용" antennaUsersDescription: "유저명을 한 줄에 한 명씩 적습니다" caseSensitive: "대소문자를 구분" @@ -377,7 +384,7 @@ exploreFediverse: "연합우주를 탐색" popularTags: "인기 태그" userList: "리스트" about: "정보" -aboutMisskey: "Misskey에 대하여" +aboutFirefish: "Firefish에 대하여" administrator: "관리자" token: "토큰" twoStepAuthentication: "2단계 인증" @@ -420,7 +427,7 @@ text: "텍스트" enable: "사용" next: "다음" retype: "다시 입력" -noteOf: "{user}의 노트" +noteOf: "{user}의 게시물" inviteToGroup: "그룹에 초대하기" quoteAttached: "인용함" quoteQuestion: "인용해서 작성하시겠습니까?" @@ -430,10 +437,10 @@ onlyOneFileCanBeAttached: "메시지에 첨부할 수 있는 파일은 하나까 signinRequired: "로그인 해주세요" invitations: "초대" invitationCode: "초대 코드" -checking: "확인하는 중입니다" +checking: "확인하는 중입니다..." available: "사용 가능합니다" unavailable: "사용할 수 없습니다" -usernameInvalidFormat: "a~z, A~Z, 0-9, _를 사용할 수 있습니다" +usernameInvalidFormat: "a~z, A~Z, 0-9, _를 사용할 수 있습니다." tooShort: "너무 짧습니다" tooLong: "너무 깁니다" weakPassword: "약한 비밀번호" @@ -456,7 +463,7 @@ joinOrCreateGroup: "다른 그룹의 초대를 받거나, 직접 새 그룹을 noHistory: "기록이 없습니다" signinHistory: "로그인 기록" disableAnimatedMfm: "움직임이 있는 MFM을 비활성화" -doing: "잠시만요" +doing: "기다려 주세요..." category: "카테고리" tags: "태그" docSource: "이 문서의 소스" @@ -478,20 +485,25 @@ accountSettings: "계정 설정" promotion: "프로모션" promote: "프로모션하기" numberOfDays: "며칠동안" -hideThisNote: "이 노트를 숨기기" -showFeaturedNotesInTimeline: "타임라인에 추천 노트를 표시" +hideThisNote: "이 글을 숨기기" +showFeaturedNotesInTimeline: "타임라인에 추천 게시물을 표시" objectStorage: "오브젝트 스토리지" useObjectStorage: "오브젝트 스토리지를 사용" objectStorageBaseUrl: "Base URL" -objectStorageBaseUrlDesc: "오브젝트 (미디어) 참조 URL 을 만들 때 사용되는 URL입니다. CDN 또는 프록시를 사용하는 경우 그 URL을 지정하고, 그 외의 경우 사용할 서비스의 가이드에 따라 공개적으로 액세스 할 수 있는 주소를 지정해 주세요. 예를 들어, AWS S3의 경우 'https://.s3.amazonaws.com', GCS등의 경우 'https://storage.googleapis.com/' 와 같이 지정합니다." +objectStorageBaseUrlDesc: "오브젝트 (미디어) 참조 URL 을 만들 때 사용되는 URL입니다. CDN 또는 프록시를 사용하는 + 경우 그 URL을 지정하고, 그 외의 경우 사용할 서비스의 가이드에 따라 공개적으로 액세스 할 수 있는 주소를 지정해 주세요.\n예를 들어, AWS + S3의 경우 'https://.s3.amazonaws.com', GCS등의 경우 'https://storage.googleapis.com/' + 와 같이 지정합니다." objectStorageBucket: "Bucket" objectStorageBucketDesc: "사용 서비스의 bucket명을 지정해주세요." objectStoragePrefix: "Prefix" objectStoragePrefixDesc: "이 Prefix 의 디렉토리 아래에 파일이 저장됩니다." objectStorageEndpoint: "Endpoint" -objectStorageEndpointDesc: "AWS S3의 경우 공란, 다른 서비스의 경우 각 서비스의 가이드에 맞게 endpoint를 설정해주세요. '' 혹은 ':' 와 같이 지정합니다." +objectStorageEndpointDesc: "AWS S3의 경우 공란, 다른 서비스의 경우 각 서비스의 가이드에 맞게 endpoint를 설정해주세요. + '' 혹은 ':' 와 같이 지정합니다." objectStorageRegion: "Region" -objectStorageRegionDesc: "'xx-east-1'와 같이 region을 지정해주세요. 사용하는 서비스에 region 개념이 없는 경우, 비워 두거나 'us-east-1'으로 설정해 주세요." +objectStorageRegionDesc: "'xx-east-1'와 같이 region을 지정해주세요. 사용하는 서비스에 region 개념이 없는 + 경우, 비워 두거나 'us-east-1'으로 설정해 주세요." objectStorageUseSSL: "SSL 사용" objectStorageUseSSLDesc: "API 호출시 HTTPS 를 사용하지 않는 경우 OFF 로 설정해 주세요" objectStorageUseProxy: "연결에 프록시를 사용" @@ -500,7 +512,7 @@ objectStorageSetPublicRead: "업로드할 때 'public-read'를 설정하기" serverLogs: "서버 로그" deleteAll: "모두 삭제" showFixedPostForm: "타임라인 상단에 글 작성란을 표시" -newNoteRecived: "새 노트가 있습니다" +newNoteRecived: "새 글이 있습니다" sounds: "소리" listen: "듣기" none: "없음" @@ -523,7 +535,8 @@ sort: "정렬" ascendingOrder: "오름차순" descendingOrder: "내림차순" scratchpad: "스크래치 패드" -scratchpadDescription: "스크래치 패드는 AiScript 의 테스트 환경을 제공합니다. Calckey 와 상호 작용하는 코드를 작성, 실행 및 결과를 확인할 수 있습니다." +scratchpadDescription: "스크래치 패드는 AiScript 의 테스트 환경을 제공합니다. Firefish 와 상호 작용하는 코드를 + 작성, 실행 및 결과를 확인할 수 있습니다." output: "출력" script: "스크립트" disablePagesScript: "Pages 에서 AiScript 를 사용하지 않음" @@ -531,11 +544,13 @@ updateRemoteUser: "리모트 유저 정보 갱신" deleteAllFiles: "모든 파일 삭제" deleteAllFilesConfirm: "모든 파일을 삭제하시겠습니까?" removeAllFollowing: "모든 팔로잉 해제" -removeAllFollowingDescription: "{host}(으)로부터 모든 팔로잉을 해제합니다. 해당 인스턴스가 더 이상 존재하지 않게 된 경우 등에 실행해 주세요." +removeAllFollowingDescription: "{host}(으)로부터 모든 팔로잉을 해제합니다. 해당 서버가 더 이상 존재하지 않게 된 + 경우 등에 실행해 주세요." userSuspended: "이 계정은 정지된 상태입니다." userSilenced: "이 계정은 사일런스된 상태입니다." yourAccountSuspendedTitle: "계정이 정지되었습니다" -yourAccountSuspendedDescription: "이 계정은 서버의 이용 약관을 위반하거나, 기타 다른 이유로 인해 정지되었습니다. 자세한 사항은 관리자에게 문의해 주십시오. 계정을 새로 생성하지 마십시오." +yourAccountSuspendedDescription: "이 계정은 서버의 이용 약관을 위반하거나, 기타 다른 이유로 인해 정지되었습니다. 자세한 + 사항은 관리자에게 문의해 주십시오. 계정을 새로 생성하지 마십시오." menu: "메뉴" divider: "구분선" addItem: "항목 추가" @@ -544,8 +559,8 @@ addRelay: "릴레이 추가" inboxUrl: "Inbox 주소" addedRelays: "추가된 릴레이" serviceworkerInfo: "푸시 알림을 수행하려면 활성화해야 합니다." -deletedNote: "삭제된 노트" -invisibleNote: "비공개 노트" +deletedNote: "삭제된 글" +invisibleNote: "비공개 글" enableInfiniteScroll: "자동으로 좀 더 보기" visibility: "공개 범위" poll: "투표" @@ -555,8 +570,8 @@ disablePlayer: "플레이어 닫기" expandTweet: "트윗 확장하기" themeEditor: "테마 에디터" description: "설명" -describeFile: "캡션 추가" -enterFileDescription: "캡션 입력" +describeFile: "설명 추가" +enterFileDescription: "설명 입력" author: "작성자" leaveConfirm: "저장하지 않은 변경사항이 있습니다. 취소하시겠습니까?" manage: "관리" @@ -581,7 +596,7 @@ notificationType: "알림 유형" edit: "편집" emailServer: "메일 서버" enableEmail: "이메일 송신 기능 활성화" -emailConfigInfo: "가입 시 메일 주소 확인이나 비밀번호 초기화 시에 사용합니다." +emailConfigInfo: "가입 시 메일 주소 확인이나 비밀번호 초기화 시에 사용합니다" email: "이메일" emailAddress: "메일 주소" smtpConfig: "SMTP 서버 설정" @@ -589,14 +604,14 @@ smtpHost: "호스트" smtpPort: "포트" smtpUser: "유저명" smtpPass: "비밀번호" -emptyToDisableSmtpAuth: "SMTP 인증을 사용하지 않으려면 공란으로 비워둡니다." +emptyToDisableSmtpAuth: "SMTP 인증을 사용하지 않으려면 공란으로 비워둡니다" smtpSecure: "SMTP 연결에 Implicit SSL/TTS 사용" -smtpSecureInfo: "STARTTLS 사용 시에는 해제합니다." +smtpSecureInfo: "STARTTLS 사용 시에는 해제합니다" testEmail: "이메일 전송 테스트" wordMute: "단어 뮤트" regexpError: "정규 표현식 오류" regexpErrorDescription: "{tab}단어 뮤트 {line}행의 정규 표현식에 오류가 발생했습니다:" -instanceMute: "인스턴스 뮤트" +instanceMute: "서버 뮤트" userSaysSomething: "{name}님이 무언가를 말했습니다" makeActive: "활성화" display: "표시" @@ -614,7 +629,8 @@ useGlobalSetting: "글로벌 설정을 사용하기" useGlobalSettingDesc: "활성화하면 계정의 알림 설정이 적용됩니다. 비활성화하면 개별적으로 설정할 수 있게 됩니다." other: "기타" regenerateLoginToken: "로그인 토큰을 재생성" -regenerateLoginTokenDescription: "로그인할 때 사용되는 내부 토큰을 재생성합니다. 일반적으로 이 작업을 실행할 필요는 없습니다. 이 기능을 사용하면 이 계정으로 로그인한 모든 기기에서 로그아웃됩니다." +regenerateLoginTokenDescription: "로그인할 때 사용되는 내부 토큰을 재생성합니다. 일반적으로 이 작업을 실행할 필요는 없습니다. + 이 기능을 사용하면 이 계정으로 로그인한 모든 기기에서 로그아웃됩니다." setMultipleBySeparatingWithSpace: "공백으로 구분하여 여러 개 설정할 수 있습니다." fileIdOrUrl: "파일 ID 또는 URL" behavior: "동작" @@ -627,35 +643,35 @@ abuseReported: "신고를 보냈습니다. 신고해 주셔서 감사합니다." reporter: "신고자" reporteeOrigin: "피신고자" reporterOrigin: "신고자" -forwardReport: "리모트 인스턴스에도 신고 내용 보내기" -forwardReportIsAnonymous: "리모트 인스턴스에서는 나의 정보를 볼 수 없으며, 익명의 시스템 계정으로 표시됩니다." +forwardReport: "리모트 서버에도 신고 내용 보내기" +forwardReportIsAnonymous: "리모트 서버에서는 나의 정보를 볼 수 없으며, 익명의 시스템 계정으로 표시됩니다." send: "전송" abuseMarkAsResolved: "해결됨으로 표시" openInNewTab: "새 탭에서 열기" openInSideView: "사이드뷰로 열기" defaultNavigationBehaviour: "기본 탐색 동작" editTheseSettingsMayBreakAccount: "이 설정을 변경하면 계정이 손상될 수 있습니다." -instanceTicker: "노트의 인스턴스 정보" +instanceTicker: "게시물의 인스턴스 정보" waitingFor: "{x}을(를) 기다리고 있습니다" random: "랜덤" system: "시스템" -switchUi: "UI 전환" +switchUi: "레이아웃" desktop: "데스크탑" clip: "클립" createNew: "새로 만들기" optional: "옵션" createNewClip: "새 클립 만들기" unclip: "클립 해제" -confirmToUnclipAlreadyClippedNote: "이 노트는 이미 \"{name}\" 클립에 포함되어 있습니다. 클립을 해제하시겠습니까?" +confirmToUnclipAlreadyClippedNote: "이 글은 이미 \"{name}\" 클립에 포함되어 있습니다. 클립을 해제하시겠습니까?" public: "공개" -i18nInfo: "Calckey는 자원봉사자들에 의해 다양한 언어로 번역되고 있습니다. {link}에서 번역에 참가할 수 있습니다." +i18nInfo: "Firefish는 자원봉사자들에 의해 다양한 언어로 번역되고 있습니다. {link}에서 번역에 참가할 수 있습니다." manageAccessTokens: "액세스 토큰 관리" accountInfo: "계정 정보" -notesCount: "노트 수" +notesCount: "글 수" repliesCount: "답글 수" -renotesCount: "Renote 수" +renotesCount: "부스트 수" repliedCount: "받은 답글 수" -renotedCount: "받은 Renote 수" +renotedCount: "받은 부스트 수" followingCount: "팔로우 수" followersCount: "팔로워 수" sentReactionsCount: "보낸 리액션 수" @@ -667,15 +683,15 @@ no: "아니오" driveFilesCount: "드라이브 파일 개수" driveUsage: "드라이브 사용량" noCrawle: "검색엔진의 인덱싱 거부" -noCrawleDescription: "검색엔진에 사용자 페이지, 노트, 페이지 등의 콘텐츠를 인덱싱되지 않게 합니다." -lockedAccountInfo: "팔로우를 승인으로 승인받더라도 노트의 공개 범위를 '팔로워'로 하지 않는 한 누구나 당신의 노트를 볼 수 있습니다." +noCrawleDescription: "검색엔진이 나의 컨텐츠를 인덱싱하지 않게 합니다." +lockedAccountInfo: "팔로우를 승인으로 승인받더라도 게시물의 공개 범위를 '팔로워'로 하지 않는 한 누구나 당신의 글을 볼 수 있습니다." alwaysMarkSensitive: "미디어를 항상 열람 주의로 설정" loadRawImages: "첨부한 이미지의 썸네일을 원본화질로 표시" disableShowingAnimatedImages: "움직이는 이미지를 자동으로 재생하지 않음" verificationEmailSent: "확인 메일을 발송하였습니다. 설정을 완료하려면 메일에 첨부된 링크를 확인해 주세요." notSet: "설정되지 않음" -emailVerified: "메일 주소가 확인되었습니다." -noteFavoritesCount: "즐겨찾기한 노트 수" +emailVerified: "메일 주소가 확인되었습니다" +noteFavoritesCount: "즐겨찾기한 게시물 수" pageLikesCount: "좋아요 한 Page 수" pageLikedCount: "Page에 받은 좋아요 수" contact: "연락처" @@ -685,7 +701,7 @@ experimentalFeatures: "실험실" developer: "개발자" makeExplorable: "\"발견하기\"에 내 계정 보이기" makeExplorableDescription: "비활성화하면 \"발견하기\"에 나의 계정을 표시하지 않습니다." -showGapBetweenNotesInTimeline: "타임라인의 노트 사이를 띄워서 표시" +showGapBetweenNotesInTimeline: "타임라인의 게시물 사이를 띄워서 표시" duplicate: "복제" left: "왼쪽" center: "가운데" @@ -697,9 +713,11 @@ showTitlebar: "타이틀 바를 표시하기" clearCache: "캐시 비우기" onlineUsersCount: "{n}명이 접속 중" nUsers: "{n} 유저" -nNotes: "{n} 노트" +nNotes: "{n} 게시물" sendErrorReports: "오류 보고서 보내기" -sendErrorReportsDescription: "이 설정을 활성화하면, 문제가 발생했을 때 오류에 대한 상세 정보를 Misskey에 보내어 더 나은 소프트웨어를 만드는 데에 도움을 줄 수 있습니다." +sendErrorReportsDescription: "이 설정을 활성화하면, 문제가 발생했을 때 오류에 대한 상세 정보를 Firefish에 보내어 + 더 나은 소프트웨어를 만드는 데에 도움을 줄 수 있습니다.\n 상세 정보에는 OS 버전, 브라우저 정보, Firefish에서의 활동 정보 등이 + 포함됩니다." myTheme: "내 테마" backgroundColor: "배경 색" accentColor: "강조 색상" @@ -723,7 +741,7 @@ capacity: "용량" inUse: "사용중" editCode: "코드 수정" apply: "적용" -receiveAnnouncementFromInstance: "이 인스턴스의 알림을 이메일로 수신할게요" +receiveAnnouncementFromInstance: "이 서버의 알림을 이메일로 수신" emailNotification: "메일 알림" publish: "게시" inChannelSearch: "채널에서 검색" @@ -738,7 +756,7 @@ unlikeConfirm: "좋아요를 취소할까요?" fullView: "전체 화면" quitFullView: "전체 화면 해제" addDescription: "설명 추가" -userPagePinTip: "각 노트의 메뉴에서 「프로필에 고정」을 선택하는 것으로, 여기에 노트를 표시해 둘 수 있어요." +userPagePinTip: "각 게시물의 메뉴에서 「프로필에 고정」을 선택하는 것으로, 여기에 게시물을 표시해 둘 수 있어요." notSpecifiedMentionWarning: "수신자가 선택되지 않은 멘션이 있어요" info: "정보" userInfo: "유저 정보" @@ -751,7 +769,7 @@ active: "최근에 활동함" offline: "오프라인" notRecommended: "추천하지 않음" botProtection: "Bot 방어" -instanceBlocking: "인스턴스 차단" +instanceBlocking: "서버 차단" selectAccount: "계정 선택" switchAccount: "계정 바꾸기" enabled: "활성화" @@ -768,8 +786,8 @@ postToGallery: "갤러리에 업로드" gallery: "갤러리" recentPosts: "최근 포스트" popularPosts: "인기 포스트" -shareWithNote: "노트로 공유" -ads: "광고" +shareWithNote: "게시물로 공유" +ads: "커뮤니티 배너" expiration: "기한" memo: "메모" priority: "우선순위" @@ -780,7 +798,8 @@ emailNotConfiguredWarning: "메일 주소가 설정되어 있지 않습니다." ratio: "비율" previewNoteText: "본문 미리보기" customCss: "CSS 사용자화" -customCssWarn: "이 설정은 기능을 알고 있는 경우에만 사용해야 합니다. 잘못된 값을 입력하면 클라이언트가 정상적으로 작동하지 않을 수 있습니다." +customCssWarn: "이 설정은 기능을 알고 있는 경우에만 사용해야 합니다. 잘못된 값을 입력하면 클라이언트가 정상적으로 작동하지 않을 수 + 있습니다." global: "글로벌" squareAvatars: "프로필 아이콘을 사각형으로 표시" sent: "전송" @@ -790,12 +809,13 @@ hashtags: "해시태그" troubleshooting: "문제 해결" useBlurEffect: "UI에 흐림 효과 사용" learnMore: "자세히" -misskeyUpdated: "Misskey가 업데이트 되었습니다!" +misskeyUpdated: "Firefish가 업데이트 되었습니다!" whatIsNew: "패치 정보 보기" translate: "번역" translatedFrom: "{x}에서 번역" accountDeletionInProgress: "계정 삭제 작업을 진행하고 있습니다" -usernameInfo: "서버상에서 계정을 식별하기 위한 이름. 알파벳(a~z, A~Z), 숫자(0~9) 및 언더바(_)를 사용할 수 있습니다. 사용자명은 나중에 변경할 수 없습니다." +usernameInfo: "서버상에서 계정을 식별하기 위한 이름. 알파벳(a~z, A~Z), 숫자(0~9) 및 언더바(_)를 사용할 수 있습니다. + 사용자명은 나중에 변경할 수 없습니다." aiChanMode: "아이 모드" keepCw: "CW 유지하기" pubSub: "Pub/Sub 계정" @@ -812,13 +832,13 @@ controlPanel: "제어판" manageAccounts: "계정 관리" makeReactionsPublic: "리액션 목록을 공개하기" makeReactionsPublicDescription: "나의 리액션을 누구나 볼 수 있게 합니다." -classic: "클래식" +classic: "중앙" muteThread: "이 글타래를 뮤트" unmuteThread: "글타래 뮤트 해제" ffVisibility: "내 인맥의 공개 범위" ffVisibilityDescription: "나의 팔로우와 팔로워 정보에 대한 공개 범위를 설정할 수 있습니다." continueThread: "이 글타래 이어서 보기" -deleteAccountConfirm: "계정이 삭제되고 되돌릴 수 없게 됩니다. 계속하시겠습니까? " +deleteAccountConfirm: "계정이 삭제되고 되돌릴 수 없게 됩니다. 계속하시겠습니까?" incorrectPassword: "비밀번호가 올바르지 않습니다." voteConfirm: "\"{choice}\"에 투표하시겠습니까?" hide: "숨기기" @@ -835,8 +855,8 @@ themeColor: "테마 컬러" size: "크기" numberOfColumn: "한 줄에 보일 리액션의 수" searchByGoogle: "검색" -instanceDefaultLightTheme: "인스턴스 기본 라이트 테마" -instanceDefaultDarkTheme: "인스턴스 기본 다크 테마" +instanceDefaultLightTheme: "서버 기본 라이트 테마" +instanceDefaultDarkTheme: "서버 기본 다크 테마" instanceDefaultThemeDescription: "객체 형식의 테마 코드를 입력해 주세요." mutePeriod: "뮤트할 기간" indefinitely: "무기한" @@ -859,7 +879,8 @@ check: "체크" driveCapOverrideLabel: "이 유저의 드라이브 용량을 변경" driveCapOverrideCaption: "0 이하를 지정하면 해제됩니다." requireAdminForView: "열람하려면 관리자 계정으로 로그인해야 합니다." -isSystemAccount: "시스템에 의해 자동으로 생성되어 관리되는 계정입니다." +isSystemAccount: "시스템에 의해 자동으로 생성되어 관리되는 계정입니다. 이 계정에 대해 모더레이션, 수정, 삭제 등을 수행하면 서버가 + 오작동할 수 있으므로 조작하지 마십시오." typeToConfirm: "계속하시려면 {x} 을 입력하세요" deleteAccount: "계정 삭제" document: "문서" @@ -870,7 +891,7 @@ lastActiveDate: "마지막 이용" pleaseSelect: "선택해 주세요" reverse: "플립" colored: "색 입히기" -refreshInterval: "업데이트 주기" +refreshInterval: "업데이트 주기 " label: "라벨" type: "종류" speed: "속도" @@ -884,8 +905,10 @@ cannotUploadBecauseInappropriate: "이 파일은 부적절한 내용을 포함 cannotUploadBecauseNoFreeSpace: "드라이브 용량이 부족하여 업로드할 수 없습니다." beta: "베타" enableAutoSensitive: "자동 NSFW 탐지" -enableAutoSensitiveDescription: "이용 가능할 경우 기계학습을 통해 자동으로 미디어 NSFW를 설정합니다. 이 기능을 해제하더라도, 인스턴스 정책에 따라 자동으로 설정될 수 있습니다." -activeEmailValidationDescription: "유저가 입력한 메일 주소가 일회용 메일인지, 실제로 통신할 수 있는 지 엄격하게 검사합니다. 해제할 경우 이메일 형식에 대해서만 검사합니다." +enableAutoSensitiveDescription: "이용 가능할 경우 기계학습을 통해 자동으로 미디어 NSFW를 설정합니다. 이 기능을 해제하더라도, + 서버 정책에 따라 자동으로 설정될 수 있습니다." +activeEmailValidationDescription: "유저가 입력한 메일 주소가 일회용 메일인지, 실제로 통신할 수 있는 지 엄격하게 검사합니다. + 해제할 경우 이메일 형식에 대해서만 검사합니다." navbar: "네비게이션 바" shuffle: "셔플" account: "계정" @@ -893,7 +916,8 @@ move: "이동" _sensitiveMediaDetection: description: "기계학습을 통해 자동으로 민감한 미디어를 탐지하여, 모더레이션에 참고할 수 있도록 합니다. 서버의 부하를 약간 증가시킵니다." sensitivity: "탐지 민감도" - sensitivityDescription: "민감도가 낮을수록 안전한 미디어가 잘못 탐지될 확률이 줄어들며, 높을수록 민감한 미디어가 탐지되지 않을 확률이 줄어듭니다." + sensitivityDescription: "민감도가 낮을수록 안전한 미디어가 잘못 탐지될 확률이 줄어들며, 높을수록 민감한 미디어가 탐지되지 + 않을 확률이 줄어듭니다." setSensitiveFlagAutomatically: "자동으로 NSFW로 설정하기" setSensitiveFlagAutomaticallyDescription: "이 설정을 해제해도 탐지 결과는 유지됩니다." analyzeVideos: "동영상도 같이 확인하기" @@ -911,7 +935,8 @@ _ffVisibility: _signup: almostThere: "거의 다 끝났습니다" emailAddressInfo: "당신이 사용하고 있는 이메일 주소를 입력해 주세요. 이메일 주소는 다른 유저에게 공개되지 않습니다." - emailSent: "입력하신 메일 주소({email})로 확인 메일을 보내드렸습니다. 가입을 완료하시려면 보내드린 메일에 있는 링크로 접속해 주세요." + emailSent: "입력하신 메일 주소({email})로 확인 메일을 보내드렸습니다. 가입을 완료하시려면 보내드린 메일에 있는 링크로 접속해 + 주세요." _accountDelete: accountDelete: "계정 삭제" mayTakeTime: "계정 삭제는 서버에 부하를 가하기 때문에, 작성한 콘텐츠나 업로드한 파일의 수가 많으면 완료까지 시간이 걸릴 수 있습니다." @@ -924,12 +949,12 @@ _ad: reduceFrequencyOfThisAd: "이 광고의 표시 빈도 낮추기" _forgotPassword: enterEmail: "여기에 계정에 등록한 메일 주소를 입력해 주세요. 입력한 메일 주소로 비밀번호 재설정 링크를 발송합니다." - ifNoEmail: "메일 주소를 등록하지 않은 경우, 관리자에 문의해 주십시오." - contactAdmin: "이 인스턴스에서는 메일 기능이 지원되지 않습니다. 비밀번호를 재설정하려면 관리자에게 문의해 주십시오." + ifNoEmail: "메일 주소를 등록하지 않은 경우, 서버 관리자에게 문의해 주십시오." + contactAdmin: "이 서버에서는 메일 기능이 지원되지 않습니다. 비밀번호를 재설정하려면 관리자에게 문의해 주십시오." _gallery: my: "내 갤러리" liked: "좋아요 한 갤러리" - like: "좋아요!" + like: "좋아요" unlike: "좋아요 취소" _email: _follow: @@ -957,30 +982,38 @@ _preferencesBackups: createdAt: "생성 날짜: {date} {time}" updatedAt: "갱신 날짜: {date} {time}" cannotLoad: "가져오기에 실패했습니다" - invalidFile: "파일 형식이 올바르지 않습니다." + invalidFile: "파일 형식이 올바르지 않습니다" _registry: scope: "범위" key: "키" keys: "키" domain: "도메인" createKey: "키 생성" -_aboutMisskey: - about: "Misskey는 syuilo에 의해서 2014년부터 개발되어 온 오픈소스 소프트웨어 입니다." +_aboutFirefish: + about: "Firefish는 ThatOneCalculator에 의해서 2022년부터 개발되어 온 Misskey의 포크 소프트웨어 입니다." contributors: "주요 기여자" allContributors: "모든 기여자" source: "소스 코드" - translation: "Misskey를 번역하기" - donate: "Misskey에 기부하기" + translation: "Firefish를 번역하기" + donate: "Firefish에 기부하기" morePatrons: "이 외에도 다른 많은 분들이 도움을 주시고 계십니다. 감사합니다🥰" patrons: "후원자" + patronsList: 기부 금액이 아닌 시간 순서로 정렬합니다. 위 링크를 통해 후원하여 당신의 이름을 새겨 보세요! + sponsors: Firefish 스폰서 + pleaseDonateToHost: 또한, 이 서버 {host} 의 운영자에게 기부하는 것도 검토하여 주십시오. + pleaseDonateToFirefish: Firefish의 개발에 후원하는 것을 검토하여 주십시오. + donateHost: '{host} 에게 기부하기' + donateTitle: Firefish가 마음에 드시나요? + misskeyContributors: 오리지널 Misskey 기여자 _nsfw: respect: "열람주의로 설정된 미디어 숨기기" ignore: "열람 주의 미디어 항상 표시" force: "미디어 항상 숨기기" _mfm: cheatSheet: "MFM 도움말" - intro: "MFM는 Misskey의 다양한 곳에서 사용할 수 있는 전용 마크업 언어입니다. 여기에서는 MFM에서 사용할 수 있는 구문을 확인할 수 있습니다." - dummy: "Misskey로 연합우주의 세계가 펼쳐집니다" + intro: "MFM는 Misskey나 Firefish, Akkoma 외의 다양한 곳에서 사용할 수 있는 전용 마크업 언어입니다. 여기에서는 MFM에서 + 사용할 수 있는 구문을 확인할 수 있습니다." + dummy: "Firefish로 연합우주의 세계가 펼쳐집니다" mention: "멘션" mentionDescription: "골뱅이표(@) 뒤에 사용자명을 넣어 특정 유저를 나타낼 수 있습니다." hashtag: "해시태그" @@ -1000,9 +1033,9 @@ _mfm: blockCode: "코드(블록)" blockCodeDescription: "여러 행의 코드를 문법 강조를 적용하여 블록으로 표시합니다." inlineMath: "수식(인라인)" - inlineMathDescription: "수식(KaTeX)를 인라인으로 보이게 합니다." + inlineMathDescription: "수식(KaTeX)를 인라인으로 보이게 합니다" blockMath: "수식(블록)" - blockMathDescription: "여러 줄의 수식(KaTeX)를 블록으로 보이게 합니다." + blockMathDescription: "수식(KaTeX)을 블록으로 보이게 합니다" quote: "인용" quoteDescription: "내용을 인용문으로 표시합니다." emoji: "커스텀 이모지" @@ -1043,6 +1076,24 @@ _mfm: rotateDescription: "지정한 각도로 회전시킵니다." plain: "평문" plainDescription: "안에 있는 MFM 구문을 모두 무시하고 평문으로 표시합니다." + stop: MFM 멈춤 + play: MFM 재생 + advancedDescription: 비활성화하면 MFM 재생 중을 제외하고 기본적인 MFM만 표시합니다 + fade: '페이드' + advanced: 고급 MFM + warn: 빠르게 움직이거나 반짝이는 애니메이션을 포함할 가능성이 있습니다 + alwaysPlay: MFM 애니메이션을 자동 재생하기 + cropDescription: 내용을 잘라냅니다. + scale: 확대/축소 + positionDescription: 내용을 지정한 값 만큼 이동합니다. + position: 위치 + crop: 크롭 + fadeDescription: 서서히 보인 뒤 서서히 사라집니다. + scaleDescription: 크기를 지정한 값 만큼 확대/축소합니다. + foregroundDescription: 문자 색상을 변경합니다. + backgroundDescription: 배경 색상을 변경합니다. + foreground: 문자색 + background: 배경색 _instanceTicker: none: "보이지 않음" remote: "리모트 유저에게만 보이기" @@ -1051,6 +1102,7 @@ _serverDisconnectedBehavior: reload: "자동으로 새로고침" dialog: "경고창 표시" quiet: "조용히 경고" + nothing: 아무것도 하지 않음 _channel: create: "채널 생성" edit: "채널 편집" @@ -1060,7 +1112,9 @@ _channel: owned: "관리중" following: "팔로잉" usersCount: "{n}명 참여 중" - notesCount: "{n}노트" + notesCount: "{n} 게시물" + nameAndDescription: 이름과 설명 + nameOnly: 이름만 _menuDisplay: sideFull: "가로" sideIcon: "가로(아이콘)" @@ -1070,16 +1124,17 @@ _wordMute: muteWords: "뮤트할 단어" muteWordsDescription: "공백으로 구분하는 경우 AND, 줄바꿈으로 구분하는 경우 OR로 지정됩니다。" muteWordsDescription2: "정규 표현식을 사용하려면 키워드를 빗금표(/)로 감싸 주세요." - softDescription: "지정한 조건의 노트를 타임라인에서 숨깁니다." - hardDescription: "지정한 조건의 노트를 타임라인에 추가하지 않습니다. 타임라인에 추가되지 않은 노트는 조건을 변경해도 표시되지 않습니다." + softDescription: "지정한 조건의 게시물을 타임라인에서 숨깁니다." + hardDescription: "지정한 조건의 게시물을 타임라인에 추가하지 않습니다. 타임라인에 추가되지 않은 게시물은 조건을 변경해도 표시되지 + 않습니다." soft: "보통" hard: "보다 높은 수준" - mutedNotes: "뮤트된 노트" + mutedNotes: "뮤트된 게시물" _instanceMute: - instanceMuteDescription: "뮤트한 인스턴스에서 오는 답글을 포함한 모든 노트와 Renote를 뮤트합니다." + instanceMuteDescription: "뮤트한 서버에서 오는 답글을 포함한 모든 게시물과 부스트를 뮤트합니다." instanceMuteDescription2: "한 줄에 하나씩 입력해 주세요" - title: "지정한 인스턴스의 노트를 숨깁니다." - heading: "뮤트할 인스턴스" + title: "지정한 서버의 게시물을 숨깁니다." + heading: "뮤트할 서버" _theme: explore: "테마 찾아보기" install: "테마 설치" @@ -1108,7 +1163,7 @@ _theme: darken: "어두움" lighten: "밝음" inputConstantName: "상수 이름을 입력하세요" - importInfo: "여기에 테마 코드를 붙여 넣어 에디터로 불러올 수 있습니다." + importInfo: "여기에 테마 코드를 붙여 넣어 에디터로 불러올 수 있습니다" deleteConstantConfirm: "상수 {const}를 삭제하시겠습니까?" keys: accent: "강조 색상" @@ -1128,7 +1183,7 @@ _theme: hashtag: "해시태그" mention: "멘션" mentionMe: "나에게 보낸 멘션" - renote: "Renote" + renote: "부스트" modalBg: "모달 배경" divider: "구분선" scrollbarHandle: "스크롤바 핸들" @@ -1155,8 +1210,8 @@ _theme: accentLighten: "강조 색상 (밝음)" fgHighlighted: "강조된 텍스트" _sfx: - note: "새 노트" - noteMy: "내 노트" + note: "새 게시물" + noteMy: "나의 게시" notification: "알림" chat: "대화" chatBg: "대화 (백그라운드)" @@ -1186,7 +1241,23 @@ _2fa: step2Url: "데스크톱 앱에서는 다음 URL을 입력하세요:" step3: "앱에 표시된 토큰을 입력하시면 완료됩니다." step4: "다음 로그인부터는 토큰을 입력해야 합니다." - securityKeyInfo: "FIDO2를 지원하는 하드웨어 보안 키 혹은 디바이스의 지문인식이나 화면잠금 PIN을 이용해서 로그인하도록 설정할 수 있습니다." + securityKeyInfo: "FIDO2를 지원하는 하드웨어 보안 키 혹은 디바이스의 지문인식이나 화면잠금 PIN을 이용해서 로그인하도록 설정할 + 수 있습니다." + step2Click: QR 코드를 클릭하여 사용 중인 보안 키 또는 인증 앱을 등록할 수 있습니다. + step3Title: 확인 코드를 입력 + registerTOTPBeforeKey: 보안 키/패스 키를 등록하시려면 우선 인증 앱 설정을 마치십시오. + securityKeyNotSupported: 이 브라우저는 보안 키를 지원하지 않습니다. + chromePasskeyNotSupported: 현재 Chrome의 패스키는 지원하지 않습니다. + token: 2차 인증 토큰 + removeKey: 보안 키를 삭제 + removeKeyConfirm: '{name}을 삭제하시겠습니까?' + renewTOTPCancel: 취소 + renewTOTPConfirm: 지금 사용 중인 인증 앱의 확인 코드는 사용할 수 없게 됩니다 + securityKeyName: 키 이름 입력 + renewTOTPOk: 재설정 + whyTOTPOnlyRenew: 보안 키가 등록되어 있는 상태에서 인증 앱 설정을 해제할 수 없습니다. + renewTOTP: 인증 앱을 재설정 + tapSecurityKey: 브라우저의 지시에 따라 보안 키나 패스 키를 등록하십시오 _permissions: "read:account": "계정의 정보를 봅니다" "write:account": "계정의 정보를 변경합니다" @@ -1202,7 +1273,7 @@ _permissions: "write:messaging": "대화를 시작하거나 메시지를 보냅니다" "read:mutes": "뮤트 여부를 확인합니다" "write:mutes": "뮤트를 하거나 해제합니다" - "write:notes": "노트를 작성하거나 삭제합니다" + "write:notes": "게시물을 작성하거나 삭제합니다" "read:notifications": "알림을 확인합니다" "write:notifications": "알림을 모두 읽음 처리합니다" "read:reactions": "리액션을 확인합니다" @@ -1223,16 +1294,19 @@ _permissions: _auth: shareAccess: "\"{name}\" 이 계정에 접근하는 것을 허용하시겠습니까?" shareAccessAsk: "이 애플리케이션이 계정에 접근하는 것을 허용하시겠습니까?" - permissionAsk: "이 앱은 다음의 권한을 요청합니다" + permissionAsk: "이 앱은 다음의 권한을 요청합니다:" pleaseGoBack: "앱으로 돌아가서 시도해 주세요" callback: "앱으로 돌아갑니다" denied: "접근이 거부되었습니다" + allPermissions: 모든 접근 권한 + copyAsk: '아래 인증 코드를 어플리케이션에 붙여넣으십시오:' _antennaSources: - all: "모든 노트" - homeTimeline: "팔로우중인 유저의 노트" - users: "지정한 한 명 혹은 여러 명의 유저의 노트" - userList: "지정한 리스트에 속한 유저의 노트" - userGroup: "지정한 그룹에 속한 유저의 노트" + all: "모든 게시물" + homeTimeline: "팔로우 중인 유저의 게시물" + users: "지정한 한 명 혹은 여러 명의 유저의 게시물" + userList: "지정한 리스트에 속한 유저의 게시물" + userGroup: "지정한 그룹에 속한 유저의 게시물" + instances: 지정한 서버의 모든 유저의 게시물 _weekday: sunday: "일요일" monday: "월요일" @@ -1263,6 +1337,14 @@ _widgets: serverMetric: "서버 통계" aiscript: "AiScript 콘솔" aichan: "아이" + serverInfo: 서버 정보 + _userList: + chooseList: 리스트 선택 + meiliStatus: 서버 정보 + userList: 유저 목록 + meiliSize: 인덱스 크기 + meiliIndexCount: 인덱싱 완료된 게시물 + rssTicker: RSS Ticker _cw: hide: "숨기기" show: "더 보기" @@ -1293,17 +1375,17 @@ _poll: _visibility: public: "공개" publicDescription: "모든 유저에게 공개" - home: "홈" + home: "미등재" homeDescription: "홈 타임라인에만 공개" followers: "팔로워" - followersDescription: "팔로워에게만 공개" + followersDescription: "팔로워 및 멘션한 유저에게만 공개" specified: "다이렉트" specifiedDescription: "지정한 유저에게만 공개" localOnly: "로컬에만" localOnlyDescription: "리모트 유저에게 보이지 않기" _postForm: - replyPlaceholder: "이 노트에 답글..." - quotePlaceholder: "이 노트를 인용..." + replyPlaceholder: "이 글에 답글..." + quotePlaceholder: "이 글을 인용..." channelPlaceholder: "채널에 게시하기..." _placeholders: a: "지금 무엇을 하고 있나요?" @@ -1319,13 +1401,15 @@ _profile: youCanIncludeHashtags: "해시 태그를 포함할 수 있습니다." metadata: "추가 정보" metadataEdit: "추가 정보 편집" - metadataDescription: "프로필에 추가 정보를 표시할 수 있어요" + metadataDescription: "프로필에 추가 정보를 표시할 수 있어요. {rel}과 함께 {a} 태그 또는 {l} 태그를 추가하여 프로필의 + 링크를 확인할 수 있습니다!" metadataLabel: "라벨" metadataContent: "내용" changeAvatar: "아바타 이미지 변경" changeBanner: "배너 이미지 변경" + locationDescription: 영문 도시명을 입력하면, 현재 시간대의 시각이 유저 페이지에 표시됩니다. _exportOrImport: - allNotes: "모든 노트" + allNotes: "모든 게시물" followingList: "팔로잉" muteList: "뮤트" blockingList: "차단" @@ -1338,10 +1422,10 @@ _charts: usersIncDec: "유저 수 증감" usersTotal: "유저 수 합계" activeUsers: "활성 유저 수" - notesIncDec: "노트 수 증감" - localNotesIncDec: "로컬 노트 수 증감" - remoteNotesIncDec: "리모트 노트 수 증감" - notesTotal: "노트 수 합계" + notesIncDec: "게시물 수 증감" + localNotesIncDec: "로컬 게시물 수 증감" + remoteNotesIncDec: "리모트 게시물 수 증감" + notesTotal: "게시물 수 합계" filesIncDec: "파일 수 증감" filesTotal: "파일 수 합계" storageUsageIncDec: "스토리지 사용량 증감" @@ -1350,9 +1434,9 @@ _instanceCharts: requests: "요청" users: "유저 수 증감" usersTotal: "누적 유저 수" - notes: "노트 수 증감" - notesTotal: "누적 노트 수" - ff: "팔로잉/팔로워 증감" + notes: "게시물 수 증감" + notesTotal: "누적 게시물 수" + ff: "팔로잉/팔로워 증감 " ffTotal: "누적 팔로잉/팔로워 수" cacheSize: "캐시 용량 증감" cacheSizeTotal: "누적 캐시 용량" @@ -1363,6 +1447,7 @@ _timelines: local: "로컬" social: "소셜" global: "글로벌" + recommended: 추천 _pages: newPage: "페이지 만들기" editPage: "페이지 수정" @@ -1437,10 +1522,10 @@ _pages: id: "캔버스 ID" width: "폭" height: "높이" - note: "노트필기" + note: "게시물 삽입" _note: - id: "노트 ID" - idDescription: "노트 URL을 붙여넣어 설정할 수도 있습니다." + id: "게시물 ID" + idDescription: "게시물 URL을 붙여넣어 설정할 수도 있습니다." detailed: "세부 정보 보기" switch: "스위치" _switch: @@ -1661,7 +1746,7 @@ _notification: youGotMention: "{name}님이 멘션함" youGotReply: "{name}님이 답글함" youGotQuote: "{name}님이 인용함" - youRenoted: "{name}님이 Renote" + youRenoted: "{name}님의 부스트" youGotPoll: "{name}님이 투표함" youGotMessagingMessageFromUser: "{name} 님이 보낸 채팅이 있어요" youGotMessagingMessageFromGroup: "{name}에서 보낸 채팅이 있어요" @@ -1676,7 +1761,7 @@ _notification: follow: "팔로잉" mention: "멘션" reply: "답글" - renote: "Renote" + renote: "부스트" quote: "인용" reaction: "리액션" pollVote: "투표 참여" @@ -1688,7 +1773,10 @@ _notification: _actions: followBack: "팔로우" reply: "답글" - renote: "Renote" + renote: "부스트" + reacted: 님의 리액션 + renoted: 님이 부스트 + voted: 님이 투표함 _deck: alwaysShowMainColumn: "메인 칼럼 항상 표시" columnAlign: "칼럼 정렬" @@ -1700,12 +1788,12 @@ _deck: swapDown: "아래로 이동" stackLeft: "왼쪽에 쌓기" popRight: "오른쪽으로 빼기" - profile: "프로파일" - newProfile: "새 프로파일" - deleteProfile: "프로파일 삭제" + profile: "작업 공간" + newProfile: "새 작업 공간" + deleteProfile: "작업 공간 삭제" introduction: "칼럼을 조합해서 나만의 인터페이스를 구성해 보아요!" introduction2: "나중에라도 화면 우측의 + 버튼을 눌러 새 칼럼을 추가할 수 있습니다." - widgetsIntroduction: "칼럼 메뉴의 \"위젯 편집\"에서 위젯을 추가해 주세요" + widgetsIntroduction: "칼럼 메뉴의 \"위젯 편집\"에서 위젯을 추가해 주세요." _columns: main: "메인" widgets: "위젯" @@ -1715,3 +1803,220 @@ _deck: list: "리스트" mentions: "받은 멘션" direct: "다이렉트" + channel: 채널 + renameProfile: 워크스페이스명을 변경 + nameAlreadyExists: 같은 이름의 워크스페이스가 이미 존재합니다. +removeReaction: 리액션 취소 +flagSpeakAsCat: 고양이체로 말하기 +silenceThisInstance: 이 서버를 사일런스 +silencedInstancesDescription: 사일런스할 서버의 호스트를 한 줄에 하나씩 입력합니다. 사일런스된 서버의 유저는 모두 사일런스인 + 것처럼 취급되며, 이 서버에서의 팔로우가 모두 팔로우 요청으로 바뀌고, 팔로워가 아닌 로컬 계정은 멘션할 수 없습니다. 차단한 서버에는 적용되지 + 않습니다. +noInstances: 서버가 없습니다 +silenced: 사일런스됨 +manageGroups: 그룹 관리 +clipsDesc: 클립은 분류 및 공유가 가능한 북마크입니다. 각 게시물의 메뉴에서 클립을 작성할 수 있습니다. +privateMode: 비공개 모드 +audio: 오디오 +customKaTeXMacro: 커스텀 KaTeX 매크로 +replayTutorial: 튜토리얼 다시 보기 +renoteMute: 부스트 뮤트 +antennaInstancesDescription: 서버 호스트를 한 줄에 하나씩 입력하세요 +userSaysSomethingReason: '{name} 님이 {reason}에 대해 말했습니다' +userSaysSomethingReasonQuote: '{name} 님이 {reason} 을 포함하는 게시물을 인용했습니다' +pushNotification: 푸시 알림 +channelFederationWarn: 현재 채널은 다른 서버로 연합되지 않습니다 +enableServerMachineStats: 서버의 머신 정보를 공개 +sendModMail: 모더레이션 알림을 보내기 +instanceSecurity: 서버 보안 +privateModeInfo: 활성화하면 허가된 서버에서의 요청에만 응답합니다. +seperateRenoteQuote: 부스트와 인용 버튼을 나누기 +cannotUploadBecauseExceedsFileSizeLimit: 파일 크기 제한을 초과하여 업로드할 수 없습니다. +pushNotificationNotSupported: 브라우저 및 서버가 푸시 알림을 지원하지 않습니다 +enableRecommendedTimeline: 추천 타임라인을 활성화 +pushNotificationAlreadySubscribed: 푸시 알림이 활성화되었습니다 +caption: 자동으로 설명 붙이기 +findOtherInstance: 다른 서버 둘러보기 +enableIdenticonGeneration: 유저 별 Identicon의 생성을 활성화 +secureModeInfo: 인증 정보가 없는 리모트 서버로부터의 요청에 응답하지 않습니다. +allowedInstances: 허가된 서버 +flagSpeakAsCatDescription: 고양이체를 활성화하면 게시물이 '나'가 '냐'로 바뀌는 등의 변화가 생깁니다 +showUpdates: Firefish 업데이트가 있을 때 알리기 +noGraze: '"Graze for Mastodon" 확장 기능은 Firefish의 정상적인 동작을 방해므로, 비활성화해 주시기 바랍니다.' +adminCustomCssWarn: 이 설정은 기능을 알고 있는 경우에만 사용해야 합니다. 잘못된 값을 입력하면 모든 유저의 클라이언트가 정상적으로 + 작동하지 않을 수 있습니다. 개인 클라이언트 설정에서 적용하여 정상적으로 동작하는 지 확인하십시오. +customSplashIconsDescription: 유저가 페이지를 로딩/새로고침할 때 마다 무작위로 표시할 아이콘을 한 줄에 하나씩 입력합니다. + 이미지는 되도록 정적 URL으로 구성하고, 192x192 해상도로 조정하여 주십시오. +moveFromDescription: '이전 계정에 대한 별칭을 작성하여, 이 계정으로 옮길 수 있도록 합니다. 반드시 계정을 이전하기 전에 수행해야 + 합니다. 이전 계정을 다음과 같은 형식으로 입력하여 주십시오: @person@server.com' +indexFromDescription: 빈 칸으로 두면 모든 게시물을 인덱싱합니다 +customKaTeXMacroDescription: 'KaTeX 매크로를 지정하여 수식을 더욱 편리하게 입력하세요! LaTeX의 커맨드 정의와 동일하게 + \newcommand{\ 이름}{내용} 또는 \newcommand{\이름}[인수 갯수]{내용} 와 같이 입력하십시오. 예를 들어 \newcommand{\add}[2]{#1 + + #2} 와 같이 정의한 경우 \add{3}{foo} 를 입력하면 3 + foo 으로 치환됩니다.매크로의 이름을 감싸는 중괄호를 소괄호() 또는 + 대괄호[]로 변경할 경우, 매크로 인수에 사용하는 괄호도 같이 변경됩니다. 매크로는 한 줄에 하나씩 입력해야 하며, 반대로 매크로 정의에서 줄바꿈은 + 사용할 수 없습니다. 올바르지 않은 정의는 무시됩니다. 문자열을 치환하는 수준에서만 지원하며, 조건 분기와 같은 고도의 구문은 사용할 수 없습니다.' +reactionPickerSkinTone: 선호하는 이모지 피부 톤 +selectInstance: 서버 선택 +showAds: 커뮤니티 배너를 보이기 +searchPlaceholder: Firefish에서 검색 +addInstance: 서버 추가 +listsDesc: 리스트를 사용하여 특정 유저로 이루어진 타임라인을 구성할 수 있습니다. 리스트는 '타임라인' 페이지에서 접근할 수 있습니다. +enableEmojiReactions: 이모지 리액션을 활성화 +showEmojisInReactionNotifications: 리액션 알림에 이모지 보이기 +hiddenTagsDescription: 트렌드와 '발견하기'에서 제외할 해시태그를 ('#'을 제외하고) 한 줄에 하나씩 입력하여 주십시오. 이 설정은 + 트렌드와 '발견하기' 외에는 영향을 주지 않습니다. +antennasDesc: "안테나에서는 조건에 맞는 게시물이 표시됩니다.\n'타임라인' 페이지에서 접근할 수 있습니다." +expandOnNoteClick: 게시물을 클릭하여 자세히 표시 +expandOnNoteClickDesc: 비활성화한 경우에도 우클릭 메뉴 또는 타임스탬프를 클릭하여 열 수 있습니다. +customMOTDDescription: 유저가 페이지를 로딩/새로고침할 때 마다 무작위로 표시할 메시지를 한 줄에 하나씩 입력합니다. +moveFrom: 다른 계정에서 이 계정으로 이사하기 +moveAccount: 이사하기! +enterSendsMessage: 메시지에서 Return 키를 눌러 전송 (기본값 Ctrl + Return) +verifiedLink: 인증된 링크 +alt: 설명 +statusbar: 스테이터스 바 +subscribePushNotification: 푸시 알림을 활성화 +sendPushNotificationReadMessage: 알림이나 메시지를 읽은 뒤에 푸시 알림을 삭제 +sendPushNotificationReadMessageCaption: '"{emptyPushNotificationMessage}" 라는 알림을 짧은 + 기간 동안 표시합니다. 기기의 배터리 소모가 늘어날 수 있습니다.' +recommendedInstancesDescription: 추천 타임라인에 표시할 서버를 한 줄에 하나씩 입력하여 주십시오. +enableCustomKaTeXMacro: 커스텀 KaTeX 매크로를 사용 +swipeOnMobile: 페이지 간 스와이프를 활성화 +swipeOnDesktop: 데스크톱에서도 모바일과 같은 스와이프를 사용 +migration: 계정 이사 +moveTo: 이 계정에서 새로운 계정으로 이사 +deleted: 삭제됨 +editNote: 게시물 편집 +edited: '편짐됨: {date} {time}' +customMOTD: 사용자 지정 MOTD (스플래시 화면 메시지) +selectChannel: 채널 선택 +allowedInstancesDescription: 연합을 허가하려는 서버를 한 줄에 하나씩 입력합니다. 비공개 모드에서만 유효합니다. +splash: 스플래시 화면 +preventAiLearningDescription: 업로드한 게시물이나 미디어를 AI 모델이 학습하지 말기를 요구합니다. +isBot: 이 계정은 봇입니다 +isAdmin: 관리자 +newer: 새로운 게시물 +older: 이전 게시물 +renoteUnmute: 부스트 뮤트 해제 +accountMoved: '이 유저는 다른 계정으로 이사했습니다:' +silencedInstances: 사일런스한 서버 +accessibility: 접근성 +userSaysSomethingReasonReply: '{name} 님이 {reason} 을 포함하는 게시물에 답글했습니다' +userSaysSomethingReasonRenote: '{name} 님이 {reason} 을 포함하는 게시물을 부스트했습니다' +breakFollowConfirm: 팔로워를 해제하시겠습니까? +indexFrom: 이 게시물 ID부터 인덱싱하기 +noThankYou: 괜찮습니다 +hiddenTags: 숨길 해시태그 +image: 이미지 +video: 동영상 +jumpToPrevious: 이전으로 +cw: 열람주의 +secureMode: 보안 모드 (Authorized Fetch) +xl: 매우 크게 +unsubscribePushNotification: 푸시 알림을 끄기 +customSplashIcons: 사용자 지정 스플래시 화면 아이콘 (URL) +recommendedInstances: 추천 서버 +updateAvailable: 업데이트가 있습니다! +logoImageUrl: 로고 이미지 URL +showAdminUpdates: 새로운 Firefish 버전이 있을 때 알리기 (관리자 전용) +moveToLabel: '이사 갈 계정:' +moveAccountDescription: '이 작업은 되돌릴 수 없습니다. 계정을 옮기기 전에, 새로운 계정에서 이 계정에 대한 별칭을 지정하여 + 주십시오. 별칭을 지정하였다면, 이사 갈 계정을 다음과 같은 형식으로 입력하여 주십시오: @person@server.com' +defaultReaction: 리모트와 로컬 게시물에 대한 기본 이모지 리액션 +showPopup: 유저에게 팝업으로 알리기 +showWithSparkles: 제목에 스파클 효과 넣기 +youHaveUnreadAnnouncements: 읽지 않은 공지사항이 있습니다 +donationLink: 기부 페이지 링크 +moveFromLabel: '이사하기 전의 계정:' +neverShow: 앞으로 표시하지 않기 +remindMeLater: 나중에 +removeQuote: 인용을 삭제 +removeRecipient: 수신인을 삭제 +removeMember: 멤버를 삭제 +license: 라이선스 +migrationConfirm: "정말로 이 계정을 {account}로 이사하시겠습니까? 한 번 이사하면, 현재 이 계정은 두 번 다시 사용할 수 + 없게 됩니다.\n또한, 이사 갈 계정에 현재 사용 중인 계정의 별칭을 올바르게 작성하였는지 다시 한 번 확인하십시오." +indexPosts: 게시물을 인덱싱 +indexNotice: 인덱싱을 시작했습니다. 이 작업은 시간이 많이 소요되므로, 최소 1시간 이내에 서버를 재시작하지 마십시오. +noteId: 게시물 ID +signupsDisabled: 현재 이 서버에서는 신규 등록을 받고 있지 않습니다. 초대 코드를 가지고 계신 경우 아래 칸에 입력해 주십시오. 초대 + 코드를 가지고 있지 않더라도, 신규 등록이 열려 있는 다른 서버에 등록하실 수 있습니다! +apps: 앱 +preventAiLearning: AI에 의한 학습을 막기 +isLocked: 이 계정은 팔로우를 수동으로 승인합니다 +silencedWarning: 관리자가 사일런스한 서버에 속한 유저이며, 스팸이거나 원치 않는 내용을 포함할 가능성이 있습니다. +isModerator: 모더레이터 +isPatron: Firefish 후원자 +_experiments: + postImportsCaption: 유저가 과거에 작성한 게시물을 Firefish, Misskey, Mastodon, Akkoma, Pleroma + 등에서 가져올 수 있게 합니다. 작업 대기열의 처리 속도가 느릴 경우 서비스에 영향이 갈 수 있습니다. + enablePostImports: 게시물 가져오기를 활성화 + title: 실험실 +_messaging: + groups: 그룹 + dms: 개인 메시지 +_tutorial: + title: Firefly의 사용 방법 + step5_5: '{icon} 소셜 타임라인은 홈 타임라인과 로컬 타임라인을 합친 것과 같습니다.' + step4_1: 첫 글을 올려 봅시다. + step5_3: '{icon} 홈 타임라인은 내가 팔로우하고 있는 계정의 게시물을 볼 수 있는 타임라인입니다.' + step6_2: 이 서버에 가입을 마친 당신은 단순히 Firefish 서버의 유저가 아닌, 수많은 서버가 서로 상호작용하는 연합우주에 참가하시게 + 된 것입니다. + step5_4: '{icon} 로컬 타임라인은 이 서버의 모든 유저가 올린 게시물을 볼 수 있는 타임라인입니다.' + step5_2: 이 서버에는 {timelines} 개의 타임라인이 존재합니다. + step2_2: 나에 대한 정보를 미리 실어 놓으면, 다른 사람이 나의 게시물을 보거나 팔로우할 때에 도움이 됩니다. + step3_2: "홈 타임라인과 소셜 타임라인은 내가 팔로우하는 유저로 구성됩니다. 우선 몇 명을 팔로우해 볼까요?\n각 프로필 우측 상단의 둥근 + + 버튼을 눌러 팔로우할 수 있습니다." + step2_1: 우선 프로필을 작성합니다. + step3_1: 이제 누군가를 팔로우해 봅시다! + step5_1: 여기도 타임라인, 저기도 타임라인 + step5_6: '{icon} 추천 타임라인은 이 서버의 관리자가 추천하는 서버의 게시물을 볼 수 있는 타임라인입니다.' + step5_7: '{icon} 글로벌 타임라인에서는 이 서버와 연결된 모든 서버의 게시물을 볼 수 있습니다.' + step1_1: 환영합니다! + step1_2: Firefly를 시작하기 전에, 몇 가지 설정을 해 보아요. 금방 끝날 거에요! + step6_1: 그래서… 여기는 어떤 곳이죠? + step4_2: 처음엔 {introduction}를 올리거나, 가볍게 '안녕하세요!' 라고 올리는 것도 좋아요! + step6_4: 튜토리얼은 여기까지입니다. 즐거운 시간 되세요! + step6_3: 각각의 서버는 서로 다른 규칙과 환경을 가지고 있으며, Firefish가 아닌 서버 또한 존재한답니다. 이 서버도 다른 서버에서 + 보면 마찬가지이고요. 갑자기 어려워 보일 지 몰라도 걱정하지 마세요, 금방 익숙해 질 거니까요. +_skinTones: + medium: 중간 + mediumLight: 약간 밝음 + yellow: 노랑 + mediumDark: 약간 어두움 + dark: 어두움 + light: 밝음 +_filters: + withFile: 첨부 파일 있음 + fromUser: 유저를 선택 + fromDomain: 도메인 지정 + notesBefore: '... 이전의 게시물' + notesAfter: '... 이후의 게시물' + followingOnly: 팔로우 중인 유저만 + followersOnly: 팔로워만 +_feeds: + jsonFeed: JSON 피드 + rss: RSS + atom: Atom + copyFeed: 피드 URL 복사 +_dialog: + charactersExceeded: 글자 수 제한을 초과했습니다! 현재 {current}자 / 최대 {max}자 + charactersBelow: 최소 글자 수 보다 작습니다! 현재 {current}자 / 최소 {max}자 +emojiPackCreator: 이모지 팩 만든이 +objectStorageS3ForcePathStyleDesc: Endpoint URL을 '.s3.amazonaws.com'가 아닌 's3.amazonaws.com//'와 + 같은 형식으로 사용할 경우에 활성화해 주세요. +confirm: 확인 +importZip: ZIP으로 가져오기 +exportZip: ZIP으로 내보내기 +origin: 원본 +objectStorageS3ForcePathStyle: 경로 기반 Endpoint URL을 사용하기 +delete2fa: 2FA를 비활성화 +delete2faConfirm: 이 계정에서 2FA를 영구히 삭제합니다. 계속하시겠습니까? +deletePasskeys: 보안 키 삭제 +deletePasskeysConfirm: 이 계정에서 모든 보안 키를 영구히 삭제합니다. 계속하시겠습니까? +inputNotMatch: 입력이 일치하지 않습니다 +addRe: 열람주의로 표시된 게시물의 답장에 're:' 붙이기 +detectPostLanguage: 외국어로 인식된 게시물에 번역 버튼을 표시 +indexableDescription: Firefish 검색에서 나의 공개 게시물에 대한 검색을 허용합니다 +indexable: 인덱스 허용 +languageForTranslation: 게시물 번역에 사용할 언어 diff --git a/locales/nl-NL.yml b/locales/nl-NL.yml index 45bc36278a..394947e05d 100644 --- a/locales/nl-NL.yml +++ b/locales/nl-NL.yml @@ -1,7 +1,7 @@ _lang_: "Nederlands" -headlineMisskey: "Een open source, gedecentraliseerd, social media platform dat voor +headlineFirefish: "Een open source, gedecentraliseerd, social media platform dat voor altijd gratis is! 🚀" -introMisskey: "Welkom! Calckey is een open source, gedecentraliseerde microblogdienst.\n +introFirefish: "Welkom! Firefish is een open source, gedecentraliseerde microblogdienst.\n Maak \"notities\" om je gedachten te delen met iedereen om je heen. 📡\nMet \"reacties\"\ \ kun je ook snel je mening geven over berichten van anderen. 👍\nLaten we een nieuwe wereld verkennen! 🚀" @@ -134,7 +134,7 @@ unsuspendConfirm: "Ben je zeker dat je deze account wil opnieuw aanstellen?" flagAsBot: "Markeer dit account als een robot" flagAsBotDescription: "Als dit account van een programma wordt beheerd, zet deze vlag aan. Het aanzetten helpt andere ontwikkelaars om bijvoorbeeld onbedoelde feedback - loops te doorbreken of om Calckey meer geschikt te maken." + loops te doorbreken of om Firefish meer geschikt te maken." flagAsCat: "Markeer dit account als een kat." flagAsCatDescription: "Zet deze vlag aan als je wilt aangeven dat dit account een kat is." @@ -204,7 +204,7 @@ noUsers: "Er zijn geen gebruikers." editProfile: "Bewerk Profiel" noteDeleteConfirm: "Ben je zeker dat je deze post wil verwijderen?" pinLimitExceeded: "Je kunt geen posts meer vastprikken" -intro: "Installatie van Calckey geëindigd! Maak nu een beheerder aan." +intro: "Installatie van Firefish geëindigd! Maak nu een beheerder aan." done: "Klaar" processing: "Bezig met verwerken" preview: "Voorbeeld" @@ -304,7 +304,7 @@ disconnectedFromServer: "Verbinding met de server onderbroken." inMb: "in megabytes" pinnedNotes: "Vastgemaakte notitie" userList: "Lijsten" -aboutMisskey: "Over Calckey" +aboutFirefish: "Over Firefish" administrator: "Beheerder" token: "Token" securityKeyName: "Sleutelnaam" @@ -673,7 +673,7 @@ updateRemoteUser: Update externe gebruikersinformatie listen: Luister none: Geen scratchpadDescription: Het kladblok is een omgeving voor AiScript experimenten. Je - kan hier schrijven, uitvoeren, en de resultaten bekijken van de interactie met Calckey. + kan hier schrijven, uitvoeren, en de resultaten bekijken van de interactie met Firefish. disablePagesScript: Zet AiScript op Pages uit deleteAllFiles: Verwijder alle bestanden deleteAllFilesConfirm: Weet je zeker dat je alle bestanden wil verwijderen? diff --git a/locales/no-NO.yml b/locales/no-NO.yml index 83e189b9cf..fbe8904b9e 100644 --- a/locales/no-NO.yml +++ b/locales/no-NO.yml @@ -1,2 +1,1932 @@ ---- _lang_: "Norsk Bokmål" +search: Søk +monthAndDay: '{day}/{month}' +fetchingAsApObject: Henter fra fediverset +ok: OK +gotIt: Jeg forstår! +profile: Profil +timeline: Tidslinje +save: Lagre +addToList: Legg til liste +searchPlaceholder: Søk Firefish +username: Brukernavn +password: Passord +notifications: Meldinger +forgotPassword: Glemt passord +cancel: Avbryt +noNotes: Ingen poster +instance: Server +settings: Innstillinger +noAccountDescription: Denne brukeren har ikke fylt ut bio'en sin ennå. +login: Logg inn +loggingIn: Logger inn +signup: Oppretter bruker +uploading: Laster opp... +enterUsername: Skriv inn brukernavn +noNotifications: Ingen meldinger +users: Brukere +addUser: Legg til en bruker +favorite: Legg til i bokmerker +cantFavorite: Kunne ikke legges til i bokmerker. +pin: Fest til profilen +copyContent: Kopier innhold +deleteAndEdit: Slett og rediger +sendMessage: Send en melding +copyUsername: Kopier brukernavn +reply: Svar +loadMore: Last mer +showLess: Lukk +receiveFollowRequest: Følgeforespørsel mottatt +directNotes: Direktemelding +importAndExport: Importer/eksporter data +importRequested: Du har bedt om en importering. Dette vil ta litt tid. +lists: Lister +listsDesc: Lister lar deg lage tidslinjer med utvalgte brukere. De kan hentes frem + fra tidslinje-siden. +deleted: Slettet +editNote: Rediger post +followsYou: Følger deg +createList: Lag liste +newer: nyere +older: eldre +download: Last ned +unfollowConfirm: Er du sikker på at du ikke lenger vil følge {name}? +noLists: Du har ingen lister +following: Følger +files: Filer +note: Post +notes: Poster +followers: Følgere +otherSettings: Andre innstillinger +addInstance: Legg til en server +alreadyFavorited: Allerede lagt til i bokmerker. +delete: Slett +openInWindow: Åpne i vindu +basicSettings: Grunnleggende innstillinger +headlineFirefish: En desentralisert sosialt media-plattform, basert på åpen kildekode, + som alltid vil være gratis! 🚀 +introFirefish: Velkommen! Firefish er en desentralisert sosialt media-plattform, basert + på åpen kildekode, som alltid vil være gratis! 🚀 +exportRequested: Du har bedt om en eksportering. Dette vil ta litt tid. Den vil bli + lagt til på disken din når den er ferdig. +noThankYou: Nei takk +favorites: Bokmerker +unfavorite: Fjern fra bokmerker +favorited: Lagt til i bokmerker. +copyLink: Kopier lenke +searchUser: Søk etter en bruker +jumpToPrevious: Gå til foregående +showMore: Vis mer +followRequestAccepted: Følgeforespørsel godtatt +import: Importer +export: Eksporter +logout: Logg ut +removeReaction: Fjern dine reaksjoner +renotedBy: Delt av {user} +deleteAndEditConfirm: Er du sikker på at du vil slette og redigere denne posten? Du + vil miste alle reaksjoner, delinger og svar til den. +pageLoadError: En feil oppsto ved lasting av siden. +privacy: Personvern +enterEmoji: Legg inn emoji +renoted: Delt. +cantRenote: Denne posten kan ikke deles. +cantReRenote: En deling kan ikke deles. +quote: Sitér +pinned: Fest til profil +clickToShow: Klikk for å vise +enableEmojiReactions: Slå på emoji-reaksjoner +makeFollowManuallyApprove: Følgeforespørsler må godkjennes +enterListName: Gi listen et navn +follow: Følg +followRequest: Følgerforespørsel +unfollow: Avfølg +followRequestPending: Ubehandlet følgerforespørsel +add: Legg til +followRequests: Følgerforespørsler +reaction: Reaksjoner +driveFileDeleteConfirm: Er du sikker på at du vil slette filen «{name}»? Den vil fjernes + fra alle poster den er vedlagt i. +defaultNoteVisibility: Standard synlighet +unrenote: Trekk tilbake deling +unpin: Løsne fra profilen +youGotNewFollower: følger deg +mention: Omtale +mentions: Omtaler +edited: Redigert {date} {time} +cw: Innholdsadvarsel +suspendConfirm: Er du sikker på at du vil suspendere denne kontoen? +recipient: Mottaker(e) +annotation: Kommentarer +registeredAt: Registrert +federation: Føderering +blockThisInstance: Blokker denne tjeneren +cpuAndMemory: CPU og minne +silencedInstances: Stumme tjenere +network: Nettverk +disk: Lagring +instanceInfo: Tjenerinformasjon +blockedInstancesDescription: Liste over maskinnavn på tjenere du vil blokkere. Blokkerte + tjenere vi ikke lenger kunne kommunisere med denne tjeneren. +blockedUsers: Blokkerte brukere +mutedUsers: Stumme brukere +editProfile: Rediger profil +done: Ferdig +exploreUsersCount: Det er {count} brukere +moderation: Moderering +securityKey: Sikkerhetsnøkkel +registerSecurityKey: Registerer en sikkerhetsnøkkel +recentlyDiscoveredUsers: Nylig oppdagede brukere +nUsersMentioned: Nevnt av {n} brukere +cacheClear: Slett mellomlager +unblock: Avblokker +suspend: Suspender +instanceFollowing: Følger på tjener +instanceFollowers: Følgere fra tjener +imageUrl: Bilde-URL +remove: Slett +keepOriginalUploading: Behold opprinnelig bilde +images: Bilder +birthday: Fødselsdag +yearsOld: '{age} år gammel' +renameFolder: Gi katalogen nytt navn +remoteUserCaution: Informasjon om eksterne brukere kan være ufullstendig. +activity: Aktivitet +drive: Disk +renameFile: Omdøp fil +folderName: Katalognavn +createFolder: Opprett katalog +inputNewDescription: Skriv ny beskrivelse +inputNewFolderName: Oppgi nytt katalognavn +copyUrl: Kopier URL +hcaptchaSiteKey: hCaptcha-nøkkel for nettstedet +hcaptchaSecretKey: Hemmelig hCaptcha-nøkkel +recaptchaSiteKey: Nettstednøkkel til reCAPTCHA +recaptchaSecretKey: Hemmelig nøkkel til reCAPTCHA +unsilenceConfirm: Er du sikker på at du vil omgjøre stummingen av denne brukeren? +popularUsers: Populære brukere +moderator: Moderator +groupName: Gruppenavn +transfer: Overfør +preferencesBackups: Sikkerhetskopi av innstillinger +edit: Rediger +emailServer: Eposttjener +testEmail: Test epost-utsending +notificationSettingDesc: Velg typen av varlinger som skal vises. +useGlobalSetting: Bruk globale innstillinger +useGlobalSettingDesc: Hvis dette er slått på vil varslingsinnstillingene til kontoen + bli brukt. Om den er slått av kan du bruke individuell konfigurasjon. +attachCancel: Slett vedegg +markAsSensitive: Merk som sensitivt innhold +renoteMute: Stum delinger +renoteUnmute: Vis delinger +addEmoji: Legg til +settingGuide: Foreslåtte innstillinger +cacheRemoteFilesDescription: Når denne innstillingen er avslått vil eksterne filer + lastes direkte fra andre tjerene. Å slå dette av vil føre til mindre bruk av lagringsplass, + men vil øke nettverkstrafikken fordi miniatyrbilder ikke vil bli generert. +unsuspend: Fjern suspendering +selectInstance: Velg en tjener +flagShowTimelineReplies: Vis svar i tidslinje +latestRequestSentAt: Siste forespørsel sendt +latestRequestReceivedAt: Siste forespørsel mottatt +latestStatus: Siste status +storageUsage: Lagringsplass brukt +charts: Grafer +perHour: Per time +perDay: Per dag +stopActivityDelivery: Stopp sending av aktiviteter +jobQueue: Jobbkø +clearQueue: Tøm kø +muteAndBlock: Stumming og blokkering +noInstances: Ingen tjenere +noteDeleteConfirm: Er du sikker på at du vil slette denne posten? +pinLimitExceeded: Du kan ikke feste flere poster +subscribing: Abonnerer +publishing: Publisering +usernameOrUserId: Brukernavn eller brukeridentifikator +removed: Slettet +removeAreYouSure: Er du sikker på at du ønsker å slette "{x}"? +deleteAreYouSure: Er du sikker på at du vil slette "{x}"? +resetAreYouSure: Sikker på at du ønsker å nullstille? +messaging: Chat +uploadFromUrlMayTakeTime: Det kan ta litt tid før opplastingen er ferdig. +manageGroups: Administrer grupper +tos: Vilkår for bruk +registeredDate: Ble med +location: Lokasjon +darkThemes: Mørke tema +whenServerDisconnected: Ved bortfall av nettverksforbindelse mot tjeneren +unwatch: Slutt å følge med på +accept: Godkjenn +reject: Avslå +normal: Normal +instanceName: Tjenernavn +instanceDescription: Tjenerbeskrivelse +maintainerName: Administrator +maintainerEmail: Administrator-epost +monthX: '{month}' +connectService: Koble til +disconnectService: Koble fra +enableLocalTimeline: Aktiver lokal tidslinje +enableRegistration: Tillat registrering av nye brukere +invite: Inviter +driveCapacityPerLocalAccount: Lagring pr lokale bruker +driveCapacityPerRemoteAccount: Lagring pr eksterne bruker +inMb: I megabyte +iconUrl: Ikon-URL +pinnedUsers: Festede brukere +pinnedPagesDescription: Legg inn stien (en per linje) til sidene du ønsker å vise + på topp for denne tjeneren. +antennaKeywords: Nøkkelord å lytte etter +antennaKeywordsDescription: Skill ordene med mellomrom for logisk "OG" og med linjeskift + for logisk "ELLER". +withReplies: Ta med svar +connectedTo: Følgende konto(er) er sammenkoblet +withFiles: Med filer +lastUsed: Sist brukt +unregister: Avregistrer +passwordLessLogin: Passordløs innlogging +share: Del +markAsReadAllNotifications: Marker alle varsler som lest +markAsReadAllTalkMessages: Marker alle meldinger som lest +inputMessageHere: Skriv melding her +close: Lukk +groups: Grupper +quoteAttached: Siter +noMessagesYet: Ingen meldinger ennå +newMessageExists: Det er nye meldinger +invitations: Invitasjoner +usernameInvalidFormat: Du kan bruke store og små bokstaver, tall og understrek. +weakPassword: Svakt passord +normalPassword: Normalt passord +doing: Prosesserer... +category: Kategori +tags: Nøkkelord +docSource: Kilden til dette dokumentet +createAccount: Opprett konto +existingAccount: Eksisterende konto +regenerate: Regenerer +fontSize: Skriftstørrelse +objectStorageRegionDesc: Spesifiser en region som f.eks. 'xx-east-1'. Hvis tjenesten + ikke skiller mellom regioner kan du la feltet stå blankt eller skrive 'us-east-1'. +yourAccountSuspendedTitle: Denne kontoen er suspendert +themeEditor: Tema-editor +emptyToDisableSmtpAuth: La brukernavn og passord stå tomme for å ikke autentisere + mot SMTP-tjeneren +pinnedNote: Festet post +cacheRemoteFiles: Mellomlagre eksterne filer +setWallpaper: Set bakgrunn +noSuchUser: Finner ikke brukeren +lookup: Slå opp +saved: Lagret +enableGlobalTimeline: Aktiver global tidslinje +enableRecommendedTimeline: Aktiver foreslått tidslinje +pinnedClipId: Festede bokmerker +recaptcha: reCAPTCHA +notesAndReplies: Poster og svar +recentlyUpdatedUsers: Nylig aktive brukere +menu: Meny +silenceThisInstance: Stum denne tjeneren +pageLoadErrorDescription: Vanligvis skyldes dette nettverksfeil eller mellomlagring + i nettleseren. Prøv å tømme mellomlageret og prøv på nytt. +you: Du +showEmojisInReactionNotifications: Vis emojier i reaksjonsvarsler +rememberNoteVisibility: Husk synlighetsinnstillinger for poster +reactionSettingDescription2: Trekk for å flytte, klikk for å slette, trykk "+" for + å legge til. +reactionSetting: Reaksjoner som skal vises i reaksjonsvelgeren +blockConfirm: Er du sikker på at du vil blokkere denne kontoen? +unblockConfirm: Er du sikker på at du vil avblokkere denne kontoen? +flagAsBot: Merk denne kontoen som en bot +flagAsCat: Er du en katt? 😺 +editWidgetsExit: Ferdig +editWidgets: Rediger skjermelementer +emoji: Emoji +emojis: Emoji +customEmojis: Egen emoji +autoAcceptFollowed: Automatisk tillat følgerforespørsler fra kontoer du følger +clearCachedFilesConfirm: Er du sikker på at du vil slette alle mellomlagrede eksterne + filer? +hiddenTagsDescription: 'List nøkkelordene (uten #) du ønsker å skjule fra trending + og utforsking. Utover dette kan nøkkelord som er skjulte fortsatt brukes.' +silenced: Stummet +blocked: Blokkert +processing: Prosesserer +preview: Forhåndsvisning +noCustomEmojis: Ingen emoji +noJobs: Ingen jobber +federating: Føderering +notResponding: Ingen svar +changePassword: Endre passord +retypedNotMatch: Innholdet i feltene stemmer ikke overens. +newPassword: Nytt passord +attachFile: Legg ved filer +announcements: Annonseringer +themeForDarkMode: Tema i mørk modus +light: Lyst +dark: Mørkt +syncDeviceDarkMode: Samkjør mørk modus med maskininnstillingene +deleteFolder: Slett katalogen +addFile: Legg til fil +tosUrl: URL til vilkår for tjenesten +circularReferenceFolder: Målkatalogen ligger under katalogen du prøver å flytte. +rename: Gi nytt navn +avatar: Brukerbilde +disablingTimelinesInfo: Administratorer og moderatorer vil alltid ha tilgang til alle + tidslinjer, selv om de ikke er aktiverte. +registration: Registrer +messagingWithGroup: Gruppechat +title: Tittel +text: Tekst +tooShort: For kort +tooLong: For langt +joinOrCreateGroup: Bli invitert inn til en gruppe eller lag dine egne. +tapSecurityKey: Trykk på sikkerhetsnøkkelen +or: Eller +language: Språk +uiLanguage: Språk for brukergrensesnitt +groupInvited: Du har blitt invitert til en gruppe +disableDrawer: Ikke bruk skuffe-menyer +expandOnNoteClick: Åpne post ved klikk +expandOnNoteClickDesc: Om du deaktiverer kan du fortsatt åpne poster fra objektmenyen + eller ved å klikke på tidsstempelet. +userSuspended: Denne brukeren er suspendert. +userSilenced: Denne brukeren er stummet. +channelFederationWarn: Kanaler blir ennå ikke federert til andre tjenere +enableInfiniteScroll: Last mer automatisk +visibility: Synlighet +regexpError: Feil i regulært uttrykk +instanceMute: Tjener-stumming +create: Opprett +messageRead: Les +noMoreHistory: Det er ikke mer historikk +emptyFolder: Katalogen er tom +thisYear: År +basicInfo: Basisinformasjon +help: Hjelp +members: Medlemmer +smtpPort: Port +error: Feil +somethingHappened: Noe gikk galt +retry: Prøv på nytt +manageLists: Administrer lister +loginFailed: Innlogging feilet +general: Generell +accountMoved: 'Brukeren har flyttet til en ny konto:' +wallpaper: Bakgrunn +addAccount: Legg til konto +showOnRemote: Vis opprinnelig side +host: Tjener +selectUser: Velg en bruker +operations: Operasjoner +software: Programvare +version: Versjon +metadata: Metadata +blockedInstances: Blokkerte tjenere +hiddenTags: Skjulte nøkkelord +suspended: Suspendert +instanceUsers: Brukere på denne tjeneren +security: Sikkerhet +currentPassword: Nåværende passord +more: Mer! +upload: Last opp +explore: Utforsk +themeForLightMode: Tema i lys modus +lightThemes: Lyse tema +fileName: Filnavn +selectFile: Velg en fil +selectFiles: Velg filer +selectFolder: Velg en katalog +selectFolders: Velg kataloger +exploreFediverse: Utforsk konføderasjonen +userList: Lister +about: Om +objectStorage: Objektlagring +useObjectStorage: Bruk objektlagring +objectStorageBaseUrl: Base-URL +installedApps: Autoriserte applikasjoner +nothing: Ikke noe å se her +deleteAllFilesConfirm: Er du sikker på at du vil slette alle filer? +updateRemoteUser: Oppdater informasjon om ekstern bruker +deleteAllFiles: Slett alle filer +enterFileDescription: Skriv inn beskrivelse +leaveConfirm: Det er ulagrede endringer. Vil du forkaste dem? +enableAll: Slå på alle +generateAccessToken: Generer adgangstegn +disableAll: Slå av alle +permission: Tilganger +userSaysSomethingReason: '{name} skrev {reason}' +selectChannel: Velg en kanal +flagAsCatDescription: Du vil få katteører og snakke som en katt! +flagSpeakAsCat: Snakk som en katt +flagSpeakAsCatDescription: Postene dine vil bli nyanifiserte når du er i kattemodus +removeWallpaper: Fjern bakgrunn +flagShowTimelineRepliesDescription: Vis svar fra brukere på andre brukeres poster + i tidslinjen når aktivert. +proxyAccountDescription: 'En stedfortreder-konto er en konto som i noen situasjoner + oppfører seg som en ekstern følger for en bruker. For eksempel: når en ekstern bruker + blir lagt i en liste vil den eksterne brukeren ikke uten videre sendt til tjeneren + dersom ingen lokale brukere følger den eksterne brukeren. Da vil stedfortrederen + følge brukeren i stedet.' +instances: Tjenere +clearQueueConfirmTitle: Er du sikker på at du vil tømme køen? +clearQueueConfirmText: Alle usendte meldinger i køen vil ikke bli sendt til andre + tjenere. Vanligvis er denne operasjonen unødvendig. +clearCachedFiles: Tøm mellomlager +silencedInstancesDescription: Liste over tjenere du vil stumme. Kontoer på stumme + tjenere vil bare kunne lage følgerforespørsler, og kan ikke referere til lokale + kontoer med mindre de følges. Dette vil ikke påvirke de blokkerte tjenerne. +noUsers: Ingen brukere +uploadFromUrl: Last opp fra bildelenke +uploadFromUrlRequested: Opplasting forespurt +start: Start +disconnectedFromServer: Forbindelsen til tjeneren er brutt +reload: Last om +doNothing: Ignorer +theme: Tema +reloadConfirm: Vil du oppdatere tidslinjen? +watch: Følg med på +thisMonth: Måned +today: I dag +dayX: '{day}' +integration: Integrasjoner +yearX: '{year}' +pages: Sider +enableRecaptcha: Slå på reCAPTCHA +antennasDesc: "Antenner fanger opp nye poster etter et sett kriterier du setter opp!\n + Du kommer til dem fra tidslinje-siden." +manageAntennas: Administrer antenner +enableServiceworker: Slå på varsling for nettleseren +pinnedNotes: Festede poster +antennaUsersDescription: List opp ett brukernavn per linje +antennaInstancesDescription: List opp en tjener per linje +caseSensitive: Skill mellom små og store bokstaver +silence: Stillhet +silenceConfirm: Er du sikker på at du vil stumme denne brukeren? +unsilence: Avslutt stumming +recentlyRegisteredUsers: Nye brukere +token: Adgangstegn +popularTags: Populære nøkkelord +administrator: Administrator +twoStepAuthentication: Tofaktor-autentisering +securityKeyName: Nøkkelnavn +reduceUiAnimation: Demp animasjoner i brukergrensesnittet +notFound: Ikke funnet +uploadFolder: Standardkatalog for opplastinger +createGroup: Opprett gruppe +notFoundDescription: Fant ingen sider som samsvarer med enne URL-en. +ownedGroups: Grupper du eier +joinedGroups: Grupper du er med i +invites: Invitasjoner +messagingWithUser: Privat chat +enable: Slå på +quoteQuestion: Sett inn som sitat? +onlyOneFileCanBeAttached: Du kan bare legge ved én fil til en melding +signinRequired: Registrer eller logg inn før du fortsetter +invitationCode: Invitasjonskode +checking: Sjekker... +available: Tilgjengelig +unavailable: Ikke tilgjengelig +passwordMatched: Likt +passwordNotMatched: Stemmer ikke +signinWith: Logg inn med {x} +signinFailed: Klarer ikke å logge inn. Brukernavn eller passord er feil. +objectStorageBaseUrlDesc: "URL-en som brukes som referanse. Oppgi URL-en til leveringsnettverket + (CDN) eller proxy om du bruker en av dem.\nFor S3 kan du bruke 'https://.s3.amazonaws.com' + og for GCS og tilsvarende tjenester 'https://storage.googleapis.com/'." +objectStorageEndpoint: Endepunkt +objectStorageRegion: Region +installedDate: Autorisert +lastUsedDate: Sist brukt +state: Tilstand +sort: Sortering +yourAccountSuspendedDescription: Denne kontoen er suspendert fordi den har brutt tjenerens + retningslinjer eller lignende. Kontakt administratoren hvis du trenger en mer detaljert + grunn. Ikke opprett en ny konto. +useCw: Skjul innhold +enablePlayer: Åpne videospiller +disablePlayer: Lukk videospiller +describeFile: Legg til beskrivelse +author: Forfatter +useFullReactionPicker: Bruk reaksjonsvelger i full størrelse +width: Bredde +regexpErrorDescription: 'En feil oppsto under det regulære uttrykket på linje {line} + av stumming av {tab}:' +userSaysSomethingReasonRenote: '{name} delte en post som inneholdt {reason}' +userSaysSomethingReasonQuote: '{name} siterte en post som inneholdt {reason}' +userSaysSomething: '{name} sa noe' +metrics: Metrikker +overview: Oversikt +logs: Logger +delayed: Forsinket +channel: Kanaler +flagAsBotDescription: Slå på denne innstillingen dersom kontoen styres av et program. + Dette er et flagg til andre utviklere for å hindre uendelige kjeder der roboter + responderer på hverandres meldinger og lar den interne håndteringen av kontoen i + Firefish være tilpasset bot-brukere. +aboutFirefish: Om Firefish +youShouldUpgradeClient: Last siden på nytt for å oppdatere klienten. +serverIsDead: Tjeneren svarer ikke. Prøv på nytt om en stund. +sensitive: Sensitivt innhold +unmarkAsSensitive: Fjern merking som sensitivt innhold +enterFileName: Skriv inn filnavn +mute: Stum +unmute: Fjern stumming +block: Blokker +unsuspendConfirm: Er du sikker på at du vil fjerne suspensjonen av denne kontoen? +selectList: Velg en liste +selectAntenna: Velg en antenne +selectWidget: Velg et skjermelement +emojiName: Emoji-navn +emojiUrl: Emoji-URL +searchWith: 'Søk etter: {q}' +intro: Installasjonen av Firefish er fullført! Lag en admin-bruker. +youHaveNoLists: Du har ingen lister +followConfirm: Er du sikker på at du vil følge {name}? +proxyAccount: Stedfortreder-konto +statistics: Statistikk +default: Standard +defaultValueIs: 'Standard: {value}' +newPasswordRetype: Gjenta nytt passord +fromDrive: Fra disk +fromUrl: Fra URL +nUsersRead: lest av {n} +uploadFromUrlDescription: URL til filen du vil laste opp +agreeTo: Jeg samtykker til {0} +home: Hjem +emptyDrive: Disken din er tom +unableToDelete: Klarte ikke å slette +inputNewFileName: Oppgi nytt filnavn +hasChildFilesOrFolders: Katalogen kan ikke slettes fordi den ikke er tom. +avoidMultiCaptchaConfirm: Å bruke flere Captcha-systemer kan forårsake uønskede krysseffekter + mellom dem. Ønsker å du slå av det andre aktive CAPTCHA-systemet? Om du ønsker å + ha begge på, trykk "Avbryt". +name: Navn +antennas: Antenner +antennaSource: Antennekilde +notifyAntenna: Varsle om nye poster +antennaExcludeKeywords: Nøkkelord som skal ekskluderes +retype: Skriv inn igjen +inviteToGroup: Inviter til gruppe +next: Neste +useOsNativeEmojis: Bruk operativsystemets emojier +youHaveNoGroups: Du har ingen grupper +noHistory: Ingen historikk er tilgjengelig +aboutX: Om {x} +signinHistory: Innloggings-historikk +strongPassword: Sterkt passord +noFollowRequests: Du har ingen utestående følgeforespørsler +openImageInNewTab: Åpne bilder i ny fane +dashboard: Dashbord +local: Lokal +objectStoragePrefix: Prefiks +objectStoragePrefixDesc: Filer vil bli lagret under kataloger med dette prefikset. +objectStorageEndpointDesc: La dette stå tomt om du bruker AWS S3, ellers kan du spesifisere + endepunktet som '' eller ':', avhengig av hvilken tjeneste + du bruker. +objectStorageUseSSL: Bruk TLS +objectStorageUseSSLDesc: Skru dette av dersom du ikke vil bruke HTTPS for API-forbindelser. +uninstall: Avinstaller +ascendingOrder: Økende +descendingOrder: Synkende +removeAllFollowing: Avfølg alle brukere +deletedNote: Slettet post +height: Høyde +enableEmail: Slå på epost-utsendelse +smtpPass: Passord +smtpSecureInfo: Slå av dette om du bruker STARTTLS +database: Database +display: Vis +notificationSetting: Varslingsinnstillinger +other: Annet +removeAllFollowingDescription: Dette vil avfølge alle kontoer på tjeneren {host}. + Kjør denne for eksempel om tjeneren ikke lenger finnes. +inboxUrl: Innboks-URL +description: Beskrivelse +smtpUser: Brukernavn +smtpSecure: Bruk implisitt SSL/TLS for SMTP-forbindelser +userSaysSomethingReasonReply: '{name} svarte på en post som inneholdt {reason}' +makeActive: Aktiver +copy: Kopier +regenerateLoginToken: Lag innloggingstegn på nytt +pinnedUsersDescription: Liste av brukere (en per linje) som skal festes øverst under + "Utforsk". +resetPassword: Tilbakestill passord +newPasswordIs: Nytt passord er "{password}" +all: Alle +keepOriginalUploadingDescription: Lagrer det opprinnelige opplastedet bildet slik + det var originalt. Hvis du slår det av vil en versjon for visning på nett bli generert + ved opplasting. +startMessaging: Start en ny chat +group: Gruppe +renote: Del +banner: Topp-bilde +nsfw: Sensitivt innhold +bannerUrl: URL til fane-bilde +backgroundImageUrl: URL til bakgrunnsbilde +pinnedPages: Festede sider +hcaptcha: hCaptcha +enableHcaptcha: Slå på hCaptcha +invisibleNote: Usynlig post +withFileAntenna: Bare poster med filer +markAsReadAllUnreadNotes: Marker alle poster som lest +noteOf: Post av {user} +xl: Ekstra stor +large: Stor +medium: Medium +small: Liten +tokenRequested: Gi tilgang til konto +pluginTokenRequestedDescription: Dette programtillegget vil kunne bruke tillatelsene + som settes her. +emailConfigInfo: Brukt for å bekrefte epost-adresser ved opprettelse av kontoer og + dersom du glemmer passordet +email: Epost +emailAddress: Epostadresse +smtpConfig: Konfigurasjon av SMTP-tjener +smtpHost: Tjener +showInPage: Vis på side +volume: Volum +fileIdOrUrl: Fil-id eller URL +reporter: Rapportert av +yes: Ja +loadRawImages: Last originale bilder i stedet for å vise miniatyrbilder +fillAbuseReportDescription: Fyll inn detaljer om innrapporteringen. Hvis det handler + om en bestemt post, inkluder URL til den. +openInSideView: Åpne i sidefelt +pollVotesCount: Antall stemmer sendt +lockedAccountInfo: Med mindre du setter synlighet til "Bare følgere" vil postene dine + være synlige for alle, selv om du krever at følgere må godtas manuelt. +disableShowingAnimatedImages: Ikke spill animerte bilder +pageLikesCount: Antall likte Sider +pageLikedCount: Antall mottatte likes på Sider +contact: Kontakt +useSystemFont: Bruk standard skriftsnitt fra systemet +unableToProcess: Operasjonen kunne ikke fullføres +send: Send +clientSettings: Klientinnstillinger +accountSettings: Kontoinnstillinger +promotion: Promotert +deleteAll: Slett alle +showFixedPostForm: Vis post-feltet på toppen av tidslinjen +sounds: Lyder +details: Detaljer +openInNewTab: Åpne i ny fane +followersCount: Antall følgere +sentReactionsCount: Antall sendte reaksjoner +appearance: Utseende +hideThisNote: Skjul denne posten +popout: Pop ut +recentUsed: Nylig brukt +install: Installer +weekOverWeekChanges: Endringer til forrige uke +dayOverDayChanges: Endringer til i går +listen: Lytt +system: System +none: Ingen +chooseEmoji: Velg en emoji +setMultipleBySeparatingWithSpace: Separer ulike innslag med mellomrom. +reportAbuse: Rapport +reportAbuseOf: Rapport {name} +abuseReported: Rapporten er sendt. Takk. +random: Tilfeldig +repliesCount: Antall svar sendt +repliedCount: Antall mottatte svar +followingCount: Antall fulgte kontoer +notSet: Ikke sendt +i18nInfo: 'Firefish blir oversatt til ulike språk av frivillige. Du kan hjelpe her: + {link}.' +accessibility: Tilgjengelighet +promote: Promoter +numberOfDays: Antall dager +serverLogs: Tjenerlogger +objectStorageSetPublicRead: Sett til "offentlig lesing" ved opplasting +behavior: Oppførsel +abuseReports: Rapporter +defaultNavigationBehaviour: Standard navigeringsoppførsel +abuseMarkAsResolved: Marker rapporten som løst +emailVerified: Epost er verifisert +noteFavoritesCount: Antall bokmerkede poster +editTheseSettingsMayBreakAccount: Endringer i disse innstillingene kan ødelegge kontoen + din. +instanceTicker: Tjenerinformasjon for poster +waitingFor: Venter på {x} +notesCount: Antall poster +receivedReactionsCount: Antall mottatte reaksjoner +pollVotedCount: Antall mottatte stemmer +no: Nei +alwaysMarkSensitive: Merk som "Sensitivt innhold" som standard +verificationEmailSent: En verifiserings-epost er sendt. Følg lenken i eposten for + å fullføre verifiseringen. +newNoteRecived: Det er nye poster +scratchpadDescription: Kladdeblokka gir deg et miljø for å eksperimentere med AiScript. + Du kan skrive, kjøre og sjekke resultatene av at koden interagerer med Firefish. +disablePagesScript: Slå av AiScript på Sider +expandTweet: Ekspander tweet +public: Offentlig +clearCache: Slett mellomlager +onlineUsersCount: '{n} brukere er innlogget' +nNotes: '{n} poster' +sendErrorReports: Send feilmeldinger +deleteConfirm: Virkelig slette? +latestVersion: Nyeste versjon +receiveAnnouncementFromInstance: Motta varsler fra denne tjeneren +inChannelSearch: Søk i kanal +selectAccount: Velg konto +switch: Bytt +instanceDefaultDarkTheme: Standard mørkt tema på tjeneren +oneDay: En dag +driveCapOverrideCaption: Tilbakestill kapasiteten til standardverdien ved å legge + inn en verdi på 0 eller lavere. +sendModMail: Send modereringsvarsel +enableServerMachineStats: Slå på hardware-statistikk for tjeneren +_gallery: + liked: Likte poster + unlike: Fjern lik + my: Mitt galleri + like: Lik +_preferencesBackups: + loadFile: Last fra fil + cannotSave: Lagring feilet + deleteConfirm: Vil du slette sikkerhetskopien "{name}"? + saveConfirm: Lagre sikkerhetskopi som "{name}"? + noBackups: Ingen sikkerhetskopier er tatt. Du kan ta en backup av klientinnstillingene + dine på denne tjeneren ved å trykke "Lag ny sikkerhetskopi". + applyConfirm: Ønsker du å laste inn sikkerhetskopien "{name}" på denne enheten? + Eksisterende innstillinger vil bli overskrevet. + save: Lagre endringer + nameAlreadyExists: En sikkerhetskopi med navnet "{name}" finnes allerede. Skriv + inn et annet navn. + createdAt: 'Opprettet: {date} {time}' + apply: Bruk på denne enheten + renameConfirm: Endre navn på sikkerhetskopien fra "{old}" to "{new}"? + list: Opprettede sikkerhetskopier + saveNew: Ta ny sikkerhetskopi + inputName: Gi sikkerhetskopien et navn + updatedAt: 'Oppdatert: {date} {time}' + cannotLoad: Innlasting feilet + invalidFile: Ugyldig filformat +_ad: + back: Tilbake + reduceFrequencyOfThisAd: Vis annonsen sjeldnere +_mfm: + cheatSheet: Jukseark for tekstmarkering (MFM) + stop: Stopp animert markeringsspråk (MFM) + warn: Markeringsspråket (MFM) kan inneholde bevegelige eller blinkende animasjoner + alwaysPlay: Alltid spill av animert tekstmarkering (MFM) + play: Spill animert markeringsspråk (MFM) + intro: MFM er et markeringsspråk som burkes av Misskey, Firefish, Akkoma og andre. + Her kan du se en liste over tilgjengelig MFM-syntaks. + sparkle: Gnistrende + dummy: Firefish utvider Allheimen + tadaDescription: Gir innholdet en "Tada!"-lignende animasjon. + emoji: Egendefinert emoji + flip: Speil + jelly: Animasjon (gelé) + rotate: Rotér + foregroundDescription: Endre forgrunnsfargen på tekst. + quoteDescription: Viser innhold som et sitat. + link: Lenke + search: Søk + scale: Skalér + centerDescription: Viser innhold sentrert. + advancedDescription: Hvis avslått vil bare enkel tekstmarkering være tillatt med + mindre du spiller av animert tekstmarkering + fontDescription: Setter skriftsnittet for innholdet. + inlineCode: Kode (inline) + x2Description: Viser innholdet større. + backgroundDescription: Endre bakgrunnsfargen til tekst. + blur: Uklar + rainbowDescription: Viser innholdet i regnbuefarger. + center: Sentrert + mentionDescription: Du kan spesifisere en bruker ved å skrive krøllalfa foran brukernavnet. + emojiDescription: Ved å omslutte navnet på en egendefinert emoji med kolon vil de + vises i teksten. + x3: Veldig stor + rainbow: Regnbue + mention: Nevn + shakeDescription: Gir innholdet en ristende animasjon. + advanced: Avansert MFM (tekstmarkering) + hashtag: Emneknagg + urlDescription: URL-er kan vises. + blockMath: Matematikk (blokk) + smallDescription: Viser innhold lite og tynt. + x2: Stor + font: Skriftsnitt + crop: Beskjær + fadeDescription: Fader innholdet inn og ut. + x4Description: Viser innholdet større enn større enn stor. + sparkleDescription: Gir innholdet en gnist-effekt. + scaleDescription: Skalér innholdet. + inlineMath: Matematikk (inline) + shake: Animasjon (risting) + tada: Animasjon (Tada) + background: Bakgrunnsfarge + twitchDescription: Gir innholdet en sterk animert rykning. + blockCodeDescription: Viser syntaksmarkering for programkode over flere linjer i + en blokk. + position: Posisjon + hashtagDescription: Du kan spesifisere en emneknakk ved å bruke nummer-tegn (#) + og tekst. + small: Liten + positionDescription: Flytter innholdet en angitt distanse. + cropDescription: Beskjær innhold. + x4: Utrolig stor + jellyDescription: Gir innholdet med en gelé-lignende animasjon. + flipDescription: Speiler innhold horisontalt eller vertikalt. + twitch: Animasjon (rykning) + plainDescription: Slår av effenten av all formatering innenfor denne markeringen. + url: URL + jumpDescription: Viser innholdet med animert hopping. + blockMathDescription: Viser matematiske formler (KaTeX) i en blokk + inlineMathDescription: Viser matematiske formler (KaTeX) inline + linkDescription: Spesifikke deler av tekst kan vises som en URL. + blurDescription: Viser innholdet uklart. Det vil bli vist klart når muspekeren er + over. + foreground: Forgrunnsfarge + quote: Sitat + bounceDescription: Viser innholdet med en sprettende animasjon. + bold: Fet + inlineCodeDescription: Viser inline syntaksmarkering for kildekode. + jump: Animasjon (hopp) + fade: Fade + spin: Animasjon (spinn) + searchDescription: Viser en søkeboks med forhåndsutfylt tekst. + spinDescription: Gir innholdet en spinnende animasjon. + blockCode: Kodeblokk + boldDescription: Fremhever tekst ved å gjøre den fyldigere. + bounce: Animasjon (sprett) + rotateDescription: Vrir innholdet i en gitt vinkel. + plain: Enkel + x3Description: Viser innholdet enda større. +reactionPickerSkinTone: Foretrukket hudfarge i emojier +switchUi: Visningsoppsett +usageAmount: Bruk +memo: Memo +priority: Prioritet +high: Høy +secureMode: Sikker modus (Autorisert henting) +requireAdminForView: Du må logge inn på en administratorkonto for å se dette. +typeToConfirm: Skriv inn {x} for å bekrefte +replayTutorial: Kjør introduksjon på nytt +moveTo: Flytt denne kontoen til en ny konto +objectStorageBucketDesc: Skriv inn navnet på bøtta hos lagringstjenesten. +notRecommended: Ikke anbefalt +voteConfirm: Bekreft din stemme på "{choice}"? +oneHour: En time +_plugin: + installWarn: Ikke installer utvidelser du ikke stoler på. + install: Installer innstikk + manage: Oppsett av innstikk +preventAiLearning: Hindre tråling fra AI-boter +reporterOrigin: Kilden til den som rapporterer +center: Sentrert +wide: Bred +value: Verdi +createdAt: Opprettet +active: Aktiv +hideOnlineStatus: Skjul om du er pålogget +troubleshooting: Problemløsing +useBlurEffect: Bruk diffuseringseffekter i brukergrensesnittet +learnMore: Lær mer +usernameInfo: Et navn som identifiserer din konto på denne tjeneren. Du kan bruke + alfabetet (a-z,A-Z), sifre (0-9) og understrek (_). Brukernavn kan ikke endres senere. +resolved: Løst +unresolved: Uløst +welcomeBackWithName: Velkommen tilbake, {name} +clickToFinishEmailVerification: Klikk [{ok}] for å fullføre epost-verifisering. +cropImage: Beskjær bilde +numberOfPageCacheDescription: En økning i dette tallet vil gjøre brukeropplevelsen + bedre, men gi mer jobb til tjeneren og kreve mer minne. +logoutConfirm: Vil du logge ut? +numberOfPageCache: Antall mellomlagrede sider +lastActiveDate: Sist brukt +refreshInterval: 'Oppdateringsintervall ' +swipeOnDesktop: Tillat mobil-lignende sveiping på skrivebords-PC +migration: Migrering +useDrawerReactionPickerForMobile: Vis reaksjosnvelger som en skuff på mobil +numberOfColumn: Antall kolonner +searchByGoogle: Søk +oneWeek: En uke +file: Fil +recentNHours: Siste {n} timer +noEmailServerWarning: E-post-tjener er ikke konfigurert. +thereIsUnresolvedAbuseReportWarning: Det er uløste rapporter. +colored: I farger +recommendedInstancesDescription: Anbefalte tjenere skilt med linjeskift for visning + i anbefalt-tidslinjen. +caption: Automatisk beskrivelse +updateAvailable: En oppdatering kan være tilgjengelig! +accentColor: Uthevet farge +textColor: Skriftfarge +saveAs: Lagre som... +swipeOnMobile: Tillat sveiping mellom sider +_accountDelete: + inProgress: Sletting pågår + requestAccountDelete: Be kom sletting av konto + started: Sletting har startet. + accountDelete: Slett konto + mayTakeTime: Å slette en konto er en ressurskrevende prosess. Det kan ta litt tid + å fullføre den, avhengig av hvor mye du har postet og hvor mange filer du har + lastet opp. + sendEmail: Når kontoen er ferdig slettet vil du få en epost til adressen som er + registrert for kontoen. +remote: Ekstern +total: Total +registry: Register +closeAccount: Avslutt konto +currentVersion: Nåværende versjon +fullView: Full visning +gallery: Galleri +emailNotConfiguredWarning: E-post-adresse er ikke satt. +allowedInstancesDescription: Tjenernavn for tjenere som skal hvitelistes. En per linje. + (Vil bare bli brukt i privat modus). +previewNoteText: Forhåndsvisning +recentNDays: Siste {n} dager +indexPosts: Indekser poster +objectStorageUseProxy: Koble til gjennom en mellomtjener +objectStorageUseProxyDesc: Skru av dette dersom du ikke vil bruke mellomtjenere for + API-oppkoblinger +masterVolume: Hovedvolum +script: Skript +divider: Skille +addItem: Legg til element +manage: Oppsett +notificationType: Varseltype +useBlurEffectForModal: Bruk diffus-effekt for modale brukergrensesnitt-elementer +driveFilesCount: Antall filer på Disk +showGapBetweenNotesInTimeline: Legg inn et tomrom mellom postene i tidslinjen +newVersionOfClientAvailable: En nyere versjon av klienten er tilgjengelig. +capacity: Kapasitet +inUse: Brukt +publish: Publiser +quickAction: Hurtigvalg +privateMode: Privat modus +customCss: Egendefinert CSS +allowedInstances: Hvitelistede tjenere +lastCommunication: Siste kommunikasjon +breakFollowConfirm: Er du sikker på at du vil fjerne følgeren? +filter: Filter +makeReactionsPublicDescription: Dette vil gjøre listen over dine tidligere reaksjoner + synlige for alle. +indefinitely: Permanent +tenMinutes: 10 minutter +_email: + _follow: + title: Du har en ny følger + _receiveFollowRequest: + title: Du har mottatt en følgeforespørsel +_registry: + key: Nøkkel + scope: Omfang + domain: Domene + createKey: Opprettet nøkkel + keys: Nøkler +sendErrorReportsDescription: "Detaljert feilinformasjon vli bli delt med utviklerne + av Firefish, noe som hjelper til med feilretting og forbedring av programmet.\n + - Dette inkluderer informasjon som f.eks. versjonen på operativsystemet og nettleseren + din, og aktiviteten din i Firefish." +_aboutFirefish: + translation: Oversett Firefish + donate: Donér til Firefish + donateTitle: Liker du Firefish? + pleaseDonateToFirefish: Du kan vurdere å donere en slant til Firefish for å støtte + videre utvikling og feilretting. + donateHost: Donér til {host} + morePatrons: Vi er også takknemlige for bidragene fra mange andre som ikke er listet + her. Takk til dere alle! 🥰 + contributors: Hovedutviklere + source: Kildekode + allContributors: Alle bidragsytere + misskeyContributors: Misskeys bidragsytere + pleaseDonateToHost: Du kan også vurdere å donere til hjemme-tjeneren din, {host}, + for å hjelpe dem med driftskostnadene for tjenesten. + about: Firefish ble opprettet av ThatOneCalculator i 2022, basert på Misskey. + sponsors: Firefishs sponsorer + patrons: Firefishs patroner + patronsList: Listen er kronologisk, ikke etter donert beløp. Doner med lenken over + for å få navnet ditt her! +isBot: Denne kontoen er en bot +_nsfw: + respect: Skjul NSFW-merket media + force: Skjul alle media + ignore: Ikke skjul NSFW-media +disableAnimatedMfm: Slå av animert markeringsspråk +objectStorageBucket: Bøtte +scratchpad: Kladdeblokk +plugins: Innstikk +createNew: Lag ny +makeExplorable: Gjør kontoen synlig i "Utforsk" +needReloadToApply: Siden må lastes på nytt for at denne endringen skal tre inn. +customCssWarn: Bruk denne innstillingen bare hvis du vet hva den gjør. Feil innstilling + kan få klienten til å ikke fungere som den skal. +low: Lav +global: Global +recommended: Anbefalt +instanceSecurity: Tjenersikkerhet +squareAvatars: Vis firkantede avatarer +deleteAccount: Slett konto +customKaTeXMacro: Egne KaTeX-makroer +size: Størrelse +fast: Raskt +showAdminUpdates: Indikerer at en ny versjon av Firefish er tilgjengelig (bare admin) +moveAccount: Flytt konto! +license: Lisens +wordMute: Ordstumming +reporteeOrigin: Kilden til den som rapporteres +accountInfo: Kontoinformasjon +driveUsage: Brukt diskplass +noCrawle: Stopp robot-indeksering +noCrawleDescription: Be eksterne søkemotorer om å ikke indeksere innholdet ditt. +narrow: Smal +reloadToApplySetting: Denne innstillingen aktiveres ikke før du laster siden på nytt. + Vil du gjøre det nå? +showTitlebar: Vis tittellinje +nUsers: '{n} brukere' +myTheme: Mitt tema +backgroundColor: Bakgrunnsfarge +advanced: Avansert +updatedAt: Oppdatert +editCode: Rediger kode +addDescription: Legg til beskrivelse +userPagePinTip: Du kan vise poster her ved å klikke "Fest til profil" fra menyen til + en post. +unknown: Ukjent +onlineStatus: Påkoblet status +online: Pålogget +offline: Ikke pålogget +instanceBlocking: Innstillinger for føderering +accounts: Kontoer +noBotProtectionWarning: Bot-beskyttelse er ikke konfigurert. +configure: Konfigurer +postToGallery: Lag ny galleripost +recentPosts: Nylige sider +popularPosts: Populære sider +shareWithNote: Del med post +expiration: Frist +middle: Medium +sent: Sendt +makeReactionsPublic: La reaksjonshistorikken være offentlig +classic: Sentrert +muteThread: Stum en tråd +ffVisibilityDescription: Lar deg konfigurere hvem som kan se hvem du følger og hvem + som følger deg. +continueThread: Fortsett tråd +deleteAccountConfirm: Dette vil slette kontoen, og det går ikke å omgjøre etterpå. + Fortsette? +hide: Skjul +ffVisibility: Synlighet av følgere og folk du følger +leaveGroup: Forlat gruppe +leaveGroupConfirm: Er du sikker på at du vil forlate "{name}"? +overridedDeviceKind: Enhetstype +smartphone: Smarttelefon +tablet: Nettbrett +auto: Automatisk +image: Bilde +video: Video +driveCapOverrideLabel: Endre brukerens lagringskapasitet +isSystemAccount: Denne kontoen er opprettet og kontrollert av systemet. Ikke moderer, + rediger, slett eller på annen måte endre noe ved denne kontoen. Tjeneren kan slutte + å virke som den skal. +document: Dokumentasjon +statusbar: Statuslinje +pleaseSelect: Velg en innstilling +reverse: Reverser +slow: Sakte +moveFromLabel: 'Kontoen du flytter fra:' +silencedWarning: Denne siden vises fordi disse brukerne er fra tjenere administratoren + din har stummet, så de kan potensielt inneholde spam. +ads: Samfunnsbanner +_forgotPassword: + contactAdmin: Denne tjeneren støtter ikke bruk av e-post-adresser for gjenoppretting + av passord. Kontakt administratoren for tjeneren. + enterEmail: Skriv inn e-post-adressen du brukte da du registrerte kontoen. Du vil + motta en e-post med en lenke som lar deg endre passordet. + ifNoEmail: Dersom du ikke oppga en e-post-adresse da du registrerte kontoen, kontakt + administrator i stedet. +breakFollow: Slett følger +unmuteThread: Fjern stumming av tråden +incorrectPassword: Feil passord. +logoImageUrl: URL til logo-bilde +apps: Apper +audio: Lyd +moveToLabel: 'Kontoen du flytter til:' +moveFrom: Flytt fra en annen konto til denne kontoen +migrationConfirm: "Er du helt sikker på at du ønsker å flytte kontoen din til {account}? + Når du har gjort dette kan du ikke omgjøre det, og du vil ikke kunne bruke kontoen + normalt etterpå.\nPass på at du setter den kontoen du er innlogget på her som kontoen + du flytter fra." +jumpToSpecifiedDate: Hopp til en gitt dato +showingPastTimeline: Du ser nå en gammel tidslinje +noMaintainerInformationWarning: Eierinformasjon er ikke konfigueret. +notSpecifiedMentionWarning: Denne posten inneholder nevnelser av brukere som ikke + er inkludert som mottakere +saveConfirm: Lagre endringer? +clear: Tøm +switchAccount: Bytt konto +enabled: Påslått +disabled: Avslått +user: Bruker +administration: Konfigurasjon +invalidValue: Ugyldig verdi. +youAreRunningUpToDateClient: Du bruker nyeste versjon av klienten. +noteId: Post-id +noGraze: Slå av "Graze for Mastodon"-utdivdelsen i nettleseren. Den vil forstyrre + Firefish. +isModerator: Moderator +isAdmin: Administrator +objectStorageS3ForcePathStyle: Bruk sti-baserte URL-er til endepunktene +objectStorageS3ForcePathStyleDesc: Skru på dette for å lage endpunkts-URL-er i formatet + 's3.amazonaws.com//' i stedet for '.s3.amazonaws.com'. +output: Utputt +forwardReport: Videresend rapport til ekstern tjener +forwardReportIsAnonymous: I stedet for din konto vil en anonym systemkonto bli vist + som rapportør på den eksterne tjeneren. +optional: Valgfritt +manageAccessTokens: Styr adgangstegn +experimentalFeatures: Eksperimentelle funksjoner +developer: Utvikler +duplicate: Dupliser +left: Venstre +makeExplorableDescription: Dersom du slår av denne vil kontoen din ikke dukke opp + under "Utforsk". +apply: Bruk +emailNotification: Epostvarsler +useReactionPickerForContextMenu: Åpne reaksjonsvelger med høyreklikk +typingUsers: '{users} skriver' +markAllAsRead: Marker alle som lest +goBack: Tilbake +info: Om +userInfo: Brukerinformasjon +hideOnlineStatusDescription: Å skjule hvorvidt du er pålogget vil redusere enkelheten + av enkelte funksjoner slik som søk. +privateModeInfo: Bare hvitelistede tjenere kan federere med din tjener om du slår + på denne. Alle poster vil bli skjult for andre. +received: Mottatt +searchResult: Søkeresultater +hashtags: Emneknagger +keepCw: Behold innholdsadvarsler +misskeyUpdated: Firefish er oppdatert! +whatIsNew: Vis endringer +translate: Oversett +translatedFrom: Oversatt fra {x} +itsOn: Påslått +itsOff: Avslått +emailRequiredForSignup: Krev e-post-adresse for registrering +unread: Ulest +controlPanel: Kontrollpanel +manageAccounts: Styr kontoer +mutePeriod: Periode for stumming +instanceDefaultLightTheme: Standard lyst tema på tjeneren +reflectMayTakeTime: Det kan ta litt tid før endringen inntrer. +failedToFetchAccountInformation: Klarte ikke å hente kontoinformasjon +cropImageAsk: Ønsker du å beskjære dette bildet? +recommendedInstances: Anbefalte tjenere +moveAccountDescription: Denne prosessen er irreversibel! Vær sikker på at du har satt + opp et alias for denne kontoen på den nye kontoen før du fortsetter. Skriv inn navnet + på kontoen på formen @person@server.com +moveFromDescription: Dette vil sette opp et alias for din gamle kontoen slik at du + kan flytte fra den gamle kontoen til denne. Gjør dette FØR du flytter fra den gamle + kontoen. Skriv inn den gamle kontoen på formen @person@server.com +defaultReaction: Standard emoji-reaksjon for utgående og innkommende poster +indexFrom: Indekser poster fra post-id og fremover +indexNotice: Indekserer. Dette vil sannsynligvis ta litt tid, ikke restart tjeneren + før det har gått minst en time. +indexFromDescription: La stå tom for å indeksere alle poster +customKaTeXMacroDescription: 'Sett opp makroer for å skrive matematiske uttrykk enkelt. + Notasjonen følger LaTeX-kommandoer og er skrevet som \newcommand{\ navn}{uttrykk} + eller \newcommand{\navn}{antall argumenter}{uttrykk}. For eksempel vil \newcommand{\add}{2}{#1 + + #2} vil ekspandere \add{3}{foo} til 3 + foo. Klammeparentesene rundt makroen kan + også endres til parenteser eller hakeparenteser. Dette påvirker hvilken parentestype + du bruker for argumenter. En og bare en makro kan defineres pr linje, og du kan + ikke ha linjeskift inni definisjonen. Linjer som ikke inneholder gyldige makroer + vil bli ignorert. Bare enkle streng-erstatnings-makroer er støttet; avansert syntaks + f.eks. med flykontroll er ikke tillatt.' +signupsDisabled: Registreringer av nye konti på denne tjeneren er slått av, men du + kan alltids registrere deg på en annen tjener! Hvis du har en invitasjonskode for + denne tjeneren, skriv den inn under. +findOtherInstance: Finn en annen tjener +preventAiLearningDescription: Ber tredjeparts AI-språkmodeller om å ikke bruke innhold + du laster opp, sliks om poster og bilder. +enableCustomKaTeXMacro: Slå på egne KaTeX-makroer +showPopup: Varsle brukere med oppsprettsvindu +_postForm: + _placeholders: + a: Hva skjer? + d: Hva vil du si? + f: Venter på at du skriver... + e: Start skrivingen... + b: Hva skjer rundt deg? + c: Hva tenker du på? + channelPlaceholder: Post til kanal... + quotePlaceholder: Siter denne posten... + replyPlaceholder: Svar på denne posten... +_notification: + _types: + pollEnded: Ferdige avstemninger + all: Alle + renote: Delinger + quote: Sitater + reaction: Reaksjoner + receiveFollowRequest: Mottatte følgerforespørsler + groupInvited: Gruppeinvitasjoner + app: Varsler fra lenkede apper + followRequestAccepted: Aksepterte følgerforespørsler + mention: Noen nevner deg + reply: Svar + follow: Nye følgere + pollVote: Stemmer i avstemninger + yourFollowRequestAccepted: Følgerforespøreslen din er godkjent + _actions: + renote: Delinger + followBack: følger deg også + reply: Svar + youGotQuote: '{name} siterte deg' + fileUploaded: Lastet opp fil + youGotMessagingMessageFromUser: '{name} har sendt deg en chatmelding' + emptyPushNotificationMessage: Pushvarsler har blitt oppdatert + pollEnded: Resultatene fra en avstemning er tilgjengelige + youGotReply: '{name} svarte deg' + youGotMessagingMessageFromGroup: En chatmelding er sendt til gruppen "{name}" + youWereInvitedToGroup: '{userName} har invitert deg til en gruppe' + youReceivedFollowRequest: Du har fått en følgerforespørsel + youRenoted: Deling fra {name} + reacted: reagerte på posten din + voted: stemte i avstemningen din + renoted: delte posten din + youGotPoll: '{name} stemte i avstemningen din' + youGotMention: '{name} nevnte deg' + youWereFollowed: følger deg +_tutorial: + step3_2: "Tidslinjene Hjem og Sosialt er basert på de du følger, så prøv nå følge + noen kontoer for å komme i gang.\nKlikk pluss-sirkelen oppe til høyre på en profil + for å følge den." + step6_1: Så, hva er dette stedet? + step5_7: Tidslinjen Global {icon} viser poster fra alle tilkoblede tjenere. + step4_1: La oss få deg ut der. + step5_1: Tidslinjer! Tidslinjer overalt! + step1_2: La oss gjøre deg klar. Du vil være oppe og gå på et øyeblikk! + step1_1: Velkommen! + title: Hvordan bruke Firefish + step5_6: Tidslinjen Forslag {icon} er hvor du kan se poster fra tjenere administratorene + foreslår. + step5_5: Tidslinjen Sosialt {icon} er en kombinasjon av tidslinjene Hjem og Lokal. + step5_2: Tjeneren din har {timelines} ulike tidslinjer. + step5_3: Tidslinjen Hjem {icon} er hvor du ser poster fra kontoer du følger. + step2_1: Først, fyll ut litt profil-informasjon. + step4_2: Noen liker å skrive en {introduction}-post eller en enkel "Hei, verden!" + step5_4: Tidslinjen Lokal {icon} er hvor du kan se poster fra alle andre på denne + tjeneren. + step6_2: Vel, du har ikke bare blitt med i Firefish. Du har trådt inn porten til + Allheimen, et sammenkoblet nettverk av tusenvis av tjenere. + step6_3: Hver tjener er satt opp og fungerer litt ulikt, denne og noen andre kjører + Firefish, men ikke alle. Komplisert? Bittelitt, men du skjønner det fort når du + tar det i bruk. + step2_2: Å gi litt informasjon om hvem du er vil gjøre det lettere for andre å vite + om de er interessert i å lese postene dine eller følge deg. + step3_1: Nå er det tid for å følge noen! + step6_4: Nå kan du utforske og ha det gøy! +deletePasskeysConfirm: Dette vil slette alle adgangsnøkler og sikkerhetsnøkler for + denne kontoen. Fortsette? +_pages: + fontSerif: Antikva + featured: Populære + contentBlocks: Innhold + viewPage: Vis dine Sider + blocks: + section: Seksjon + _note: + idDescription: Alternativt kan du legge inn URL til posten her. + id: Post-id + detailed: Detaljert visning + radioButton: Valg + _button: + colored: Farget + _action: + _pushEvent: + message: Melding som skal vises når aktivert + variable: Variabel som skal sendes + no-variable: Ingen + callAiScript: Kjør AiScript + _callAiScript: + functionName: Funksjonsnavn + resetRandom: Nullstill starten for tilfeldige tall + dialog: Vis en dialogboks + _dialog: + content: Innhold + action: Oppførsel når knappen er trykket inn + text: Tittel + note: Innfelt post + button: Knapp + textInput: Tekst-innput + if: Hvis + _canvas: + width: Bredde + height: Høyde + _switch: + name: Variabelnavn + default: Standardverdi + text: Tittel + _counter: + text: Tittel + name: Variabelnavn + _textInput: + name: Variabelnavn + text: Tittel + default: Standardverdi + _textareaInput: + default: Standardverdi + name: Variabelnavn + text: Tittel + _numberInput: + default: Standardverdi + name: Variabelnavn + text: Tittel + text: Tekst + counter: Teller + textareaInput: Flerlinjers tekstfelt + image: Bilder + switch: Bytt + numberInput: Numerisk innput + _if: + variable: Variabel + textarea: Tekstområde + _post: + text: Innhold + post: Post-skjema + created: Siden er opprettet + contents: Innhold + like: Lik + nameAlreadyExists: Den angitte URL-en er allerede i bruk + viewSource: Vis kilde + eyeCatchingImageSet: Sett miniatyrbilde + fontSansSerif: Grotesk + invalidNameTitle: Angitt URL er ugyldig + specialBlocks: Spesielle + chooseBlock: Legg til en blokk + url: URL til Side + invalidNameText: Tittelen på Siden kan ikke være tom + liked: Likte Sider + updated: Redigereringer lagret + editThisPage: Rediger denne Siden + my: Mine Sider + enterVariableName: Skriv inn et variabelnavn + newPage: Lag en ny Side + summary: Sammendrag + inputBlocks: Innput + readPage: Vis kilden til denne Siden + eyeCatchingImageRemove: Slett miniatyrbilde + variables: Variabler + inspector: Inspektør + unlike: Avlik + content: Side-blokk + font: Skriftsnitt + hideTitleWhenPinned: Skjul tittel når Siden er festet til profilen + selectType: Velg en type + alignCenter: Sentrer elementer + title: Tittel + pageSetting: Innstillinger for Side + variableNameIsAlreadyUsed: Variabelnavnet er allerede i bruk + deleted: Siden er slettet + editPage: Rediger denne Siden +_channel: + featured: Trendende + removeBanner: Fjern banner + setBanner: Sett banner + owned: Eid + create: Opprett kanal + nameOnly: Bare navn + notesCount: '{n} poster' + usersCount: '{n} deltakere' + nameAndDescription: Navn og beskrivelse + following: Fulgt + edit: Redigér kanal +_charts: + usersIncDec: Forskjell i antall brukere + apRequest: Forespørsler + storageUsageTotal: Total brukt lagringsplass + usersTotal: Totalt antall brukere + federation: Føderasjon + remoteNotesIncDec: Forskjell i antall eksterne poster + storageUsageIncDec: Forskjell i bruk av lagringsplass + notesIncDec: Forskjell i antall poster + notesTotal: Totalt antall poster + activeUsers: Aktive brukere + filesTotal: Totalt antall filer + localNotesIncDec: Forskjell i antall lokale poster + filesIncDec: Forskjell i antall filer +_deck: + swapLeft: Flytt kolonnen til venstre + configureColumn: Kolonneinnstillinger + stackLeft: Stable med kolonnen til venstre + columnAlign: Juster kolonner + swapUp: Flytt kolonnen oppover + swapRight: Flytt kolonnen til høyre + alwaysShowMainColumn: Vis alltid hovedkolonne + swapDown: Flytt kolonnen nedover + addColumn: Legg til kolonne + nameAlreadyExists: Navnet er allerede i bruk på et annet arbeidsområde. + introduction: Gjør brukergrensesnittet perfekt ved å sette kolonnene slik du vil + ha dem! + introduction2: Klikk pluss-tegnet til høyre på skjermen for å legge til nye kolonner + når du trenger dem. + profile: Arbeidsområde + newProfile: Nytt arbeidsområde + renameProfile: Gi arbeidsområdet nytt navn + deleteProfile: Slett arbeidsområde + _columns: + list: Liste + main: Standard + notifications: Varsler + widgets: Skjermelementer + mentions: Nevninger + channel: Kanal + direct: Direktemeldinger + antenna: Antenne + tl: Tidslinje + widgetsIntroduction: Trykk "Rediger skjermelementer" i kolonnemenyen og legg til + et element. + popRight: Flytt kolonnen ut av stabelen og til høyre +_serverDisconnectedBehavior: + reload: Automatisk omlasting + quiet: Vis ikkeforstyrrende advarsel + nothing: Ikke gjør noe + dialog: Vis advarselsdialog +cannotUploadBecauseNoFreeSpace: Opplasting feilet. Ikke nok plass på Disk. +customMOTD: Egendefinert dagens melding i oppstartsbildet. +_sfx: + channel: Kanal-varsler + chatBg: Chat (Bakgrunn) + antenna: Antenner + notification: Varsler + noteMy: Egen post + chat: Chat + note: Ny post +_sensitiveMediaDetection: + setSensitiveFlagAutomaticallyDescription: Resultatene av intern deteksjon vil bli + beholdt selv om innstillingen slås av. + analyzeVideosDescription: Analyserer videoer i tillegg til bilder. Dette vil øke + lasten på tjeneren litt. + sensitivity: Sensitivitiet i deteksjonen + analyzeVideos: Slå på videoanalyse + sensitivityDescription: Å redusere sensitiviteten vil føre til færre falske positive + (mistenkt NSFW som viser seg å ikke være det). Å øke den vil føre til færre falske + negative. + description: Reduserer arbeidet med moderering på tjeneren ved å automatisk gjenkjenne + NSFW-innhold med maskinlæring. Dette vil gi en litt økt last på tjeneren. + setSensitiveFlagAutomatically: Merk som NSFW +_profile: + name: Navn + username: Brukernavn + metadataContent: Innhold + metadataEdit: Rediger ekstra informasjon + metadata: Ekstra informasjon + metadataLabel: Etikett + description: Bio + metadataDescription: Her kan du legge inn ekstra felt med informasjon i profilen + din. + locationDescription: Om du oppgir stedet du bor først vil det vise din lokale tid + til andre brukere. + changeAvatar: Endre avatar + youCanIncludeHashtags: Du kan bruke emneknagger i bioen også. + changeBanner: Endre brukerfane +removeRecipient: Fjern mottaker +seperateRenoteQuote: Skill knappene for deling og sitering +_permissions: + "read:gallery": Se galleriet ditt + "read:pages": Se siden din + "write:channels": Redigere kanalene dine + "write:gallery-likes": Endre hvilke galleriposter du liker + "read:reactions": Vise reaksjonene dine + "read:user-groups": Se gruppene dine + "read:notifications": Vise varslene dine + "write:reactions": Endre reaksjonene dine + "write:pages": Redigere eller slette siden din + "write:mutes": Redigere listen over stummede brukere + "write:following": Følge eller avfølge andre kontoer + "read:messaging": Vise chat-ene dine + "write:account": Rediger kontoinformasjon + "read:favorites": Vis bokmerkene dine + "write:messaging": Sende eller slette meldinger i chat + "read:account": Se informasjon om kontoen din + "read:channels": Se kanalene dine + "write:drive": Redigere og slette filer og kataloger på Disk + "read:mutes": Vise listen over stummede brukere + "write:blocks": Rediger listen av blokkerte brukere + "read:page-likes": Se hvilke sider du liker + "write:notifications": Styre varslene dine + "read:following": Vise informasjon om hvem du følger + "write:votes": Stemme i en avstemning + "read:gallery-likes": Se listen over galleriposter du liker + "write:gallery": Redigere galleriet ditt + "read:blocks": Vis listen av brukere du blokkerer + "write:favorites": Redigere bokmerkene dine + "read:drive": Tilgang til dine filer og kataloger på Disk + "write:notes": Sende eller slette poster + "write:page-likes": Redigere hvilke sider du liker + "write:user-groups": Redigere eller slette gruppene dine +unlikeConfirm: Slutte å like? +_theme: + installed: '{name} er blitt installert' + keys: + fg: Tekst + infoBg: Informasjonsbakgrunn + mention: Nevn + listItemHoverBg: Bakgrunn for listeelementer (Svevende) + accentDarken: Uthevet (Mørkere) + focus: Fokus + navFg: Tekst i sidefelt + mentionMe: Nevning (Meg) + hashtag: Emneknagg + buttonBg: Bakgrunn i knapper + driveFolderBg: Bakgrunn i Disk-katalog + infoWarnBg: Advarselsbakgrunn + dateLabelFg: Tekst i dato-etikett + indicator: Indikator + header: Hode + bg: Bakgrunn + inputBorder: Ramme rundt input-felt + navBg: Bakgrunn i sidefelt + link: Lenke + infoFg: Informasjonstekst + navActive: Tekst i sidefelt (Aktivt) + scrollbarHandle: Håndtak i rullefelt + messageBg: Bakgrunn i chat + cwBg: Bakgrunn på innholdsadvarsel-knapp + renote: Del + fgHighlighted: Markert tekst + toastBg: Bakgrunn for varsler + buttonHoverBg: Bakgrunn i knapper (Svevende) + panel: Panel + toastFg: Tekst i varsler + accentLighten: Uthevet (Lysere) + scrollbarHandleHover: Håndtak i rullefelt (Svevende) + shadow: Skygge + cwFg: Tekst i innholdsadvarsel-knapp + cwHoverBg: Bakgrunn i innholdsadvarsel-knapp (Svevende) + navHoverFg: Tekst i sidefelt (Svevende) + accent: Uthev + navIndicator: Indikator i sidefelt + divider: Skille + badge: Merker + modalBg: Modal bakgrunn + infoWarnFg: Advarselstekst + darken: Gjør mørkere + refConst: Referer til en konstant + builtinThemes: Innebygde temaer + lighten: Gjør lysere + defaultValue: Standardverdi + basedProp: Referert egenskap + install: Installer et tema + base: Base + addConstant: Legg til konstant + argument: Argument + key: Nøkkel + inputConstantName: Gi konstanten et navn + constant: Konstant + color: Farge + explore: Utforsk temaer + refProp: Referer til en egenskap + invalid: Formatet til dette temaet er ugyldig + code: Tema-kode + installedThemes: Installerte temaer + make: Lag et tema + func: Funksjoner + description: Beskrivelse + alpha: Ugjennomsiktighet + importInfo: Om du legger en temakode her kan du importere den til tema-redigeringen + deleteConstantConfirm: Sikker på at du vil slette konstanten {const}? + funcKind: Funksjonstype + manage: Styr temaer + alreadyInstalled: Dette temaet er allerede installert +_emailUnavailable: + disposable: Engangs-epost-adresser er ikke tillatt + smtp: Epost-tjeneren svarer ikke + mx: Epost-tjeneren er ugyldig + format: Dette ser ikke ut som en gyldig epost-adresse + used: Denne epost-adressen er allerede brukt +_ago: + weeksAgo: '{n} uker siden' + minutesAgo: '{n}m siden' + daysAgo: '{n} dager siden' + secondsAgo: '{n}s siden' + hoursAgo: '{n} timer siden' + justNow: Nettopp + yearsAgo: '{n} år siden' + monthsAgo: '{n} mnd siden' + future: Fremtid +_exportOrImport: + blockingList: Blokkerte brukere + excludeInactiveUsers: Ekskluder inaktive brukere + muteList: Stummede brukere + followingList: Brukere du følger + userLists: Brukerlister + allNotes: Alle poster + excludeMutingUsers: Eksluder stummede brukere +_antennaSources: + homeTimeline: Poster fra brukere du følger + all: Alle poster + userList: Poster fra en spesifisert liste av brukere + userGroup: Poster fra brukere i en bestemt gruppe + users: Poster fra spesifikke brukere + instances: Poster fra alle brukerne på denne tjeneren +_widgets: + timeline: Tidslinje + meiliSize: Indeks-størrelse + instanceCloud: Tjenersky + onlineUsers: Påloggede brukere + clock: Klokke + userList: Brukerliste + rss: RSS-leser + serverMetric: Tjenermetrikker + meiliIndexCount: Indekserte poster + button: Knapp + unixClock: Unix-klokke + calendar: Kalender + trends: Trender + serverInfo: Tjenerinformasjon + jobQueue: Jobbkø + _userList: + chooseList: Velg en liste + photos: Bilder + rssTicker: RSS-rulletekst + aiscript: AiScript-konsoll + meiliStatus: Tjenerstatus + memo: Notatlapp + notifications: Varsler + postForm: Ny post + digitalClock: Digital klokke + activity: Aktivitet + federation: Føderering + slideshow: Bildeviser +_wordMute: + muteWordsDescription: Skill med mellomrom for logisk "OG" og med linjeskift for + logisk "ELLER". + hardDescription: Hindrer poster som oppfyller vilkårene fra å bli lagt til i tidslinjen. + De vil heller ikke bli lagt i tidslinjen senere dersom vilkårene endres i ettertid. + mutedNotes: Stummede poster + softDescription: Skjul poster som oppfyller disse vilkårene fra tidlinjen. + soft: Svakt + muteWordsDescription2: Sett skråstreker rundt nøkkelord for å bruke regulære uttrykk. + hard: Hardt + muteWords: Stummede ord +showFeaturedNotesInTimeline: Vis framheved poster i tidslinjen +rateLimitExceeded: For mange forsøk på kort tid +_2fa: + securityKeyInfo: Utover fingeravtrykk og PIN-koder kan du sette opp autentisering + via fysiske sikkerhetsnøkler som støtter FIDO2 for å sikre kontoen ytterligere. + removeKey: Fjern sikkerhetsnøkkel + alreadyRegistered: Du har allerede registrert en enhet for tofaktor-autentisering. + token: 2FA-tegn + step3: Oppgi en engangskode for å fullføre oppsettet. + step1: Først, installer en app for engangskoder (slik som {a} eller {b}) på en enhet. + step3Title: Skriv inn en autentiseringskode + renewTOTPCancel: Avbryt + securityKeyName: Oppgi et nøkkelnavn + renewTOTPOk: Rekonfigurer + registerSecurityKey: Registrer en sikkerhetsnøkkel + step2: Deretter kan du scanne QR-koden som vises på skjermen. + registerTOTP: Registrer engangskode-app + removeKeyConfirm: Sikker på at du vil slette nøkkelen {name}? + registerTOTPBeforeKey: Sett opp en autentiserings-app for å registrere en sikkerhetsnøkkel. + chromePasskeyNotSupported: Passkeys i Chrome er foreløpig ikke støttet. + renewTOTPConfirm: Dette vil føre til at kodene fra den forrige appen din vil slutte + å virke + renewTOTP: Rekonfigurer autentiserings-app + securityKeyNotSupported: Nettleseren din tillater ikke sikkerhetsnøkler. + step2Click: Når du klikker på QR-koden kan du registrere den som en tofaktor-pålogging + på en sikkerhetsnøkkel eller engangskode-app. + tapSecurityKey: Følg nettleseren for å registrere en sikkerhetsnøkkel eller passkey + step4: Fra nå av vil du alltid bli bedt om en engangskode når du logger inn. + step2Url: 'Du kan også skrive inn denne URL-en hvis du bruker et program på en PC + til tofaktor-pålogging:' +inputNotMatch: Input stemmer ikke +_ffVisibility: + public: Offentlig + private: Privat + followers: Synlig bare for følgere +_weekday: + wednesday: Onsdag + tuesday: Tirsdag + sunday: Søndag + saturday: Lørdag + monday: Mandag + friday: Fredag + thursday: Torsdag +poll: Avstemning +_instanceCharts: + users: Forskjell i antall brukere + usersTotal: Kumulativt antall brukere + cacheSize: Forskjell i mellomlagring + ffTotal: Kumulativt antall fulgte brukere / følgere + requests: Forespørsler + cacheSizeTotal: Kumulativ total mellomlagring + ff: 'Forskjell i antall fulgte brukere / følgere ' + filesTotal: Kumulativt antall filer + files: Forskjell i antall filer + notes: Forskjell i antall poster + notesTotal: Kumulativt antall poster +localOnly: Bare lokalt +navbar: Navigasjonsfelt +_visibility: + localOnly: Bare lokalt + followersDescription: Synlig bare for dine følgere og brukere nevnt i posten + specified: Direkte + home: Unotert + localOnlyDescription: Bare synlig for brukere på denne tjeneren + specifiedDescription: Synlig bare for spesifiserte brukere + public: Offentlig + homeDescription: Bare post til hjem-tidslinjen + followers: Følgere + publicDescription: Postene dine være bli synlige i alle offentlige tidslinjer +_poll: + at: Sett slutt-tidspunkt + votesCount: '{n} stemmer' + infinite: Aldri + expiration: Avslutt avstemning + totalVotes: '{n} stemmer totalt' + remainingDays: '{d} dager og {h} timer igjen' + deadlineTime: Tid + remainingHours: '{h} timer og {m} minutter igjen' + canMultipleVote: Tillat flervalg + closed: Avsluttet + showResult: Vis resultat + after: Slutt etter gitt tid + deadlineDate: Sluttdato + noOnlyOneChoice: Du må legge inn minst to valg + remainingMinutes: '{m} minutter og {s} sekunder igjen' + voted: Stemt + vote: Stem + remainingSeconds: '{s} sekunder igjen' + choiceN: Valg {n} + noMore: Du kan ikke legge til flere valg + duration: Varighet +move: Flytt +_filters: + notesAfter: Poster etter + followersOnly: Bare de som følger deg + fromDomain: Fra domene + withFile: Med fil + notesBefore: Poster før + fromUser: Fra bruker + followingOnly: Bare de du følger +_feeds: + copyFeed: Kopier nyhetsstrøm + atom: Atom + rss: RSS + jsonFeed: JSON-strøm +sendPushNotificationReadMessageCaption: Et varsel med teksten "{emptyPushNotificationMessage}" + vil snart bli vist. Dette kan øke batteribruken på enheten dersom den er batteridrevet. +customSplashIconsDescription: URL-er til egendefinerte ikoner til oppstartsskjermbildet. + En av dem vil bli lastet tilfeldig når en bruker laster inn siden. Pass på at bildene + er på statiske URL-er, fortrinnsvis i størrelsen 192x192 piksler. +instanceDefaultThemeDescription: Skriv inn temakode i objektformat. +deletePasskeys: Slett passkeys +_cw: + chars: '{count} tegn' + show: Vis innhold + files: '{count} fil(er)' + hide: Skjul +_timelines: + local: Lokal + home: Hjem + recommended: Foreslått + global: Global + social: Sosial +serviceworkerInfo: Må være påslått for push-varsler. +detectPostLanguage: Automatisk detekter språk og vis en oversettelsesknapp for poster + på andre språk +_auth: + copyAsk: 'Lim inn denne koden i applikasjonen:' + callback: Går tilbake til applikasjonen + shareAccess: Vil du gi "{name}" tilgang til denne kontoen? + denied: Tilgang avvist + permissionAsk: 'Denne applikasjonen ber om følgende tilganger:' + allPermissions: Full tilgang til kontoen + pleaseGoBack: Gå tilbake til applikasjonen + shareAccessAsk: Er du sikker på at du vil gi denne applikasjonen lov til å gå inn + på kontoen din? +youHaveUnreadAnnouncements: Du har uleste kunngjøringer +featured: Fremhevet +pushNotification: Push-varsler +delete2faConfirm: Dette vil slå av 2FA på denne kontoen, og kan ikke omgjøres. Fortsette? +indexableDescription: Tillat innebygget søk å vise dine offentlige poster +splash: Oppstartsskjerm +_menuDisplay: + sideIcon: Side (Ikoner) + hide: Skjul + sideFull: Side + top: Topp +enableIdenticonGeneration: Slå på generering av identikoner +_skinTones: + medium: Medium + dark: Mørk + yellow: Gul + mediumDark: Middels mørk + light: Lys + mediumLight: Middels lys +_instanceMute: + instanceMuteDescription2: Skill med linjeskift + instanceMuteDescription: Dette vil stumme alle poster og deling fra de opplistede + tjenerne, inkludert poster som svarer på en post fra en stummet tjener. + title: Skjuler poster fra opplistede tjenere. + heading: Liste av tjenere som skal stummes +_messaging: + groups: Grupper + dms: Privat +_time: + day: Dag(er) + hour: Time(r) + minute: Minutt(er) + second: Sekund(er) +addRe: Legg til "re:" i begynnelsen av en kommentar til en post med innholdsadvarsel +donationLink: Lenke til donasjons-side +createNewClip: Nytt utklipp +removeQuote: Fjern sitat +showUpdates: Vis et sprettoppvindu når Firefish oppdateres +renotesCount: Antall sendte delinger +type: Type +remoteOnly: Bare eksternt +clipsDesc: Utklipp er som kategoriserte bokmerker du kan dele med andre. Du kan lage + utklipp fra menyen til individuelle poster. +unclip: Fjern utklipp +quitFullView: Forlat full visning +exportZip: Eksporter zip-fil +desktop: Skrivebord +botProtection: Bot-beskyttelse +_signup: + almostThere: Nesten der + emailAddressInfo: Oppgi epost-adressen din. Den vil ikke bli synlig for andre. + emailSent: En bekreftelses-epost er sendt til epost-adressen ({email}). Klikk på + lenken i eposten for å fullføre registrering. +beta: Beta +renotedCount: Antall delinger av dine poster +unsubscribePushNotification: Slå av push-varsler +sample: Eksempel +cannotUploadBecauseExceedsFileSizeLimit: Filen kan ikke lastes opp fordi den er større + enn maks tillatt filstørrelse. +remindMeLater: Kanskje senere +adminCustomCssWarn: Denne innstillingen må bare brukes hvis du vet hva den gjør. Ugyldige + verdier kan få klienten til å feile for alle brukere. Bruk brukerinnstillingene + for å teste at CSS fungerer som den skal. +account: Konto +activeEmailValidationDescription: Slår på strengere sjekk av epost-adresser, inkludert + sjekking for engangs-adresser og om den faktisk kan kommuniseres med. Når innstillingen + er av vil det bare sjekkes at epost-adressen er syntaktisk riktig. +clips: Utklipp +verifiedLink: Verifisert lenke +secureModeInfo: Ved forespørsler fra andre tjenere, ikke send tilbake uten bevis. +isPatron: Firefish-patron +cannotUploadBecauseInappropriate: Filen ble ikke lastet opp fordi den er detektert + som mulig NSFW. +showAds: Vis samfunns-banner +enterSendsMessage: Trykk enter for å sende meldinger. (Hvis avslått må du trykke Ctrl + + enter) +confirmToUnclipAlreadyClippedNote: Denne posten er allerede en del av utklippet "{name}". + Vil du fjerne den fra dette utklippet i stedet? +showWithSparkles: Vis med gnister +emojiPackCreator: Emoji-pakke-bygger +importZip: Importer zip-fil +pushNotificationAlreadySubscribed: Push-varsler er allerede påslått +ratio: Forhold +pushNotificationNotSupported: Nettleseren eller tjeneren tillater ikke push-varsler +accountDeletionInProgress: Sletting av konto pågår +indexable: Indekserbar +shuffle: Stokket +sensitiveMediaDetection: Deteksjon av NSFW-media +delete2fa: Slå av tofaktorautentisering (2FA) +isLocked: Denne kontoen har følgende godkjenninger +languageForTranslation: Oversettelsesspråk for poster +customSplashIcons: URL-er til egendefinerte oppstartsskjerm-ikoner +_instanceTicker: + always: Alltid vis + none: Aldri vis + remote: Vis for eksterne brukere +confirm: Bekreft +origin: Kilde +label: Etikett +customMOTDDescription: Egendefinerte meldinger for dagens melding på oppstartsskjermbildet. + Linjeskift mellom meldinger. En tilfeldig melding vil bli vist hver gang en bruker + laster inn siden. +enableAutoSensitive: Automatisk markering av NSFW +neverShow: Ikke vis igjen +removeMember: Fjern medlem +clip: Utklipp +sendPushNotificationReadMessage: Slett push-varsler når den relevante informasjonen + er lest +enableAutoSensitiveDescription: Tillat automatisk deteksjon og markering av NSFW basert + på maskinlære der det er mulig. Selv om du slår av dette kan det være påslått for + hele tjeneren. +subscribePushNotification: Slå på push-varsler +failedToUpload: Opplasting feilet +speed: Fart +undeck: Forlat kolonnevisning +deck: Kolonner +_experiments: + title: Eksperimenter + enablePostImports: Slå på post-importer + postImportsCaption: Lar brukere importere poster fra kontoer på Firefish, Misskey, + Mastodon, Akkoma eller Pleroma. Den ekstra lasten kan forårsake tregere tjeneste. +_dialog: + charactersBelow: 'Ikke nok tagn! Skrevet: {current}/Grense: {min}' + charactersExceeded: 'Maks antall tegn er overskredet! Skrevet: {current}/Grense: + {max}' diff --git a/locales/pl-PL.yml b/locales/pl-PL.yml index 571f6af951..e0af7d72ec 100644 --- a/locales/pl-PL.yml +++ b/locales/pl-PL.yml @@ -1,7 +1,7 @@ _lang_: "Polski" -headlineMisskey: "Otwartoźródłowa, zdecentralizowana sieć społecznościowa, która zawsze +headlineFirefish: "Otwartoźródłowa, zdecentralizowana sieć społecznościowa, która zawsze będzie darmowa! 🚀" -introMisskey: "Hej! Calckey to otwartoźródłowa oraz zdecentralizowana sieć społecznościowa, +introFirefish: "Hej! Firefish to otwartoźródłowa oraz zdecentralizowana sieć społecznościowa, która zawsze będzie darmowa! 🚀" monthAndDay: "{month}-{day}" search: "Szukaj" @@ -150,7 +150,7 @@ flagAsBot: "To konto jest botem" flagAsBotDescription: "Jeżeli ten kanał jest kontrolowany przez jakiś program, ustaw tę opcję. Jeżeli włączona, będzie działać jako flaga informująca innych programistów, aby zapobiegać nieskończonej interakcji z różnymi botami i dostosowywać wewnętrzne - systemy Calckey, traktując konto jako bota." + systemy Firefish, traktując konto jako bota." flagAsCat: "Czy jesteś kotem? 😺" flagAsCatDescription: "Dostaniesz kocie uszka, oraz będziesz mówić jak kot!" flagShowTimelineReplies: "Pokazuj odpowiedzi na osi czasu" @@ -211,7 +211,7 @@ noUsers: "Brak użytkowników" editProfile: "Edytuj profil" noteDeleteConfirm: "Czy na pewno chcesz usunąć ten wpis?" pinLimitExceeded: "Nie możesz przypiąć więcej wpisów" -intro: "Zakończono instalację Calckey! Utwórz konto administratora." +intro: "Zakończono instalację Firefish! Utwórz konto administratora." done: "Gotowe" processing: "Przetwarzanie" preview: "Podgląd" @@ -396,7 +396,7 @@ exploreFediverse: "Eksploruj Fediwersum" popularTags: "Tagi na czasie" userList: "Listy" about: "Informacje" -aboutMisskey: "O Calckey" +aboutFirefish: "O Firefish" administrator: "Admin" token: "Token" twoStepAuthentication: "Uwierzytelnianie dwuskładnikowe" @@ -547,7 +547,7 @@ ascendingOrder: "Rosnąco" descendingOrder: "Malejąco" scratchpad: "Brudnopis" scratchpadDescription: "Brudnopis to środowisko dla eksperymentów z AiScript. Możesz - pisać, wykonywać i sprawdzać wyniki interakcji skryptu z Calckey." + pisać, wykonywać i sprawdzać wyniki interakcji skryptu z Firefish." output: "Wyjście" script: "Skrypt" disablePagesScript: "Wyłącz AiScript na Stronach" @@ -674,7 +674,7 @@ unclip: "Odczep" confirmToUnclipAlreadyClippedNote: "Ten wpis jest już częścią klipu \"{name}\". Czy chcesz ją usunąć z tego klipu?" public: "Publiczny" -i18nInfo: "Calckey jest tłumaczone na wiele języków przez wolontariuszy. Możesz pomóc +i18nInfo: "Firefish jest tłumaczone na wiele języków przez wolontariuszy. Możesz pomóc na {link}." manageAccessTokens: "Zarządzaj tokenami dostępu" accountInfo: "Informacje o koncie" @@ -825,7 +825,7 @@ hashtags: "Hashtag" troubleshooting: "Rozwiązywanie problemów" useBlurEffect: "Użyj efektów rozmycia w UI" learnMore: "Dowiedz się więcej" -misskeyUpdated: "Calckey zostało zaktualizowane!" +misskeyUpdated: "Firefish zostało zaktualizowane!" whatIsNew: "Pokaż zmiany" translate: "Przetłumacz" translatedFrom: "Przetłumaczone z {x}" @@ -987,14 +987,14 @@ _registry: keys: "Klucz" domain: "Domena" createKey: "Utwórz klucz" -_aboutMisskey: - about: "Calckey jest forkiem Misskey utworzonym przez ThatOneCalculator, rozwijanym +_aboutFirefish: + about: "Firefish jest forkiem Misskey utworzonym przez ThatOneCalculator, rozwijanym od 2022." contributors: "Główni twórcy" allContributors: "Wszyscy twórcy" source: "Kod źródłowy" - translation: "Tłumacz Calckey" - donate: "Przekaż darowiznę na Calckey" + translation: "Tłumacz Firefish" + donate: "Przekaż darowiznę na Firefish" morePatrons: "Naprawdę doceniam wsparcie ze strony wielu niewymienionych tu osób. Dziękuję! 🥰" patrons: "Wspierający" @@ -1004,10 +1004,10 @@ _nsfw: force: "Ukrywaj wszystkie media" _mfm: cheatSheet: "Ściąga MFM" - intro: "MFM jest językiem składniowym używanym przez m.in. Calckey, forki *key (w - tym Calckey), oraz Akkomę, który może być użyty w wielu miejscach. Tu znajdziesz + intro: "MFM jest językiem składniowym używanym przez m.in. Firefish, forki *key (w + tym Firefish), oraz Akkomę, który może być użyty w wielu miejscach. Tu znajdziesz listę wszystkich możliwych elementów składni MFM." - dummy: "Calckey rozszerza świat Fediwersum" + dummy: "Firefish rozszerza świat Fediwersum" mention: "Wspomnij" mentionDescription: "Używając znaku @ i nazwy użytkownika, możesz określić danego użytkownika." @@ -1224,7 +1224,7 @@ _time: hour: "godz." day: "dzień" _tutorial: - title: "Jak korzystać z Calckey" + title: "Jak korzystać z Firefish" step1_1: "Witamy!" step1_2: "Pozwól, że Cię skonfigurujemy. Będziesz działać w mgnieniu oka!" step2_1: "Najpierw, proszę wypełnij swój profil." @@ -1252,9 +1252,9 @@ _tutorial: step5_7: "Globalna {icon} oś czasu to miejsce, gdzie możesz zobaczyć posty z każdej innej połączonej instancji." step6_1: "Więc, czym to jest to miejsce?" - step6_2: "Cóż, nie dołączył*ś po prostu do Calckey. Dołączył*ś do portalu do Fediverse, + step6_2: "Cóż, nie dołączył*ś po prostu do Firefish. Dołączył*ś do portalu do Fediverse, połączonej sieci tysięcy serwerów, zwanych instancjami." - step6_3: "Każdy serwer działa w inny sposób, i nie wszystkie serwery używają Calckey. + step6_3: "Każdy serwer działa w inny sposób, i nie wszystkie serwery używają Firefish. Ten jednak używa! Jest to trochę skomplikowane, ale w krótkim czasie załapiesz o co chodzi." step6_4: "A teraz idź, odkrywaj i baw się dobrze!" @@ -1404,7 +1404,8 @@ _profile: metadata: "Dodatkowe informacje" metadataEdit: "Edytuj dodatkowe informacje" metadataDescription: "Możesz wyświetlać do czterech sekcji dodatkowych informacji - na swoim profilu." + na swoim profilu. Możesz dodać tag {a} lub tag {l} z {rel}, aby zweryfikować link + w swoim profilu!" metadataLabel: "Etykieta" metadataContent: "Treść" changeAvatar: "Zmień awatar" @@ -1848,7 +1849,7 @@ moveAccountDescription: Ten proces jest nieodwracalny. Upewnij się, że utworzy w formacie @osoba@serwer.com moveFrom: Przejdź ze starego konta na obecne moveFromLabel: 'Konto które przenosisz:' -showUpdates: Pokaż pop-up po aktualizacji Calckey +showUpdates: Pokaż pop-up po aktualizacji Firefish swipeOnDesktop: Zezwól na przeciąganie w stylu mobilnym na desktopie moveFromDescription: To utworzy alias twojego starego konta, w celu umożliwienia migracji z tamtego konta na to. Zrób to ZANIM rozpoczniesz przenoszenie się z tamtego konta. @@ -1915,9 +1916,9 @@ objectStorageBaseUrlDesc: "URL stosowany jako odniesienie. Podaj URL twojego CDN albo proxy, jeśli używasz któregokolwiek.\nDla S3 użyj 'https://.s3.amazonaws.com', a dla GCS i jego odpowiedników użyj 'https://storage.googleapis.com/', itd." sendErrorReportsDescription: "Gdy ta opcja jest włączona, szczegółowe informacje o - błędach będą udostępnianie z Calckey gdy wystąpi problem, pomagając w ulepszaniu - Calckey.\nZawrze to informacje takie jak wersja twojego systemu operacyjnego, przeglądarki, - Twoja aktywność na Calckey itd." + błędach będą udostępnianie z Firefish gdy wystąpi problem, pomagając w ulepszaniu + Firefish.\nZawrze to informacje takie jak wersja twojego systemu operacyjnego, przeglądarki, + Twoja aktywność na Firefish itd." privateModeInfo: Gdy ta opcja jest włączona, tylko serwery z białej listy mogą federować się z twoim serwerem. Wszystkie posty będą ukryte publicznie. oneHour: Godzina @@ -1970,7 +1971,7 @@ caption: Auto opis splash: Splash screen updateAvailable: Może być dostępna aktualizacja! logoImageUrl: URL grafiki loga -showAdminUpdates: Wskaż, że jest dostępna nowa wersja Calckey (tylko dla adminów) +showAdminUpdates: Wskaż, że jest dostępna nowa wersja Firefish (tylko dla adminów) hiddenTags: Ukryte hashtagi userSaysSomethingReason: '{name} powiedział* {reason}' customKaTeXMacroDescription: 'Skonfiguruj makra, aby łatwo pisać wyrażenia matematyczne! @@ -2014,7 +2015,7 @@ silencedInstancesDescription: Wypisz nazwy hostów serwerów, które chcesz wyci cannotUploadBecauseExceedsFileSizeLimit: Ten plik nie mógł być przesłany, ponieważ jego wielkość przekracza dozwolony limit. sendModMail: Wyślij Powiadomienie Moderacyjne -searchPlaceholder: Szukaj Calckey +searchPlaceholder: Szukaj Firefish jumpToPrevious: Przejdź do poprzedniej sekcji listsDesc: Listy umożliwiają tworzenie osi czasu z określonymi użytkownikami. Dostęp do nich można uzyskać na stronie osi czasu. diff --git a/locales/pt-PT.yml b/locales/pt-PT.yml index 3e15beebba..574afa851f 100644 --- a/locales/pt-PT.yml +++ b/locales/pt-PT.yml @@ -1,7 +1,7 @@ ---- _lang_: "Português" -headlineMisskey: "Uma rede ligada por notas" -introMisskey: "Bem-vindo! Calckey é um serviço de microblogue descentralizado de código aberto.\nCria \"notas\" e partilha o que te ocorre com todos à tua volta. 📡\nCom \"reações\" podes também expressar logo o que sentes às notas de todos. 👍\nExploremos um novo mundo! 🚀" +headlineFirefish: "Uma rede ligada por notas" +introFirefish: "Bem-vindo! Firefish é um serviço de microblogue descentralizado de + código aberto, gratuito para sempre! 🚀" monthAndDay: "{day}/{month}" search: "Buscar" notifications: "Notificações" @@ -44,7 +44,8 @@ copyContent: "Copiar conteúdos" copyLink: "Copiar hiperligação" delete: "Eliminar" deleteAndEdit: "Eliminar e editar" -deleteAndEditConfirm: "Tens a certeza que pretendes eliminar esta nota e editá-la? Irás perder todas as suas reações, renotas e respostas." +deleteAndEditConfirm: "Tens a certeza que pretendes eliminar esta nota e editá-la? + Irás perder todas as suas reações, renotas e respostas." addToList: "Adicionar a lista" sendMessage: "Enviar uma mensagem" copyUsername: "Copiar nome de utilizador" @@ -64,9 +65,11 @@ import: "Importar" export: "Exportar" files: "Ficheiros" download: "Descarregar" -driveFileDeleteConfirm: "Tens a certeza que pretendes apagar o ficheiro \"{name}\"? As notas que tenham este ficheiro anexado serão também apagadas." +driveFileDeleteConfirm: "Tens a certeza que pretendes apagar o ficheiro \"{name}\"\ + ? As notas que tenham este ficheiro anexado serão também apagadas." unfollowConfirm: "Tens a certeza que queres deixar de seguir {name}?" -exportRequested: "Pediste uma exportação. Este processo pode demorar algum tempo. Será adicionado à tua Drive após a conclusão do processo." +exportRequested: "Pediste uma exportação. Este processo pode demorar algum tempo. + Será adicionado à tua Drive após a conclusão do processo." importRequested: "Pediste uma importação. Este processo pode demorar algum tempo." lists: "Listas" noLists: "Não tens nenhuma lista" @@ -81,9 +84,12 @@ error: "Erro" somethingHappened: "Ocorreu um erro" retry: "Tentar novamente" pageLoadError: "Ocorreu um erro ao carregar a página." -pageLoadErrorDescription: "Isto é normalmente causado por erros de rede ou pela cache do browser. Experimenta limpar a cache e tenta novamente após algum tempo." -serverIsDead: "O servidor não está respondendo. Por favor espere um pouco e tente novamente." -youShouldUpgradeClient: "Para visualizar essa página, por favor recarregue-a para atualizar seu cliente." +pageLoadErrorDescription: "Isto é normalmente causado por erros de rede ou pela cache + do browser. Experimenta limpar a cache e tenta novamente após algum tempo." +serverIsDead: "O servidor não está respondendo. Por favor espere um pouco e tente + novamente." +youShouldUpgradeClient: "Para visualizar essa página, por favor recarregue-a para + atualizar seu cliente." enterListName: "Insira um nome para a lista" privacy: "Privacidade" makeFollowManuallyApprove: "Pedidos de seguimento precisam ser aprovados" @@ -108,7 +114,8 @@ sensitive: "Conteúdo sensível" add: "Adicionar" reaction: "Reações" reactionSetting: "Quais reações a mostrar no selecionador de reações" -reactionSettingDescription2: "Arraste para reordenar, clique para excluir, pressione + para adicionar." +reactionSettingDescription2: "Arraste para reordenar, clique para excluir, pressione + + para adicionar." rememberNoteVisibility: "Lembrar das configurações de visibilidade de notas" attachCancel: "Remover anexo" markAsSensitive: "Marcar como sensível" @@ -137,13 +144,18 @@ emojiUrl: "URL do Emoji" addEmoji: "Adicionar um Emoji" settingGuide: "Guia de configuração" cacheRemoteFiles: "Memória transitória de arquivos remotos" -cacheRemoteFilesDescription: "Se você desabilitar essa configuração, os arquivos remotos não serão armazenados em memória transitória e serão vinculados diretamente. Economiza o armazenamento do servidor, mas não gera miniaturas, o que aumenta o tráfego." +cacheRemoteFilesDescription: "Se você desabilitar essa configuração, os arquivos remotos + não serão armazenados em memória transitória e serão vinculados diretamente. Economiza + o armazenamento do servidor, mas não gera miniaturas, o que aumenta o tráfego." flagAsBot: "Marcar conta como robô" -flagAsBotDescription: "Se esta conta for operada por um programa, ative este sinalizador. Quando ativado, serve como um sinalizador para evitar o encadeamento de reações para outros programadores, e o manuseio do sistema do Calckey é adequado para ‘bots’." +flagAsBotDescription: "Se esta conta for operada por um programa, ative este sinalizador. + Quando ativado, serve como um sinalizador para evitar o encadeamento de reações + para outros programadores, e o manuseio do sistema do Firefish é adequado para ‘bots’." flagAsCat: "Marcar conta como gato" flagAsCatDescription: "Ative essa opção para marcar essa conta como gato." flagShowTimelineReplies: "Mostrar respostas na linha de tempo" -flagShowTimelineRepliesDescription: "Quando ativado, a linha do tempo mostra as respostas às outras notas do utilizador, além da nota do utilizador." +flagShowTimelineRepliesDescription: "Quando ativado, a linha do tempo mostra as respostas + às outras notas do utilizador, além da nota do utilizador." autoAcceptFollowed: "Aprove automaticamente os seguidores dos seguintes utilizadores" addAccount: "Adicionar Conta" loginFailed: "Não consegui logar" @@ -156,7 +168,10 @@ searchWith: "Buscar: {q}" youHaveNoLists: "Não tem nenhuma lista" followConfirm: "Tem certeza que quer deixar de seguir {name}?" proxyAccount: "Conta proxy" -proxyAccountDescription: "Uma conta proxy é uma conta que atua como seguidora remota para utilizadores sob determinadas condições. Por exemplo, quando um utilizador lista um utilizador remoto, a atividade não será entregue à instância, a menos que alguém esteja seguindo o utilizador listado, portanto, a conta proxy deve seguir." +proxyAccountDescription: "Uma conta proxy é uma conta que atua como seguidora remota + para utilizadores sob determinadas condições. Por exemplo, quando um utilizador + lista um utilizador remoto, a atividade não será entregue à instância, a menos que + alguém esteja seguindo o utilizador listado, portanto, a conta proxy deve seguir." host: "hospedeiro" selectUser: "Selecionar utilizador" recipient: "Morada" @@ -186,11 +201,15 @@ instanceInfo: "Informações da instância" statistics: "Estatisticas" clearQueue: "Limpar a fila" clearQueueConfirmTitle: "Quer limpar a fila?" -clearQueueConfirmText: "Postagens não entregues não serão mais entregues. Normalmente você não precisa fazer isso." +clearQueueConfirmText: "Postagens não entregues não serão mais entregues. Normalmente + você não precisa fazer isso." clearCachedFiles: "Limpar memória transitória" -clearCachedFilesConfirm: "Tem certeza de que deseja excluir todos os arquivos remotos armazenados em memória transitória?" +clearCachedFilesConfirm: "Tem certeza de que deseja excluir todos os arquivos remotos + armazenados em memória transitória?" blockedInstances: "Instância bloqueada" -blockedInstancesDescription: "Defina os anfitriões das instâncias que deseja bloquear, separados por quebras de linha. Uma instância bloqueada não poderá interagir com esta instância." +blockedInstancesDescription: "Defina os anfitriões das instâncias que deseja bloquear, + separados por quebras de linha. Uma instância bloqueada não poderá interagir com + esta instância." muteAndBlock: "Silenciar e bloquear" mutedUsers: "Silenciar utilizador" blockedUsers: "Utilizadores bloqueados" @@ -198,7 +217,7 @@ noUsers: "Sem usuários" editProfile: "Editar Perfil" noteDeleteConfirm: "Deseja excluir esta nota?" pinLimitExceeded: "Não consigo mais fixar" -intro: "A instalação do Calckey está completa! Crie uma conta de administrador." +intro: "A instalação do Firefish está completa! Crie uma conta de administrador." done: "Concluído" processing: "Em Progresso" preview: "Pré-visualizar" @@ -238,7 +257,9 @@ saved: "Salvo" messaging: "Chat" upload: "Enviando" keepOriginalUploading: "Manter a imagem original" -keepOriginalUploadingDescription: "Mantenha a versão original ao carregar a imagem. Quando desligado, a imagem para publicação na web será gerada no navegador no momento do upload." +keepOriginalUploadingDescription: "Mantenha a versão original ao carregar a imagem. + Quando desligado, a imagem para publicação na web será gerada no navegador no momento + do upload." fromDrive: "\nDa unidade" fromUrl: "Da URL" uploadFromUrl: "Carregamento de URL" @@ -262,8 +283,8 @@ yearsOld: "{age} anos" registeredDate: "Data de registro" location: "Lugar, colocar" theme: "tema" -themeForLightMode: "Temas usados ​​no modo de luz" -themeForDarkMode: "Temas usados ​​no modo escuro" +themeForLightMode: "Tema a usar no Modo Diurno" +themeForDarkMode: "Temas usados no Modo Noturno" light: "Claro" dark: "Escuro" lightThemes: "Tema claro" @@ -271,7 +292,7 @@ darkThemes: "Tema escuro" syncDeviceDarkMode: "Sincronize com o modo escuro do dispositivo" drive: "Unidades" fileName: "Nome do Ficheiro" -selectFile: "Selecione os arquivos" +selectFile: "Selecione o arquivo" selectFiles: "Selecione os arquivos" selectFolder: "Selecionar uma pasta" selectFolders: "Selecionar uma pasta" @@ -286,8 +307,9 @@ emptyFolder: "A pasta está vazia" unableToDelete: "Não é possível eliminar" inputNewFileName: "Por favor, digite um novo nome para a pasta!" inputNewDescription: "Insira uma nova legenda" -inputNewFolderName: "Por favor, digite um novo nome para a pasta!" -circularReferenceFolder: "A pasta de destino é uma subpasta da pasta que você deseja mover." +inputNewFolderName: "Por favor, digite um novo nome para a pasta" +circularReferenceFolder: "A pasta de destino é uma subpasta da pasta que você deseja + mover." hasChildFilesOrFolders: "Esta pasta não está vazia e não pode ser excluída." copyUrl: "Copiar URL" rename: "Renomear" @@ -321,7 +343,8 @@ connectService: "Conectar" disconnectService: "Desconectar" enableLocalTimeline: "Ativar linha do tempo local" enableGlobalTimeline: "Ativar linha do tempo global" -disablingTimelinesInfo: "Se você desabilitar essas linhas do tempo, administradores e moderadores ainda poderão usá-las por conveniência." +disablingTimelinesInfo: "Se você desabilitar essas linhas do tempo, administradores + e moderadores ainda poderão usá-las por conveniência." registration: "Registar" enableRegistration: "Permitir que qualquer pessoa se registre" invite: "Convidar" @@ -333,9 +356,11 @@ bannerUrl: "URL da imagem do ‘banner’" backgroundImageUrl: "URL da imagem de fundo" basicInfo: "Informações básicas" pinnedUsers: "Utilizador fixado" -pinnedUsersDescription: "Descreva os utilizadores que você deseja fixar na página \"Localizar\", etc., separados por quebras de linha." +pinnedUsersDescription: "Descreva os utilizadores que você deseja fixar na página + \"Localizar\", etc., separados por quebras de linha." pinnedPages: "Página fixada" -pinnedPagesDescription: "Descreva o caminho da página que você deseja fixar na página superior da instância, separada por quebras de linha." +pinnedPagesDescription: "Descreva o caminho da página que você deseja fixar na página + superior da instância, separada por quebras de linha." pinnedClipId: "ID do clipe a ser fixado" pinnedNotes: "Post fixado" hcaptcha: "hCaptcha" @@ -346,18 +371,21 @@ recaptcha: "reCAPTCHA" enableRecaptcha: "Habilitar reCAPTCHA" recaptchaSiteKey: "Chave do sítio ‘web’" recaptchaSecretKey: "Chave secreta" -avoidMultiCaptchaConfirm: "O uso de vários captchas pode causar interferência. Deseja desativar outros captchas? Você também pode cancelar e deixar vários captchas ativados." +avoidMultiCaptchaConfirm: "O uso de vários captchas pode causar interferência. Deseja + desativar outros captchas? Você também pode cancelar e deixar vários captchas ativados." antennas: "Antenas" manageAntennas: "Gestão de antena" name: "Nome" antennaSource: "Origem de entrada" antennaKeywords: "Palavras-chave recebidas" antennaExcludeKeywords: "Palavras-chave negativas" -antennaKeywordsDescription: "Se você separá-lo com um espaço, será uma especificação AND, e se você separá-lo com uma quebra de linha, será uma especificação OR." +antennaKeywordsDescription: "Se você separá-lo com um espaço, será uma especificação + AND, e se você separá-lo com uma quebra de linha, será uma especificação OR." notifyAntenna: "Notificar novas notas" withFileAntenna: "Apenas notas com arquivos anexados" enableServiceworker: "Ative as notificações push para o seu navegador" -antennaUsersDescription: "Especificar nomes de utilizador separados por quebras de linha" +antennaUsersDescription: "Especificar nomes de utilizador separados por quebras de + linha" caseSensitive: "Maiúsculas e minúsculas" withReplies: "Incluindo resposta" connectedTo: "Você está conectado à seguinte conta" @@ -376,7 +404,7 @@ exploreFediverse: "Explorar Fediverse" popularTags: "Tags populares" userList: "Listas" about: "Informações" -aboutMisskey: "Sobre Calckey" +aboutFirefish: "Sobre Firefish" administrator: "Administrador" token: "Símbolo" twoStepAuthentication: "Verificação em duas etapas" @@ -433,15 +461,19 @@ showFeaturedNotesInTimeline: "Mostrar notas recomendadas na linha do tempo" objectStorage: "Armazenamento de objetos" useObjectStorage: "Usar armazenamento de objetos" objectStorageBaseUrl: "URL base" -objectStorageBaseUrlDesc: "O URL usado para referência. Se você estiver usando um CDN ou Proxy, seu URL, S3:'https: // .s3.amazonaws.com', GCS, etc .:'https://storage.googleapis.com/ ' ." +objectStorageBaseUrlDesc: "O URL usado para referência. Se você estiver usando um + CDN ou Proxy, seu URL, S3:'https: // .s3.amazonaws.com', GCS, etc .:'https://storage.googleapis.com/ + ' ." objectStorageBucket: "Bucket" objectStorageBucketDesc: "Especifique o nome do bucket do serviço a ser usado." objectStoragePrefix: "Prefixo" objectStoragePrefixDesc: "Ele é armazenado neste diretório de prefixo." objectStorageEndpoint: "Ponto final" -objectStorageEndpointDesc: "Especifique vazio para S3, caso contrário, especifique o ponto final para cada serviço. Especifique como''ou': '." +objectStorageEndpointDesc: "Especifique vazio para S3, caso contrário, especifique + o ponto final para cada serviço. Especifique como''ou': '." objectStorageRegion: "Região" -objectStorageRegionDesc: "Especifique uma região como 'xx-east-1'. Caso seu serviço não tenha o conceito de região, ele deve estar vazio ou 'us-east-1'." +objectStorageRegionDesc: "Especifique uma região como 'xx-east-1'. Caso seu serviço + não tenha o conceito de região, ele deve estar vazio ou 'us-east-1'." objectStorageUseSSL: "Usar SSL" objectStorageUseSSLDesc: "Desative-o se não quiser usar https para conexões de API" objectStorageUseProxy: "Usar proxy" @@ -449,7 +481,8 @@ objectStorageUseProxyDesc: "Se você não usa proxy para conexão de API, desati objectStorageSetPublicRead: "Definir 'public-read' ao fazer o upload" serverLogs: "Registro do servidor" deleteAll: "Apagar Tudo" -showFixedPostForm: "Exibir o formulário de postagem na parte superior da linha do tempo" +showFixedPostForm: "Exibir o formulário de postagem na parte superior da linha do + tempo" newNoteRecived: "Nova nota recebida" sounds: "Sons" listen: "Ouvir" @@ -618,7 +651,8 @@ _pages: _dailyRannum: arg1: "Valor mínimo" arg2: "Valor máximo" - dailyRandomPick: "Escolher aleatoriamente de uma lista (Muda uma vez por dia para cada usuário)" + dailyRandomPick: "Escolher aleatoriamente de uma lista (Muda uma vez por dia + para cada usuário)" _dailyRandomPick: arg1: "Listas" seedRandom: "Aleatório (com semente)" @@ -634,7 +668,8 @@ _pages: _seedRandomPick: arg1: "Semente" arg2: "Listas" - DRPWPM: "Escolher aleatoriamente de uma lista ponderada (Muda uma vez por dia para cada usuário)" + DRPWPM: "Escolher aleatoriamente de uma lista ponderada (Muda uma vez por dia + para cada usuário)" _DRPWPM: arg1: "Lista de texto" pick: "Escolhe a partir da lista" @@ -665,7 +700,8 @@ _pages: _for: arg1: "Número de repetições" arg2: "Ação" - typeError: "Espaço {slot} aceita valores de tipo \"{expect}\", mas o valor dado é do tipo \"{actual}\"!" + typeError: "Espaço {slot} aceita valores de tipo \"{expect}\", mas o valor dado + é do tipo \"{actual}\"!" thereIsEmptySlot: "O espaço {slot} está vazio!" types: string: "Texto" @@ -730,3 +766,5 @@ _deck: list: "Listas" mentions: "Menções" direct: "Notas diretas" +editNote: Editar post +edited: Editado a {date} às {time} diff --git a/locales/pt_BR.yml b/locales/pt_BR.yml index 2cc22c86ab..f8fb651182 100644 --- a/locales/pt_BR.yml +++ b/locales/pt_BR.yml @@ -1,13 +1,13 @@ username: Nome de usuário ok: OK _lang_: Inglês -headlineMisskey: Uma plataforma de mídia social descentralizada e de código aberto +headlineFirefish: Uma plataforma de mídia social descentralizada e de código aberto que é gratuita para sempre! 🚀 search: Pesquisar gotIt: Entendi! -introMisskey: Bem vinde! Calckey é uma plataforma de mídia social descentralizada +introFirefish: Bem vindo! Firefish é uma plataforma de mídia social descentralizada e de código aberto que é gratuita para sempre! 🚀 -searchPlaceholder: Pesquise no Calckey +searchPlaceholder: Pesquise no Firefish notifications: Notificações password: Senha forgotPassword: Esqueci a senha @@ -85,3 +85,162 @@ noLists: Você não possui nenhuma lista following: Seguindo followers: Seguidores followsYou: Segue você +fetchingAsApObject: Buscando do Fediverse +timeline: Linha do tempo +favorite: Adicionar aos marcadores +favorites: Marcadores +unfavorite: Remover dos marcadores +favorited: Adicionado aos marcadores. +alreadyFavorited: Já foi adicionado aos marcadores. +download: Download +pageLoadError: Ocorreu um erro ao carregar a página. +pageLoadErrorDescription: Isso normalmente é causado por erros de rede ou pelo cache + do navegador. Tente limpar o cache e, depois de esperar um pouquinho, tente novamente. +serverIsDead: Esse servidos não está respondendo. Por favor espere um pouco e tente + novamente. +youShouldUpgradeClient: Para visualizar essa página, favor reiniciar para atualizar + seu cliente. +enterListName: Insira um nome para a lista +privacy: Privacidade +defaultNoteVisibility: Visibilidade padrão +makeFollowManuallyApprove: Pedidos de seguimento precisam de aprovação +follow: Seguir +followRequest: Seguir +followRequests: Pedidos de seguimento +unfollow: Parar de seguir +followRequestPending: Pedido de seguimento pendente +enterEmoji: Insira um emoji +itsOff: Desativado +itsOn: Ativado +removeReaction: Retirar sua reação +reactionSettingDescription2: Arraste para reordenar, clique para deletar, pressione + “+” para adicionar. +rememberNoteVisibility: Lembrar configurações de visibilidade de postagem +enterFileName: Preencha o nome do arquivo +block: Bloquear +unblock: Desbloquear +suspend: Suspender +blockConfirm: Você tem certeza de que quer bloquear esta conta? +unblockConfirm: Você tem certeza de que quer desbloquear esta conta? +suspendConfirm: Você tem certeza de que quer suspender esta conta? +selectList: Selecione uma lista +selectChannel: Selecione um canal +addEmoji: Adicionar Emoji +settingGuide: Configurações recomendadas +cacheRemoteFilesDescription: Quando esta configuração está desativada, arquivos remotos + serão carregados diretamente do servidor remoto. Desativar isso irá diminuir o uso + de armazenamento, mas aumentar o tráfego, já que as thumbnails não serão geradas. +flagAsBot: Marcar esta conta como robô +flagAsCat: Você é um gato? 😺 +flagAsCatDescription: Você receberá orelhas de gato e falará como um! +flagSpeakAsCat: Falar como um gato +dashboard: Painel +showFeaturedNotesInTimeline: Mostrar postagens em destaque nas linhas do tempo +objectStorage: Armazenamento de objetos +useObjectStorage: Utilizar armazenamento de objetos +objectStorageBaseUrl: URL base +objectStorageBucket: Balde +objectStorageBucketDesc: Por favor, especifique o nome do balde usado no seu provedor. +objectStorageRegion: Região +objectStorageRegionDesc: Especifique uma região como "xx-east-1". Se o seu serviço + não distingue entre as regiões, deixe esta em branco ou insira 'us-east-1'. +objectStorageUseSSL: Utilizar SSL +objectStorageUseSSLDesc: Desligue isso se você não utilizará HTTPS para conexões de + API +objectStorageUseProxy: Conecte-se por Proxy +lastUsedDate: Última utilização em +state: Estado +objectStorageUseProxyDesc: Desligue isso se você não utilizará um Proxy para conexões + com API +serverLogs: Logs de Servidor +details: Detalhes +nothing: Não há nada para ver aqui +installedDate: Autorizado em +sort: Ordenar +ascendingOrder: Ascendente +descendingOrder: Descendente +output: Saída +expandOnNoteClick: Abrir postagem ao clicar +updateRemoteUser: Atualizar informações do usuário remoto +deleteAllFiles: Excluir todos os arquivos +deleteAllFilesConfirm: Você tem certeza de que deseja excluir todos os arquivos? +yourAccountSuspendedTitle: Esta conta está suspensa +yourAccountSuspendedDescription: Esta conta foi suspensa por quebrar os termos de + serviço do servidor ou similares. Entre em contato com o administrador se você quiser + saber um motivo mais detalhado. Por favor, não crie uma nova conta. +menu: Menu +divider: Divisor +addItem: Adicionar Item +inboxUrl: URL da caixa de entrada +left: Esquerda +center: Centro +wide: Largo +narrow: Estreito +isModerator: Moderador +monthAndDay: '{day}/{month}' +pinned: Fixar ao perfil +pinnedNote: Postagem fixada +you: Você +clickToShow: Clique para exibir +showEmojisInReactionNotifications: Mostrar emojis nas notificações de reação +reactionSetting: Reações a exibir no seletor de reações +customEmojis: Emojis personalizados +emojis: Emojis +emojiName: Nome do Emoji +emoji: Emoji +emojiUrl: URL do Emoji +editWidgetsExit: Pronto +userSilenced: Este usuário está sendo silenciado. +objectStoragePrefix: Prefixo +volume: Volume +objectStorageS3ForcePathStyle: Use URLs de endpoint baseadas em caminho +none: Nenhum +masterVolume: Volume mestre +showInPage: Mostrar na página +expandOnNoteClickDesc: Se desativado, você ainda pode abrir postagens no menu do botão + direito do mouse ou clicando no timestamp. +disablePagesScript: Desativar o AiScript nas Páginas +isPatron: Patrono do Firefish +invite: Convite +inMb: Em megabytes +iconUrl: URL do Ícone +basicInfo: Informações básicas +pinnedUsers: Usuários fixados +fontSize: Tamanho da fonte +noFollowRequests: Você não tem nenhuma solicitação de seguimento pendente +openImageInNewTab: Abrir imagens em nova guia +local: Local +remote: Remoto +total: Total +appearance: Aparência +accessibility: Acessibilidade +accountSettings: Configurações de Conta +numberOfDays: Número de dias +hideThisNote: Esconder esta postagem +objectStoragePrefixDesc: Os arquivos serão armazenados em diretórios com este prefixo. +objectStorageEndpointDesc: Deixe isso vazio se você estiver usando AWS S3, de outra + forma especifique o endpoint como '' ou ':', dependendo do serviço + que você está usando. +deleteAll: Excluir tudo +showFixedPostForm: Exibir o formulário de postagem no topo da linha do tempo +newNoteRecived: Há novas postagens +sounds: Sons +chooseEmoji: Selecione um emoji +unableToProcess: A operação não pôde ser concluída +recentUsed: Recentemente usado +install: Instalar +uninstall: Desinstalar +installedApps: Aplicações Autorizadas +removeAllFollowing: Parar de seguir todos os usuários seguidos +removeAllFollowingDescription: Executar isso faz parar de seguir todas as contas de + {host}. Por favor, execute isso se o servidor, por exemplo, não existir mais. +userSuspended: Este usuário foi suspenso. +isAdmin: Administrador +receiveFollowRequest: Solicitação de seguir recebida +followRequestAccepted: Solicitação de seguir aceita +add: Adicionar +reaction: Reações +enableEmojiReactions: Ativar reações com emoji +attachCancel: Remover anexo +flagShowTimelineReplies: Mostrar respostas na linha do tempo +addAccount: Adicionar conta diff --git a/locales/ro-RO.yml b/locales/ro-RO.yml index ba51950e34..e9fa49f6c7 100644 --- a/locales/ro-RO.yml +++ b/locales/ro-RO.yml @@ -1,7 +1,7 @@ --- _lang_: "Română" -headlineMisskey: "O rețea conectată prin note" -introMisskey: "Bine ai venit! Calckey este un serviciu de microblogging open source și decentralizat.\nCreează \"note\" cu care să îți poți împărți gândurile cu oricine din jurul tău. 📡\nCu \"reacții\" îți poți expirma rapid părerea despre notele oricui. 👍\nHai să explorăm o lume nouă! 🚀" +headlineFirefish: "O rețea conectată prin note" +introFirefish: "Bine ai venit! Firefish este un serviciu de microblogging open source și decentralizat.\nCreează \"note\" cu care să îți poți împărți gândurile cu oricine din jurul tău. 📡\nCu \"reacții\" îți poți expirma rapid părerea despre notele oricui. 👍\nHai să explorăm o lume nouă! 🚀" monthAndDay: "{day}/{month}" search: "Caută" notifications: "Notificări" @@ -139,7 +139,7 @@ settingGuide: "Setări recomandate" cacheRemoteFiles: "Ține fișierele externe in cache" cacheRemoteFilesDescription: "Când această setare este dezactivată, fișierele externe sunt încărcate direct din instanța externă. Dezactivarea va scădea utilizarea spațiului de stocare, dar va crește traficul, deoarece thumbnail-urile nu vor fi generate." flagAsBot: "Marchează acest cont ca bot" -flagAsBotDescription: "Activează această opțiune dacă acest cont este controlat de un program. Daca e activată, aceasta va juca rolul unui indicator pentru dezvoltatori pentru a preveni interacțiunea în lanțuri infinite cu ceilalți boți și ajustează sistemele interne al Calckey pentru a trata acest cont drept un bot." +flagAsBotDescription: "Activează această opțiune dacă acest cont este controlat de un program. Daca e activată, aceasta va juca rolul unui indicator pentru dezvoltatori pentru a preveni interacțiunea în lanțuri infinite cu ceilalți boți și ajustează sistemele interne al Firefish pentru a trata acest cont drept un bot." flagAsCat: "Marchează acest cont ca pisică" flagAsCatDescription: "Activează această opțiune dacă acest cont este o pisică." flagShowTimelineReplies: "Arată răspunsurile în cronologie" @@ -198,7 +198,7 @@ noUsers: "Niciun utilizator" editProfile: "Editează profilul" noteDeleteConfirm: "Ești sigur că vrei să ștergi această notă?" pinLimitExceeded: "Nu poți mai fixa mai multe note" -intro: "Calckey s-a instalat! Te rog crează un utilizator admin." +intro: "Firefish s-a instalat! Te rog crează un utilizator admin." done: "Gata" processing: "Se procesează" preview: "Previzualizare" @@ -376,7 +376,7 @@ exploreFediverse: "Explorează Fediverse-ul" popularTags: "Taguri populare" userList: "Liste" about: "Despre" -aboutMisskey: "Despre Calckey" +aboutFirefish: "Despre Firefish" administrator: "Administrator" token: "Token" twoStepAuthentication: "Autentificare în doi pași" @@ -521,7 +521,7 @@ sort: "Sortează" ascendingOrder: "Crescător" descendingOrder: "Descrescător" scratchpad: "Scratchpad" -scratchpadDescription: "Scratchpad-ul oferă un mediu de experimentare în AiScript. Poți scrie, executa și verifica rezultatele acestuia interacționând cu Calckey în el." +scratchpadDescription: "Scratchpad-ul oferă un mediu de experimentare în AiScript. Poți scrie, executa și verifica rezultatele acestuia interacționând cu Firefish în el." output: "Ieșire" script: "Script" disablePagesScript: "Dezactivează AiScript în Pagini" diff --git a/locales/ru-RU.yml b/locales/ru-RU.yml index 8b3e05a17e..fada843e7a 100644 --- a/locales/ru-RU.yml +++ b/locales/ru-RU.yml @@ -1,7 +1,7 @@ _lang_: "Русский" -headlineMisskey: "Сеть, сплетённая из заметок" -introMisskey: "Calckey - это децентрализованная платформа социальных сетей с открытым\ - \ исходным кодом, которая свободна навсегда! \U0001F680" +headlineFirefish: "Сеть, сплетённая из заметок" +introFirefish: "Firefish - это децентрализованная платформа социальных сетей с открытым + исходным кодом, которая свободна навсегда! 🚀" monthAndDay: "{day}.{month}" search: "Поиск" notifications: "Уведомления" @@ -16,7 +16,7 @@ enterUsername: "Введите имя пользователя" renotedBy: "{user} делится" noNotes: "Нет ни одного поста" noNotifications: "Нет ни одного уведомления" -instance: "Инстанс" +instance: "Сервер" settings: "Настройки" basicSettings: "Основные настройки" otherSettings: "Прочие настройки" @@ -27,7 +27,7 @@ noAccountDescription: "Пользователь ничего не написал login: "Войти" loggingIn: "Выполняется вход" logout: "Выйти" -signup: "Регистрация" +signup: "Зарегистрироваться" uploading: "Загрузка..." save: "Сохранить" users: "Пользователи" @@ -44,14 +44,14 @@ copyContent: "Скопировать содержимое" copyLink: "Скопировать ссылку" delete: "Удалить" deleteAndEdit: "Удалить и отредактировать" -deleteAndEditConfirm: "Удалить этот пост и создать отредактированный? Все реакции,\ - \ ссылки и ответы на существующий будут потеряны." +deleteAndEditConfirm: "Удалить этот пост и создать отредактированный? Все реакции, + ссылки и ответы на существующий будут потеряны." addToList: "Добавить в список" sendMessage: "Отправить сообщение" copyUsername: "Скопировать имя пользователя" searchUser: "Поиск людей" reply: "Ответить" -loadMore: "Показать еще" +loadMore: "Загрузить ещё" showMore: "Показать еще" showLess: "Закрыть" youGotNewFollower: "Новый подписчик" @@ -65,11 +65,11 @@ import: "Импорт" export: "Экспорт" files: "Файлы" download: "Скачать" -driveFileDeleteConfirm: "Удалить файл «{name}»? Он будет удален со всех постов которые\ - \ содержат его как вложение." +driveFileDeleteConfirm: "Удалить файл «{name}»? Он будет удален со всех постов которые + содержат его как вложение." unfollowConfirm: "Удалить из подписок пользователя {name}?" -exportRequested: "Вы запросили экспорт. Это может занять некоторое время. Результат\ - \ будет добавлен на «Диск»." +exportRequested: "Вы запросили экспорт. Это может занять некоторое время. Результат + будет добавлен на «Диск»." importRequested: "Вы запросили импорт. Это может занять некоторое время." lists: "Списки" noLists: "Нет ни одного списка" @@ -84,9 +84,9 @@ error: "Ошибка" somethingHappened: "Что-то пошло не так" retry: "Повторить попытку" pageLoadError: "Не удалось загрузить страницу." -pageLoadErrorDescription: "Обычно это случается из-за сбоев в сети или кэша браузера.\ - \ Попробуйте очистить кэш, или подождать пару минут, а потом попытаться загрузить\ - \ страницу снова." +pageLoadErrorDescription: "Обычно это случается из-за сбоев в сети или кэша браузера. + Попробуйте очистить кэш, или подождать пару минут, а потом попытаться загрузить + страницу снова." serverIsDead: "Ответа от сервера нет. Пожалуйста, подождите немного и повторите попытку." youShouldUpgradeClient: "Чтобы просмотреть эту страницу, пожалуйста, обновите ее." enterListName: "Название списка" @@ -113,8 +113,8 @@ sensitive: "Содержимое не для всех" add: "Добавить" reaction: "Реакции" reactionSetting: "Реакции, отображаемые в палитре" -reactionSettingDescription2: "Расставляйте перетаскиванием, удаляйте нажатием, добавляйте\ - \ кнопкой «+»." +reactionSettingDescription2: "Расставляйте перетаскиванием, удаляйте нажатием, добавляйте + кнопкой «+»." rememberNoteVisibility: "Запоминать видимость постов" attachCancel: "Удалить вложение" markAsSensitive: "Отметить как «не для всех»" @@ -143,22 +143,22 @@ emojiUrl: "URL эмодзи" addEmoji: "Добавить эмодзи" settingGuide: "Рекомендуемые настройки" cacheRemoteFiles: "Кешировать внешние файлы" -cacheRemoteFilesDescription: "Когда эта настройка отключена, файлы с других сайтов\ - \ будут загружаться прямо оттуда. Это сэкономит место на сервере, но увеличит трафик,\ - \ так как не будут создаваться эскизы." +cacheRemoteFilesDescription: "Когда эта настройка отключена, файлы с других сайтов + будут загружаться прямо оттуда. Это сэкономит место на сервере, но увеличит трафик, + так как не будут создаваться эскизы." flagAsBot: "Аккаунт бота" -flagAsBotDescription: "Включите, если этот аккаунт управляется программой. Это позволит\ - \ системе Calckey учитывать это, а также поможет разработчикам других ботов предотвратить\ - \ бесконечные циклы взаимодействия." +flagAsBotDescription: "Включите, если этот аккаунт управляется программой. Это позволит + системе Firefish учитывать это, а также поможет разработчикам других ботов предотвратить + бесконечные циклы взаимодействия." flagAsCat: "Аккаунт кота" flagAsCatDescription: "Вы получите кошачьи ушки и будете говорить как кот!" flagShowTimelineReplies: "Показывать ответы на посты в ленте" -flagShowTimelineRepliesDescription: "Если этот параметр включен, то в ленте, в дополнение\ - \ к постам пользователя, отображаются ответы на другие посты пользователя." +flagShowTimelineRepliesDescription: "Если этот параметр включен, то в ленте, в дополнение + к постам пользователя, отображаются ответы на другие посты пользователя." autoAcceptFollowed: "Принимать подписчиков автоматически" addAccount: "Добавить учётную запись" loginFailed: "Неудачная попытка входа" -showOnRemote: "Перейти к оригиналу на сайт" +showOnRemote: "Открыть оригинал" general: "Общее" wallpaper: "Обои" setWallpaper: "Установить обои" @@ -167,17 +167,16 @@ searchWith: "Найденное «{q}»" youHaveNoLists: "У вас нет ни одного списка" followConfirm: "Подписаться на {name}?" proxyAccount: "Учётная запись прокси" -proxyAccountDescription: "Учетная запись прокси предназначена служить подписчиком\ - \ на пользователей с других сайтов. Например, если пользователь добавит кого-то\ - \ с другого сайта а список, деятельность того не отобразится, пока никто с этого\ - \ же сайта не подписан на него. Чтобы это стало возможным, на него подписывается\ - \ прокси." +proxyAccountDescription: "Учетная запись прокси предназначена служить подписчиком + на пользователей с других сайтов. Например, если пользователь добавит кого-то с + другого сайта а список, деятельность того не отобразится, пока никто с этого же + сайта не подписан на него. Чтобы это стало возможным, на него подписывается прокси." host: "Хост" selectUser: "Выберите пользователя" recipient: "Кому" annotation: "Описание" federation: "Федерация" -instances: "Инстанс" +instances: "Серверы" registeredAt: "Первое наблюдение" latestRequestSentAt: "Последний отправленный запрос" latestRequestReceivedAt: "Последний полученный запрос" @@ -187,7 +186,7 @@ charts: "Диаграммы" perHour: "По часам" perDay: "По дням" stopActivityDelivery: "Остановить отправку обновлений активности" -blockThisInstance: "Блокировать этот инстанс" +blockThisInstance: "Блокировать этот сервер" operations: "Операции" software: "Программы" version: "Версия" @@ -197,17 +196,17 @@ jobQueue: "Очередь заданий" cpuAndMemory: "Процессор и память" network: "Сеть" disk: "Диск" -instanceInfo: "Информация об инстансе" +instanceInfo: "Информация о сервере" statistics: "Статистика" clearQueue: "Очистить очередь" clearQueueConfirmTitle: "Очистить очередь?" -clearQueueConfirmText: "Всё, что осталось в очереди, не будет доставлено. Обычно эта\ - \ операция НЕ нужна." +clearQueueConfirmText: "Всё, что осталось в очереди, не будет доставлено. Обычно эта + операция НЕ нужна." clearCachedFiles: "Очистить кэш" clearCachedFilesConfirm: "Удалить все закэшированные файлы с других сайтов?" -blockedInstances: "Заблокированные инстансы" -blockedInstancesDescription: "Введите список инстансов, которые хотите заблокировать.\ - \ Они больше не смогут обмениваться с вашим инстансом." +blockedInstances: "Заблокированные серверы" +blockedInstancesDescription: "Введите список серверов, которые хотите заблокировать. + Они больше не смогут обмениваться с вашим сервером." muteAndBlock: "Скрытие и блокировка" mutedUsers: "Скрытые пользователи" blockedUsers: "Заблокированные пользователи" @@ -215,9 +214,9 @@ noUsers: "Нет ни одного пользователя" editProfile: "Редактировать профиль" noteDeleteConfirm: "Вы хотите удалить этот пост?" pinLimitExceeded: "Нельзя закрепить ещё больше постов" -intro: "Установка Calckey завершена! А теперь создайте учетную запись администратора." +intro: "Установка Firefish завершена! А теперь создайте учетную запись администратора." done: "Готово" -processing: "Обработка..." +processing: "Обработка" preview: "Предпросмотр" default: "По умолчанию" defaultValueIs: "По умолчанию: {value}" @@ -230,9 +229,9 @@ all: "Всё" subscribing: "Подписка" publishing: "Публикация" notResponding: "Нет ответа" -instanceFollowing: "Подписанные на инстансе" -instanceFollowers: "Подписчики инстанса" -instanceUsers: "Пользователи инстанса" +instanceFollowing: "Подписанные на сервере" +instanceFollowers: "Подписчики сервера" +instanceUsers: "Пользователи сервера" changePassword: "Изменить пароль" security: "Безопасность" retypedNotMatch: "Не совпадают." @@ -256,8 +255,8 @@ saved: "Сохранено" messaging: "Сообщения" upload: "Загрузить" keepOriginalUploading: "Сохранить исходное изображение" -keepOriginalUploadingDescription: "Сохраняет исходную версию при загрузке изображений.\ - \ Если выключить, то при загрузке браузер генерирует изображение для публикации." +keepOriginalUploadingDescription: "Сохраняет исходную версию при загрузке изображений. + Если выключить, то при загрузке браузер генерирует изображение для публикации." fromDrive: "С «диска»" fromUrl: "По ссылке" uploadFromUrl: "Загрузить по ссылке" @@ -273,8 +272,8 @@ agreeTo: "Я соглашаюсь с {0}" tos: "Пользовательское соглашение" start: "Начать" home: "Главная" -remoteUserCaution: "Это пользователь с другого сайта, поэтому информация может быть\ - \ неточной." +remoteUserCaution: "Это пользователь с другого сайта, поэтому информация может быть + неточной." activity: "Активность" images: "Изображения" birthday: "День рождения" @@ -305,7 +304,7 @@ emptyDrive: "Диск пуст" emptyFolder: "Папка пуста" unableToDelete: "Удаление невозможно" inputNewFileName: "Введите имя нового файла" -inputNewDescription: "Введите новую подпись" +inputNewDescription: "Введите новое описание" inputNewFolderName: "Пожалуйста, введите новое имя папки" circularReferenceFolder: "Вы пытаетесь переместить папку внутрь себя." hasChildFilesOrFolders: "Эта папка не пуста и не может быть удалена." @@ -324,8 +323,8 @@ unwatch: "Отписаться" accept: "Принять" reject: "Отклонить" normal: "Стабильно" -instanceName: "Название инстанса" -instanceDescription: "Описание инстанса" +instanceName: "Название сервера" +instanceDescription: "Описание сервера" maintainerName: "Имя администратора" maintainerEmail: "Электронная почта администратора" tosUrl: "Ссылка на пользовательское соглашение" @@ -341,8 +340,8 @@ connectService: "Подключиться" disconnectService: "Отключиться" enableLocalTimeline: "Включить локальную ленту" enableGlobalTimeline: "Включить глобальную ленту" -disablingTimelinesInfo: "У администраторов и модераторов есть доступ ко всем лентам,\ - \ даже если они отключены." +disablingTimelinesInfo: "У администраторов и модераторов есть доступ ко всем лентам, + даже если они отключены." registration: "Регистрация" enableRegistration: "Разрешить регистрацию" invite: "Пригласить" @@ -354,11 +353,11 @@ bannerUrl: "Ссылка на изображение в шапке" backgroundImageUrl: "Ссылка на фоновое изображение" basicInfo: "Общая информация" pinnedUsers: "Прикреплённый пользователь" -pinnedUsersDescription: "Перечислите по одному имени пользователя в строке. Пользователи,\ - \ перечисленные здесь, будут привязаны к закладке \"Изучение\"." +pinnedUsersDescription: "Перечислите по одному имени пользователя в строке. Пользователи, + перечисленные здесь, будут привязаны к закладке \"Изучение\"." pinnedPages: "Закрепленные страницы" -pinnedPagesDescription: "Если хотите закрепить страницы на главной сайта, сюда можно\ - \ добавить пути к ним, каждый в отдельной строке." +pinnedPagesDescription: "Если хотите закрепить страницы на главной сайта, сюда можно + добавить пути к ним, каждый в отдельной строке." pinnedClipId: "Идентификатор закреплённой подборки" pinnedNotes: "Закреплённые посты" hcaptcha: "hCaptcha" @@ -369,18 +368,17 @@ recaptcha: "reCAPTCHA" enableRecaptcha: "Включить reCAPTCHA" recaptchaSiteKey: "Ключ сайта" recaptchaSecretKey: "Секретный ключ" -avoidMultiCaptchaConfirm: "Несколько способов проверки могут мешать друг другу. Подтвердите,\ - \ если хотите отключить другие способы. Или нажмите «Отмена», чтобы оставить их\ - \ включёнными." +avoidMultiCaptchaConfirm: "Несколько способов проверки могут мешать друг другу. Подтвердите, + если хотите отключить другие способы. Или нажмите «Отмена», чтобы оставить их включёнными." antennas: "Антенны" manageAntennas: "Настройки антенн" name: "Название" antennaSource: "Источник антенны" antennaKeywords: "Ключевые слова" antennaExcludeKeywords: "Исключения" -antennaKeywordsDescription: "Пишите слова через пробел в одной строке, чтобы ловить\ - \ их появление вместе; на отдельных строках располагайте слова, или группы слов,\ - \ чтобы ловить любые из них." +antennaKeywordsDescription: "Пишите слова через пробел в одной строке, чтобы ловить + их появление вместе; на отдельных строках располагайте слова, или группы слов, чтобы + ловить любые из них." notifyAntenna: "Уведомлять о новых постах" withFileAntenna: "Только посты с вложениями" enableServiceworker: "Включить ServiceWorker" @@ -403,7 +401,7 @@ exploreFediverse: "Исследуйте Fediverse" popularTags: "Популярные теги" userList: "Списки" about: "Описание" -aboutMisskey: "О Calckey" +aboutFirefish: "О Firefish" administrator: "Администратор" token: "Токен" twoStepAuthentication: "Двухфакторная аутентификация" @@ -459,8 +457,8 @@ invitationCode: "Код приглашения" checking: "Проверка..." available: "Доступно" unavailable: "Не доступно" -usernameInvalidFormat: "Можно использовать только латинские буквы (A—Z, a—z), цифры\ - \ (0—9) и знак подчёркивания (_)." +usernameInvalidFormat: "Можно использовать только латинские буквы (A—Z, a—z), цифры + (0—9) и знак подчёркивания (_)." tooShort: "Слишком короткий" tooLong: "Слишком длинный" weakPassword: "Слабый пароль" @@ -469,8 +467,8 @@ strongPassword: "Надёжный пароль" passwordMatched: "Совпали" passwordNotMatched: "Не совпадают" signinWith: "Использовать {x} для входа" -signinFailed: "Невозможно войти в систему. Введенное вами имя пользователя или пароль\ - \ неверны." +signinFailed: "Невозможно войти в систему. Введенное вами имя пользователя или пароль + неверны." tapSecurityKey: "Нажмите на свой электронный ключ" or: "или" language: "Язык" @@ -511,29 +509,29 @@ showFeaturedNotesInTimeline: "Показывать в ленте посты из objectStorage: "Хранилище" useObjectStorage: "Использовать объектное хранилище" objectStorageBaseUrl: "Базовый адрес" -objectStorageBaseUrlDesc: "URL используемый для примера. Укажите URL-адрес вашего\ - \ CDN или прокси, если вы используете любой из них.\nДля S3 используйте 'https://.s3.amazonaws.com',\ - \ а для GCS и подобных сервисов используйте 'https://storage.googleapis.com/',\ - \ и т.п." -objectStorageBucket: "Bucket" -objectStorageBucketDesc: "Укажите название контейнера (Bucket) который используется\ - \ на выбранном сервисе." +objectStorageBaseUrlDesc: "URL используемый для примера. Укажите URL-адрес вашего + CDN или прокси, если вы используете любой из них.\nДля S3 используйте 'https://.s3.amazonaws.com', + а для GCS и подобных сервисов используйте 'https://storage.googleapis.com/', + и т.п." +objectStorageBucket: "Хранилище (Bucket)" +objectStorageBucketDesc: "Укажите название контейнера (Bucket) который используется + на выбранном сервисе." objectStoragePrefix: "Префикс" -objectStoragePrefixDesc: "Файлы будут храниться в директории, соответствующей указанному\ - \ здесь префиксу пути." +objectStoragePrefixDesc: "Файлы будут храниться в директории, соответствующей указанному + здесь префиксу пути." objectStorageEndpoint: "Конечная точка" -objectStorageEndpointDesc: "Если используете AWS S3, оставьте пустым. В остальных\ - \ случаях укажите конечную точку (endpoint) в форме «» или «:»,\ - \ так, как это описано в руководстве той службы, которую собираетесь использовать." +objectStorageEndpointDesc: "Если используете AWS S3, оставьте пустым. В остальных + случаях укажите конечную точку (endpoint) в форме «» или «:», + так, как это описано в руководстве той службы, которую собираетесь использовать." objectStorageRegion: "Регион" -objectStorageRegionDesc: "Укажите регион, например xx-east-1. Если ваша служба не\ - \ различает регионы, оставьте поле пустым, или впишите us-east-1." +objectStorageRegionDesc: "Укажите регион, например xx-east-1. Если ваша служба не + различает регионы, оставьте поле пустым, или впишите us-east-1." objectStorageUseSSL: "Использовать SSL" -objectStorageUseSSLDesc: "Отключите, если не собираетесь использовать протокол HTTPS\ - \ для обмена по API" +objectStorageUseSSLDesc: "Отключите, если не собираетесь использовать протокол HTTPS + для обмена по API" objectStorageUseProxy: "Использовать прокси" -objectStorageUseProxyDesc: "Отключите, если не будете испоьзовать прокси для соединений\ - \ по протоколу ObjectStorage" +objectStorageUseProxyDesc: "Отключите, если не будете испоьзовать прокси для соединений + по протоколу ObjectStorage" objectStorageSetPublicRead: "Устанавливать public-read при загрузке на сервер" serverLogs: "Журнал сервера" deleteAll: "Удалить всё" @@ -561,9 +559,9 @@ sort: "Сортировать" ascendingOrder: "по возрастанию" descendingOrder: "По убыванию" scratchpad: "Когтеточка" -scratchpadDescription: "«Когтеточка» — это место для опытов с AiScript. Здесь можно\ - \ писать программы, взаимодействующие с Calckey, запускать и смотреть что из этого\ - \ получается." +scratchpadDescription: "«Когтеточка» — это место для опытов с AiScript. Здесь можно + писать программы, взаимодействующие с Firefish, запускать и смотреть что из этого + получается." output: "Выходы" script: "Скрипт" disablePagesScript: "Отключить скрипты на «Страницах»" @@ -571,14 +569,14 @@ updateRemoteUser: "Обновить данные пользователя с е deleteAllFiles: "Удалить все файлы" deleteAllFilesConfirm: "Вы хотите удалить все файлы?" removeAllFollowing: "Удалить всех подписчиков" -removeAllFollowingDescription: "Отменить все подписки с домена {host}? Пожалуйста,\ - \ применяйте это действие, если инстанс больше не существует." +removeAllFollowingDescription: "Отменить все подписки с домена {host}? Пожалуйста, + применяйте это действие, если сервер больше не существует." userSuspended: "Эта учётная запись заморожена." userSilenced: "Этот пользователь был заглушен." yourAccountSuspendedTitle: "Эта учетная запись заблокирована" -yourAccountSuspendedDescription: "Эта учетная запись была заблокирована из-за нарушения\ - \ условий предоставления услуг сервера. Свяжитесь с администратором, если вы хотите\ - \ узнать более подробную причину. Пожалуйста, не создавайте новую учетную запись." +yourAccountSuspendedDescription: "Эта учетная запись была заблокирована из-за нарушения + условий предоставления услуг сервера. Свяжитесь с администратором, если вы хотите + узнать более подробную причину. Пожалуйста, не создавайте новую учетную запись." menu: "Меню" divider: "Линия-разделитель" addItem: "Добавить элемент" @@ -598,8 +596,8 @@ disablePlayer: "Выключить проигрыватель" expandTweet: "Развернуть твит" themeEditor: "Редактор темы оформления" description: "Описание" -describeFile: "Добавить подпись" -enterFileDescription: "Введите подпись" +describeFile: "Добавить описание" +enterFileDescription: "Введите описание" author: "Автор" leaveConfirm: "Вы не сохранили изменения. Хотите выйти и потерять их?" manage: "Управление" @@ -619,14 +617,14 @@ permission: "Разрешения" enableAll: "Включить все" disableAll: "Выключить всё" tokenRequested: "Открыть доступ к учётной записи" -pluginTokenRequestedDescription: "Это расширение сможет пользоваться разрешениями,\ - \ установленными здесь." +pluginTokenRequestedDescription: "Это расширение сможет пользоваться разрешениями, + установленными здесь." notificationType: "Тип уведомления" edit: "Изменить" emailServer: "Сервер электронной почты" enableEmail: "Включить обмен электронной почтой" -emailConfigInfo: "Используется для подтверждения адреса электронной почты и сброса\ - \ пароля" +emailConfigInfo: "Используется для подтверждения адреса электронной почты и сброса + пароля" email: "Электронная почта" emailAddress: "Адрес электронной почты" smtpConfig: "Конфигурация SMTP-сервера" @@ -634,14 +632,14 @@ smtpHost: "Хост" smtpPort: "Порт" smtpUser: "Имя пользователя" smtpPass: "Пароль" -emptyToDisableSmtpAuth: "Не заполняйте имя пользователя и пароль, чтобы отключить\ - \ аутентификацию в SMTP" +emptyToDisableSmtpAuth: "Не заполняйте имя пользователя и пароль, чтобы отключить + аутентификацию в SMTP" smtpSecure: "Использовать SSL/TLS для SMTP-соединений" smtpSecureInfo: "Выключите при использовании STARTTLS" testEmail: "Проверка доставки электронной почты" wordMute: "Скрытие слов" regexpError: "Ошибка в регулярном выражении" -instanceMute: "Глушение инстансов" +instanceMute: "Глушение серверов" userSaysSomething: "{name} что-то сообщает" makeActive: "Активировать" display: "Отображение" @@ -656,13 +654,13 @@ create: "Создать" notificationSetting: "Настройки уведомлений" notificationSettingDesc: "Выберите тип уведомлений для отображения." useGlobalSetting: "Использовать глобальные настройки" -useGlobalSettingDesc: "Если включено, будут использоваться настройки учётной записи.\ - \ Если включить, этот виджет можно будет настроить индивидуально." +useGlobalSettingDesc: "Если включено, будут использоваться настройки учётной записи. + Если включить, этот виджет можно будет настроить индивидуально." other: "Другие" regenerateLoginToken: "Создать новый токен для входа" -regenerateLoginTokenDescription: "Создаёт новый токен, используемый внутри программы\ - \ во время входа. Обычно в этом нет необходимости. При создании все устройства будут\ - \ отключены." +regenerateLoginTokenDescription: "Создаёт новый токен, используемый внутри программы + во время входа. Обычно в этом нет необходимости. При создании все устройства будут + отключены." setMultipleBySeparatingWithSpace: "Можно написать несколько через пробел." fileIdOrUrl: "Идентификатор файла или ссылка" behavior: "Поведение" @@ -670,22 +668,22 @@ sample: "Пример" abuseReports: "Жалобы" reportAbuse: "Жалоба" reportAbuseOf: "Пожаловаться на пользователя {name}" -fillAbuseReportDescription: "Опишите, пожалуйста, причину жалобы подробнее. Если речь\ - \ о конкретном посте, будьте добры приложить ссылку на неё." +fillAbuseReportDescription: "Опишите, пожалуйста, причину жалобы подробнее. Если речь + о конкретном посте, будьте добры приложить ссылку на неё." abuseReported: "Жалоба отправлена. Большое спасибо за информацию." reporteeOrigin: "О ком сообщено" reporterOrigin: "Кто сообщил" -forwardReport: "Перенаправление отчета на инстанс" -forwardReportIsAnonymous: "Удаленный инстант не сможет увидеть вашу информацию и будет\ - \ отображаться как анонимная системная учетная запись." +forwardReport: "Переслать отчет на удалённый сервер" +forwardReportIsAnonymous: "Удаленный сервер не сможет увидеть вашу личную информацию + — отчёт будет отображаться как отправленный от анонимной системная учетной записи." send: "Отправить" abuseMarkAsResolved: "Отметить жалобу как решённую" openInNewTab: "Открыть в новой вкладке" openInSideView: "Открывать в боковой колонке" defaultNavigationBehaviour: "Поведение навигации по умолчанию" -editTheseSettingsMayBreakAccount: "От изменений в этих настройках ваша учётная запись\ - \ может поломаться." -instanceTicker: "Строка с названием инстанса в постах" +editTheseSettingsMayBreakAccount: "От изменений в этих настройках ваша учётная запись + может поломаться." +instanceTicker: "Информация про записи на сервере" waitingFor: "Ждём, когда {x} ответит" random: "Случайные" system: "Система" @@ -696,8 +694,8 @@ createNew: "Новый документ" optional: "Необязательно" createNewClip: "Новая подборка" public: "Общедоступно" -i18nInfo: "Calckey переводят на разные языки добровольцы со всего света. Ваша помощь\ - \ тоже пригодится здесь: {link}." +i18nInfo: "Firefish переводят на разные языки добровольцы со всего света. Ваша помощь + тоже пригодится здесь: {link}." manageAccessTokens: "Управление токенами доступа" accountInfo: "Сведения об учётной записи" notesCount: "Количество постов" @@ -716,15 +714,15 @@ no: "Нет" driveFilesCount: "Количество файлов на диске" driveUsage: "Занято места на диске" noCrawle: "Запретить паукам индексировать сайт" -noCrawleDescription: "Просьба поисковым системам не ходить по вашему профилю, по постам,\ - \ страницам и не индексировать их." -lockedAccountInfo: "Даже если вы вручную подтверждаете подписки, кто угодно может\ - \ читать ваши посты, если вы не отмечаете их «для подписчиков»." +noCrawleDescription: "Просьба поисковым системам не ходить по вашему профилю, по постам, + страницам и не индексировать их." +lockedAccountInfo: "Даже если вы вручную подтверждаете подписки, кто угодно может + читать ваши посты, если вы не отмечаете их «для подписчиков»." alwaysMarkSensitive: "Отмечать файлы как «содержимое не для всех» по умолчанию" loadRawImages: "Сразу показывать изображения в полном размере" disableShowingAnimatedImages: "Не проигрывать анимацию" -verificationEmailSent: "Вам отправлено письмо для подтверждения. Пройдите, пожалуйста,\ - \ по ссылке из письма, чтобы завершить проверку." +verificationEmailSent: "Вам отправлено письмо для подтверждения. Пройдите, пожалуйста, + по ссылке из письма, чтобы завершить проверку." notSet: "Не настроено" emailVerified: "Адрес электронной почты подтверждён" noteFavoritesCount: "Количество добавленного в избранное" @@ -736,16 +734,16 @@ clips: "Подборки" experimentalFeatures: "Экспериментальные функции" developer: "Разработчик" makeExplorable: "Опубликовать профиль в «Обзоре»" -makeExplorableDescription: "Если выключить, ваш профиль не будет показан в разделе\ - \ «Обзор»." +makeExplorableDescription: "Если выключить, ваш профиль не будет показан в разделе + «Обзор»." showGapBetweenNotesInTimeline: "Показывать разделитель между постами в ленте" duplicate: "Дубликат" left: "Влево" center: "По центру" wide: "Толстый" narrow: "Тонкий" -reloadToApplySetting: "Это настройка вступает в силу при загрузке страницы. Перезагрузить\ - \ сейчас?" +reloadToApplySetting: "Это настройка вступает в силу при загрузке страницы. Перезагрузить + сейчас?" needReloadToApply: "Изменения вступят в силу после перезагрузки страницы." showTitlebar: "Показать заголовок" clearCache: "Очистить кэш" @@ -753,10 +751,10 @@ onlineUsersCount: "Пользователей сейчас в сети: {n}" nUsers: "Пользователей: {n}" nNotes: "Постов: {n}" sendErrorReports: "Посылать отчёты о сбоях" -sendErrorReportsDescription: "Если включено, когда возникнет какая-нибудь техническая\ - \ проблема, подробные сведения об этом будут отправлены разработчикам Calckey.\n\ - Это очень помогает делать программу лучше. В отчёты попадают тип и версия ОС, браузера,\ - \ журнал действий (что привело к сбою) и тому подобное." +sendErrorReportsDescription: "Если включено, когда возникнет какая-нибудь техническая + проблема, подробные сведения об этом будут отправлены разработчикам Firefish.\n + Это очень помогает делать программу лучше. В отчёты попадают тип и версия ОС, браузера, + журнал действий (что привело к сбою) и тому подобное." myTheme: "Личная тема" backgroundColor: "Фон" accentColor: "Акцент" @@ -780,7 +778,7 @@ capacity: "Ёмкость" inUse: "Занято" editCode: "Редактировать исходный текст" apply: "Применить" -receiveAnnouncementFromInstance: "Получать оповещения с инстанса" +receiveAnnouncementFromInstance: "Получать оповещения с этого сервера" emailNotification: "Уведомления по электронной почте" publish: "Опубликовать" inChannelSearch: "Поиск по каналу" @@ -795,22 +793,22 @@ unlikeConfirm: "В самом деле отменить «нравится»?" fullView: "Полный вид" quitFullView: "Закрыть полный вид" addDescription: "Добавить описание" -userPagePinTip: "Можно добавить сюда посты, выбрав нужный, и включив в её меню пункт\ - \ «Закрепить в профиле»." +userPagePinTip: "Можно добавить сюда посты, выбрав нужный, и включив в её меню пункт + «Закрепить в профиле»." notSpecifiedMentionWarning: "В этом посте есть упоминание тех, кто не включён в адресаты" info: "Описание" userInfo: "Сведения о пользователе" unknown: "Неизвестно" onlineStatus: "Присутствие в сети" hideOnlineStatus: "Скрыть присутствие" -hideOnlineStatusDescription: "Сокрытие присутствия делает некоторые функции, такие\ - \ как поиск, менее удобными." +hideOnlineStatusDescription: "Сокрытие присутствия делает некоторые функции, такие + как поиск, менее удобными." online: "В сети" active: "Действует" offline: "Не в сети" notRecommended: "Не рекомендуется" botProtection: "Ботозащита" -instanceBlocking: "Блокировка инстансов" +instanceBlocking: "Управление федерацией" selectAccount: "Выберите учётную запись" switchAccount: "Сменить учётную запись" enabled: "Включено" @@ -828,7 +826,7 @@ gallery: "Галерея" recentPosts: "Недавние публикации" popularPosts: "Популярные публикации" shareWithNote: "Поделиться постом" -ads: "Реклама" +ads: "Баннеры сообщества" expiration: "Опрос длится" memo: "Памятка" priority: "Приоритет" @@ -839,25 +837,25 @@ emailNotConfiguredWarning: "Не указан адрес электронной ratio: "Соотношение" previewNoteText: "Предварительный просмотр" customCss: "Индивидуальный CSS" -customCssWarn: "Используйте эту настройку только если знаете, что делаете. Ошибки\ - \ здесь чреваты тем, что сайт перестанет нормально работать у вас." +customCssWarn: "Используйте эту настройку только если знаете, что делаете. Ошибки + здесь чреваты тем, что сайт перестанет нормально работать у вас." global: "Всеобщая" squareAvatars: "Квадратные аватарки" sent: "Отправить" received: "Получено" searchResult: "Результаты поиска" -hashtags: "Хэштег" +hashtags: "Хэштеги" troubleshooting: "Разрешение проблем" useBlurEffect: "Размытие в интерфейсе" learnMore: "Подробнее" -misskeyUpdated: "Calckey обновился!" +misskeyUpdated: "Firefish обновился!" whatIsNew: "Показать изменения" translate: "Перевод" translatedFrom: "Перевод. Язык оригинала — {x}" accountDeletionInProgress: "В настоящее время выполняется удаление учетной записи" -usernameInfo: "Имя, которое отличает вашу учетную запись от других на этом сервере.\ - \ Вы можете использовать алфавит (a~z, A~Z), цифры (0~9) или символы подчеркивания\ - \ (_). Имена пользователей не могут быть изменены позже." +usernameInfo: "Имя, которое отличает вашу учетную запись от других на этом сервере. + Вы можете использовать алфавит (a~z, A~Z), цифры (0~9) или символы подчеркивания + (_). Имена пользователей не могут быть изменены позже." aiChanMode: "ИИ режим" keepCw: "Сохраняйте Предупреждения о содержимом" pubSub: "Учётные записи Pub/Sub" @@ -873,14 +871,14 @@ filter: "Фильтры" controlPanel: "Панель управления" manageAccounts: "Управление аккаунтом" makeReactionsPublic: "Опубликовать список реакций" -makeReactionsPublicDescription: "Список сделанных вами реакций доступен для просмотра\ - \ всем желающим." -classic: "Классика" +makeReactionsPublicDescription: "Список сделанных вами реакций доступен для просмотра + всем желающим." +classic: "Центрированный" muteThread: "Заглушить цепочку" unmuteThread: "Отменить глушение цепочки" ffVisibility: "Видимость подписок и подписчиков" -ffVisibilityDescription: "Здесь можно настроить, кто будет видеть ваши подписки и\ - \ подписчиков." +ffVisibilityDescription: "Здесь можно настроить, кто будет видеть ваши подписки и + подписчиков." continueThread: "Показать следующие ответы" deleteAccountConfirm: "Учётная запись будет безвозвратно удалена. Подтверждаете?" incorrectPassword: "Пароль неверен." @@ -890,18 +888,18 @@ leaveGroup: "Покинуть группу" leaveGroupConfirm: "Покинуть группу «{name}»?" useDrawerReactionPickerForMobile: "Выдвижная палитра на мобильном устройстве" welcomeBackWithName: "С возвращением, {name}" -clickToFinishEmailVerification: "Пожалуйста, нажмите [{ok}], чтобы завершить подтверждение\ - \ адреса электронной почты." +clickToFinishEmailVerification: "Пожалуйста, нажмите [{ok}], чтобы завершить подтверждение + адреса электронной почты." overridedDeviceKind: "Тип устройства" smartphone: "Смартфон" tablet: "Планшет" auto: "Автоматически" -themeColor: "Цвет темы" +themeColor: "Цвет темы сервера" size: "Размер" numberOfColumn: "Количество столбцов" searchByGoogle: "Поиск" -instanceDefaultLightTheme: "Светлая тема по умолчанию" -instanceDefaultDarkTheme: "Темная тема по умолчанию" +instanceDefaultLightTheme: "Светлая тема по умолчанию для всего сервера" +instanceDefaultDarkTheme: "Темная тема по умолчанию для всего сервера" indefinitely: "вечно" file: "Файлы" recommended: "Рекомендуем" @@ -913,13 +911,13 @@ label: "Метка" localOnly: "Локально" beta: "Бета" enableAutoSensitive: "Автоматическое определение NSFW" -enableAutoSensitiveDescription: "Если доступно, используйте машинное обучение для\ - \ автоматической установки флага NSFW на носителе. Даже если эта функция отключена,\ - \ она может быть установлена автоматически в зависимости от инстанта." +enableAutoSensitiveDescription: "Позволяет автоматически обнаруживать и маркировать + медиафайлы NSFW с помощью машинного обучения, где это возможно. Даже если эта опция + отключена, она может быть включена на всем сервере." account: "Учётные записи" _sensitiveMediaDetection: - description: "Машинное обучение может быть использовано для автоматического обнаружения\ - \ чувствительных медиа для модерации. Нагрузка на сервер увеличивается незначительно." + description: "Машинное обучение может быть использовано для автоматического обнаружения + чувствительных медиа для модерации. Нагрузка на сервер увеличивается незначительно." setSensitiveFlagAutomatically: "Установить флаг NSFW" sensitivity: Чувствительность обнаружения sensitivityDescription: Снижение чувствительности приведет к меньшему количеству @@ -943,14 +941,14 @@ _ffVisibility: _signup: almostThere: "Почти готово" emailAddressInfo: "Введите ваш адрес электронной почты." - emailSent: "На указанный вами адрес электронной почты ({email}) отправлено письмо.\ - \ Перейдите по ссылке в письме, чтобы завершить регистрацию." + emailSent: "На указанный вами адрес электронной почты ({email}) отправлено письмо. + Перейдите по ссылке в письме, чтобы завершить регистрацию." _accountDelete: accountDelete: "Удалить свою учётную запись" - mayTakeTime: "Удаление учётной записи — ресурсозатратный процесс. Он может занять\ - \ много времени, если вы много писали и загружали файлов." - sendEmail: "Когда ваша учетная запись будет удалена, мы сообщим на указанную вами\ - \ электронную почту." + mayTakeTime: "Удаление учётной записи — ресурсозатратный процесс. Он может занять + много времени, если вы много писали и загружали файлов." + sendEmail: "Когда ваша учетная запись будет удалена, мы сообщим на указанную вами + электронную почту." requestAccountDelete: "Запросить удаление вашей учетной записи" started: "Процесс удаления начался." inProgress: "Удаление в процессе" @@ -958,12 +956,12 @@ _ad: back: "Выход" reduceFrequencyOfThisAd: "Реже показывать эту рекламу" _forgotPassword: - enterEmail: "Введите адрес электронной почты, который ввели при регистрации. На\ - \ неё будет выслана ссылка для смены пароля." - ifNoEmail: "Если вы не ввели свой адрес электронной почты, свяжитесь с администратором\ - \ ресурса, чтобы сменить пароль." - contactAdmin: "Здесь не используются адреса электронной почты, так что свяжитесь\ - \ с администратором, чтобы поменять пароль." + enterEmail: "Введите адрес электронной почты, который ввели при регистрации. На + неё будет выслана ссылка для смены пароля." + ifNoEmail: "Если вы не ввели свой адрес электронной почты, свяжитесь с администратором + сервера, чтобы сменить пароль." + contactAdmin: "Здесь не используются адреса электронной почты, так что свяжитесь + с администратором, чтобы поменять пароль." _gallery: my: "Личная" liked: "Понравившееся" @@ -984,30 +982,39 @@ _registry: keys: "Ключ" domain: "Домен" createKey: "Новый ключ" -_aboutMisskey: - about: "Calckey это форк Calckey, сделанный ThatOneCalculator, разработка которого\ - \ началась с 2022." +_aboutFirefish: + about: "Firefish это форк Firefish, сделанный ThatOneCalculator, разработка которого + началась с 2022." contributors: "Основные соавторы" allContributors: "Все соавторы" source: "Исходный код" - translation: "Перевод Calckey" - donate: "Пожертвование на Calckey" - morePatrons: "Большое спасибо и многим другим, кто принял участие в этом проекте!\ - \ \U0001F970" + translation: "Перевод Firefish" + donate: "Пожертвование на Firefish" + morePatrons: "Большое спасибо и многим другим, кто принял участие в этом проекте! + 🥰" patrons: "Материальная поддержка" + patronsList: Перечислены в хронологическом порядке, а не по размеру пожертвования. + Сделайте взнос по ссылке выше, чтобы ваше имя было здесь! + sponsors: Спонсоры Firefish + donateTitle: Понравился Firefish? + pleaseDonateToFirefish: Пожалуйста, поддержите разработку Firefish. + pleaseDonateToHost: Также не забудьте поддержать ваш домашний сервер {host}, чтобы + помочь с его операционными расходами. + donateHost: Пожертвовать на {host} + misskeyContributors: Контрибьюторы Misskey _nsfw: respect: "Скрывать содержимое не для всех" ignore: "Показывать содержимое не для всех" force: "Скрывать вообще все файлы" _mfm: cheatSheet: "Подсказка по разметке MFM" - intro: "MFM — язык оформления текста,используемый в Calckey, Calckey, Akkoma и готов\ - \ для применения во многих местах. На этой странице собраны и кратко изложены\ - \ способы его использовать." - dummy: "Calckey расширяет границы Федиверса" + intro: "MFM — язык оформления текста, используемый в Misskey, Firefish, Akkoma, + который можно использовать во многих местах. На этой странице собраны и кратко + изложены способы его использовать." + dummy: "Firefish расширяет границы Федиверса" mention: "Упоминание" - mentionDescription: "При помощи знака «собака» перед именем можно упомянуть какого-нибудь\ - \ пользователя." + mentionDescription: "При помощи знака «собака» перед именем можно упомянуть какого-нибудь + пользователя." hashtag: "Хэштег" hashtagDescription: "При помощи знака «решётка» перед словом задаётся хэштег." url: "Простая ссылка (URL)" @@ -1018,18 +1025,18 @@ _mfm: boldDescription: "Выделяет текст, делая буквы жирнее." small: "Мелкий шрифт" smallDescription: "Делает текст маленьким и незаметным." - center: "Выровнять элементы по центру" + center: "По центру" centerDescription: "Так можно выровнять что-то по центру." inlineCode: "Программа (в тексте)" inlineCodeDescription: "Подсвечивает фрагмент программы внутри сплошного текста." blockCode: "Программа (блок)" - blockCodeDescription: "Оформляет текст программы в виде отдельного блокоа. Он может\ - \ состоять из множества строк." + blockCodeDescription: "Оформляет текст программы в виде отдельного блокоа. Он может + состоять из множества строк." inlineMath: "Математическое выражение (в тексте)" - inlineMathDescription: "Позволяет вставлять математические выражения внутрь текста\ - \ при помощи языка KaTeX" + inlineMathDescription: "Позволяет вставлять математические выражения внутрь текста + при помощи языка KaTeX" blockMath: "Математическое выражение (блок)" - blockMathDescription: "Оформляет математическое выражение (KaTeX) на отдельной строке" + blockMathDescription: "Отображать математические формулы (KaTeX) блоками" quote: "Цитата" quoteDescription: "Так можно процитировать чей-то текст." emoji: "Собственные эмодзи" @@ -1059,8 +1066,8 @@ _mfm: x4: "Совсем крупно" x4Description: "Увеличивает содержимое совсем сильно." blur: "Размытие" - blurDescription: "Размывает текст до нечитаемости, будто его поместили за матовое\ - \ стекло. Наведение указателя мыши на размытый текст возвращает чёткость." + blurDescription: "Размывает текст до нечитаемости, будто его поместили за матовое + стекло. Наведение указателя мыши на размытый текст возвращает чёткость." font: "Шрифт" fontDescription: "Так можно писать произвольным шрифтом." rainbow: "Радуга" @@ -1071,6 +1078,25 @@ _mfm: rotateDescription: "Поворачивает на заданный угол." plain: Обычный текст plainDescription: Деактивирует эффекты всех MFM, содержащихся в этом эффекте MFM. + play: Воспроизвести MFM + warn: 'MFM может содержать быстро-движущуюся или яркую анимацию' + advanced: Расширенные MFM + advancedDescription: Если выключено, позволяет только базовую разметку, если не + воспроизводится анимированный MFM + background: Цвет фона + backgroundDescription: Изменить цвет фона текста. + crop: Обрезать + cropDescription: Обрезать содержимое. + stop: Остановить MFM + scale: Масштабировать + fade: Затухание + position: Расположение + alwaysPlay: Всегда автозапускать все анимированные MFM + fadeDescription: Уменьшает и увеличивает видимость контента. + foreground: Цвет переднего плана + foregroundDescription: Изменить цвет текста на переднем плане. + positionDescription: Переместить содержимое на указанное значение. + scaleDescription: Масштабировать содержимое на указанную величину. _instanceTicker: none: "Не показывать" remote: "Только для других сайтов" @@ -1090,6 +1116,8 @@ _channel: following: "Подписки" usersCount: "Участников: {n}" notesCount: "Постов: {n}" + nameOnly: Только название + nameAndDescription: Название и описание _menuDisplay: sideFull: "Сторона" sideIcon: "Сторона (иконки)" @@ -1097,24 +1125,23 @@ _menuDisplay: hide: "Спрятать" _wordMute: muteWords: "Скрыть слово" - muteWordsDescription: "Пишите слова через пробел в одной строке, чтобы фильтровать\ - \ их появление вместе; а если хотите фильтровать любое из них, пишите в отдельных\ - \ строках." - muteWordsDescription2: "Здесь можно использовать регулярные выражения — просто заключите\ - \ их между двумя дробными чертами (/)." + muteWordsDescription: "Пишите слова через пробел в одной строке, чтобы фильтровать + их появление вместе; а если хотите фильтровать любое из них, пишите в отдельных + строках." + muteWordsDescription2: "Здесь можно использовать регулярные выражения — просто заключите + их между двумя дробными чертами (/)." softDescription: "Соответствующие условиям посты будут спрятаны из вашей ленты." - hardDescription: "Соответстующие условиям посты вообще не будут попадать в вашу\ - \ ленту. Даже если вы поменяете условия, отсеенные таким образом посты уже не\ - \ появятся." + hardDescription: "Соответстующие условиям посты вообще не будут попадать в вашу + ленту. Даже если вы поменяете условия, отсеенные таким образом посты уже не появятся." soft: "Мягкий" hard: "Жёсткий" mutedNotes: "Скрытые посты" _instanceMute: - heading: "Список заглушенных инстансов" + heading: "Список заглушенных серверов" instanceMuteDescription2: Разделить переносом строки - instanceMuteDescription: Это будет скрывать все посты/репосты с указанных инстансов, - включая ответы пользователю с заглушенного инстанса. - title: Скрывает посты с указанных инстансов. + instanceMuteDescription: Это будет скрывать все посты/репосты с указанных серверов, + включая ответы пользователю с заглушенного сервера. + title: Скрывает посты с указанных серверов. _theme: explore: "Обзор" install: "Установить тему" @@ -1143,8 +1170,8 @@ _theme: darken: "Затемнение" lighten: "Осветление" inputConstantName: "Введите имя для константы" - importInfo: "Если вы введете код темы здесь, вы можете импортировать его в редактор\ - \ тем" + importInfo: "Если вы введете код темы здесь, вы можете импортировать его в редактор + тем" deleteConstantConfirm: "Вы действительно хотите удалить константу {const}?" keys: accent: "Акцент" @@ -1214,52 +1241,69 @@ _time: hour: "ч" day: "сут" _tutorial: - title: "Как использовать Calckey" + title: "Как использовать Firefish" step1_1: "Добро пожаловать!" step1_2: "Давайте настроим вас. Вы будете работать в кратчайшие сроки!" step2_1: "Сначала, пожалуйста, заполните свой профиль." - step2_2: "Предоставив некоторую информацию о себе, другим людям будет легче понять,\ - \ хотят ли они видеть ваши записи или следить за вами." - step3_1: "Теперь пора следить за некоторыми людьми!" - step3_2: "Ваша домашняя и социальная ленты основаны на том, за кем вы следите, поэтому\ - \ для начала попробуйте следить за парой аккаунтов.\nНажмите на кружок с плюсом\ - \ в правом верхнем углу профиля, чтобы следить за ним." + step2_2: "Предоставив некоторую информацию о себе, другим людям будет легче понять, + хотят ли они видеть ваши записи или следить за вами." + step3_1: "Теперь пришло время на кого-то подписаться!" + step3_2: "Ваша домашняя и социальная ленты основаны на том, за кем вы следите, поэтому + для начала попробуйте следить за парой аккаунтов.\nНажмите на кружок с плюсом + в правом верхнем углу профиля, чтобы следить за ним." step4_1: "Давайте выйдем на вас." - step4_2: "Для своего первого сообщения некоторые люди любят делать {introduction}\ - \ сообщение или простое \"Hello world!\"" + step4_2: "Для своего первого сообщения некоторые люди любят делать {introduction} + сообщение или простое \"Hello world!\"" step5_1: "Временные рамки, везде временные рамки!" - step5_2: "В вашем экземпляре включены {timelines} различных временных линий." - step5_3: "Главная {icon} лента - это лента, где вы можете видеть сообщения ваших\ - \ подписок и других на этом инстансе. Если вы хотите чтобы главная лента показывала\ - \ только посты ваших подписок вы можете легко это изменить в настройках!" - step5_4: "Местная {icon} лента - это лента где вы можете видеть сообщения всех остальных\ - \ пользователей данного инстанса." - step5_5: "Лента Социальная {icon} - это лента, где вы можете видеть посты только\ - \ от аккаунтов, на которые вы подписаны." - step5_6: "Лента Рекомендованная {icon} это лента, где вы можете видеть посты с инстансов,\ - \ рекомендованных администраторами." - step5_7: "Глобальная {icon} лента - это место, где вы можете видеть сообщения от\ - \ всех других подключенных экземпляров." + step5_2: "В вашем сервере включены {timelines} разные ленты." + step5_3: "Домашняя {icon} лента - это лента, где вы можете видеть посты тех, на + кого вы подписались." + step5_4: "Местная {icon} лента - это лента где вы можете видеть сообщения всех остальных + пользователей данного сервера." + step5_5: "Социальная лента {icon} - это комбинация домашней и местной лент." + step5_6: "На ленте Рекомендованных {icon} вы можете видеть посты с серверов, которые + рекомендуют администраторы." + step5_7: "Глобальная {icon} лента - это место, где вы можете видеть сообщения от + всех других подключенных серверов." step6_1: "Итак, что это за место?" - step6_2: "Ну, вы не просто присоединились к Кальки. Вы присоединились к порталу\ - \ в Fediverse, взаимосвязанной сети из тысяч серверов, называемых \"инстансами\"\ - ." - step6_3: "Каждый сервер работает по-своему, и не на всех серверах работает Calckey.\ - \ Но этот работает! Это немного сложно, но вы быстро разберетесь." + step6_2: "Ну, вы не просто присоединились к Firefish. Вы вошли в Fediverse, взаимосвязанную + сеть из тысяч серверов." + step6_3: "Каждый сервер работает по-своему, и не все сервера работают на базе Firefish. + Но этот работает! Это сложновато, но вы быстро разберетесь." step6_4: "Теперь идите, изучайте и развлекайтесь!" _2fa: alreadyRegistered: "Двухфакторная аутентификация уже настроена." registerTOTP: "Зарегистрируйте ваше устройство" registerSecurityKey: "Зарегистрировать ключ" - step1: "Прежде всего, установите на устройство приложение для аутентификации, например,\ - \ {a} или {b}." + step1: "Прежде всего, установите на устройство приложение для аутентификации, например, + {a} или {b}." step2: "Далее отсканируйте отображаемый QR-код при помощи приложения." step3: "И наконец, введите код, который покажет приложение." - step4: "Теперь при каждом входе на сайт вам нужно будет вводить код из приложения\ - \ аналогичным образом." - securityKeyInfo: "Вы можете настроить вход с помощью аппаратного ключа безопасности,\ - \ поддерживающего FIDO2, или отпечатка пальца или PIN-кода на устройстве." + step4: "Теперь при каждом входе на сайт вам нужно будет вводить код из приложения + аналогичным образом." + securityKeyInfo: "Вы можете настроить вход с помощью аппаратного ключа безопасности, + поддерживающего FIDO2, или отпечатка пальца или PIN-кода на устройстве." step2Url: 'Вы также можете ввести этот URL если используете программу на компьютере:' + securityKeyName: Введите название ключа + removeKeyConfirm: Действительно удалить ключ {name}? + removeKey: Удалить ключ безопасности + step2Click: Нажав на этот QR-код, вы сможете зарегистрировать 2FA в вашем ключе + безопасности или приложении-аутентификаторе для телефона. + registerTOTPBeforeKey: Пожалуйста, настройте приложение-аутентификатор, чтобы зарегистрировать + ключ безопасности или пароль. + chromePasskeyNotSupported: Пароли Chrome пока не поддерживаются. + renewTOTP: Перенастроить приложение-аутентификатор + renewTOTPConfirm: Это приведет к тому, что коды подтверждения из предыдущего приложения + перестанут работать + renewTOTPOk: Перенастроить + renewTOTPCancel: Отменить + token: 2FA Токен + whyTOTPOnlyRenew: Приложение аутентификатора нельзя удалить, пока зарегистрирован + ключ безопасности. + tapSecurityKey: Пожалуйста, следуйте инструкциям вашего браузера, чтобы зарегистрировать + ключ безопасности или ключ-пароль + step3Title: Введите код аутентификации + securityKeyNotSupported: Ваш браузер не поддерживает ключи безопасности. _permissions: "read:account": "Просматривать данные учётной записи" "write:account": "Изменять данные учётной записи" @@ -1296,18 +1340,19 @@ _permissions: _auth: shareAccess: "Дать доступ для «{name}» к вашей учётной записи?" shareAccessAsk: "Уверены, что хотите дать приложению доступ к своей учётной записи?" - permissionAsk: "Приложение запрашивает следующие разрешения" + permissionAsk: "Приложение запрашивает следующие разрешения:" pleaseGoBack: "Вернитесь, пожалуйста, в приложение" callback: "Возврат в приложение" denied: "Доступ закрыт" - copyAsk: Пожалуйста, вставьте следующий код авторизации в приложение + copyAsk: 'Пожалуйста, вставьте следующий код авторизации в приложение:' + allPermissions: Полный доступ к аккаунту _antennaSources: all: "Все посты" homeTimeline: "Посты тех на которых вы подписаны" users: "Посты выбранных пользователей" userList: "Посты пользователей из выбранных списков" userGroup: "Посты от пользователей из заданной группы" - instances: Посты от всех пользователей на инстансе + instances: Посты от всех пользователей на сервере _weekday: sunday: "Воскресенье" monday: "Понедельник" @@ -1323,28 +1368,32 @@ _widgets: calendar: "Календарь" trends: "Актуальное" clock: "Часы" - rss: "Просмотр RSS" + rss: "RSS-читалка" activity: "Активность" photos: "Фото" digitalClock: "Цифровые часы" federation: "Федерация" - postForm: "Форма отправки" + postForm: "Создание поста" slideshow: "Показ слайдов" button: "Кнопка" - onlineUsers: "Пользователи сейчас с сети" + onlineUsers: "Пользователи онлайн" jobQueue: "Очередь заданий" serverMetric: "Показатели сервера" aiscript: "Консоль AiScript" aichan: "Ай" rssTicker: RSS-тикер unixClock: UNIX часы - instanceCloud: Облачко инстансов + instanceCloud: Облачко серверов userList: Список пользователей _userList: chooseList: Выберите список + meiliStatus: Состояние сервера + meiliSize: Размер индекса + meiliIndexCount: Индексированные посты + serverInfo: Информация о сервере _cw: hide: "Спрятать" - show: "Показать еще" + show: "Показать содержимое" chars: "знаков: {count}" files: "файлов: {count}" _poll: @@ -1371,11 +1420,12 @@ _poll: remainingSeconds: "Осталось {s} с" _visibility: public: "Общедоступно" - publicDescription: "Открыто для всех" + publicDescription: "Ваш пост будет виден во всех публичных лентах" home: "Скрытый" homeDescription: "Не для общих лент" followers: "Для подписчиков" - followersDescription: "Только вашим подписчикам" + followersDescription: "Сделать видимым только для ваших подписчиков и упомянутых + пользователей" specified: "Личное" specifiedDescription: "Тем, кого укажете" localOnly: "Локально" @@ -1398,7 +1448,9 @@ _profile: youCanIncludeHashtags: "Можете использовать здесь хэштеги." metadata: "Дополнительные сведения" metadataEdit: "Редактировать дополнительные сведения" - metadataDescription: "Можно добавить до четырёх дополнительных граф в профиль." + metadataDescription: "Можно добавить до четырёх дополнительных граф в профиль. Вы + можете добавить тег {a} или тег {l} с {rel}, чтобы подтвердить ссылку в своем + профиле!" metadataLabel: "Метка" metadataContent: "Содержимое" changeAvatar: "Поменять аватар" @@ -1424,7 +1476,7 @@ _charts: remoteNotesIncDec: "Изменения числа постов с других сайтов" notesTotal: "Общее количество постов" filesIncDec: "Изменения числа файлов" - filesTotal: "Суммарное количество файлов" + filesTotal: "Общее количество файлов" storageUsageIncDec: "Изменения заполнения хранилища" storageUsageTotal: "Суммарное заполнение хранилища" _instanceCharts: @@ -1697,7 +1749,7 @@ _pages: pick: "Выбор из списка" _pick: arg1: "Списки" - arg2: "Индекс" + arg2: "Позиция" listLen: "Количество элементов в списке" _listLen: arg1: "Списки" @@ -1760,7 +1812,7 @@ _notification: quote: "Цитаты" reaction: "Реакции" pollVote: "Голосования" - receiveFollowRequest: "Получен запрос на подписку" + receiveFollowRequest: "Полученные запросы на подписку" followRequestAccepted: "Запрос на подписку одобрен" groupInvited: "Приглашение в группы" app: "Уведомления из приложений" @@ -1771,6 +1823,9 @@ _notification: followBack: Подписался на вас обратно emptyPushNotificationMessage: Пуш уведомления были обновлены pollEnded: Результаты опроса стали доступны + reacted: отреагировал на ваш пост + renoted: распространил ваш пост + voted: проголосовал в вашем опросе _deck: alwaysShowMainColumn: "Всегда показывать главную колонку" columnAlign: "Выравнивание колонок" @@ -1788,10 +1843,11 @@ _deck: widgets: "Виджеты" notifications: "Уведомления" tl: "Лента" - antenna: "Антенны" + antenna: "Антенна" list: "Списки" mentions: "Упоминания" direct: "Личное" + channel: Канал deleteProfile: Удалить воркспейс introduction: Создайте идеальный интерфейс для себя, свободно расположив столбцы! introduction2: Нажмите на + в правой части экрана, чтобы добавлять новые столбцы @@ -1808,28 +1864,28 @@ confirmToUnclipAlreadyClippedNote: Этот пост уже в подборке вместо этого удалить пост из подборки? unclip: Удалить из подборки secureMode: Безопасный Режим (Авторизованное Получение) -instanceSecurity: Безопасность инстанса +instanceSecurity: Безопасность сервера seperateRenoteQuote: Разделить кнопки репоста и цитаты accountMoved: 'Пользователь переместился на новый аккаунт:' manageGroups: Управлять группами allowedInstancesDescription: Список хостов, разрешённых для федерации, каждый разделён - новой строкой(применяется только в приватном режиме). + новой строкой (применяется только в приватном режиме). noThankYou: Нет, спасибо -addInstance: Добавить инстанс +addInstance: Добавить сервер flagSpeakAsCat: Говорить как кот flagSpeakAsCatDescription: Ваши будут посты няифицированы в режиме кота -selectInstance: Выбрать инстанс -antennaInstancesDescription: Список инстансов, каждый с новой строки +selectInstance: Выбрать сервер +antennaInstancesDescription: Список серверов, каждый с новой строки privateMode: Приватный режим -privateModeInfo: Когда включено только инстансы в белом списке могут федерировать - с вашим инстансов. Все посты будут скрыты. -allowedInstances: Белый список инстансов +privateModeInfo: Только серверы в белом списке могут федерировать с вашим сервером. + Все посты будут скрыты из публичного доступа. +allowedInstances: Белый список серверов userSaysSomethingReason: '{name} сказал {reason}' renoteMute: Заглушить репосты renoteUnmute: Разглушить репосты hiddenTags: Скрытые хештеги -noInstances: Нет инстансов -secureModeInfo: При запросах с других инстансов не отправлять ответ без подтверждения. +noInstances: Нет серверов +secureModeInfo: Не отправлять ответ на запросы с других серверов без подтверждения. instanceDefaultThemeDescription: Введите код темы в формате объекта. tenMinutes: 10 минут oneHour: Один час @@ -1847,13 +1903,13 @@ customMOTDDescription: Пользовательские сообщения дл разрывами строк, будут отображаться случайным образом каждый раз, когда пользователь загружает / перезагружает страницу. recommendedInstancesDescription: Рекомендуемые инстансы, разделенные разрывами строк, - должны отображаться на рекомендуемой ленте. НЕ добавляйте `https://`, ТОЛЬКО домен. -caption: Автоматическая подпись + должны отображаться на рекомендуемой ленте. +caption: Автоматическое описание splash: Заставка updateAvailable: Возможно, доступно обновление! move: Переместить swipeOnDesktop: Разрешить свайпы в мобильном стиле на десктопе -showAds: Показывать рекламу +showAds: Показывать баннеры сообщества noEmailServerWarning: Почтовый сервер не настроен. type: Тип numberOfPageCacheDescription: Увеличение этого числа повысит удобство для пользователей, @@ -1883,7 +1939,7 @@ customSplashIconsDescription: URL-адреса для пользовательс загружает / перезагружает страницу. Пожалуйста, убедитесь, что изображения находятся на статическом URL-адресе, предпочтительно все с размером 192x192. logoImageUrl: URL изображения логотипа -showAdminUpdates: Указать, что доступна новая версия Calckey (только для администратора) +showAdminUpdates: Указать, что доступна новая версия Firefish (только для администратора) replayTutorial: Перезапустить туториал migration: Миграция showLocalPosts: 'Показать локальные посты в:' @@ -1892,7 +1948,7 @@ socialTimeline: Социальная лента driveCapOverrideCaption: Сбросить до настроек по умолчанию введя значение 0 или меньше. deleteAccount: Удалить аккаунт numberOfPageCache: Число кэшируемых страниц -pushNotificationNotSupported: Ваш браузер или инстанс не поддерживает пуш уведомления +pushNotificationNotSupported: Ваш браузер или сервер не поддерживает пуш уведомления sendPushNotificationReadMessageCaption: Уведомление содержащее текст "{emptyPushNotificationMessage}" будет показано на короткое время. Это может увеличить расход батареи вашего устройства, если это применимо. @@ -1903,8 +1959,8 @@ adminCustomCssWarn: Этот параметр следует использов знаете, что он делает. Ввод неправильных значений может привести к тому, что ВСЕ клиенты перестанут нормально функционировать. Пожалуйста, убедитесь, что ваш CSS работает должным образом, протестировав его в настройках вашего пользователя. -showUpdates: Показывать всплывающее окно при обновлении Calckey -recommendedInstances: Рекомендованные инстансы +showUpdates: Показывать всплывающее окно при обновлении Firefish +recommendedInstances: Рекомендованные серверы defaultReaction: Эмодзи реакция по умолчанию для выходящих и исходящих постов license: Лицензия indexPosts: Индексировать посты @@ -1937,10 +1993,10 @@ _preferencesBackups: cannotLoad: Загрузка не удалась invalidFile: Неправильный формат файла enableEmojiReactions: Включить эмодзи реакции -migrationConfirm: "Вы абсолютно уверены что хотите мигрировать ваш аккаунт на {account}?\ - \ Как только вы сделаете, вы не сможете отменить это и не сможете нормально использовать\ - \ аккаунт снова.\nТакже, пожалуйста, убедитесь, что вы установили эту текущую учетную\ - \ запись в качестве учетной записи, с которой вы переходите." +migrationConfirm: "Вы абсолютно уверены что хотите мигрировать ваш аккаунт на {account}? + Как только вы сделаете, вы не сможете отменить это и не сможете нормально использовать + аккаунт снова.\nТакже, пожалуйста, убедитесь, что вы установили эту текущую учетную + запись в качестве учетной записи, с которой вы переходите." reporter: Автор жалобы mutePeriod: Длительность глушения reflectMayTakeTime: Это может занять некоторое время чтобы вступило в силу. @@ -1950,12 +2006,14 @@ shuffle: Перемешать moveFrom: Переместится на этот аккаунт с старого аккаунта moveFromLabel: 'Аккаунт с которого перемещаетесь:' moveAccountDescription: Этот процесс необратим. Убедитесь что вы сделали псевдоним - для этого аккаунта до перемещения. Пожалуйста введите аккаунт в формате @person@instance.com + для этого аккаунта до перемещения. Пожалуйста введите аккаунт в формате @person@server.com moveTo: Переместить текущий аккаунт на новый аккаунт _messaging: groups: Группы dms: Личные -isSystemAccount: Учетная запись, созданная системой и автоматически управляемая ею. +isSystemAccount: Эта учетная запись создана и автоматически управляется системой. + Не рекомендуется модерировать, редактировать, удалять или каким либо другим образом + вмешивайтся в эту учётную запись — это может привести к поломке сервера. activeEmailValidationDescription: Включить более строгую проверки адресов электронной почты,что включает в себя проверку наличия одноразовых адресов и того, действительно ли с ними можно связаться. Если флажок снят, проверяется только формат адреса. @@ -1970,10 +2028,10 @@ hiddenTagsDescription: 'Список хештегов (без #), которые и "обзор". Скрытые хэштеги по-прежнему можно обнаружить в других местах.' moveFromDescription: Это установит псевдоним для старого аккаунта, так что вы сможете переместить тот аккаунт на текущий. Делайте это ДО перемещения со старого аккаунта. - Пожалуйста введите аккаунт в формате @person@instance.com + Пожалуйста введите аккаунт в формате @person@server.com customKaTeXMacroDescription: 'Настройте макросы чтобы легко писать математические выражения! Обозначение соответствует определениям команд LaTeX и записывается как - \newcommand{\название}{содержание} или \newcommand{\название}[количество аргументов]{содержание}. + \newcommand{\ название}{содержание} или \newcommand{\название}[количество аргументов]{содержание}. Для примера, \add{3}[2]{#1 + #2} будет раскрывать \add{3}{foo} до 3 + foo. Фигурные скобки, окружающие имя макроса, можно заменить на круглые или квадратные скобки. Это влияет на квадратные скобки, используемые для аргументов. Для каждой строки @@ -1984,8 +2042,115 @@ customKaTeXMacroDescription: 'Настройте макросы чтобы ле cannotUploadBecauseExceedsFileSizeLimit: Этот файл не может быть загружен так как он превышает максимально разрешённый размер. apps: Приложения -silenceThisInstance: Заглушить инстанс -silencedInstances: Заглушенные инстансы -editNote: Редактировать заметку +silenceThisInstance: Заглушить сервер +silencedInstances: Заглушенные серверы +editNote: Редактировать пост edited: 'Редактировано в {date} {time}' deleted: Удалённое +removeReaction: Удалить вашу реакцию +searchPlaceholder: Искать в Firefish +jumpToPrevious: Перейти к предыдущему +listsDesc: Списки позволяют вам создавать ленты с постами указанных пользователей. + Их можно найти на странице «Лента». +silenced: Игнорируется +antennasDesc: "Антенны отображают новые посты, отвечающие указанным критериям!\n К + ним можно перейти со страницы «Лента»." +expandOnNoteClickDesc: Если отключено, вы всё равно сможете открыть пост, воспользовавшись + меню на правой кнопке мыши или кликнув по времени публикации поста. +accessibility: Доступность +silencedInstancesDescription: Список адресов серверов, которые вы хотите заглушить. + Аккаунты на указанных серверах будут считаться «Заглушёнными», смогут только отправлять + запросы на подписку и не смогут упоминать локальных пользователей, если на них не + подписались. Эта настройка не влияет на заблокированные серверы. +clipsDesc: Подборки это категоризированные закладки, которыми можно делиться. Вы можете + создавать подборки из меню у конкретных постов. +alt: ALT +video: Видео +audio: Аудио +selectChannel: Выберите канал +expandOnNoteClick: Открывать пост по клику +channelFederationWarn: Каналы пока не федерируются с другими серверами +image: Изображение +cw: Предупреждение о содержании +xl: Очень крупно +_experiments: + enablePostImports: Включить импорт постов + postImportsCaption: Позволяет пользователям импортировать свои посты из прошлых + учетных записей Firefish, Misskey, Mastodon, Akkoma и Pleroma. Это может вызвать + снижение скорости при загрузке, если ваша очередь перегружена. + title: Эксперименты +_skinTones: + yellow: Жёлтый + dark: Тёмный + mediumLight: Средне-светлый + mediumDark: Средне-тёмный + medium: Средний + light: Светлый +_filters: + fromUser: От пользователя + withFile: С файлом + followingOnly: Только подписки + followersOnly: Только подписчики + fromDomain: С домена + notesBefore: Посты до + notesAfter: Посты после +_dialog: + charactersExceeded: 'Превышено максимальное количество символов! Ограничение: {current}/{max}' + charactersBelow: 'Недостаточно символов! Ограничение: {current}/{min}' +_feeds: + copyFeed: Скопировать ленту + rss: RSS + jsonFeed: JSON-лента + atom: Atom +enableServerMachineStats: Включить статистику серверного оборудования +enableIdenticonGeneration: Включить генерацию Identicon +reactionPickerSkinTone: Предпочитаемый цвет кожи эмодзи +sendModMail: Отправить сообщение о модерации +findOtherInstance: Найти другой сервер +signupsDisabled: Регистрация на этом сервере сейчас отключена, но вы всегда можете + зарегистрироваться на другом сервере! Если у вас есть код приглашения на этот сервер, + пожалуйста, введите его ниже. +preventAiLearningDescription: Попросить сторонние языковые модели ИИ не изучать загружаемый + вами контент, например, посты и изображения. +verifiedLink: Проверенная ссылка +swipeOnMobile: Разрешить перелистывание между страницами +preventAiLearning: Защита от скрепинга ИИ-ботов +userSaysSomethingReasonReply: '{name} ответил на пост с {reason}' +userSaysSomethingReasonRenote: '{name} распространил пост с {reason}' +userSaysSomethingReasonQuote: '{name} процитировал пост с {reason}' +isBot: Этот аккаунт является ботом +isAdmin: Администратор +isPatron: Патрон Firefish +showPopup: Оповещать пользователей всплывающим окном +neverShow: Не показывать снова +remindMeLater: Возможно позже +removeQuote: Удалить цитату +silencedWarning: Эта страница отображается потому, что эти пользователи с серверов, + которые ваш администратор заглушил, поэтому они потенциально могут быть спамом. +isModerator: Модератор +noGraze: Пожалуйста, отключите расширение браузера "Graze для Mastodon", поскольку + оно мешает работе Firefish. +newer: новее +older: старее +showWithSparkles: Показать с блеском +youHaveUnreadAnnouncements: У вас есть непрочитанные объявления +donationLink: Ссылка на страницу для взносов +isLocked: Этот аккаунт имеет одобрение запросов на подписку +removeRecipient: Удалить получателя +removeMember: Удалить участника +confirm: Подтвердить +importZip: Импортировать ZIP +exportZip: Экспортировать ZIP +emojiPackCreator: Генератор паков эмодзи +objectStorageS3ForcePathStyle: Использовать путь вместо домена в URL +objectStorageS3ForcePathStyleDesc: Включите, если хотите, чтобы URL был в формате + 's3.amazonaws.com//' вместо '.s3.amazonaws.com'. +origin: Источник +deletePasskeys: Удалить passkey +delete2faConfirm: Двухфакторная аутентификация на этом аккаунте будет безвозвратно + удалена. Продолжить? +delete2fa: Отключить двухфакторную аутентификацию +deletePasskeysConfirm: Это действие безвозвратно удалит все passkey и ключи безопасности + на этом аккаунте. Продолжить? +inputNotMatch: Введённые данные не совпадают +addRe: Добавить "re:" в начале комментария в ответ на запись с предупреждением о содержимом diff --git a/locales/sk-SK.yml b/locales/sk-SK.yml index dce23d7558..cdf0c807d8 100644 --- a/locales/sk-SK.yml +++ b/locales/sk-SK.yml @@ -1,7 +1,7 @@ --- _lang_: "Slovenčina" -headlineMisskey: "Sieť prepojená poznámkami" -introMisskey: "Vitajte! Calckey je otvorená a decentralizovaná mikroblogovacia služba.\n\"Poznámkami\" môžete zdieľať svoje myšlienky so všetkými okolo. 📡\nPomocou \"reakcií\" môžete rýchlo vyjadri svoje pocity o každého poznámkach. 👍\nPoďte objavovať svet! 🚀" +headlineFirefish: "Sieť prepojená poznámkami" +introFirefish: "Vitajte! Firefish je otvorená a decentralizovaná mikroblogovacia služba.\n\"Poznámkami\" môžete zdieľať svoje myšlienky so všetkými okolo. 📡\nPomocou \"reakcií\" môžete rýchlo vyjadri svoje pocity o každého poznámkach. 👍\nPoďte objavovať svet! 🚀" monthAndDay: "{day}. {month}." search: "Hľadať" notifications: "Oznámenia" @@ -139,7 +139,7 @@ settingGuide: "Odporúčané nastavenia" cacheRemoteFiles: "Cachovanie vzdialených súborov" cacheRemoteFilesDescription: "Zakázanie tohoto nastavenia spôsobí, že vzdialené súbory budú odkazované priamo, namiesto ukladania do cache. Ušetrí sa tak miesto na serveri, ale zvýši sa dátový tok, pretože sa negenerujú miniatúry." flagAsBot: "Tento účet je bot" -flagAsBotDescription: "Ak je tento účet ovládaný programom, zaškrtnite túto voľbu. Ostatní uvidia, že je to bot a zabráni nekonečným interakciám s ďalšími botmi a upraví interné systémy Calckey, aby ho považoval za bota." +flagAsBotDescription: "Ak je tento účet ovládaný programom, zaškrtnite túto voľbu. Ostatní uvidia, že je to bot a zabráni nekonečným interakciám s ďalšími botmi a upraví interné systémy Firefish, aby ho považoval za bota." flagAsCat: "Tento účet je mačka" flagAsCatDescription: "Zvoľte túto voľbu, aby bol tento účet označený ako mačka." flagShowTimelineReplies: "Zobraziť odpovede na poznámky v časovej osi" @@ -198,7 +198,7 @@ noUsers: "Žiadni používatelia" editProfile: "Upraviť profil" noteDeleteConfirm: "Naozaj chcete odstrániť túto poznámku?" pinLimitExceeded: "Ďalšie poznámky už nemôžete pripnúť." -intro: "Inštalácia Calckey je dokončená! Prosím vytvorte administrátora." +intro: "Inštalácia Firefish je dokončená! Prosím vytvorte administrátora." done: "Hotovo" processing: "Pracujem..." preview: "Náhľad" @@ -377,7 +377,7 @@ exploreFediverse: "Objavovať Fediverzum" popularTags: "Populárne značky" userList: "Zoznamy" about: "Informácie" -aboutMisskey: "O Calckey" +aboutFirefish: "O Firefish" administrator: "Administrátor" token: "Token" twoStepAuthentication: "Dvojfaktorová autentifikácia" @@ -523,7 +523,7 @@ sort: "Zoradiť" ascendingOrder: "Vzostupne" descendingOrder: "Zostupne" scratchpad: "Zápisník" -scratchpadDescription: "Zápisník poskytuje prostredia pre experimenty s AiScriptom. Môžete písať, spúšťať a skúšať vysledky pri interakcii s Calckey." +scratchpadDescription: "Zápisník poskytuje prostredia pre experimenty s AiScriptom. Môžete písať, spúšťať a skúšať vysledky pri interakcii s Firefish." output: "Výstup" script: "Skript" disablePagesScript: "Vypnúť AiScript na stránkach" @@ -647,7 +647,7 @@ createNewClip: "Vytvoriť nový klip" unclip: "Odopnúť" confirmToUnclipAlreadyClippedNote: "Táto poznámka je už pripnutá ako \"{name}\". Naozaj ju chcete odopnúť?" public: "Verejné" -i18nInfo: "Calckey je prekladaný do rôznych jazykov dobrovoľníkmi. Pomôcť môžete na {link}." +i18nInfo: "Firefish je prekladaný do rôznych jazykov dobrovoľníkmi. Pomôcť môžete na {link}." manageAccessTokens: "Spravovať prístupové tokeny" accountInfo: "Informácie o účte" notesCount: "Počet poznámok" @@ -698,7 +698,7 @@ onlineUsersCount: "{n} používateľov je online" nUsers: "{n} používateľov" nNotes: "{n} poznámok" sendErrorReports: "Poslať nahlásenie chyby" -sendErrorReportsDescription: "Keď je zapnuté, v prípade problému sa odošlú podrobné informácie o chybe do Calckey. Pomôžete tak zvýšiť kvalitu Calckey.\nTieto informácie zahŕňajú verziu vášho OS, použitý prehliadač, históriu aktivít, atď." +sendErrorReportsDescription: "Keď je zapnuté, v prípade problému sa odošlú podrobné informácie o chybe do Firefish. Pomôžete tak zvýšiť kvalitu Firefish.\nTieto informácie zahŕňajú verziu vášho OS, použitý prehliadač, históriu aktivít, atď." myTheme: "Moja téma" backgroundColor: "Pozadie" accentColor: "Akcent" @@ -789,7 +789,7 @@ hashtags: "Hashtagy" troubleshooting: "Riešenie problémov" useBlurEffect: "Používať efekty rozmazania v UI" learnMore: "Zistiť viac" -misskeyUpdated: "Calckey sa aktualizoval!" +misskeyUpdated: "Firefish sa aktualizoval!" whatIsNew: "Čo je nové?" translate: "Preložiť" translatedFrom: "Preložené z {x}" @@ -960,13 +960,13 @@ _registry: keys: "Kľúče" domain: "Doména" createKey: "Vytvoriť kľúč" -_aboutMisskey: +_aboutFirefish: about: "Misskey je open-source softvér, ktorý vyvíja syuilo od 2014." contributors: "Hlavní prispievatelia" allContributors: "Všetci prispievatelia" source: "Zdrojový kód" - translation: "Preložiť Calckey" - donate: "Podporiť Calckey" + translation: "Preložiť Firefish" + donate: "Podporiť Firefish" morePatrons: "Takisto oceňujeme podporu mnoých ďalších, ktorí tu nie sú uvedení. Ďakujeme! 🥰" patrons: "Prispievatelia" _nsfw: @@ -975,8 +975,8 @@ _nsfw: force: "Skryť všetky médiá" _mfm: cheatSheet: "MFM Cheatsheet" - intro: "MFM je Calckey exkluzívny značkovací jazyk, ktorý sa dá používať na viacerých miestach. Tu môžete vidieť zoznam všetkej dostupnej MFM syntaxe." - dummy: "Calckey rozširuje svet Fediverza" + intro: "MFM je Firefish exkluzívny značkovací jazyk, ktorý sa dá používať na viacerých miestach. Tu môžete vidieť zoznam všetkej dostupnej MFM syntaxe." + dummy: "Firefish rozširuje svet Fediverza" mention: "Zmienka" mentionDescription: "Používateľa spomeniete použítím zavináča a mena používateľa" hashtag: "Hashtag" @@ -1174,7 +1174,7 @@ _time: hour: "hod" day: "dní" _tutorial: - title: "How to use Calckey" + title: "How to use Firefish" step1_1: "Welcome!" step1_2: "Let's get you set up. You'll be up and running in no time!" step2_1: "First, please fill out your profile." @@ -1191,8 +1191,8 @@ _tutorial: step5_6: "The Social {icon} timeline is where you can see posts from friends of your followers." step5_7: "The Global {icon} timeline is where you can see posts from every other connected instance." step6_1: "So, what is this place?" - step6_2: "Well, you didn't just join Calckey. You joined a portal to the Fediverse, an interconnected network of thousands of servers, called \"instances\"." - step6_3: "Each server works in different ways, and not all servers run Calckey. This one does though! It's a bit complicated, but you'll get the hang of it in no time." + step6_2: "Well, you didn't just join Firefish. You joined a portal to the Fediverse, an interconnected network of thousands of servers, called \"instances\"." + step6_3: "Each server works in different ways, and not all servers run Firefish. This one does though! It's a bit complicated, but you'll get the hang of it in no time." step6_4: "Now go, explore, and have fun!" _2fa: alreadyRegistered: "Už ste zaregistrovali 2-faktorové autentifikačné zariadenie." @@ -1337,7 +1337,7 @@ _profile: youCanIncludeHashtags: "Vo svojom bio môžete mať aj hashtagy." metadata: "Dodatočné informácie" metadataEdit: "Upraviť dodatočné informácie" - metadataDescription: "Vo svojom profile môžete uviesť až štyri dodatočné informačné polia." + metadataDescription: "Vo svojom profile môžete uviesť až štyri dodatočné informačné polia. Dodate lahko oznako {a} ali oznako {l} z {rel}, da preverite povezavo v svojem profile!" metadataLabel: "Popisok" metadataContent: "Obsah" changeAvatar: "Zmeniť avatara" diff --git a/locales/sv-SE.yml b/locales/sv-SE.yml index 6523ce068f..6c28196f11 100644 --- a/locales/sv-SE.yml +++ b/locales/sv-SE.yml @@ -1,7 +1,10 @@ ---- _lang_: "Svenska" -headlineMisskey: "Ett nätverk kopplat av noter" -introMisskey: "Välkommen! Calckey är en öppen och decentraliserad mikrobloggningstjänst.\nSkapa en \"not\" och dela dina tankar med alla runtomkring dig. 📡\nMed \"reaktioner\" kan du snabbt uttrycka dina känslor kring andras noter.👍\nLåt oss utforska en nya värld!🚀" +headlineFirefish: "En öppen källkod och decentraliserad social media plattform som + är gratis för all framtid! 🚀" +introFirefish: "Välkommen! Firefish är en öppen och decentraliserad mikrobloggningstjänst.\n + Skapa en \"not\" och dela dina tankar med alla runtomkring dig. 📡\nMed \"reaktioner\"\ + \ kan du snabbt uttrycka dina känslor kring andras noter.👍\nLåt oss utforska en + nya värld!🚀" monthAndDay: "{day}/{month}" search: "Sök" notifications: "Notifikationer" @@ -16,7 +19,7 @@ enterUsername: "Ange användarnamn" renotedBy: "Omnoterad av {user}" noNotes: "Inga noteringar" noNotifications: "Inga aviseringar" -instance: "Instanser" +instance: "Server Instans" settings: "Inställningar" basicSettings: "Basinställningar" otherSettings: "Andra inställningar" @@ -44,7 +47,8 @@ copyContent: "Kopiera innehåll" copyLink: "Kopiera länk" delete: "Radera" deleteAndEdit: "Radera och ändra" -deleteAndEditConfirm: "Är du säker att du vill radera denna not och ändra den? Du kommer förlora alla reaktioner, omnoteringar och svar till den." +deleteAndEditConfirm: "Är du säker att du vill radera denna not och ändra den? Du + kommer förlora alla reaktioner, omnoteringar och svar till den." addToList: "Lägg till i lista" sendMessage: "Skicka ett meddelande" copyUsername: "Kopiera användarnamn" @@ -63,9 +67,11 @@ import: "Importera" export: "Exportera" files: "Filer" download: "Nedladdning" -driveFileDeleteConfirm: "Är du säker att du vill radera filen \"{name}\"? Noter med denna fil bifogad kommer också raderas." +driveFileDeleteConfirm: "Är du säker att du vill radera filen \"{name}\"? Notera att + denna kommer att bli raderad från alla poster som har den bifogad." unfollowConfirm: "Är du säker att du vill avfölja {name}?" -exportRequested: "Du har begärt en export. Detta kan ta lite tid. Den kommer läggas till i din Drive när den blir klar." +exportRequested: "Du har begärt en export. Detta kan ta lite tid. Den kommer läggas + till i din Drive när den blir klar." importRequested: "Du har begärt en import. Detta kan ta lite tid." lists: "Listor" noLists: "Du har inga listor" @@ -76,13 +82,15 @@ followers: "Följare" followsYou: "Följer dig" createList: "Skapa lista" manageLists: "Hantera lista" -error: "Fel!" +error: "Fel" somethingHappened: "Ett fel har uppstått" retry: "Försök igen" pageLoadError: "Det gick inte att ladda sidan." -pageLoadErrorDescription: "Detta händer oftast p.g.a. nätverksfel eller din webbläsarcache. Försök tömma din cache och testa sedan igen efter en liten stund." +pageLoadErrorDescription: "Detta händer oftast p.g.a. nätverksfel eller din webbläsarcache. + Försök tömma din cache och testa sedan igen efter en liten stund." serverIsDead: "Servern svarar inte. Vänta ett litet tag och försök igen." -youShouldUpgradeClient: "För att kunna se denna sida, vänligen ladda om sidan för att uppdatera din klient." +youShouldUpgradeClient: "För att kunna se denna sida, vänligen ladda om sidan för + att uppdatera din klient." enterListName: "Skriv ett namn till listan" privacy: "Integritet" makeFollowManuallyApprove: "Följarförfrågningar kräver manuellt godkännande" @@ -107,7 +115,8 @@ sensitive: "Känsligt innehåll" add: "Lägg till" reaction: "Reaktioner" reactionSetting: "Reaktioner som ska visas i reaktionsväljaren" -reactionSettingDescription2: "Dra för att omordna, klicka för att radera, tryck \"+\" för att lägga till." +reactionSettingDescription2: "Dra för att omordna, klicka för att radera, tryck \"\ + +\" för att lägga till." rememberNoteVisibility: "Komihåg notvisningsinställningar" attachCancel: "Ta bort bilaga" markAsSensitive: "Markera som känsligt innehåll" @@ -136,13 +145,20 @@ emojiUrl: "Emoji länk" addEmoji: "Lägg till emoji" settingGuide: "Rekommenderade inställningar" cacheRemoteFiles: "Spara externa filer till cachen" -cacheRemoteFilesDescription: "När denna inställning är avstängd kommer externa filer laddas direkt från den externa instansen. Genom att stänga av detta kommer lagringsutrymme minska i användning men kommer öka datatrafiken eftersom miniatyrer inte kommer genereras." +cacheRemoteFilesDescription: "När denna inställning är avstängd kommer externa filer + laddas direkt från den externa servern. Genom att stänga av detta kommer lagringsutrymme + minska i användning men kommer öka datatrafiken eftersom miniatyrer inte kommer + genereras." flagAsBot: "Markera konto som bot" -flagAsBotDescription: "Aktivera det här alternativet om kontot är kontrollerat av ett program. Om aktiverat kommer den fungera som en flagga för andra utvecklare för att hindra ändlösa kedjor med andra bottar. Det kommer också få Misskeys interna system att hantera kontot som en bot." +flagAsBotDescription: "Aktivera det här alternativet om kontot är kontrollerat av + ett program. Om aktiverat kommer den fungera som en flagga för andra utvecklare + för att hindra ändlösa kedjor med andra bottar. Det kommer också få Firefish interna + system att hantera kontot som en bot." flagAsCat: "Markera konto som katt" flagAsCatDescription: "Aktivera denna inställning för att markera kontot som en katt." flagShowTimelineReplies: "Visa svar i tidslinje" -flagShowTimelineRepliesDescription: "Visar användarsvar till andra användares noter i tidslinjen om påslagen." +flagShowTimelineRepliesDescription: "Visar användarsvar till andra användares noter + i tidslinjen om påslagen." autoAcceptFollowed: "Godkänn följarförfrågningar från användare du följer automatiskt" addAccount: "Lägg till konto" loginFailed: "Inloggningen misslyckades" @@ -155,13 +171,17 @@ searchWith: "Sök: {q}" youHaveNoLists: "Du har inga listor" followConfirm: "Är du säker att du vill följa {name}?" proxyAccount: "Proxykonto" -proxyAccountDescription: "Ett proxykonto är ett konto som agerar som en extern följare för användare under vissa villkor. Till exempel, när en användare lägger till en extern användare till en lista så kommer den externa användarens aktivitet inte levireras till instansen om ingen lokal användare följer det kontot, så proxykontot används istället." +proxyAccountDescription: "Ett proxykonto är ett konto som agerar som en extern följare + för användare under vissa villkor. Till exempel, när en användare lägger till en + extern användare till en lista så kommer den externa användarens aktivitet inte + levereras till instansen om ingen lokal användare följer det kontot, så proxykontot + används istället." host: "Värd" selectUser: "Välj användare" recipient: "Mottagare" annotation: "Kommentarer" federation: "Federation" -instances: "Instanser" +instances: "Servrar" registeredAt: "Registrerad på" latestRequestSentAt: "Senaste förfrågan skickad" latestRequestReceivedAt: "Senaste begäran mottagen" @@ -171,7 +191,7 @@ charts: "Diagram" perHour: "Per timme" perDay: "Per dag" stopActivityDelivery: "Sluta skicka aktiviteter" -blockThisInstance: "Blockera instans" +blockThisInstance: "Blockera denna server" operations: "Operationer" software: "Mjukvara" version: "Version" @@ -181,15 +201,17 @@ jobQueue: "Jobbkö" cpuAndMemory: "CPU och minne" network: "Nätverk" disk: "Disk" -instanceInfo: "Instansinformation" +instanceInfo: "Serverninformation" statistics: "Statistik" clearQueue: "Rensa kö" clearQueueConfirmTitle: "Är du säker att du vill rensa kön?" -clearQueueConfirmText: "Om någon not är olevererad i kön kommer den inte federeras. Vanligtvis behövs inte denna handling." +clearQueueConfirmText: "Om någon not är olevererad i kön kommer den inte federeras. + Vanligtvis behövs inte denna handling." clearCachedFiles: "Rensa cache" clearCachedFilesConfirm: "Är du säker att du vill radera alla cachade externa filer?" -blockedInstances: "Blockerade instanser" -blockedInstancesDescription: "Lista adressnamn av instanser som du vill blockera. Listade instanser kommer inte längre kommunicera med denna instans." +blockedInstances: "Blockerade servrar" +blockedInstancesDescription: "Lista adressnamn av servrar som du vill blockera. Listade + servrarna kommer inte längre kommunicera med denna servern." muteAndBlock: "Tystningar och blockeringar" mutedUsers: "Tystade användare" blockedUsers: "Blockerade användare" @@ -197,9 +219,9 @@ noUsers: "Det finns inga användare" editProfile: "Redigera profil" noteDeleteConfirm: "Är du säker på att du vill ta bort denna not?" pinLimitExceeded: "Du kan inte fästa fler noter" -intro: "Calckey har installerats! Vänligen skapa en adminanvändare." +intro: "Firefish har installerats! Vänligen skapa en adminanvändare." done: "Klar" -processing: "Bearbetar..." +processing: "Bearbetar" preview: "Förhandsvisning" default: "Standard" defaultValueIs: "Standard: {value}" @@ -212,12 +234,12 @@ all: "Allt" subscribing: "Prenumererar" publishing: "Publiceras" notResponding: "Svarar inte" -instanceFollowing: "Följer på instans" -instanceFollowers: "Följare av instans" -instanceUsers: "Användare av denna instans" +instanceFollowing: "Följer på server" +instanceFollowers: "Följare av server" +instanceUsers: "Användare av denna server" changePassword: "Ändra lösenord" security: "Säkerhet" -retypedNotMatch: "Inmatningen matchar inte" +retypedNotMatch: "Inmatningen matchar inte." currentPassword: "Nuvarande lösenord" newPassword: "Nytt lösenord" newPasswordRetype: "Bekräfta lösenord" @@ -318,3 +340,446 @@ _deck: tl: "Tidslinje" list: "Listor" mentions: "Omnämningar" +removeReaction: Radera från dina reaktioner +renoteMute: Tysta boostningar +renoteUnmute: Ljuda boostningar +flagSpeakAsCat: Prata som en katt +noInstances: Det finns inga servrar +keepOriginalUploadingDescription: Sparar originalen av uppladdade bilder som de är. + Om avstängt, kommer en ny version genererad vid uppladdning. +fromUrl: från URL +explore: Utforska +messageRead: Läs +noMoreHistory: Det finns ingen framtida historik +startMessaging: Starta en ny chatt +agreeTo: Jag accepterar till {0} +drive: Enhet +fileName: Filnamn +inputNewDescription: Ange en ny benämning +inputNewFolderName: Ange ett nytt mappnamn +hasChildFilesOrFolders: Eftersom denna mappen inte är tom, kan den inte bli raderad. +copyUrl: Kopiera URL +watch: Bevaka +thisMonth: Månad +today: Idag +dayX: '{day}' +monthX: '{month}' +yearX: '{year}' +connectService: Anslut +disconnectService: Bortkoppla +enableLocalTimeline: Anslut till lokal tidslinje +invite: Bjud in +driveCapacityPerLocalAccount: Enhetens kapacitet per lokal användare +inMb: I megabyte +pinnedPagesDescription: Ange sökväg till sidor som du vill fästa på topp av sidorna + på denna server, separerade av sidbrytningar. +hcaptcha: hCaptcha +antennasDesc: "Antenner visar nya poster som matchar de kriterier som du anger\nDe + kan nås från sidlinje sidan." +unsilenceConfirm: Är du säker på att du vill ångra tystningen av denna användare? +securityKey: Säkerhetsnyckel +markAsReadAllNotifications: Markera alla notifikationer som lästa +quoteQuestion: Lägg till som en citering? +noMessagesYet: Inga meddelande ännu +newMessageExists: Det finns inga nya meddelanden +weakPassword: Svagt lösenord +normalPassword: Dugligt lösenord +strongPassword: Starkt lösenord +passwordMatched: Matchar +passwordNotMatched: Matchar inte +signinWith: Logga in med {x} +disableAnimatedMfm: Inaktivera MFM med animering +noFollowRequests: Du har inte några väntande följbekräftelser +clientSettings: Klientinställningar +promote: Befordra +numberOfDays: Antalet dagar +objectStorageUseSSL: Använd SSL +objectStorageUseSSLDesc: Stäng av detta om du inte kommer använda HTTPS för API anslutningar +recentUsed: Senast använd +nothing: Det finns inget att visa här +lastUsedDate: Senaste använd vid +state: Stat +disablePagesScript: Inaktivera AiScript på sidor +expandOnNoteClick: Öppna post vid klick +updateRemoteUser: Uppdatera fjärranvändarinformation +deleteAllFiles: Radera alla filer +userSuspended: Denna användare har blivit avstängd. +inboxUrl: Inbox URL +serviceworkerInfo: Måste vara aktiverat för push-notifikationer. +deletedNote: Radera poster +expandTweet: Expandera tweet +themeEditor: Thema redigerare +describeFile: Lägg till bildtext +enterFileDescription: Beskriv bildtext +manage: Hantering +useBlurEffectForModal: Använd oskärpa effekter för modeller +width: Bredd +small: Liten +disableAll: Inaktivera alla +tokenRequested: Tillåt tillgång till konto +channelFederationWarn: Kanalerna federeras inte till andra servrar ännu +manageGroups: Hantera grupper +tos: Användarvillkor +start: Starta +home: Hem +activity: Aktivitet +themeForDarkMode: Teman som används i Mörkt läge +maintainerEmail: Underhållare e-post +enableHcaptcha: Aktivera hCaptcha +hcaptchaSiteKey: Sidnyckel +recaptchaSecretKey: Hemlig nyckel +withFiles: Inkludera filer +popularTags: Populära taggar +notFound: Kan inte hittas +uploadFolder: Standardmappar för uppladdning +retype: Ange igen +next: Nästa +checking: Kontrollerar... +or: Eller +groupInvited: Du har blivit inbjuden till en grupp +docSource: Källa till detta dokument +createAccount: Skapa konto +total: Total +objectStorage: Objektlagring +objectStorageRegion: Region +objectStorageUseProxy: Anslut över Proxy +objectStorageUseProxyDesc: Stäng av detta om du inte kommer använde en Proxy för API + anslutningar +sounds: Ljud +details: Detaljer +installedApps: Auktoriserade applikationer +installedDate: Auktoriserad vid +script: Skript +removeAllFollowingDescription: Körning av detta kommer sluta följa alla konton från + {host}. Vänligen kör detta om servern t.ex. inte längre existerar. +userSilenced: Denna användare har blivit tystnad. +visibility: Synlighet +delayed: Fördröjning +useGlobalSetting: Använd globala inställningar +selectInstance: Välj en server +instanceName: Servernamn +searchPlaceholder: Sök Firefish +noThankYou: Nej tack +jumpToPrevious: Hoppa till föregående +listsDesc: Listor låter dig skapa en tidlinje med specificerade användare. Dessa kan + sedan bli nådda från tidlinje sidan. +flagSpeakAsCatDescription: Dina poster kommer ge en nyans som om du är i katt-läge +silencedInstances: Tystade instanser +hiddenTags: Dolda Hashtaggar +silenced: Tystad +nUsersRead: Läs med {n} +themeForLightMode: Teman som används i Ljust Läge +light: Ljus +recaptcha: reCAPTCHA +enableRecaptcha: Aktivera reCAPTCHA +help: Hjälp +groupName: Gruppnamn +name: Namn +resetPassword: Återställ lösenord +newPasswordIs: Ditt nya lösenord är "{password}" +cacheClear: Rensa cache +markAsReadAllTalkMessages: Markera alla meddelanden som lästa +uiLanguage: Användargränssnitt +disableDrawer: Använd inte byrålådor-stil menyer +tapSecurityKey: Klicka in din säkerhetsnyckel +language: Språk +objectStorageRegionDesc: Ange en region som 'xx-east-1'. Om du anger din tjänst som + inte skiljer mellan regioner, lämna detta blankt eller ange som 'us-east-1'. +objectStorageSetPublicRead: Ställ in "public-read" vid uppladdningar +scratchpadDescription: Scratchpaden tillgängliggör en miljö för AiScript experiment. + Du kan skriva, köra och checka ut resultaten från den när du interagerar med Firefish. +yourAccountSuspendedDescription: Detta kontot har blivit avstängt eftersom det bröt + mot serverns användaravtal eller liknande. Vänligen kontakta administratörer om + du vill veta mer detaljerade anledningar. Vänligen skapa inte ett nytt konto. +divider: Fördelare +addItem: Lägg till artikel +poll: Opinionsundersökning +useCw: Dölj innehåll +enablePlayer: Öppna videospelare +disablePlayer: Stäng videospelare +description: Beskrivning +author: Författare +accessibility: Tillgänglighet +useObjectStorage: Använd objektlagring +objectStorageBaseUrl: Grundläggande URL +deleteAllFilesConfirm: Är du säker på att du vill radera alla filer? +menu: Meny +regexpError: Regular expression fel +wordMute: Ord tystning +regexpErrorDescription: 'Ett fel skedde vid regular expression på linje {line} av + dina {tab} ord tystningar:' +instanceMute: Server tystningar +userSaysSomething: '{name} sa något' +userSaysSomethingReason: '{name} sade {reason}' +makeActive: Aktivera +notificationSettingDesc: Välj typerna av notifieringsinställningarna att visa. +fromDrive: Från Enhet +uploadFromUrlMayTakeTime: Det kan ta en tid innan uppladdningen är slutförd. +uploadFromUrlRequested: Uppladdning som förfrågat +unwatch: Sluta bevaka +enableRecommendedTimeline: Aktivera rekommenderad tidslinje +showLess: Stäng +regenerate: Återskapa +promotion: Befordrad +doNothing: Ignorera +thisYear: År +manageAntennas: Hantera Antenner +deleted: Raderad +editNote: Redigera anteckning +edited: Redigerad vid {date} {time} +syncDeviceDarkMode: Synkronisera mörkt läge med dina enhetsinställningar +dayOverDayChanges: Ändringar från igår +selectChannel: Välj en kanal +lightThemes: Ljusa teman +dark: Mörk +inputNewFileName: Ange ett nytt filnamn +whenServerDisconnected: När den tappar uppkopplingen till servern +disconnectedFromServer: Anslutning till server har tappats +iconUrl: Ikon URL +bannerUrl: Banner bild URL +hcaptchaSecretKey: Hemlig nyckel +onlyOneFileCanBeAttached: Du kan endast ange en bilaga till ett meddelande +signinFailed: Kan inte logga in. Ange korrekt användarnamn och lösenord. +notesAndReplies: Poster och svar +token: Token +twoStepAuthentication: Två-faktor-autentisering +antennaInstancesDescription: Lista en servervärd per linje +moderator: Moderator +moderation: Moderering +chooseEmoji: Välj en emoji +unableToProcess: Operationen kunde inte slutföras +output: Output +expandOnNoteClickDesc: Om inaktiverad, kan du öppna posten vid högerklicksmenyn eller + genom att klicka på tidsstämpeln. +aboutFirefish: Om Firefish +older: Äldre +hiddenTagsDescription: 'Lista hashtaggar (utan # symbolen) för de hashtaggar du vill + dölja från trendande och utforska. Dolda hashtaggar kan fortfarande hittas via andra + funktioner.' +darkThemes: Mörka teman +images: Bilder +selectFiles: Välj filer +renameFile: Byt namn på fil +folderName: Filnamn +createFolder: Skapa en mapp +renameFolder: Byt namn på denna mapp +emptyDrive: Din enhet är tom +emptyFolder: Denna mapp är tom +unableToDelete: Kan inte radera +rename: Byt namn +deleteFolder: Radera denna mapp +addFile: Lägg till en fil +banner: Banner +reload: Uppdatera +reloadConfirm: Vill du uppdatera din tidslinje? +accept: Acceptera +tosUrl: Användarvillkor URL +pages: Sidor +disablingTimelinesInfo: Administratörer och moderatorer har alltid tillgång till alla + tidslinjer, även om de inte är aktiverade. +registration: Registrera +enableRegistration: Aktivera ny användarregistrering +driveCapacityPerRemoteAccount: Enhetskapacitet per extern användare +enableGlobalTimeline: Aktivera global tidslinje +antennaSource: Antennkällor +notifyAntenna: Informera vid nya poster +withFileAntenna: Ange poster med filer +exploreFediverse: Upptäck ett fidiverse +markAsReadAllUnreadNotes: Markera alla poster som lästa +inputMessageHere: Ange meddelande här +members: Medlemmar +available: Tillgänglig +usernameInvalidFormat: Du kan ange versaler eller gemener, nummer och underskrifter. +tooLong: För lång +joinOrCreateGroup: Bli inbjuden till en grupp eller skapa en egen. +doing: Bearbetar... +youHaveNoGroups: Du har inga grupper +aboutX: Om {x} +existingAccount: Existerande konto +install: Installera +uninstall: Avinstallera +sort: Sortera +ascendingOrder: Stigande +leaveConfirm: Ändringar har inte sparats. Vill du kasta dem? +plugins: Plugin +preferencesBackups: Backup av inställningar +enableEmail: Aktivera epost distribuering +smtpSecure: Använd strikt SSL/TLS vid SMTP anslutningar +smtpSecureInfo: Stäng av detta vid användning av STARTTLS +testEmail: Test av epost leverans +userSaysSomethingReasonReply: '{name} svarade på en post innehållande {reason}' +userSaysSomethingReasonRenote: '{name} boosted en post innehållande {reason}' +userSaysSomethingReasonQuote: '{name} citerade en post innehållande {reason}' +logs: Loggar +database: Databas +channel: Kanaler +create: Skapa +notificationSetting: Notisinställningar +objectStorageS3ForcePathStyle: Använd filmapp-baserade slutpunkter för URL:er +newNoteRecived: Det finns nya poster +deck: Däck +undeck: Lämna däck +large: Stor +newer: Nyare +silenceThisInstance: Tysta denna instans +silencedInstancesDescription: Lista värdnamn på server som du vill tysta. Konton på + listade instanser behandlas som om de är "Tystade", de kan endast göra följbekräftelser + och kan inte nämna lokala konton som inte följs. Detta påverkar inte blockerade + instanser. +uploadFromUrl: Uppladdad från URL +birthday: Födelsedag +theme: Teman +avatar: Avatar +uploadFromUrlDescription: URL av filen som du vill ladda upp +remoteUserCaution: Informationen från en avlägsen användare kan inte slutföras. +yearsOld: '{age} år gammal' +location: Plats +selectFile: Välj en fil +registeredDate: Registrerade på +selectFolder: Välj en mapp +circularReferenceFolder: Destinationsmappen är en undermapp till mappen som du försöker + flytta. +instanceDescription: Serverbeskrivning +selectFolders: Välj mappar +reject: Neka +normal: Normal +withReplies: Inkludera svar +registerSecurityKey: Registrera en säkerhetsnyckel +enableServiceworker: Aktivera push-notifikationer för din webbläsare +maintainerName: Underhållare +pinnedPages: Fästa sidor +basicInfo: Grundläggande info +pinnedUsers: Pinnade användare +backgroundImageUrl: Bakgrundsbild URL +pinnedUsersDescription: Lista användarnamn separerade med radbrytning att bli fäst + i "Utforska" fliken. +recaptchaSiteKey: Sid nyckel +pinnedClipId: ID av klippet du vill fästa +avoidMultiCaptchaConfirm: Användning av flera Captcha system kan orsaka problem. Vill + du inaktivera andra Captcha system som är aktiverade i nuläget? Om du vill att de + ska fortsätta vara inaktiverade, tryck ångra. +antennas: Antenner +antennaKeywords: Nyckelord att följa +antennaExcludeKeywords: Nyckelord att exkludera +antennaKeywordsDescription: Separera med mellanrum för ett OCH villkor eller med sidbrytning + för ett ELLER villkor. +caseSensitive: Skiftlägeskänsliga +recentlyDiscoveredUsers: Senaste upptäckta användare +antennaUsersDescription: Lista ett användarnamn per linje +silenceConfirm: Är du säker att du vill tysta denna användare? +connectedTo: Följande konton är anslutna +unsilence: Ångra tystning +recentlyRegisteredUsers: Senaste användare +exploreUsersCount: Det finns {count} användare +silence: Tysta +popularUsers: Populära användare +recentlyUpdatedUsers: Senaste aktiva användare +administrator: Administratör +passwordLessLogin: Lösenordslös-inloggning +about: Om +nUsersMentioned: Benämnd av {n} användare +securityKeyName: Nyckelnamn +share: Dela +reduceUiAnimation: Minska UI animeringar +notFoundDescription: Ingen sida som korresponderar med denna URL kunde hittas. +close: Stäng +group: Grupp +transfer: Överför +category: Kategori +createGroup: Skapa en grupp +ownedGroups: Ägda grupper +invites: Inbjudningar +groups: Grupper +title: Titel +joinedGroups: Deltagande grupper +tooShort: För kort +signinHistory: Inloggningshistorik +enable: Aktivera +text: Text +inviteToGroup: Bjud in till grupp +quoteAttached: Citera +messagingWithUser: Privatchatt +messagingWithGroup: Gruppchatt +invitationCode: Inbjudningskod +noteOf: Postad av {user} +unavailable: Inte tillgänglig +invitations: Inbjudningar +useOsNativeEmojis: Använd operativsystemets lokala emojis +noHistory: Historik saknas +tags: Taggar +openImageInNewTab: Öppna bilder i ny flik +fontSize: Teckenstorlek +dashboard: Användargränssnitt +weekOverWeekChanges: Ändringar till föregående vecka +appearance: Utseende +accountSettings: Kontoinställningar +objectStorageBaseUrlDesc: "Denna URL används som referens. Ange URL för din CDN eller + Proxy om du använder någon.\nFör S3 använd 'https://.s3.amazonaws.com' och + för GCS eller likvärdig tjänst använd 'https://storage.googleapis.com/', + m.m." +objectStorageEndpointDesc: Lämna denna tom om du använder AWS S3, annars ange slutpunkten + som '' eller ':', beroende på tjänsten som du använder. +objectStorageS3ForcePathStyleDesc: Aktivera detta vid konstruering av slutpunkter + i URL som är i format för 's3.amazonaws.com//' vid '.s3.amazonaws.com'. +popout: Poppa-ut +showFixedPostForm: Visa postens form vid toppen av tidslinjen +listen: Lystna +none: Inga +showInPage: Visa på sida +masterVolume: Huvudvolym +volume: Volym +descendingOrder: Nedåtgående +scratchpad: Scratchpad +yourAccountSuspendedTitle: Detta kontot har blivit avstängt +email: Epost +relays: Reläer +invisibleNote: Osynliga poster +addRelay: Lägg till relä +enableInfiniteScroll: Ladda fler automatiskt +edit: Redigera +useFullReactionPicker: Använd full-storlek för reaktionsväljaren +notificationType: Notifieringstyp +pluginTokenRequestedDescription: Detta plugin kommer använda tillgänglighet inställd + här. +generateAccessToken: Generera tillgångstoken +permission: Tillstånd +smtpConfig: SMPT server inställningar +emailServer: Epost server +emailConfigInfo: Används för att bekräfta din epost vid registrering om du glömmer + till lösenord +emptyToDisableSmtpAuth: Lämna användarnamn och lösenord tomt vid inaktivering av SMTP + verifiering +emailAddress: Epost adress +smtpPort: Port +metrics: Metrik +display: Visa +copy: Kopiera +overview: Översikt +lastUsed: Senast använd +unregister: Avregistrera +addInstance: Lägg till server +objectStorageBucketDesc: Vänligen ange hink-namn som du använder som din leverantör. +accountMoved: 'Användaren har flyttat till ett nytt konto:' +hideThisNote: Dölj denna post +showFeaturedNotesInTimeline: Visa presenterade poster i tidslinjen +objectStorageBucket: Hink +objectStoragePrefix: Prefix +local: Lokal +remote: Avlägsen +objectStoragePrefixDesc: Filer som lagras under mappar kommer använda detta prefix. +objectStorageEndpoint: Slutpunkt +addedRelays: Tillagda reläer +height: Höjd +enableAll: Tillåt alla +cw: Innehållsvarning +enableEmojiReactions: Aktivera emoji reaktioner +showEmojisInReactionNotifications: Visa emojis i reaktion notifikationer +signinRequired: Vänligen registrera eller logga in innan du fortsätter +serverLogs: Serverloggar +deleteAll: Radera alla +removeAllFollowing: Sluta följa alla följda användare +medium: Mellan +integration: Integreringar +xl: XL +desktop: Skrivbord +createNew: Skapa nya diff --git a/locales/th-TH.yml b/locales/th-TH.yml index 9666737ee2..4d34471cae 100644 --- a/locales/th-TH.yml +++ b/locales/th-TH.yml @@ -1,22 +1,22 @@ ---- _lang_: "ภาษาไทย" -headlineMisskey: "เชื่อมต่อเครือข่ายโดยโน้ต" -introMisskey: "ยินดีต้อนรับจ้าาา! Calckey เป็นบริการไมโครบล็อกโอเพ่นซอร์ส แบบการกระจายอำนาจ\nสร้าง \"โน้ต\" เพื่อแบ่งปันความคิดของคุณกับทุกคนรอบตัวคุณกันเถอะ 📡\nด้วยการ \"รีแอคชั่นผู้คน\" คุณยังสามารถแสดงความรู้สึกของคุณเกี่ยวกับบันทึกของทุกคนได้อย่างรวดเร็ว 👍\n\nแล้วมาท่องสำรวจโลกใบใหม่กันเถอะ! 🚀" +headlineFirefish: "เชื่อมต่อเครือข่ายโดยโน้ต" +introFirefish: "ยินดีต้อนรับค่ะ/ครับ! Firefish เป็นแพลตฟอร์มโซเชียลมีเดียแบบโอเพ่นซอร์สที่มีการกระจายอำนาจซึ่งให้บริการฟรีตลอดไป! + 🚀" monthAndDay: "{เดือน}/{วัน}" search: "ค้นหา" notifications: "การเเจ้งเตือน" username: "ชื่อผู้ใช้" password: "รหัสผ่าน" -forgotPassword: "ลืมรหัสผ่าน?" +forgotPassword: "ลืมรหัสผ่านอ่ะ" fetchingAsApObject: "กำลังดึงข้อมูล จาก เฟดิเวิร์ส" ok: "ตกลง" gotIt: "เข้าใจแล้ว !" cancel: "ยกเลิก" enterUsername: "ใส่ชื่อผู้ใช้" -renotedBy: "รีโน้ตโดย {ผู้ใช้}" -noNotes: "ไม่มีโน้ต" +renotedBy: "บูตเตอร์โดย {user}" +noNotes: "ไม่มีโพสต์" noNotifications: "ไม่มีการแจ้งเตือน" -instance: "ตัวอย่าง" +instance: "เซิฟเวอร์" settings: "การตั้งค่า" basicSettings: "การตั้งค่าพื้นฐาน" otherSettings: "การตั้งค่าอื่นๆ" @@ -44,7 +44,8 @@ copyContent: "คัดลอกเนื้อหา" copyLink: "คัดลอกลิงก์" delete: "ลบ" deleteAndEdit: "ลบและแก้ไข" -deleteAndEditConfirm: "นายแน่ใจแล้วเหรอ? ว่าต้องการลบโน้ตนี้และแก้ไข คุณอาจจะสูญเสียการโต้ตอบ, โน้ต, และการตอบกลับทั้งหมดได้นะ" +deleteAndEditConfirm: "คุณแน่ใจแล้วเหรอว่าต้องการลบโพสต์นี้และแก้ไข? คุณอาจจะสูญเสียการโต้ตอบ, + โพสต์, และการตอบกลับทั้งหมดได้นะ" addToList: "เพิ่มในลิสต์" sendMessage: "ส่งข้อความ" copyUsername: "คัดลอกชื่อผู้ใช้" @@ -58,30 +59,31 @@ receiveFollowRequest: "คำขอผู้ติดตามที่ได้ followRequestAccepted: "ผู้ติดตามได้ตอบรับคำขอร้องของคุณแล้ว" mention: "กล่าวถึง" mentions: "พูดถึง" -directNotes: "ไดเร็คโน้ต" +directNotes: "ไดเร็คข้อความ" importAndExport: "นำเข้า / ส่งออก" import: "การนำเข้า" export: "การนำออก" files: "ไฟล์" download: "ดาวน์โหลด" -driveFileDeleteConfirm: "นายแน่ใจแล้วหรอ? ว่าต้องการลบไฟล์ \"{name}\" โน้ตย่อที่แนบมากับไฟล์นี้ก็จะถูกลบด้วยนะ" -unfollowConfirm: "นายแน่ใจแล้วหรอว่าต้องการเลิกติดตาม {name}?" +driveFileDeleteConfirm: "คุณแน่ใจแล้วหรอว่าต้องการลบไฟล์ \"{name}\"? โพสต์ย่อที่แนบมากับไฟล์นี้ก็จะถูกลบด้วยนะ" +unfollowConfirm: "คุณแน่ใจแล้วหรอว่าต้องการเลิกติดตาม {name}?" exportRequested: "เมื่อคุณได้ร้องขอการส่งออก อาจจะต้องใช้เวลาสักครู่ และจะถูกเพิ่มในไดรฟ์ของคุณเมื่อเสร็จสิ้นแล้ว" importRequested: "เมื่อคุณได้ร้องขอการนำเข้า อาจจะต้องใช้เวลาสักครู่นะ" lists: "รายการ" noLists: "คุณไม่มีลิสต์ใดๆนะ" -note: "ตัวโน้ต" -notes: "หมายเหตุ" +note: "โพสต์" +notes: "โพสต์" following: "กำลังติดตาม" followers: "ผู้ติดตาม" followsYou: "ติดตามคุณ" createList: "สร้างลิสต์" manageLists: "จัดการลิสต์" -error: "ผิดพลาด!" +error: "ผิดพลาด" somethingHappened: "อุ๊ย ! มีอะไรบางอย่างผิดพลาด" retry: "ลองใหม่อีกครั้ง" pageLoadError: "เกิดข้อผิดพลาดในการโหลดหน้านี้" -pageLoadErrorDescription: "โดยปกติแล้วมักจะเกิดจากข้อผิดพลาดของเครือข่ายหรือแคชของเบราว์เซอร์ ลองล้างแคชแล้วลองใหม่อีกครั้งหลังจากรอสักครู่ " +pageLoadErrorDescription: "โดยปกติแล้วมักจะเกิดจากข้อผิดพลาดของเครือข่ายหรือแคชของเบราว์เซอร์ + ลองล้างแคชแล้วลองใหม่อีกครั้งหลังจากรอสักครู่นะ" serverIsDead: "เซิร์ฟเวอร์นี้ไม่มีการตอบสนอง ได้โปรดกรุณารอสักครู่แล้วลองใหม่อีกครั้งนะ" youShouldUpgradeClient: "หากต้องการดูหน้านี้ได้โปรดกรุณา รีเซ็ตเพื่ออัปเดตไคลเอ็นต์ของคุณนะ" enterListName: "ใส่ชื่อสำหรับรายการลิสต์" @@ -89,18 +91,18 @@ privacy: "ความเป็นส่วนตัว" makeFollowManuallyApprove: "ติดตามคำขอที่ต้องได้รับการอนุมัติ" defaultNoteVisibility: "การมองเห็นที่เป็นค่าเริ่มต้น" follow: "กำลังติดตาม" -followRequest: "ส่งคำขอติดตาม" +followRequest: "คำขอติดตาม" followRequests: "ติดตามการร้องขอ" unfollow: "เลิกติดตาม" followRequestPending: "กำลังรอดำเนินการร้องขอติดตาม" enterEmoji: "ใส่อีโมจิ" -renote: "รีโน้ต" -unrenote: "เลิกรีโน้ต" -renoted: "รีโน้ตเอาไว้" -cantRenote: "โพสต์นี้ไม่สามารถรีโน้ตไว้ใหม่ได้นะ" -cantReRenote: "ไม่สามารถรีโน้ตเอาไว้ใหม่ได้นะ" +renote: "บูสต์" +unrenote: "เลิกบูสต์" +renoted: "บูสต์แล้ว" +cantRenote: "โพสต์นี้ไม่สามารถบูสต์ใหม่ได้" +cantReRenote: "ไม่สามารถบูสต์ไว้ใหม่ได้" quote: "อ้างคำพูด" -pinnedNote: "โน้ตที่ปักหมุดเอาไว้" +pinnedNote: "โพสต์ที่ปักหมุดแล้ว" pinned: "ปักหมุดไปยังโปรไฟล์" you: "ตัวเอง" clickToShow: "คลิกเพื่อแสดง" @@ -109,7 +111,7 @@ add: "เพิ่ม" reaction: "รีแอคชั่น" reactionSetting: "รีแอคชั่นไปยังแสดงผลในตัวเลือกการรีแอคชั่น" reactionSettingDescription2: "กดลากเพื่อจัดลำดับใหม่ กดคลิกเพื่อลบ กด \"+\" เพื่อเพิ่ม" -rememberNoteVisibility: "จดจำการตั้งค่าการมองเห็นตัวโน้ต" +rememberNoteVisibility: "จดจำการตั้งค่าการมองเห็นโพสต์" attachCancel: "ลบไฟล์ออกที่แนบมา" markAsSensitive: "ทำเครื่องหมายว่าละเอียดอ่อน" unmarkAsSensitive: "ยกเลิกทำเครื่องหมายเป็น NSFW" @@ -120,11 +122,11 @@ block: "บล็อค" unblock: "เลิกปิดกั้น" suspend: "ถูกระงับ" unsuspend: "ยกเลิกระงับ" -blockConfirm: "คุณแน่ใจแล้วเหรอ? ว่าต้องการบล็อกบัญชีนี้" -unblockConfirm: "คุณแน่ใจแล้วเหรอ? ว่าต้องการปลดบล็อคบัญชีนี้" -suspendConfirm: "นายแน่ใจแล้วเหรอว่าต้องการระงับบัญชีนี้อ่ะ?" -unsuspendConfirm: "นายแน่ใจแล้วหรอ? ว่าต้องการยกเลิกการระงับบัญชีนี้" -selectList: "เลือกรายการ (Automatic Translation)" +blockConfirm: "คุณแน่ใจแล้วเหรอ ว่าต้องการบล็อกบัญชีนี้?" +unblockConfirm: "คุณแน่ใจแล้วเหรอ ว่าต้องการปลดบล็อคบัญชีนี้?" +suspendConfirm: "คุณแน่ใจแล้วเหรอว่าต้องการระงับบัญชีนี้อ่ะ?" +unsuspendConfirm: "คุณแน่ใจแล้วหรอว่าต้องการยกเลิกการระงับบัญชีนี้?" +selectList: "เลือกรายการ" selectAntenna: "เลือกเสาอากาศ" selectWidget: "เลือกวิดเจ็ต" editWidgets: "แก้ไขวิดเจ็ต" @@ -137,13 +139,17 @@ emojiUrl: "อิโมจิ URL" addEmoji: "แทรกอีโมจิ" settingGuide: "การตั้งค่าที่แนะนำ" cacheRemoteFiles: "แคชไฟล์ระยะไกล" -cacheRemoteFilesDescription: "เมื่อปิดใช้งานการตั้งค่านี้ ไฟล์ระยะไกลนั้นจะถูกโหลดโดยตรงจากอินสแตนซ์ระยะไกล แต่กรณีการปิดใช้งานนี้จะช่วยลดปริมาณการใช้พื้นที่จัดเก็บข้อมูล แต่เพิ่มปริมาณการใช้งาน เพราะเนื่องจากจะไม่มีการสร้างภาพขนาดย่อ" +cacheRemoteFilesDescription: "เมื่อปิดใช้งานการตั้งค่านี้ ไฟล์ระยะไกลนั้นจะถูกโหลดโดยตรงจากระยะไกลเซิฟเวอร์ + แต่กรณีการปิดใช้งานนี้จะช่วยลดปริมาณการใช้พื้นที่จัดเก็บข้อมูล แต่เพิ่มปริมาณการใช้งาน + เพราะเนื่องจากจะไม่มีการสร้างภาพขนาดย่อ" flagAsBot: "ทำเครื่องหมายบอกว่าบัญชีนี้เป็นบอท" -flagAsBotDescription: "การเปิดใช้งานตัวเลือกนี้หากบัญชีนี้ถูกควบคุมโดยนักเขียนโปรแกรม หรือ ถ้าหากเปิดใช้งาน มันจะทำหน้าที่เป็นแฟล็กสำหรับนักพัฒนารายอื่นๆ และเพื่อป้องกันการโต้ตอบแบบไม่มีที่สิ้นสุดกับบอทตัวอื่นๆ และยังสามารถปรับเปลี่ยนระบบภายในของ Calckey เพื่อปฏิบัติต่อบัญชีนี้เป็นบอท" +flagAsBotDescription: "การเปิดใช้งานตัวเลือกนี้หากบัญชีนี้ถูกควบคุมโดยนักเขียนโปรแกรม + หรือ ถ้าหากเปิดใช้งาน มันจะทำหน้าที่เป็นแฟล็กสำหรับนักพัฒนารายอื่นๆ และเพื่อป้องกันการโต้ตอบแบบไม่มีที่สิ้นสุดกับบอทตัวอื่นๆ + และยังสามารถปรับเปลี่ยนระบบภายในของ Firefish เพื่อปฏิบัติต่อบัญชีนี้เป็นบอท" flagAsCat: "ทำเครื่องหมายบอกว่าบัญชีนี้เป็นแมว" -flagAsCatDescription: "การเปิดใช้งานตัวเลือกนี้เพื่อทำเครื่องหมายบอกว่าบัญชีนี้เป็นแมว" +flagAsCatDescription: "คุณจะได้รับหูแมวและพูดเหมือนแมวนะ!" flagShowTimelineReplies: "แสดงตอบกลับ ในไทม์ไลน์" -flagShowTimelineRepliesDescription: "แสดงการตอบกลับของผู้ใช้งานไปยังโน้ตของผู้ใช้งานรายอื่นๆในไทม์ไลน์หากได้เปิดเอาไว้" +flagShowTimelineRepliesDescription: "แสดงการตอบกลับของผู้ใช้งานไปยังโพสต์ของผู้ใช้งานรายอื่นๆในไทม์ไลน์หากได้เปิดเอาไว้" autoAcceptFollowed: "อนุมัติคำขอติดตามโดยอัตโนมัติทันที จากผู้ใช้งานที่คุณกำลังติดตาม" addAccount: "เพิ่มบัญชี" loginFailed: "การเข้าสู่ระบบไม่สำเร็จ" @@ -155,15 +161,17 @@ removeWallpaper: "นำวอลเปเปอร์ออก" searchWith: "ค้นหา: {q}" youHaveNoLists: "รายการนี้ว่างเปล่า" followConfirm: "คุณแน่ใจแล้วหรอว่าต้องการที่จะติดตาม {name}?" -proxyAccount: "บัญชี พร็อกซี่" -proxyAccountDescription: "บัญชีพร็อกซี่ คือ บัญชีที่จะทำหน้าที่เป็นผู้ติดตามระยะไกลสำหรับผู้ใช้งานที่อยู่ภายใต้ด้วยเงื่อนไขบางอย่าง ยกตัวอย่าง เช่น เมื่อมีผู้ใช้งานนั้นได้เพิ่มผู้ใช้งานจากระยะไกลลงในรายการ แต่กิจกรรมของผู้ใช้ในระยะไกลนั้นจะไม่ถูกส่งไปยังอินสแตนซ์หากไม่มีผู้ใช้งานในพื้นที่ติดตามผู้ใช้รายนั้น ดังนั้นบัญชีพร็อกซีนี้จะติดตามแทน" +proxyAccount: "บัญชีพร็อกซี" +proxyAccountDescription: "บัญชีพร็อกซี่ คือ บัญชีที่จะทำหน้าที่เป็นผู้ติดตามระยะไกลสำหรับผู้ใช้งานที่อยู่ภายใต้ด้วยเงื่อนไขบางอย่าง + ยกตัวอย่าง เช่น เมื่อมีผู้ใช้งานนั้นได้เพิ่มผู้ใช้งานจากระยะไกลลงในรายการ แต่กิจกรรมของผู้ใช้ในระยะไกลนั้นจะไม่ถูกส่งไปยังเซิฟเวอร์ + หากไม่มีผู้ใช้งานในพื้นที่ติดตามผู้ใช้รายนั้น ดังนั้นบัญชีพร็อกซีนี้จะติดตามแทน" host: "โฮสต์" selectUser: "เลือกผู้ใช้งาน" recipient: "ผู้รับ" annotation: "ความคิดเห็น" federation: "สหพันธ์" -instances: "ตัวอย่าง" -registeredAt: "จดทะเบียนที่" +instances: "เซิฟเวอร์" +registeredAt: "จดทะเบียนแล้วที่" latestRequestSentAt: "ส่งคำขอล่าสุดไปแล้ว" latestRequestReceivedAt: "ได้รับคำขอล่าสุดไปแล้ว" latestStatus: "สถานะล่าสุด" @@ -186,7 +194,8 @@ instanceInfo: "ข้อมูล อินสแตนซ์" statistics: "สถิติการใช้งาน" clearQueue: "ล้างคิว" clearQueueConfirmTitle: "คุณแน่ใจแล้วหรอว่าต้องการที่จะล้างคิว?" -clearQueueConfirmText: "บันทึกย่อที่ยังไม่ได้ส่งที่เหลืออยู่ในคิวนั้นมักจะ ไม่ถูกรวมเข้าด้วยกัน โดยปกติแล้วไม่จำเป็นต้องดำเนินการนี้" +clearQueueConfirmText: "บันทึกย่อที่ยังไม่ได้ส่งที่เหลืออยู่ในคิวนั้นมักจะ ไม่ถูกรวมเข้าด้วยกัน + โดยปกติแล้วไม่จำเป็นต้องดำเนินการนี้" clearCachedFiles: "ล้างแคช" clearCachedFilesConfirm: "นายแน่ใจแล้วหรอว่าต้องการที่จะลบไฟล์ระยะไกลที่แคชไว้ทั้งหมด?" blockedInstances: "อินสแตนซ์ที่ ถูกบล็อก" @@ -198,7 +207,7 @@ noUsers: "ไม่พบผู้ใช้งาน" editProfile: "แก้ไขโปรไฟล์" noteDeleteConfirm: "นายแน่ใจแล้วหรอว่าต้องการลบโน้ตนี้นะ?" pinLimitExceeded: "คุณไม่สามารถปักหมุดโน้ตเพิ่มเติมใดๆได้อีก" -intro: "การติดตั้ง Calckey เสร็จสิ้นแล้วนะ! โปรดสร้างผู้ใช้งานที่เป็นผู้ดูแลระบบ" +intro: "การติดตั้ง Firefish เสร็จสิ้นแล้วนะ! โปรดสร้างผู้ใช้งานที่เป็นผู้ดูแลระบบ" done: "เสร็จสิ้น" processing: "กำลังประมวลผล..." preview: "แสดงตัวอย่าง" @@ -232,14 +241,15 @@ announcements: "ประกาศ" imageUrl: "url รูปภาพ" remove: "ลบ" removed: "ถูกลบไปแล้ว" -removeAreYouSure: "นายแน่ใจจริงหรอว่าต้องการที่จะลบออก \"{x}\"" -deleteAreYouSure: "นายแน่ใจจริงหรอว่าต้องการที่จะลบออก \"{x}\"" -resetAreYouSure: "รีเซ็ตเลยไหม" +removeAreYouSure: "คุณแน่ใจจริงหรอว่าต้องการที่จะลบออก \"{x}\"?" +deleteAreYouSure: "คุณแน่ใจหรอว่าต้องการที่จะลบออก \"{x}\"?" +resetAreYouSure: "จริงหรอรีเซ็ตเลยไหม?" saved: "บันทึกแล้ว" messaging: "แชท" upload: "อัพโหลด" keepOriginalUploading: "เก็บภาพต้นฉบับ" -keepOriginalUploadingDescription: "บันทึกรูปภาพที่อัพโหลดต้นฉบับตามที่เป็นอยู่ ถ้าหากปิดอยู่ ระบบจะสร้างเวอร์ชั่นที่จะแสดงบนเว็บเมื่ออัพโหลดนะ" +keepOriginalUploadingDescription: "บันทึกรูปภาพที่อัพโหลดต้นฉบับตามที่เป็นอยู่ ถ้าหากปิดอยู่ + ระบบจะสร้างเวอร์ชั่นที่จะแสดงบนเว็บเมื่ออัพโหลดนะ" fromDrive: "จากไดรฟ์" fromUrl: "จาก URL" uploadFromUrl: "อัพโหลดจาก URL" @@ -253,7 +263,7 @@ startMessaging: "เริ่มการสนทนา" nUsersRead: "อ่านโดย {n}" agreeTo: "ฉันยอมรับที่จะ {0}" tos: "ข้อกำหนดและเงื่อนไข" -start: "เริ่มต้น​ใช้งาน​" +start: "เริ่มต้น" home: "หน้าแรก" remoteUserCaution: "เนื่องจากผู้ใช้งานรายนี้นั้น มาจากอินสแตนซ์ระยะไกล ข้อมูลที่แสดงดังกล่าวนั้นอาจจะไม่สมบูรณ์ก็ได้นะ" activity: "กิจกรรม" @@ -334,9 +344,11 @@ bannerUrl: "URL รูปภาพแบนเนอร์" backgroundImageUrl: "URL ภาพพื้นหลัง" basicInfo: "ข้อมูลเบื้องต้น" pinnedUsers: "ผู้ใช้งานที่ได้รับการปักหมุด" -pinnedUsersDescription: "ลิสต์ชื่อผู้ใช้โดยคั่นด้วยการขึ้นบรรทัดใหม่เพื่อปักหมุดในแท็บ \"สำรวจ\"" +pinnedUsersDescription: "ลิสต์ชื่อผู้ใช้โดยคั่นด้วยการขึ้นบรรทัดใหม่เพื่อปักหมุดในแท็บ + \"สำรวจ\"" pinnedPages: "หน้าที่ปักหมุด" -pinnedPagesDescription: "ป้อนเส้นทางของหน้าที่คุณต้องการตรึงไว้ที่หน้าแรกของอินสแตนซ์นี้ โดยคั่นด้วยตัวแบ่งบรรทัด" +pinnedPagesDescription: "ป้อนเส้นทางของหน้าที่คุณต้องการตรึงไว้ที่หน้าแรกของอินสแตนซ์นี้ + โดยคั่นด้วยตัวแบ่งบรรทัด" pinnedClipId: "ID ของคลิปที่จะปักหมุด" pinnedNotes: "โน้ตที่ปักหมุดเอาไว้" hcaptcha: "hCaptcha" @@ -347,14 +359,17 @@ recaptcha: "reCAPTCHA" enableRecaptcha: "เปิดใช้ reCAPTCHA" recaptchaSiteKey: "คีย์ไซต์" recaptchaSecretKey: "คีย์ลับ" -avoidMultiCaptchaConfirm: "การใช้ระบบ Captcha หลายระบบอาจทำให้เกิดการรบกวนหรืออาจจะเกิดข้อผิดพลาดได้ หากต้องการที่จะปิดการใช้งานระบบ Captcha อื่น ๆ แนะนำให้ปิดตัวอื่นๆก่อน ถ้าหากคุณต้องการให้เปิดใช้งานต่อไป ให้ กด ยกเลิก" +avoidMultiCaptchaConfirm: "การใช้ระบบ Captcha หลายระบบอาจทำให้เกิดการรบกวนหรืออาจจะเกิดข้อผิดพลาดได้ + หากต้องการที่จะปิดการใช้งานระบบ Captcha อื่น ๆ แนะนำให้ปิดตัวอื่นๆก่อน ถ้าหากคุณต้องการให้เปิดใช้งานต่อไป + ให้ กด ยกเลิก" antennas: "เสาอากาศ" manageAntennas: "จัดการเสาอากาศ" name: "ชื่อ" antennaSource: "แหล่งเสาอากาศ" antennaKeywords: "คีย์เวิร์ดที่ควรฟัง" antennaExcludeKeywords: "คีย์เวิร์ดที่จะยกเว้น" -antennaKeywordsDescription: "คั่นด้วยช่องว่างสำหรับเงื่อนไข AND หรือด้วยการขึ้นบรรทัดใหม่สำหรับเงื่อนไข OR นะ" +antennaKeywordsDescription: "คั่นด้วยช่องว่างสำหรับเงื่อนไข AND หรือด้วยการขึ้นบรรทัดใหม่สำหรับเงื่อนไข + OR นะ" notifyAntenna: "แจ้งเตือนเกี่ยวกับโน้ตใหม่" withFileAntenna: "เฉพาะโน้ตที่มีไฟล์" enableServiceworker: "เปิดใช้งาน การแจ้งเตือนแบบพุชสำหรับเบราว์เซอร์ของคุณ" @@ -377,7 +392,7 @@ exploreFediverse: "สำรวจเฟดดิเวิร์ส" popularTags: "แท็กยอดนิยม" userList: "รายการ" about: "เกี่ยวกับ" -aboutMisskey: "เกี่ยวกับ Calckey" +aboutFirefish: "เกี่ยวกับ Firefish" administrator: "ผู้ดูแลระบบ" token: "โทเค็น" twoStepAuthentication: "ยืนยันตัวตน 2 ชั้น" @@ -433,7 +448,8 @@ invitationCode: "รหัสคำเชิญ" checking: "Checking" available: "พร้อมใช้งาน" unavailable: "ไม่พร้อมใช้" -usernameInvalidFormat: "คุณสามารถใช้อักษรตัวพิมพ์ใหญ่และตัวพิมพ์เล็ก ตัวเลข และขีดล่างได้นะ ( a-z , A-Z , 0-9 , รวมไปถึงอักษรพิเศษเช่น + * / , . - อื่นๆเป็นต้น )" +usernameInvalidFormat: "คุณสามารถใช้อักษรตัวพิมพ์ใหญ่และตัวพิมพ์เล็ก ตัวเลข และขีดล่างได้นะ + ( a-z , A-Z , 0-9 , รวมไปถึงอักษรพิเศษเช่น + * / , . - อื่นๆเป็นต้น )" tooShort: "สั้นเกินไปนะ" tooLong: "ยาวเกินไปนะ" weakPassword: "รหัสผ่าน แย่มาก" @@ -483,19 +499,26 @@ showFeaturedNotesInTimeline: "แสดงโน้ตเด่นในไท objectStorage: "อ็อบเจ็กต์ ที่จัดเก็บ" useObjectStorage: "ใช้ อ็อบเจ็กต์ ที่จัดเก็บ" objectStorageBaseUrl: "URL ฐาน" -objectStorageBaseUrlDesc: "URL ที่ใช้เป็นข้อมูลอ้างอิง ระบุ URL ของ CDN หรือ Proxy ถ้าหากคุณใช้อย่างใดอย่างหนึ่ง\n สำหรับการใช้งาน S3 'https://.s3.amazonaws.com' และสำหรับ GCS หรือบริการที่เทียบเท่าใช้ 'https://storage.googleapis.com/', เป็นต้น" +objectStorageBaseUrlDesc: "URL ที่ใช้เป็นข้อมูลอ้างอิง ระบุ URL ของ CDN หรือ Proxy + ถ้าหากคุณใช้อย่างใดอย่างหนึ่ง\n สำหรับการใช้งาน S3 'https://.s3.amazonaws.com' + และสำหรับ GCS หรือบริการที่เทียบเท่าใช้ 'https://storage.googleapis.com/', + เป็นต้น" objectStorageBucket: "Bucket" objectStorageBucketDesc: "โปรดระบุชื่อที่เก็บข้อมูลที่ใช้กับผู้ให้บริการของคุณ" objectStoragePrefix: "คำนำหน้า" objectStoragePrefixDesc: "ไฟล์ทั้งหมดจะถูกเก็บไว้ภายใต้ไดเร็กทอรีที่มีคำนำหน้านี้นะ" objectStorageEndpoint: "ปลายทาง" -objectStorageEndpointDesc: "เว้นว่างไว้หากคุณใช้ AWS S3 หรือระบุปลายทางเป็น '' หรือ ':' ทั้งนี้ขึ้นอยู่กับผู้ให้บริการที่คุณใช้อยู่ด้วย" +objectStorageEndpointDesc: "เว้นว่างไว้หากคุณใช้ AWS S3 หรือระบุปลายทางเป็น '' + หรือ ':' ทั้งนี้ขึ้นอยู่กับผู้ให้บริการที่คุณใช้อยู่ด้วย" objectStorageRegion: "ภูมิภาค" -objectStorageRegionDesc: "ระบุภูมิภาค เช่น 'xx-east-1' ถ้าหากบริการของคุณไม่ได้แยกความแตกต่างระหว่างภูมิภาคก็ให้ เว้นว่างไว้หรือป้อน 'us-east-1'" +objectStorageRegionDesc: "ระบุภูมิภาค เช่น 'xx-east-1' ถ้าหากบริการของคุณไม่ได้แยกความแตกต่างระหว่างภูมิภาคก็ให้ + เว้นว่างไว้หรือป้อน 'us-east-1'" objectStorageUseSSL: "ใช้ SSL" -objectStorageUseSSLDesc: "ปิดการทำงานนี้ไว้ ถ้าหากคุณจะไม่ใช้ HTTPS สำหรับการเชื่อมต่อ API" +objectStorageUseSSLDesc: "ปิดการทำงานนี้ไว้ ถ้าหากคุณจะไม่ใช้ HTTPS สำหรับการเชื่อมต่อ + API" objectStorageUseProxy: "เชื่อมต่อผ่านพร็อกซี" -objectStorageUseProxyDesc: "ปิดสิ่งนี้ไว้ถ้าหากคุณจะไม่ใช้ Proxy สำหรับการเชื่อมต่อ API" +objectStorageUseProxyDesc: "ปิดสิ่งนี้ไว้ถ้าหากคุณจะไม่ใช้ Proxy สำหรับการเชื่อมต่อ + API" objectStorageSetPublicRead: "ตั้งค่า \"public-read\" ในการอัปโหลด" serverLogs: "บันทึกของเซิร์ฟเวอร์" deleteAll: "ลบทั้งหมด" @@ -523,7 +546,8 @@ sort: "เรียงลำดับ" ascendingOrder: "เรียงจากน้อยไปมาก" descendingOrder: "เรียงจากมากไปน้อย" scratchpad: "กระดานทดลอง" -scratchpadDescription: "Scratchpad เป็นการจัดเตรียมสภาพแวดล้อมสำหรับการทดลอง AiScript แต่คุณสามารถเขียน ดำเนินการ และตรวจสอบผลลัพธ์ของการโต้ตอบกับ Calckey มันได้ด้วยนะ" +scratchpadDescription: "Scratchpad เป็นการจัดเตรียมสภาพแวดล้อมสำหรับการทดลอง AiScript + แต่คุณสามารถเขียน ดำเนินการ และตรวจสอบผลลัพธ์ของการโต้ตอบกับ Firefish มันได้ด้วยนะ" output: "เอาท์พุต" script: "สคริปต์" disablePagesScript: "ปิดการใช้งาน AiScript บนเพจ" @@ -531,11 +555,14 @@ updateRemoteUser: "อัปเดตข้อมูลผู้ใช้งา deleteAllFiles: "ลบไฟล์ทั้งหมด" deleteAllFilesConfirm: "นายแน่ใจแล้วหรอว่าต้องการที่จะลบไฟล์ทั้งหมด?" removeAllFollowing: "เลิกติดตามผู้ใช้ที่ติดตามทั้งหมด" -removeAllFollowingDescription: "การที่คุณดำเนินการนี้จะเลิกติดตามบัญชีทั้งหมดจาก {host} โปรดเรียกใช้คำสั่งสิ่งนี้หากต้องการยกเลิกอินสแตนซ์ เช่น ไม่มีอยู่แล้ว" +removeAllFollowingDescription: "การที่คุณดำเนินการนี้จะเลิกติดตามบัญชีทั้งหมดจาก {host} + โปรดเรียกใช้คำสั่งสิ่งนี้หากต้องการยกเลิกอินสแตนซ์ เช่น ไม่มีอยู่แล้ว" userSuspended: "ผู้ใช้รายนี้ถูกระงับการใช้งาน" userSilenced: "ผู้ใช้รายนี้กำลังถูกปิดกั้น" yourAccountSuspendedTitle: "บัญชีนี้นั้นถูกระงับ" -yourAccountSuspendedDescription: "บัญชีนี้ถูกระงับ เนื่องจากละเมิดข้อกำหนดในการให้บริการของเซิร์ฟเวอร์หรืออาจจะละเมิดหลักเกณฑ์ชุมชน หรือ อาจจะโดนร้องเรียนเรื่องการละเมิดลิขสิทธิ์และอื่นๆอย่างต่อเนื่องซ้ำๆ หากคุณคิดว่าไม่ได้ทำผิดจริงๆหรือตัดสินผิดพลาด ได้โปรดกรุณาติดต่อผู้ดูแลระบบหากคุณต้องการทราบเหตุผลโดยละเอียดเพิ่มเติม และขอความกรุณาอย่าสร้างบัญชีใหม่" +yourAccountSuspendedDescription: "บัญชีนี้ถูกระงับ เนื่องจากละเมิดข้อกำหนดในการให้บริการของเซิร์ฟเวอร์หรืออาจจะละเมิดหลักเกณฑ์ชุมชน + หรือ อาจจะโดนร้องเรียนเรื่องการละเมิดลิขสิทธิ์และอื่นๆอย่างต่อเนื่องซ้ำๆ หากคุณคิดว่าไม่ได้ทำผิดจริงๆหรือตัดสินผิดพลาด + ได้โปรดกรุณาติดต่อผู้ดูแลระบบหากคุณต้องการทราบเหตุผลโดยละเอียดเพิ่มเติม และขอความกรุณาอย่าสร้างบัญชีใหม่" menu: "เมนู" divider: "ตัวแบ่ง" addItem: "เพิ่มรายการ" @@ -589,13 +616,15 @@ smtpHost: "โฮสต์" smtpPort: "พอร์ต" smtpUser: "ชื่อผู้ใช้" smtpPass: "รหัสผ่าน" -emptyToDisableSmtpAuth: "ปล่อยชื่อผู้ใช้และรหัสผ่านว่างไว้เพื่อปิดใช้งานการยืนยัน SMTP" +emptyToDisableSmtpAuth: "ปล่อยชื่อผู้ใช้และรหัสผ่านว่างไว้เพื่อปิดใช้งานการยืนยัน + SMTP" smtpSecure: "ใช้โดยนัย SSL/TLS สำหรับการเชื่อมต่อ SMTP" smtpSecureInfo: "ปิดสิ่งนี้เมื่อใช้ STARTTLS" testEmail: "ทดสอบการส่งอีเมล" wordMute: "ปิดเสียงคำ" regexpError: "ข้อผิดพลาดของนิพจน์ทั่วไป" -regexpErrorDescription: "เกิดข้อผิดพลาดในนิพจน์ทั่วไปในบรรทัดที่ {line} ของการปิดเสียงคำ {tab} ของคุณ:" +regexpErrorDescription: "เกิดข้อผิดพลาดในนิพจน์ทั่วไปในบรรทัดที่ {line} ของการปิดเสียงคำ + {tab} ของคุณ:" instanceMute: "ปิดเสียง อินสแตนซ์" userSaysSomething: "{name} พูดอะไรบางอย่าง" makeActive: "เปิดใช้งาน" @@ -611,10 +640,12 @@ create: "สร้าง" notificationSetting: "ตั้งค่าการแจ้งเตือน" notificationSettingDesc: "เลือกประเภทการแจ้งเตือนที่ต้องการจะแสดง" useGlobalSetting: "ใช้การตั้งค่าส่วนกลาง" -useGlobalSettingDesc: "หากเปิดไว้ ระบบจะใช้การตั้งค่าการแจ้งเตือนของบัญชีของคุณ หากปิดอยู่ สามารถทำการกำหนดค่าแต่ละรายการได้นะ" +useGlobalSettingDesc: "หากเปิดไว้ ระบบจะใช้การตั้งค่าการแจ้งเตือนของบัญชีของคุณ หากปิดอยู่ + สามารถทำการกำหนดค่าแต่ละรายการได้นะ" other: "อื่น ๆ" regenerateLoginToken: "สร้างโทเค็นการเข้าสู่ระบบอีกครั้ง" -regenerateLoginTokenDescription: "สร้างโทเค็นใหม่ที่ใช้ภายในระหว่างการเข้าสู่ระบบ โดยตามหลักปกติแล้วการดำเนินการนี้ไม่จำเป็น หากสร้างใหม่ อุปกรณ์ทั้งหมดจะถูกออกจากระบบนะ" +regenerateLoginTokenDescription: "สร้างโทเค็นใหม่ที่ใช้ภายในระหว่างการเข้าสู่ระบบ + โดยตามหลักปกติแล้วการดำเนินการนี้ไม่จำเป็น หากสร้างใหม่ อุปกรณ์ทั้งหมดจะถูกออกจากระบบนะ" setMultipleBySeparatingWithSpace: "คั่นหลายรายการด้วยช่องว่าง" fileIdOrUrl: "ไฟล์ ID หรือ URL" behavior: "พฤติกรรม" @@ -622,7 +653,8 @@ sample: "ตัวอย่าง" abuseReports: "รายงาน" reportAbuse: "รายงาน" reportAbuseOf: "รายงาน {ชื่อ}" -fillAbuseReportDescription: "กรุณากรอกรายละเอียดเกี่ยวกับรายงานนี้ หากเป็นเรื่องเกี่ยวกับโน้ตโดยเฉพาะ ได้โปรดระบุ URL" +fillAbuseReportDescription: "กรุณากรอกรายละเอียดเกี่ยวกับรายงานนี้ หากเป็นเรื่องเกี่ยวกับโน้ตโดยเฉพาะ + ได้โปรดระบุ URL" abuseReported: "เราได้ส่งรายงานของคุณไปแล้ว ขอบคุณมากๆนะ" reporter: "นักข่าว" reporteeOrigin: "รายงานต้นทาง" @@ -648,7 +680,8 @@ createNewClip: "สร้างคลิปใหม่" unclip: "ลบคลิป" confirmToUnclipAlreadyClippedNote: "โน้ตนี้เป็นส่วนหนึ่งของคลิป \"{name}\" แล้ว คุณต้องการลบออกจากคลิปนี้แทนอย่างงั้นหรอ?" public: "สาธารณะ" -i18nInfo: "Calckey กำลังได้รับการแปลเป็นภาษาต่างๆ โดยอาสาสมัคร คุณสามารถช่วยเหลือได้ที่ {link}" +i18nInfo: "Firefish กำลังได้รับการแปลเป็นภาษาต่างๆ โดยอาสาสมัคร คุณสามารถช่วยเหลือได้ที่ + {link}" manageAccessTokens: "การจัดการโทเค็นการเข้าถึง" accountInfo: "ข้อมูลบัญชี" notesCount: "จำนวนของโน้ต" @@ -667,8 +700,10 @@ no: "ไม่" driveFilesCount: "จำนวนไฟล์ไดรฟ์" driveUsage: "การใช้พื้นที่ไดรฟ์" noCrawle: "ปฏิเสธการจัดทำดัชนีของโปรแกรมรวบรวมข้อมูล" -noCrawleDescription: "ขอให้เครื่องมือค้นหาไม่จัดทำดัชนีหน้าโปรไฟล์ บันทึกย่อ หน้า ฯลฯ" -lockedAccountInfo: "เว้นแต่ว่าคุณจะต้องตั้งค่าการเปิดเผยโน้ตเป็น \"ผู้ติดตามเท่านั้น\" โน้ตย่อของคุณจะปรากฏแก่ทุกคน ถึงแม้ว่าคุณจะเป็นกำหนดให้ผู้ติดตามต้องได้รับการอนุมัติด้วยตนเองก็ตาม" +noCrawleDescription: "ขอให้เครื่องมือค้นหาไม่จัดทำดัชนีหน้าโปรไฟล์ บันทึกย่อ หน้า + ฯลฯ" +lockedAccountInfo: "เว้นแต่ว่าคุณจะต้องตั้งค่าการเปิดเผยโน้ตเป็น \"ผู้ติดตามเท่านั้น\"\ + \ โน้ตย่อของคุณจะปรากฏแก่ทุกคน ถึงแม้ว่าคุณจะเป็นกำหนดให้ผู้ติดตามต้องได้รับการอนุมัติด้วยตนเองก็ตาม" alwaysMarkSensitive: "ทำเครื่องหมายเป็น NSFW เป็นค่าเริ่มต้น" loadRawImages: "โหลดภาพต้นฉบับแทนการแสดงภาพขนาดย่อ" disableShowingAnimatedImages: "ไม่ต้องเล่นภาพเคลื่อนไหว" @@ -684,7 +719,8 @@ clips: "คลิป" experimentalFeatures: "ฟังก์ชั่นทดสอบ" developer: "สำหรับนักพัฒนา" makeExplorable: "ทำให้บัญชีมองเห็นใน \"สำรวจ\"" -makeExplorableDescription: "ถ้าหากคุณปิดการทำงานนี้ บัญชีของคุณนั้นจะไม่แสดงในส่วน \"สำรวจ\" นะ" +makeExplorableDescription: "ถ้าหากคุณปิดการทำงานนี้ บัญชีของคุณนั้นจะไม่แสดงในส่วน + \"สำรวจ\" นะ" showGapBetweenNotesInTimeline: "แสดงช่องว่างระหว่างโพสต์บนไทม์ไลน์" duplicate: "ทำซ้ำ" left: "ซ้าย" @@ -699,7 +735,9 @@ onlineUsersCount: "{n} ผู้ใช้คนนี้กำลังออน nUsers: "{n} ผู้ใช้งาน" nNotes: "{n} โน้ต" sendErrorReports: "ส่งรายงานว่าข้อผิดพลาด" -sendErrorReportsDescription: "เมื่อเปิดใช้งาน ข้อมูลข้อผิดพลาดโดยรายละเอียดนั้นจะถูกแชร์ให้กับ Calckey เมื่อเกิดปัญหา ซึ่งช่วยปรับปรุงคุณภาพของ Calckey\nซึ่งจะรวมถึงข้อมูล เช่น เวอร์ชั่นของระบบปฏิบัติการ เบราว์เซอร์ที่คุณใช้ กิจกรรมของคุณใน Calckey เป็นต้น" +sendErrorReportsDescription: "เมื่อเปิดใช้งาน ข้อมูลข้อผิดพลาดโดยรายละเอียดนั้นจะถูกแชร์ให้กับ + Firefish เมื่อเกิดปัญหา ซึ่งช่วยปรับปรุงคุณภาพของ Firefish\nซึ่งจะรวมถึงข้อมูล เช่น + เวอร์ชั่นของระบบปฏิบัติการ เบราว์เซอร์ที่คุณใช้ กิจกรรมของคุณใน Firefish เป็นต้น" myTheme: "ธีมของฉัน" backgroundColor: "ภาพพื้นหลัง" accentColor: "รูปแบบสี" @@ -745,7 +783,8 @@ userInfo: "ข้อมูลผู้ใช้" unknown: "ไม่ทราบสถานะ" onlineStatus: "สถานะออนไลน์" hideOnlineStatus: "ซ่อนสถานะออนไลน์" -hideOnlineStatusDescription: "การซ่อนสถานะออนไลน์ของคุณช่วยลดความสะดวกของคุณสมบัติบางอย่าง เช่น การค้นหา อ่ะนะ" +hideOnlineStatusDescription: "การซ่อนสถานะออนไลน์ของคุณช่วยลดความสะดวกของคุณสมบัติบางอย่าง + เช่น การค้นหา อ่ะนะ" online: "ออนไลน์" active: "ใช้งานอยู่" offline: "ออฟไลน์" @@ -790,12 +829,13 @@ hashtags: "แฮชแท็ก" troubleshooting: "แก้ปัญหา" useBlurEffect: "ใช้เอฟเฟกต์เบลอใน UI" learnMore: "แสดงให้ดูหน่อย" -misskeyUpdated: "Calckey ได้รับการอัปเดตแล้ว!" +misskeyUpdated: "Firefish ได้รับการอัปเดตแล้ว!" whatIsNew: "แสดงการเปลี่ยนแปลง" translate: "แปลภาษา" translatedFrom: "แปลมาจาก {x}" accountDeletionInProgress: "กำลังดำเนินการลบบัญชีอยู่" -usernameInfo: "ชื่อที่ระบุบัญชีของคุณจากผู้อื่นในเซิร์ฟเวอร์นี้ คุณสามารถใช้ตัวอักษร (a~z, A~Z), ตัวเลข (0~9) หรือขีดล่าง (_) ชื่อผู้ใช้ไม่สามารถเปลี่ยนแปลงได้ในภายหลัง" +usernameInfo: "ชื่อที่ระบุบัญชีของคุณจากผู้อื่นในเซิร์ฟเวอร์นี้ คุณสามารถใช้ตัวอักษร + (a~z, A~Z), ตัวเลข (0~9) หรือขีดล่าง (_) ชื่อผู้ใช้ไม่สามารถเปลี่ยนแปลงได้ในภายหลัง" aiChanMode: "โหมด Ai " keepCw: "เก็บคำเตือนเนื้อหา" pubSub: "บัญชีผับ/ย่อย" @@ -864,7 +904,8 @@ typeToConfirm: "โปรดป้อน {x} เพื่อยืนยัน" deleteAccount: "ลบบัญชี" document: "เอกสาร" numberOfPageCache: "จำนวนหน้าเพจที่แคช" -numberOfPageCacheDescription: "การเพิ่มจำนวนนี้จะช่วยเพิ่มความสะดวกให้กับผู้ใช้งาน แต่จะทำให้เซิร์ฟเวอร์โหลดมากขึ้นและต้องใช้หน่วยความจำมากขึ้นอีกด้วย" +numberOfPageCacheDescription: "การเพิ่มจำนวนนี้จะช่วยเพิ่มความสะดวกให้กับผู้ใช้งาน + แต่จะทำให้เซิร์ฟเวอร์โหลดมากขึ้นและต้องใช้หน่วยความจำมากขึ้นอีกด้วย" logoutConfirm: "คุณแน่ใจว่าต้องการออกจากระบบ?" lastActiveDate: "ใช้งานล่าสุดที่" statusbar: "ไอคอนบนแถบสถานะ" @@ -881,22 +922,29 @@ sensitiveMediaDetection: "การตรวจจับของสื่อ NS localOnly: "เฉพาะท้องถิ่น" remoteOnly: "รีโมทเท่านั้น" failedToUpload: "การอัปโหลดล้มเหลว" -cannotUploadBecauseInappropriate: "ไม่สามารถอัปโหลดไฟล์นี้ได้เนื่องจากระบบตรวจพบบางส่วนของไฟล์ว่านี้อาจจะเป็น NSFW" +cannotUploadBecauseInappropriate: "ไม่สามารถอัปโหลดไฟล์นี้ได้เนื่องจากระบบตรวจพบบางส่วนของไฟล์ว่านี้อาจจะเป็น + NSFW" cannotUploadBecauseNoFreeSpace: "การอัปโหลดนั้นล้มเหลวเนื่องจากไม่มีความจุของไดรฟ์" beta: "เบต้า" enableAutoSensitive: "ทำเครื่องหมาย NSFW อัตโนมัติ" -enableAutoSensitiveDescription: "อนุญาตให้ตรวจหาและทำเครื่องหมายสื่อ NSFW โดยอัตโนมัติผ่านการเรียนรู้ของเครื่องหากเป็นไปได้ แม้ว่าตัวเลือกนี้จะถูกปิดใช้งาน แต่ก็สามารถเปิดใช้งานได้ทั้งอินสแตนซ์นี้" -activeEmailValidationDescription: "เปิดใช้งานการตรวจสอบที่อยู่อีเมลให้มีความเข้มงวดยิ่งขึ้น ซึ่งอาจจะรวมไปถึงการตรวจสอบที่อยู่อีเมล์ที่ใช้แล้วทิ้งและโดยให้พิจารณาว่าสามารถสื่อสารด้วยได้หรือไม่ เมื่อไม่เลือกระบบจะตรวจสอบเฉพาะรูปแบบของอีเมลเท่านั้น" +enableAutoSensitiveDescription: "อนุญาตให้ตรวจหาและทำเครื่องหมายสื่อ NSFW โดยอัตโนมัติผ่านการเรียนรู้ของเครื่องหากเป็นไปได้ + แม้ว่าตัวเลือกนี้จะถูกปิดใช้งาน แต่ก็สามารถเปิดใช้งานได้ทั้งอินสแตนซ์นี้" +activeEmailValidationDescription: "เปิดใช้งานการตรวจสอบที่อยู่อีเมลให้มีความเข้มงวดยิ่งขึ้น + ซึ่งอาจจะรวมไปถึงการตรวจสอบที่อยู่อีเมล์ที่ใช้แล้วทิ้งและโดยให้พิจารณาว่าสามารถสื่อสารด้วยได้หรือไม่ + เมื่อไม่เลือกระบบจะตรวจสอบเฉพาะรูปแบบของอีเมลเท่านั้น" navbar: "แถบนำทาง" shuffle: "สลับ" account: "บัญชีผู้ใช้" move: "ย้าย" _sensitiveMediaDetection: - description: "ลดความพยายามในการดูแลเซิร์ฟเวอร์ผ่านการจดจำสื่อ NSFW โดยอัตโนมัติผ่านการเรียนรู้ของเครื่อง การทำสิ่งนี้อาจจะเพิ่มภาระบนเซิร์ฟเวอร์เล็กน้อย" + description: "ลดความพยายามในการดูแลเซิร์ฟเวอร์ผ่านการจดจำสื่อ NSFW โดยอัตโนมัติผ่านการเรียนรู้ของเครื่อง + การทำสิ่งนี้อาจจะเพิ่มภาระบนเซิร์ฟเวอร์เล็กน้อย" sensitivity: "การตรวจจับความไว" - sensitivityDescription: "การลดความไวนั้นจะนำไปสู่การตรวจจับที่ผิดพลาดน้อยลง (ผลบวกที่ผิดพลาด) แต่ในขณะที่การเพิ่มนั้นจะนำไปสู่การตรวจหาที่พลาดน้อยลง (ผลลบเท็จ)" + sensitivityDescription: "การลดความไวนั้นจะนำไปสู่การตรวจจับที่ผิดพลาดน้อยลง (ผลบวกที่ผิดพลาด) + แต่ในขณะที่การเพิ่มนั้นจะนำไปสู่การตรวจหาที่พลาดน้อยลง (ผลลบเท็จ)" setSensitiveFlagAutomatically: "ทำเครื่องหมายว่าเป็น NSFW" - setSensitiveFlagAutomaticallyDescription: "ผลลัพธ์ของการตรวจจับภายในนั้นจะยังคงอยู่ ถึงแม้ว่าจะปิดตัวเลือกนี้" + setSensitiveFlagAutomaticallyDescription: "ผลลัพธ์ของการตรวจจับภายในนั้นจะยังคงอยู่ + ถึงแม้ว่าจะปิดตัวเลือกนี้" analyzeVideos: "เปิดใช้งานวิเคราะห์ของวิดีโอ" analyzeVideosDescription: "การวิเคราะห์วิดีโอนอกเหนือจากรูปภาพนั้น การทำสิ่งนี้จะทำให้เพิ่มภาระบนเซิร์ฟเวอร์เล็กน้อย" _emailUnavailable: @@ -915,7 +963,8 @@ _signup: emailSent: "เราได้ส่งอีเมลยืนยันไปยังที่อยู่อีเมลของคุณแล้วนะ ({email}) โปรดคลิกลิงก์ที่รวมไว้เพื่อสร้างบัญชีให้เสร็จสิ้น" _accountDelete: accountDelete: "ลบบัญชีผู้ใช้" - mayTakeTime: "เนื่องจากการลบบัญชีนี้จะเป็นกระบวนการที่ต้องใช้ทรัพยากรมาก จึงอาจจะต้องใช้เวลาสักครู่ถึงจะเสร็จสมบูรณ์ ทั้งนี้ขึ้นอยู่กับจำนวนเนื้อหาที่คุณสร้างและจำนวนไฟล์ที่คุณอัปโหลดนะ" + mayTakeTime: "เนื่องจากการลบบัญชีนี้จะเป็นกระบวนการที่ต้องใช้ทรัพยากรมาก จึงอาจจะต้องใช้เวลาสักครู่ถึงจะเสร็จสมบูรณ์ + ทั้งนี้ขึ้นอยู่กับจำนวนเนื้อหาที่คุณสร้างและจำนวนไฟล์ที่คุณอัปโหลดนะ" sendEmail: "เมื่อการลบบัญชีนี้เสร็จสิ้น เราอาจจะส่งอีเมลไปยังที่อยู่อีเมลของคุณที่เคยลงทะเบียนไว้กับบัญชีนี้นะ" requestAccountDelete: "ร้องขอให้ลบบัญชี" started: "การลบได้เริ่มต้นขึ้น" @@ -950,11 +999,13 @@ _preferencesBackups: inputName: "กรุณาป้อนชื่อสำหรับข้อมูลสำรองนี้" cannotSave: "การบันทึกล้มเหลว" nameAlreadyExists: "มีข้อมูลสำรองชื่อ \"{name}\" นี้อยู่แล้ว กรุณาป้อนชื่ออื่นนะ" - applyConfirm: "คุณต้องการใช้ข้อมูลสำรอง \"{name}\" กับอุปกรณ์นี้อย่างงั้นจริงหรอ การตั้งค่าที่มีอยู่ของอุปกรณ์นี้จะถูกเขียนทับนะ" + applyConfirm: "คุณต้องการใช้ข้อมูลสำรอง \"{name}\" กับอุปกรณ์นี้อย่างงั้นจริงหรอ + การตั้งค่าที่มีอยู่ของอุปกรณ์นี้จะถูกเขียนทับนะ" saveConfirm: "บันทึกข้อมูลสำรองเป็น {name} มั้ย?" deleteConfirm: "ลบข้อมูลสำรอง {name} มั้ย?" renameConfirm: "เปลี่ยนชื่อข้อมูลสำรองนี้จาก \"{old}\" เป็น \"{new}\" หรือป่าว" - noBackups: "ไม่มีข้อมูลสำรองนะ คุณสามารถสำรองข้อมูลการตั้งค่าไคลเอนต์ของคุณบนเซิร์ฟเวอร์นี้โดยใช้ \"สร้างการสำรองข้อมูลใหม่\"ได้นะ" + noBackups: "ไม่มีข้อมูลสำรองนะ คุณสามารถสำรองข้อมูลการตั้งค่าไคลเอนต์ของคุณบนเซิร์ฟเวอร์นี้โดยใช้ + \"สร้างการสำรองข้อมูลใหม่\"ได้นะ" createdAt: "สร้างเมื่อ: {date} {time}" updatedAt: "อัปเดตเมื่อ: {date} {time}" cannotLoad: "การโหลดล้มเหลว" @@ -965,14 +1016,15 @@ _registry: keys: "คีย์" domain: "โดเมน" createKey: "สร้างคีย์" -_aboutMisskey: +_aboutFirefish: about: "Misskey เป็นซอฟต์แวร์โอเพ่นซอร์สที่ถูกพัฒนาโดย Syuilo ตั้งแต่ปี 2014" contributors: "ผู้สนับสนุนหลัก" allContributors: "ผู้มีส่วนร่วมทั้งหมด" source: "ซอร์สโค้ด" - translation: "รับแปลภาษา Calckey" - donate: "บริจาคให้กับ Calckey" - morePatrons: "เราขอขอบคุณสำหรับความช่วยเหลือจากผู้ช่วยอื่นๆ ที่ไม่ได้ระบุไว้ที่นี่นะ ขอขอบคุณ! 🥰" + translation: "รับแปลภาษา Firefish" + donate: "บริจาคให้กับ Firefish" + morePatrons: "เราขอขอบคุณสำหรับความช่วยเหลือจากผู้ช่วยอื่นๆ ที่ไม่ได้ระบุไว้ที่นี่นะ + ขอขอบคุณ! 🥰" patrons: "สมาชิกพันธมิตร" _nsfw: respect: "ซ่อนสื่อ NSFW" @@ -980,8 +1032,9 @@ _nsfw: force: "ซ่อนสื่อทั้งหมด" _mfm: cheatSheet: "โค้ด MFM Cheat Sheet" - intro: "MFM เป็นภาษามาร์กอัปพิเศษเฉพาะของ Calckey ที่สามารถใช้ได้ในหลายที่ คุณยังสามารถดูรายการไวยากรณ์ MFM ที่มีอยู่ทั้งหมดได้ที่นี่นะ" - dummy: "Calckey ขยายโลกของ Fediverse" + intro: "MFM เป็นภาษามาร์กอัปพิเศษเฉพาะของ Firefish ที่สามารถใช้ได้ในหลายที่ คุณยังสามารถดูรายการไวยากรณ์ + MFM ที่มีอยู่ทั้งหมดได้ที่นี่นะ" + dummy: "Firefish ขยายโลกของ Fediverse" mention: "กล่าวถึง" mentionDescription: "คุณสามารถระบุผู้ใช้โดยใช้ At-Symbol และชื่อผู้ใช้ได้นะ" hashtag: "แฮชแท็ก" @@ -1069,15 +1122,18 @@ _menuDisplay: hide: "ซ่อน" _wordMute: muteWords: "ปิดเสียงคำ" - muteWordsDescription: "คั่นด้วยช่องว่างสำหรับเงื่อนไข AND หรือด้วยการขึ้นบรรทัดใหม่สำหรับเงื่อนไข OR นะ" + muteWordsDescription: "คั่นด้วยช่องว่างสำหรับเงื่อนไข AND หรือด้วยการขึ้นบรรทัดใหม่สำหรับเงื่อนไข + OR นะ" muteWordsDescription2: "ล้อมรอบคีย์เวิร์ดด้วยเครื่องหมายทับเพื่อใช้นิพจน์ทั่วไป" softDescription: "ซ่อนโน้ตให้ตรงตามเงื่อนไขที่ตั้งไว้จากไทม์ไลน์" - hardDescription: "ป้องกันไม่ให้โน้ตย่อที่ตรงตามเงื่อนไขที่ตั้งไว้ไม่ให้ถูกเพิ่มลงในไทม์ไลน์ นอกจากนี้ โน้ตเหล่านี้จะไม่ถูกเพิ่มลงในไทม์ไลน์แม้ว่าจะมีการเปลี่ยนแปลงเงื่อนไขยังไงก็ตาม" + hardDescription: "ป้องกันไม่ให้โน้ตย่อที่ตรงตามเงื่อนไขที่ตั้งไว้ไม่ให้ถูกเพิ่มลงในไทม์ไลน์ + นอกจากนี้ โน้ตเหล่านี้จะไม่ถูกเพิ่มลงในไทม์ไลน์แม้ว่าจะมีการเปลี่ยนแปลงเงื่อนไขยังไงก็ตาม" soft: "ซอฟ" hard: "ยาก" mutedNotes: "ปิดเสียงโน้ต" _instanceMute: - instanceMuteDescription: "การดำเนินการนี้จะปิดเสียง\"โน้ต/รีโน้ต\"จากอินสแตนซ์ที่อยู่ในรายการ รวมถึงบันทึกของผู้ใช้ที่ตอบกลับผู้ใช้จากอินสแตนซ์ที่ปิดเสียง" + instanceMuteDescription: "การดำเนินการนี้จะปิดเสียง\"โน้ต/รีโน้ต\"จากอินสแตนซ์ที่อยู่ในรายการ + รวมถึงบันทึกของผู้ใช้ที่ตอบกลับผู้ใช้จากอินสแตนซ์ที่ปิดเสียง" instanceMuteDescription2: "คั่นด้วยการขึ้นบรรทัดใหม่" title: "ซ่อนโน้ตจากอินสแตนซ์ที่มีอยู่ในรายการ" heading: "รายชื่ออินสแตนซ์ที่ถูกปิดเสียง" @@ -1191,3 +1247,23 @@ _deck: antenna: "เสาอากาศ" list: "รายการ" mentions: "พูดถึง" +noThankYou: ไม่ล่ะขอบคุณ +removeReaction: ลบรีเเอดชั่นของคุณ +renoteMute: ปิดเสียงบูส +renoteUnmute: เลิกปิดเสียงบูส +manageGroups: จัดการกลุ่ม +addInstance: เพิ่มเซิฟเวอร์ +searchPlaceholder: ค้นหา Firefish +deleted: ลบแล้ว +editNote: แก้ไขโพสต์ +edited: แก้ไขแล้วเมื่อ {date} {time} +jumpToPrevious: ข้ามไปที่ก่อนหน้านี้ +listsDesc: ลิสต์รายการนั้นช่วยให้คุณได้สร้างไทม์ไลน์กับผู้ใช้ที่ระบุได้นะ ยังสามารถเข้าถึงได้จากหน้าไทม์ไลน์ได้อีกด้วย +enableEmojiReactions: เปิดใช้งานรีแอดชั่นอีโมจิ +selectChannel: เลือกช่อง +older: เก่ากว่านี้ +newer: ใหม่กว่านี้ +selectInstance: เลือกเซิฟเวอร์ +showEmojisInReactionNotifications: แสดงอิโมจิในการแจ้งเตือนรีแอคชั่น +flagSpeakAsCat: พูดเหมือนแมว +cw: คำเตือนเนื้อหา diff --git a/locales/tr-TR.yml b/locales/tr-TR.yml index a0a45f34cd..bda13aa909 100644 --- a/locales/tr-TR.yml +++ b/locales/tr-TR.yml @@ -1,20 +1,17 @@ _lang_: "Türkçe" -introMisskey: "Açık kaynaklı bir dağıtılmış mikroblog hizmeti olan Calckey'e hoş geldiniz.\n - Misskey, neler olup bittiğini paylaşmak ve herkese sizden bahsetmek için \"notlar\"\ - \ oluşturmanıza olanak tanıyan, açık kaynaklı, dağıtılmış bir mikroblog hizmetidir.\n - Herkesin notlarına kendi tepkilerinizi hızlıca eklemek için \"Tepkiler\" özelliğini - de kullanabilirsiniz👍.\nYeni bir dünyayı keşfedin🚀." -monthAndDay: "{month}Ay {day}Gün" -search: "Arama" +introFirefish: "Hoş geldin! Firefish, sonsuza kadar ücretsiz olan, açık kaynaklı, + merkezi olmayan bir sosyal medya platformudur! 🚀" +monthAndDay: "{month}/{day}" +search: "Ara" notifications: "Bildirimler" username: "Kullanıcı Adı" password: "Şifre" -forgotPassword: "şifremi unuttum" +forgotPassword: "Şifremi unuttum" ok: "TAMAM" -gotIt: "Anladım" +gotIt: "Anladım!" cancel: "İptal" enterUsername: "Kullanıcı adınızı giriniz" -noNotes: "Gönderiler mevcut değil." +noNotes: "Gönderiler mevcut değil" noNotifications: "Bildirim bulunmuyor" settings: "Ayarlar" basicSettings: "Temel Ayarlar" @@ -22,14 +19,14 @@ otherSettings: "Diğer Ayarlar" openInWindow: "Bir pencere ile aç" profile: "Profil" timeline: "Zaman çizelgesi" -noAccountDescription: "Bu kullanıcı henüz biyografisini yazmadı" -login: "Giriş Yap " +noAccountDescription: "Bu kullanıcı henüz kendi hakkında kısmını yazmadı." +login: "Giriş Yap" logout: "Çıkış Yap" signup: "Kayıt Ol" -uploading: "Yükleniyor" -users: "Kullanıcı" +uploading: "Yükleniyor..." +users: "Kullanıcılar" addUser: "Kullanıcı Ekle" -favorite: "Favoriler" +favorite: "Favorilere ekle" favorites: "Favoriler" unfavorite: "Favorilerden Kaldır" favorited: "Favorilerime eklendi." @@ -54,30 +51,2108 @@ user: "Kullanıcı" searchByGoogle: "Arama" _mfm: search: "Arama" + play: MFM'i çal + stop: MFM'i durdur + cheatSheet: MFM Kopya Kağıdı + intro: MFM, Misskey, Firefish, Akkoma ve daha pek çok yerde kullanılabilen bir biçimlendirme + dilidir. Burada mevcut tüm MFM sözdiziminin bir listesini görüntüleyebilirsiniz. + link: Link + boldDescription: Harfleri kalınlaştırarak vurgular. + small: Küçük + smallDescription: İçeriği küçük ve ince görüntüler. + warn: MFM, hızla hareket eden veya gösterişli animasyonlar içerebilir + alwaysPlay: Her zaman tüm animasyonlu MFM'yi otomatik oynat + x4Description: İçeriği büyükten de büyükten daha büyük görüntüler. + rainbowDescription: İçeriğin gökkuşağı renklerinde görünmesini sağlar. + bounceDescription: İçeriğe sıçarayan bir animasyon verir. + sparkle: Işıltı + sparkleDescription: İçeriğe ışıltılı bir parçacık efekti verir. + rotateDescription: İçeriği belirli bir açıyla döndürür. + fadeDescription: İçeriği içeri ve dışarı karartır. + fade: Karart + position: Pozisyon + blockCode: Kod (Blok) + crop: Kırp + positionDescription: İçeriği belirli bir miktarda taşıyın. + scale: Ölçek + scaleDescription: İçeriği belirtilen bir miktara göre ölçeklendirin. + foreground: Ön plan rengi + mention: Bahset + mentionDescription: Bir et-sembolü (@) ve bir kullanıcı adı kullanarak bir kullanıcı + belirleyebilirsiniz. + hashtag: Etiket + dummy: Firefish, Fediverse dünyasını genişletiyor + hashtagDescription: Sayı işareti ve metin kullanarak bir etiket belirtebilirsiniz. + url: URL + urlDescription: URL'ler görüntülenebilir. + inlineMath: Matematik (Satır İçi) + blockCodeDescription: Bir blokta çok satırlı (program) kod için sözdizimi vurgulamasını + görüntüler. + inlineMathDescription: Matematik formüllerini (KaTeX) satır içinde görüntüleyin + quote: Alıntı + quoteDescription: İçeriği alıntı olarak görüntüler. + twitch: Animasyon (Seğir) + emoji: Özel Emoji + jelly: Animasyon (Jöle) + blur: Bulanık + blurDescription: İçeriği bulanıklaştırır. Fareyle üzerine gelindiğinde net bir şekilde + görüntülenecektir. + spinDescription: İçeriğe dönen bir animasyon verir. + plainDescription: Bu MFM efektinde bulunan tüm MFM'lerin etkilerini devre dışı bırakır. + background: Arka plan rengi + backgroundDescription: Metnin arka plan rengini değiştirin. + jump: Animasyon (Zıpla) + cropDescription: İçeriği kırpar. + advancedDescription: Devre dışı bırakılırsa, animasyonlu MFM oynatılmadığı sürece + yalnızca temel işaretlemeye izin verir + bold: Kalın + inlineCodeDescription: (Program) kodu için satır içi sözdizimi vurgulamasını görüntüler. + flip: Tersine Çevir + flipDescription: İçeriği yatay veya dikey olarak çevirir. + font: Yazı Tipi + twitchDescription: İçeriğe güçlü bir şekilde seğiren bir animasyon verir. + spin: Animasyon (Dön) + x2Description: İçeriği büyük gösterir. + rotate: Döndür + plain: Düz + linkDescription: Metnin belirli bölümleri bir URL olarak görüntülenebilir. + searchDescription: Önceden girilmiş metin içeren bir arama kutusu görüntüler. + blockMathDescription: Matematik formüllerini (KaTeX) bir blokta görüntüleyin + jumpDescription: İçeriğe zıplama animasyonu verir. + rainbow: Gökkuşağı + x4: İnanılmaz derecede büyük + tadaDescription: İçeriğe "Tada!" benzeri bir animasyon verir. + shake: Animasyon (Salla) + x3: Büyük göster + blockMath: Matematik (Blok) + x2: Büyük + fontDescription: İçeriğin görüntüleneceği yazı tipini ayarlar. + foregroundDescription: Metnin ön plan rengini değiştirin. + centerDescription: İçeriği ortada görüntüler. + inlineCode: Kod (Satır İçi) + advanced: Gelişmiş MFM + center: Ortala + x3Description: İçeriği daha büyük gösterir. + tada: Animasyon (Tada) + emojiDescription: Özel bir emoji adını iki nokta ile çevreleyerek, özel emoji görüntülenebilir. + jellyDescription: İçeriğe jöle benzeri bir animasyon verir. + shakeDescription: İçeriğe sallanan bir animasyon verir. + bounce: Animasyon (Sıçra) _sfx: notification: "Bildirim" + noteMy: Kendi Gönderim + note: Yeni gönderi + antenna: Antenler + chat: Sohbet + channel: Kanal bildirimleri + chatBg: Sohbet (Arkaplan) _widgets: notifications: "Bildirim" timeline: "Zaman çizelgesi" + photos: Fotoğraflar + userList: Kullanıcı Listesi + _userList: + chooseList: Liste seç + onlineUsers: Aktif Kullanıcılar + aiscript: AiScript Konsolu + activity: Aktivite + digitalClock: Dijital Saat + unixClock: UNIX Saati + meiliIndexCount: Indexlenmiş gönderiler + calendar: Takvim + trends: Popüler + memo: Yapışkan Notlar + rssTicker: RSS Ticker + federation: Federasyon + instanceCloud: Sunucu Bulutu + postForm: Gönderi Formu + meiliSize: Index boyutu + slideshow: Slayt Gösterisi + button: Düğme + clock: Saat + rss: RSS Okuyucu + serverInfo: Sunucu Bilgisi + meiliStatus: Sunucu Durumu + jobQueue: İş Sırası + serverMetric: Sunucu Bilgileri _profile: username: "Kullanıcı Adı" + changeBanner: Afişini değiştir + locationDescription: Önce şehrinizi girerseniz, yerel saatinizi diğer kullanıcılara + gösterecektir. + youCanIncludeHashtags: Hakkımdan'da etiket kullanabilirsin. + description: Hakkımda + metadataDescription: 'Bunları kullanarak profilinizde ek bilgi alanları görüntüleyebilirsiniz. + Profilinizdeki bağlantıyı doğrulamak için {rel} ile bir {a} etiketi veya {l} etiketi + ekleyebilirsiniz!' + metadata: Ek Bilgi + metadataContent: İçerik + metadataLabel: Etiket + changeAvatar: Avatarını değiştir + name: İsim + metadataEdit: Ek Bilgini Düzenle _deck: _columns: notifications: "Bildirim" tl: "Zaman çizelgesi" -searchPlaceholder: Calckey'de Ara + antenna: Anten + list: Liste + widgets: Araçlar + channel: Kanal + direct: Direkt mesajlar + main: Ana + mentions: Bahsetmeler + swapLeft: Sol sütunla değiştir + addColumn: Sütun ekle + configureColumn: Sütun ayarları + swapRight: Sağ sütunla değiştir + swapUp: Üstteki sütunla değiştir + stackLeft: Sol sütunla birleştir + swapDown: Alttaki sütunla değiştir + popRight: Sağdaki sütunu aç + introduction2: İstediğiniz zaman yeni sütunlar eklemek için ekranın sağındaki + + işaretini tıklayın. + alwaysShowMainColumn: Her zaman ana sütunu göster + columnAlign: Sütunları hizala + profile: Çalışma alanı + newProfile: Yeni çalışma alanı + renameProfile: Çalışma alanını yeniden adlandır + deleteProfile: Çalışma alanını sil + nameAlreadyExists: Bu çalışma alanı zaten mevcut. + introduction: Sütunları özgürce düzenleyerek sizin için mükemmel arayüzü oluşturun! + widgetsIntroduction: Lütfen sütun menüsünde "Araç'ları düzenle"yi seçin ve bir widget + ekleyin. +searchPlaceholder: Firefish'de Ara reply: Yanıtla jumpToPrevious: Öncekini görüntüle deleted: Silindi -editNote: Notu düzenle +editNote: Gönderiyi düzenle noThankYou: Hayır, teşekkürler addInstance: Bir sunucu ekle cantFavorite: Favorilere eklenemedi. edited: '{date} tarihinde ve {time} vaktinde düzenlendi' loggingIn: Giriş Yapılıyor save: Kaydet -headlineMisskey: Sonsuza kadar ücretsiz, açık kaynak kodlu, merkeziyetsiz sosyal medya - platformu! 🚀 +headlineFirefish: Sonsuza kadar ücretsiz, açık kaynak kodlu, merkeziyetsiz sosyal + medya platformu! 🚀 loadMore: Daha fazla yükle instance: Sunucu -fetchingAsApObject: Fedevren'den çekiliyor +fetchingAsApObject: Fediverse'den çekiliyor +removeReaction: Tepkini sil +rememberNoteVisibility: Gönderi görünürlüğü ayarlarını hatırla +attachCancel: Eklentiyi kaldır +suspend: Askıya Al +unsuspend: Askıya Almayı Kaldır +unmute: Susturmayı Kaldır +blockConfirm: Bu hesabı engellemek istediğinize emin misiniz? +unblockConfirm: Bu hesabın engelini kaldırmak istediğinize emin misiniz? +settingGuide: Tavsiye edilen ayarlar +cacheRemoteFilesDescription: Bu ayar devre dışı bırakıldığında, uzak dosyalar doğrudan + uzak sunucudan yüklenir. Bunun devre dışı bırakılması depolama kullanımını azaltacak, + ancak küçük resimler oluşturulmayacağından trafiği artıracaktır. +flagAsCatDescription: Kedi kulaklarına sahip olacak ve bir kedi gibi konuşacaksın! +flagSpeakAsCat: Kedi gibi konuş +setWallpaper: Arkaplanı ayarla +removeWallpaper: Arkaplanı sil +operations: Operasyonlar +clearCachedFiles: Ön belleği temizle +clearCachedFilesConfirm: Önbelleğe alınan tüm uzak dosyaları silmek istediğinizden + emin misiniz? +blockedInstancesDescription: Engellemek istediğiniz sunucuların domain adlarını listeleyin. + Listelenen sunucular artık bu sunucularla iletişim kuramayacak. +blockedUsers: Engellenmiş kullanıcılar +editProfile: Profilini düzenle +intro: Firefish'in kurulumu tamamlandı! Lütfen yönetici hesap oluşturun. +instanceUsers: Sunucunun kullanıcıları +changePassword: Şifreyi değiştir +security: Güvenlik +newPasswordRetype: Yeni şifreyi tekrarla +uploadFromUrlRequested: Yükleme istendi +syncDeviceDarkMode: Karanlık modu cihazının ayarları ile senkronize et +renameFolder: Bu klasörü yeniden adlandır +emptyFolder: Bu klasör boş +unableToDelete: Silinemiyor +inputNewDescription: Yeni açıklama gir +hasChildFilesOrFolders: Bu klasör boş olmadığından dolayı silinemez. +disconnectedFromServer: Sunucuyla bağlantı kesildi +reload: Yenile +disablingTimelinesInfo: Yöneticiler ve Moderatörler, etkinleştirilmemiş olsalar bile + tüm zaman çizelgelerine her zaman erişebilirler. +pinnedUsersDescription: '"Keşfet" sekmesinde sabitlenecek kullanıcı adlarını satır + sonlarıyla ayırarak listeleyin.' +pinnedPages: Sabitlenmiş Sayfalar +pinnedPagesDescription: Bu sunucunun üst kısmına sabitlemek istediğiniz Sayfaların + yollarını satır sonundan ayırarak girin. +enableHcaptcha: hCaptcha'yı Aktif Et +notifyAntenna: Yeni gönderileri bildir +recentlyUpdatedUsers: En son aktif kullanıcılar +about: Hakkında +twoStepAuthentication: İki-adımlı doğrulama +securityKeyName: Anahtar ismi +help: Yardım +inputMessageHere: Mesajını buraya gir +ownedGroups: Gruplarım +joinedGroups: Katılınmış gruplar +invites: Davetler +members: Kullanıcılar +transfer: Transfer +messagingWithGroup: Grup sohbeti +next: Sonraki +retype: Tekrar gir +dashboard: Panel +objectStorageBucket: Kova +objectStorageBucketDesc: Sağlayıcınız tarafından kullanınan bucket ismini yazın. +showFixedPostForm: Gönderim formunu zaman çizelgesinin en üstünde görüntüleyin +newNoteRecived: Yeni gönderiler mevcut +none: Hiçbiri +details: Detaylar +recentUsed: Son kullanılan +installedApps: Yetkilendirilmiş Uygulamalar +removeAllFollowing: Takip edilen herkesi çıkar +yourAccountSuspendedDescription: Bu hesap, sunucunun hizmet şartlarını veya benzerlerini + ihlal ettiği için askıya alındı. Daha ayrıntılı bir neden öğrenmek istiyorsanız + yöneticiyle iletişime geçin. Lütfen yeni bir hesap oluşturmayın. +addedRelays: Eklenen Röleler +serviceworkerInfo: Push bildirimleri için aktif olması gerekiyor. +author: Sahip +tokenRequested: Hesaba erişim ver +useFullReactionPicker: Tam boyutunda tepki seçici kullan +small: Küçük +enableAll: Hepsine izin ver +disableAll: Hepsini kapat +regexpError: Regex hatası +emailConfigInfo: Kayıt sırasında veya şifrenizi unutursanız e-postanızı onaylamak + için kullanılır +smtpSecure: SMTP bağlantıları için SSL/TSL kullan +regexpErrorDescription: '{tab} kelimenizin {line} satırındaki normal ifadede bir hata + oluştu:' +instanceMute: Sunucu Susturmaları +reporter: Rapor eden +userSaysSomethingReason: '{name}, {reason} söyledi' +userSaysSomethingReasonRenote: '{name}, {reason} içeren bir gönderiyi öne çıkardı' +userSaysSomethingReasonQuote: '{name}, {reason} içeren bir gönderiden alıntı yaptı' +notificationSettingDesc: Görünecek bildirimleri seç. +other: Diğer +sample: Örnek +notSet: Ayarlanmadı +emailVerified: Mail doğrulandı +showGapBetweenNotesInTimeline: Zaman tünelinde gönderiler arasındaki boşluğu göster +sendErrorReports: Hata raporları gönder +followingCount: Takip edilen hesap sayısı +no: Hayır +myTheme: Temam +backgroundColor: Arkaplan rengi +accentColor: Vurgu rengi +textColor: Yazı rengi +createdAt: Oluşturuldu +updatedAt: Güncellendi +saveConfirm: Kaydet? +registry: Kayıt +currentVersion: Şuanki Sürüm +accountDeletionInProgress: Hesap silme şu anda devam ediyor +unresolved: Çözülmedi +newVersionOfClientAvailable: Yeni istemci sürümü mevcut. +shareWithNote: Gönderi ile paylaş +whatIsNew: Değişiklikleri göster +translate: Çevir +breakFollow: Takipçiyi sil +breakFollowConfirm: Takipçiyi kaldırmak istediğinizden emin misiniz? +unfollowConfirm: "{name}'i takibi bırakmak istediğinizden emin misiniz?" +importRequested: Bir içe aktarma isteğinde bulundunuz. Bu biraz zaman alabilir. +somethingHappened: Bir hata ile karşılaşıldı +retry: Tekrar Dene +youShouldUpgradeClient: Bu sayfayı görüntülemek için, lütfen istemcinizi yenileyin. +reactionSetting: Tepki seçicide gösterilecek tepkiler +unmarkAsSensitive: NSFW işaretini kaldır +enterFileName: Dosya adı gir +noJobs: Hiçbir iş yok +instanceFollowing: Sunucuda takip ediliyor +instanceFollowers: Sunucunun takipçileri +currentPassword: Şu anki şifre +newPassword: Yeni şifre +saved: Kaydedildi +uploadFromUrlDescription: Yüklemek istediğiniz dosyanın URL'si +noMoreHistory: Başka geçmiş yok +startMessaging: Yeni sohbet oluştur +manageGroups: Grupları düzenle +nUsersRead: '{n} tarafından okundu' +images: Görseller +birthday: Doğum günü +light: Aydınlık +dark: Karanlık +lightThemes: Aydınlık temalar +selectFiles: Dosyalar seç +selectFolders: Klasörleri seç +renameFile: Dosyayı yeniden adlandır +folderName: Klasör adı +createFolder: Klasör oluştur +copyUrl: URL'yi Kopyala +maintainerName: Sahibi +maintainerEmail: Sahibinin e-postası +tosUrl: Kullanım Koşulları URL'si +monthX: '{month}' +basicInfo: Kısa bilgi +pinnedUsers: Sabitlenmiş kullanıcılar +manageAntennas: Antenleri Düzenle +name: İsim +silence: Sustur +unsilence: Susturmayı geri al +exploreUsersCount: '{count} Kullanıcı var' +exploreFediverse: Fediversi keşfet +popularTags: Popüler etiketler +close: Kapat +group: Grup +text: Yazı +checking: Doğrulanıyor... +tooLong: Çok uzun +weakPassword: Zayıf şifre +normalPassword: Ortalama şifre +disableDrawer: Çekmece tarzı menüler kullanmayın +youHaveNoGroups: Grupların yok +joinOrCreateGroup: Bir gruba davet edil veya kendininkini oluştur. +regenerate: Yeniden Oluştur +fontSize: Yazı boyutu +noFollowRequests: Bekleyen takip isteğiniz yok +openImageInNewTab: Resmi yeni sekmede aç +useObjectStorage: Object Storage kullan +objectStorageUseProxy: Proxy üzerinden bağlan +installedDate: Yetkilendirilme tarihi +scratchpad: Karalama Defteri +deleteAllFiles: Tüm dosyaları isl +useCw: İçeriği gizle +plugins: Eklentiler +manage: Yönetmek +preferencesBackups: Tercih yedekleri +generateAccessToken: Erişim tokeni oluştur +enableEmail: E-posta dağıtımını etkinleştir +regenerateLoginToken: Giriş tokenini yeniden oluştur +regenerateLoginTokenDescription: Oturum açma sırasında dahili olarak kullanılan belirteci + yeniden oluşturur. Normalde bu eylem gerekli değildir. Yeniden oluşturulursa, tüm + cihazların oturumu kapatılacaktır. +followersCount: Takipçi sayısı +yes: Evet +lockedAccountInfo: Gönderi görünürlüğünüzü "Yalnızca takipçiler" olarak ayarlamazsanız, + takipçilerin manuel olarak onaylanmasını isteseniz bile gönderileriniz herkes tarafından + görülebilir. +unlikeConfirm: Beğeniyi kaldırmak istiyor musunuz? +notSpecifiedMentionWarning: Bu gönderi, alıcı olarak dahil edilmeyen kullanıcılardan + bahsetmektedir +hideOnlineStatus: Çevrimiçi bilgisini gizle +hideOnlineStatusDescription: Çevrimiçi durumunuzu gizlemek, arama gibi bazı özelliklerin + rahatlığını azaltır. +botProtection: Bot Koruması +selectAccount: Hesap seç +recentPosts: En son sayfalar +high: Yüksek +middle: Orta +secureModeInfo: Diğer sunuculardan talepte bulunurken kanıtlamadan geri göndermeyiniz. +previewNoteText: Önizlemeyi göster +customCss: Özel CSS +global: Global +makeReactionsPublic: Tepki geçmişini herkese açık olarak ayarla +clickToFinishEmailVerification: Mail doğrulamasını tamamlamak için lütfen [{ok}]'a + tıklayın. +overridedDeviceKind: Cihaz tipi +smartphone: Akıllı telefon +tablet: Tablet +auto: Otomatik +tenMinutes: 10 dakika +recentNDays: Son {n} gün +noEmailServerWarning: Mail sunucusu ayarlanmadı. +thereIsUnresolvedAbuseReportWarning: Çözülmemiş raporlar var. +statusbar: Durum çubuğu +pleaseSelect: Bir seçenek seçin +lastActiveDate: Son kullanılan +reverse: Tersi +logoutConfirm: Gerçekten oturum kapatılsın mı? +type: Tip +speed: Hız +slow: Yavaş +activeEmailValidationDescription: Tek kullanımlık adreslerin kontrol edilmesi ve gerçekten + iletişim kurup kurulamayacağına göre e-posta adreslerinin daha sıkı doğrulanmasını + sağlar. İşaretlenmediğinde, yalnızca e-postanın biçimi doğrulanır. +move: Taşı +defaultReaction: Giden ve gelen gönderiler için varsayılan emoji tepkisi +indexPosts: Dizin Gönderileri +youGotNewFollower: takip etti +receiveFollowRequest: Takip isteği alındı +followRequestAccepted: Takip isteği onaylandı +mention: Bahset +download: İndir +lists: Listeler +noLists: Hiç listen yok +cantRenote: Bu gönderi yükseltilemez. +cantReRenote: Bir yükseltme tekrar yükseltilemez. +mute: Sustur +block: Engelle +editWidgetsExit: Tamamlandı +customEmojis: Özel Tepki +cpuAndMemory: İşlemci ve Bellek +selectInstance: Sunucu seç +instances: Sunucular +silencedInstancesDescription: Susturmak istediğiniz sunucuların domainlerini listeleyin. + Listelenen sunuculardaki hesaplar "Sessiz" olarak değerlendirilir, yalnızca takip + istekleri yapabilir ve takip edilmediği takdirde yerel hesaplardan bahsedemez. Bu, + engellenen sunucuları etkilemeyecektir. +muteAndBlock: Susturmalar ve Engeller +noteDeleteConfirm: Bu gönderiyi silmek istediğine emin misin? +resetAreYouSure: Gerçekten sıfırla? +remoteUserCaution: Uzak kullanıcılardan gelen bilgiler eksik olabilir. +yearsOld: '{age} yaşında' +removed: Başarıyla silindi +reject: Reddet +unwatch: İzlemeyi bırak +accept: Kabul et +normal: Normal +thisMonth: Ay +enableRecaptcha: reCAPTCHA'yı Aktif Et +antennas: Antenler +recaptchaSiteKey: Site anahtarı +withFileAntenna: Sadece dosyalı gönderiler +antennaInstancesDescription: Satır başına bir sunucu listeleyin +moderator: Moderatör +moderation: Moderasyon +lastUsed: En son kullanılan +unregister: Kaydı sil +passwordLessLogin: Şifresiz giriş +uploadFolder: Yüklemeler için varsayılan klasör +markAsReadAllUnreadNotes: Tüm gönderileri okundu olarak işaretle +notFound: Bulunamadı +groups: Gruplar +quoteQuestion: Alıntı olarak eklensin mi? +signinRequired: Lütfen devam etmeden önce kayıt olun +noMessagesYet: Şuana kadar mesaj yok +newMessageExists: Yeni mesaj yok +invitations: Davetler +invitationCode: Davet kodu +signinWith: '{x} ile giriş yap' +strongPassword: Güçlü şifre +passwordNotMatched: Uyuşmuyor +signinFailed: Giriş yapılamadı. Şifre ve ya kullanıcı adı yanlış. +tapSecurityKey: Güvenlik anahtarınıza dokunun +or: veya +noHistory: Geçmiş bulunamadı +language: Dil +clientSettings: İstemci Ayarları +accountSettings: Hesap Ayarları +listen: Dinle +chooseEmoji: Emoji seç +promotion: Terfi Edildi +nothing: Burada görüntülenecek bir şey yok +lastUsedDate: Son kullanılma tarihi +updateRemoteUser: Uzak kullanıcı bilgilerini güncelle +width: Genişlik +height: Uzunluk +permission: İzinler +email: Mail +smtpSecureInfo: STARTTLS kullanırken bunu kapatın +alwaysMarkSensitive: Varsayılan olarak NSFW olarak işaretle +noteFavoritesCount: İşaretlenen gönderilerin sayısı +pageLikesCount: Beğenilen Sayfaların sayısı +duplicate: Kopyasını Oluştur +clearCache: Önbelleği Temizle +onlineUsersCount: '{n} kullanıcı aktif' +nUsers: '{n} Kullanıcı' +nNotes: '{n} Gönderi' +useReactionPickerForContextMenu: Sağ tık ile tepki seçiciyi aç +typingUsers: '{users} yazıyor' +jumpToSpecifiedDate: Spesifik tarihe atla +showingPastTimeline: Şuan eski bir zaman çizelgesini görüntülüyorsunuz +clear: Temizle +fullView: Tam görünüm +emailNotConfiguredWarning: Mail adresi seçilmedi. +privateMode: Özel Mod +fast: Hızlı +learnMore: Daha fazla bilgi edin +localOnly: Sadece yerel +delayed: Ertelenmiş +useGlobalSetting: Global ayaralrı kullan +switchAccount: Hesap değiştir +notRecommended: Tavsiye edilmiyor +onlineStatus: Çevrimiçi bilgisi +active: Aktif +instanceBlocking: Federasyon Yönetmek +enabled: Aktif +disabled: Deaktif +quickAction: Hızlı işlemler +configure: Yapılandır +blockedInstances: Engellenmiş Sunucular +silencedInstances: Susturulmuş Sunucular +lookup: Görüntüle +inputNewFolderName: Yeni klasör ismi gir +noteOf: Gönderi {user} tarafından +onlyOneFileCanBeAttached: Bir mesaja sadece 1 dosya ekleyebilirsin +install: İndir +uninstall: kALDIR +send: Gönder +noCrawleDescription: Harici arama motorlarından içeriğinizi endekslememesini isteyin. +emailNotification: Mail bildirimleri +goBack: Geri +online: Çevrimiçi +translatedFrom: "{x}'den çevrildi" +cropImage: Resmi kırp +deleteAccount: Hesabı Sil +navbar: Gezinti çubuğu +account: Hesap +instanceDefaultThemeDescription: Tema kodunu nesne biçiminde girin. +alt: ALT +mutePeriod: Sessiz süresi +indefinitely: Kalıcı olarak +oneHour: Bir saat +oneWeek: Bir hafta +colored: Renkli +sensitiveMediaDetection: Resim NSFW Belirleme +subscribePushNotification: Push bildirimlerini aktif et +pushNotificationAlreadySubscribed: Push bildirimler zaten açık +sendPushNotificationReadMessage: İlgili bildirimler veya mesajlar okunduktan sonra + push bildirimlerini silin +sendPushNotificationReadMessageCaption: Kısa bir süre için "{emptyPushNotificationMessage}" + metnini içeren bir bildirim görüntülenecektir. Bu, mümkünse cihazınızın pil kullanımını + artırabilir. +enterSendsMessage: Mesaj göndermek için Mesajlaşma'da Geri Dön'e basın (Ctrl + Return) +customMOTDDescription: Bir kullanıcı sayfayı her yüklediğinde/yeniden yüklediğinde + rastgele gösterilecek satır sonlarıyla ayrılmış MOTD (açılış ekranı) için özel mesajlar. +customSplashIconsDescription: Bir kullanıcı sayfayı her yüklediğinde/yeniden yüklediğinde + rastgele gösterilecek satır sonlarıyla ayrılmış özel açılış ekranı simgeleri için + URL'ler. Lütfen resimlerin statik bir URL'de olduğundan ve tercihen tümü 192x192 + olarak yeniden boyutlandırıldığından emin olun. +updateAvailable: Bir güncelleme mevcut olabilir! +splash: Açılış Ekranı +moveTo: Şimdiki hesabını yeni bir hesaba taşı +swipeOnMobile: Sayfalar arasında kaydırmaya izin ver +swipeOnDesktop: Masaüstünde mobil stil kaydırmaya izin ver +migration: Taşıma +moveAccount: Hesabını taşı! +moveFrom: Daha eski bir hesaptan bu hesaba taşıyın +moveFromLabel: 'Taşındığınız hesap:' +importAndExport: İçeri/Dışarı Aktar +manageLists: Listeleri düzenle +error: Hata +pageLoadError: Sayfayı yüklerken bir hata ile karşılaşıldı. +serverIsDead: Sunucu yanıt vermiyor. Biraz bekleyip tekrar deneyin. +defaultNoteVisibility: Varsayılan görünürlük +follow: Takip et +reactionSettingDescription2: Yeniden sıralamak için sürükleyin, silmek için tıklayın, + eklemek için "+"ya basın. +you: Sen +clickToShow: Görmek için tıkla +sensitive: NSFW +add: Ekle +reaction: Tepkiler +markAsSensitive: NSFW olarak işaretle +unblock: Engeli Kaldır +addAccount: Hesap ekle +network: İnternet +disk: Depolama +instanceInfo: Sunucu Bilgisi +statistics: İstatistikler +hiddenTagsDescription: Trendlerden gizlemek ve keşfetmek istediğiniz etiketlerin (# + olmadan) etiketlerini listeleyin. Gizli etiketler başka yollarla keşfedilebilir. +mutedUsers: Susturulmuş kullanıcılar +uploadFromUrlMayTakeTime: Yüklemenin tamamlanması zaman alabilir. +activity: Aktivite +theme: Temalar +themeForLightMode: Aydınlık modda kullanmak için temalar +reloadConfirm: Zaman çizelgesini yenilemek ister misiniz? +instanceName: Sunucu adı +circularReferenceFolder: Hedef klasör, taşımak istediğiniz klasörün bir alt klasörüdür. +instanceDescription: Sunucu açıklaması +driveCapacityPerLocalAccount: Kullanıcı başı Drive kapasitesi +driveCapacityPerRemoteAccount: Uzak kullanıcı başı Drive kapasitesi +inMb: Megabayt cinsinden +pinnedClipId: Sabitlenecek klibin ID'si +withFiles: Dosya içerenler +recentlyRegisteredUsers: Yeni katılmış kullanıcılar +recentlyDiscoveredUsers: Yeni keşfedilmiş kullanıcılar +nUsersMentioned: '{n} kullanıcı tarafından bahsedildi' +securityKey: Güvenlik Anahtarı +title: Başlık +total: Toplam +sounds: Sesler +objectStorageRegionDesc: "'xx-east-1' gibi bir bölge belirtin. Hizmetiniz bölgeler + arasında ayrım yapmıyorsa, bunu boş bırakın veya 'us-east-1' girin." +objectStorageUseSSL: SSL Kullan +popout: Açılır Pencere +volume: Ses Kuvveti +showInPage: Sayfada göster +masterVolume: Ana ses +undeck: Desteden çık +useBlurEffectForModal: Modallar için bulanıklık efekti uygula +leaveConfirm: Kaydedilmemiş değişiklikler var. Devam etmek istiyor musunuz? +testEmail: Email dağıtımını test et +wordMute: Kelime susturması +userSaysSomething: '{name} bir şey söyledi' +channel: Kanallar +create: Oluştur +useGlobalSettingDesc: Açıksa, hesap bildirim ayarlarınız kullanılacaktır. Kapatılırsa, + bireysel yapılandırmalar yapılabilir. +setMultipleBySeparatingWithSpace: Birden çok girişi boşluklarla ayırın. +fileIdOrUrl: Dosya ID veya URL'si +behavior: Davranış +abuseReported: Raporunuz gönderildi. Teşekkürler. +reporteeOrigin: Ana Raporcu +reporterOrigin: Ana Rapor Eden +defaultNavigationBehaviour: Varsayılan gezinme davranışı +editTheseSettingsMayBreakAccount: Bunları düzenlemek hesabınıza zarar verebilir. +renotedCount: Alınan yükseltme sayısı +driveFilesCount: Drive dosya sayısı +deleteConfirm: Sil? +invalidValue: Geçersiz değer. +instanceSecurity: Sunucu Güvenliği +searchResult: Arama sonuçları +useBlurEffect: Kullanıcı arayüzünde bulanıklaştırma efektleri kullanın +misskeyUpdated: Firefish güncellendi! +lastCommunication: Son iletişim +itsOn: Etkinleştirilmiş +emailRequiredForSignup: Kayıt olmak için mail gerekiyor +leaveGroup: Gruptan ayrıl +useDrawerReactionPickerForMobile: Reaksiyon seçiciyi mobil cihazda çekmece olarak + göster +leaveGroupConfirm: '"{name}"den ayrılmak istediğinizden emin misiniz?' +instanceDefaultLightTheme: Sunucu genelinde varsayılan aydınlık tema +document: Dökümanlar +numberOfPageCacheDescription: Bu sayının arttırılması, kullanıcılar için kolaylık + sağlayacaktır ancak daha fazla sunucu yükünün yanı sıra daha fazla bellek kullanılmasına + neden olacaktır. +refreshInterval: 'Güncelleme aralığı ' +label: Etiket +replayTutorial: Eğiticiyi tekrar oynat +moveAccountDescription: Bu süreç geri döndürülemez. Taşımadan önce yeni hesabınızda + bu hesap için bir takma ad ayarladığınızdan emin olun. Lütfen @person@server.com + şeklinde biçimlendirilmiş hesabın etiketini girin +emojis: Emoji +flagAsCat: Kedi misin? 😺 +selectChannel: Kanal seç +emojiName: Emoji adı +showOnRemote: Orijinal sayfayı aç +flagSpeakAsCatDescription: Gönderileriniz kedi modundayken miyavdirilecektir +flagShowTimelineReplies: Yanıtları zaman çizelgesinde göster +silenceThisInstance: Bu sunucuyu sustur +proxyAccountDescription: Vekil hesabı, belirli koşullar altında kullanıcılar için + uzaktan takipçi işlevi gören bir hesaptır. Örneğin, bir kullanıcı listeye bir uzak + kullanıcı eklediğinde, o kullanıcıyı takip eden yerel bir kullanıcı yoksa uzak kullanıcının + etkinliği sunucuya teslim edilmeyecektir, bu nedenle onun yerine vekil hesabı takip + edilecektir. +clearQueueConfirmTitle: Bu sırayı temizlemek istediğine emin misin? +software: Yazılım +version: Sürüm +federating: Federasyon +preview: Ön izleme +retypedNotMatch: Girdiler uyuşmuyor. +attachFile: Dosya ekle +noSuchUser: Kullanıcı bulunamadı +removeAreYouSure: '"{x}"i kaldırmak istediğinize emin misiniz?' +keepOriginalUploading: Orjinal resmi sakla +messageRead: Oku +deleteAreYouSure: '"{x}"i silmek istediğinize emin misiniz?' +messaging: Sohbet +upload: Yükle +fromUrl: URL'den +agreeTo: '{0} kabul ediyorum' +tos: Kullanım Koşulları +drive: Sürücü +selectFolder: Klasör seç +inputNewFileName: Yeni dosya ismi gir +whenServerDisconnected: Sunucuyla bağlantı kesildiğinde +avatar: Avatar +rename: Yeniden Adlandır +banner: Banner +nsfw: NSFW +doNothing: Görmezden Gel +watch: İzle +connectService: Bağlan +registration: Kayıt +hcaptcha: hCaptcha +pinnedNotes: Sabitlenmiş gönderiler +hcaptchaSiteKey: Site anahtarı +hcaptchaSecretKey: Gizli Anahtar +antennaSource: Anten kaynağı +antennaKeywords: Dinlenecek anahtar kelimeler +antennaExcludeKeywords: Hariç tutulacak anahtar kelimeler +antennaKeywordsDescription: AND koşulu için boşluklarla veya OR koşulu için satır + sonlarıyla ayırın. +caseSensitive: Büyük harf duyarlı +enableServiceworker: Tarayıcınız için Anlık Bildirimleri etkinleştirin +unsilenceConfirm: Bu kullanıcının susturma işlemini geri almak istediğinizden emin + misiniz? +userList: Listeler +antennaUsersDescription: Satır başına bir kullanıcı listeleyin +administrator: Yönetici +token: Token +cacheClear: Önbelleği temizle +createGroup: Grup oluştur +newPasswordIs: Yeni şifren "{password}" +share: Paylaş +enable: Etkinleştir +groupName: Grup adı +available: Mevcut +unavailable: Mevcut değil +weekOverWeekChanges: Geçen haftadan beri değişiklikler +usernameInvalidFormat: Büyük ve küçük harfleri, sayıları ve alt çizgileri kullanabilirsiniz. +tooShort: Çok kısa +passwordMatched: Uyuşuyor +dayOverDayChanges: Dünden beri değişiklikler +appearance: Görünüm +objectStorageBaseUrl: Ana URL +objectStoragePrefix: Prefix +unableToProcess: Operasyon tamamlanamadı +deleteAllFilesConfirm: Tüm dosyaları silmek istediğine emin misin? +disablePagesScript: Sayfalardan AiScript'i deaktive et +expandOnNoteClick: Gönderileri basarak aç +expandOnNoteClickDesc: Kapatılırsa, gönderileri hala menüden veya sağtıklayarak açabilirsin. +removeAllFollowingDescription: Bunu gerçekleştirmek, {host} üzerindeki tüm hesapları + takip etmeyi bırakır. +deck: Deste +pluginTokenRequestedDescription: Bu eklenti, burada ayarlanan izinleri kullanabilecektir. +notificationType: Bildirim tipi +channelFederationWarn: Kanallar başka sunuculara federe edilmiyor +forwardReport: Raporu uzak sunucuya ilet +openInNewTab: Yeni sekmede aç +clip: Ataç +optional: Opsiyonel +manageAccessTokens: Erişim tokenlerini düzenle +clipsDesc: Ataçlar, paylaşılabilen kategorize yer imleri gibidir. Tek tek gönderiler + menüsünden ataçlar oluşturabilirsiniz. +makeExplorable: Hesabını "Keşfet" 'te göster +accountInfo: Hesap Bilgisi +makeExplorableDescription: Bunu kapatırsanız, hesabınız "Keşfet" bölümünde görünmez. +saveAs: Olarak kaydet... +advanced: Gelişmiş +value: Değer +youAreRunningUpToDateClient: En son istemci sürümünü kullanıyorsunuz. +accounts: Hesaplar +switch: Değiştir +popularPosts: Popüler sayfalar +inChannelSearch: Kanalda ara +administration: Yönetim +ads: Topluluk bannerları +low: Düşük +seperateRenoteQuote: Ayrı destek ve fiyat teklifi düğmeleri +sent: Gönderildi +customMOTD: Özel MOTD +showUpdates: Firefish güncellendiğinde bir açılır pencere göster +logoImageUrl: Logo resim URL'si +showAdminUpdates: Yeni bir Firefish sürümünün mevcut olduğunu belirtin (yalnızca yönetici) +newer: asla +older: daha eski +exportRequested: Bir dışarı aktarma talebinde bulundunuz. Bu biraz zaman alabilir. + Tamamlandığında Drive'ınıza eklenecektir. +notes: Gönderiler +following: Takip Edilenler +followers: Takipçiler +followsYou: Seni takip ediyor +pageLoadErrorDescription: Bu problem genelde ağ hataları veya tarayıcının önbelleğinden + kaynaklanır. Önbelleği temizlemeyi deneyin ve biraz bekledikten sonra tekrar deneyin. +quote: Alıntıla +pinnedNote: Sabitlenmiş gönderi +renote: Yükselt +unrenote: Yükseltmeyi geri al +emojiUrl: Emoji URL'si +suspendConfirm: Bu hesabı askıya almak istediğinize emin misiniz? +addEmoji: Ekle +autoAcceptFollowed: Takip ettiğiniz kullanıcıların takip isteklerini otomatik olarak + onaylayın +general: Genel +accountMoved: 'Bu kullanıcı yeni bir hesaba taşındı:' +wallpaper: Arkaplan +searchWith: 'Arat: {q}' +youHaveNoLists: Hiçbir listen yok +followConfirm: '{name} kullanıcısını takip etmek istediğine emin misin?' +metadata: Metadata +monitor: Monitör +jobQueue: İş Sırası +noUsers: Kullanıcılar bulunamadı +noInstances: Sunucular bulunamadı +pinLimitExceeded: Daha fazla gönderi sabitleyemezsin +defaultValueIs: 'Varsayılan: {value}' +noCustomEmojis: Emoji yok +blocked: Engellenmiş +default: Varsayılan +all: Tümü +subscribing: Abone Olunuyor +publishing: Yayınlanıyor +notResponding: Cevap vermiyor +more: Daha fazla! +featured: Önerilen +usernameOrUserId: Kullanıcı adı veya kullanıcı id'si +fromDrive: Drive'dan +uploadFromUrl: URL'den yükle +announcements: Duyurular +explore: Keşfet +imageUrl: Resim URL'si +thisYear: Yıl +deleteFolder: Bu klasörü sil +addFile: Dosya ekle +dayX: '{day}' +enableLocalTimeline: Yerel zaman çizgisini aktif et +disconnectService: Bağlantıyı kes +enableGlobalTimeline: Global zaman çizgisini aktif et +enableRegistration: Yeni kullanıcı kaydını aktif et +invite: Davet et +bannerUrl: Banner resmi URL'si +backgroundImageUrl: Arkaplan URL'si +recaptcha: reCAPTCHA +iconUrl: İkon URL'si +recaptchaSecretKey: Gizli anahtar +avoidMultiCaptchaConfirm: Birden fazla Captcha sistemi kullanmak aralarında çakışmaya + neden olabilir. Şu anda etkin olan diğer Captcha sistemlerini devre dışı bırakmak + ister misiniz? Etkin kalmalarını istiyorsanız, iptal düğmesine basın. +aboutFirefish: Firefish Hakkında +popularUsers: Popüler kullanıcılar +notFoundDescription: Bu URL'ye karşılık gelen sayfa bulunamadı. +reduceUiAnimation: Arayüz animasyonlarını azalt +markAsReadAllNotifications: Tüm bildirimleri okundu olarak işaretle +markAsReadAllTalkMessages: Tüm mesajları okundu olarak işaretle +inviteToGroup: Gruba davet et +quoteAttached: Alıntıla +useOsNativeEmojis: Sistem Emojilerini Kullan +signinHistory: Giriş geçmişleri +disableAnimatedMfm: Animasyonlu MFM'yi devre dışı bırak +uiLanguage: Arayüz dili +groupInvited: Bir gruba davet edildin +createAccount: Hesap Oluştur +existingAccount: Var olan hesap +aboutX: '{x} Hakkında' +doing: İşleniyor... +category: Kategori +deleteAll: Hepsini sil +objectStorageEndpoint: Uç noktası +output: Çıkış +userSuspended: Bu kullanıcı askıya alındı. +userSilenced: Bu kullanıcı susturuldu. +yourAccountSuspendedTitle: Bu hesap askıya alındı +relays: Röleler +inboxUrl: Gelen URL +menu: Menü +divider: Ayraç +addItem: Öğe Ekle +enableInfiniteScroll: Otomatik olarak daha fazla yükle +enablePlayer: Video oynatıcıyı aç +disablePlayer: Video oynatıcıyı kapat +expandTweet: Tweeti Büyüt +large: Büyük +medium: Orta +smtpConfig: SMTP Sunucusu Ayarları +smtpHost: Adres +emailServer: Mail sunucusu +edit: Düzenle +emailAddress: Mail adresi +smtpPort: Port +emptyToDisableSmtpAuth: SMTP doğrulamasını kapatmak için kullanıcı adı ve şifreyi + boş bırakın +makeActive: Aktif +display: Gösterim +copy: Kopyala +metrics: Metrikler +pollVotesCount: Gönderilen oylama sayısı +loadRawImages: Küçük resimleri göstermek yerine orijinal resimleri yükleyin +switchUi: Düzen +sentReactionsCount: Gönderilen tepki sayısı +receivedReactionsCount: Alınan tepki sayısı +pollVotedCount: Alınan oylama sayısı +pageLikedCount: Beğeni alan Sayfa sayısı +contact: Bağlantı +useSystemFont: Sistemin varsayılan yazı tipini kullan +usageAmount: Kullanım +inUse: Kullanılan +userInfo: Kullanıcı bilgisi +unknown: Bilinmiyor +customCssWarn: Bu ayar yalnızca ne işe yaradığını biliyorsanız kullanılmalıdır. Uygun + olmayan değerlerin girilmesi, istemcinin normal şekilde çalışmamasına neden olabilir. +memo: Not +allowedInstancesDescription: Her biri yeni bir satırla ayrılmış, federasyon için beyaz + listeye eklenecek sunucu ana bilgisayarları (yalnızca özel modda geçerlidir). +expiration: Bitiş +troubleshooting: Sorun giderme +usernameInfo: Hesabınızı bu sunucudaki diğerlerinden ayıran bir ad. Alfabeyi (a~z, + A~Z), rakamları (0~9) veya alt çizgileri (_) kullanabilirsiniz. Kullanıcı adları + daha sonra değiştirilemez. +size: Boyut +numberOfColumn: Sütun Sayısı +driveCapOverrideCaption: 0 veya daha düşük bir değer girerek kapasiteyi varsayılana + sıfırlayın. +requireAdminForView: Bunu görüntülemek için bir yönetici hesabıyla oturum açmalısınız. +userSaysSomethingReasonReply: '{name}, {reason} içeren bir gönderiye cevap verdi' +overview: Genel Bakış +logs: Günlükler +database: Veri Tabanı +reportAbuseOf: '{name} kullanıcısını raporla' +openInSideView: Yan görünümde aç +createNew: Yeni oluştur +createNewClip: Yeni ataç oluştur +unclip: Atacı Kaldır +notesCount: Gönderi sayısı +repliesCount: Gönderilen yanıt sayısı +renotesCount: Göndeirlen yükseltme sayısı +repliedCount: Alınan yanıt sayısı +driveUsage: Drive kullanımı +noCrawle: Tarayıcı dizine eklemeyi reddet +needReloadToApply: Bunun yansıtılması için bir yeniden yükleme gereklidir. +showTitlebar: Başlık çubuğunu göster +latestVersion: En Son Sürüm +capacity: Kapasite +userPagePinTip: Tek tek gönderiler menüsünden "Profile sabitle"yi seçerek gönderileri + burada görüntüleyebilirsiniz. +offline: Çevrimdışı +priority: Öncelik +ratio: Oran +secureMode: Güvenli Mod (Yetkili Getirme) +aiChanMode: Klasik kullanıcı arayüzünde Ai-chan +recommended: Önerilen +received: Alındı +classic: Ortalanmış +muteThread: Konuyu sessize al +deleteAccountConfirm: Bu hesap geri alınamaz bir şekilde silinecektir. İlerlemek istiyor + musunuz? +hide: Gizle +pubSub: Pub/Sub Hesapları +filter: Filtre +controlPanel: Kontrol Paneli +continueThread: Konuya devam et +incorrectPassword: Yanlış şifre. +voteConfirm: '"{choice}" için oyunuzu onaylıyor musunuz?' +failedToFetchAccountInformation: Hesap bilgileri getirilemedi +rateLimitExceeded: Hız limiti aşıldı +renotedBy: '{user} Yükseltti' +host: Host +objectStorage: Nesne Depolaması +objectStorageUseSSLDesc: API bağlantıları için HTTPS kullanmayacaksanız bunu kapatın +objectStorageUseProxyDesc: API bağlantıları için Proxy kullanmayacaksanız bunu kapatın +objectStorageSetPublicRead: Yüklendiğinde "public-read" kullan +serverLogs: Sunucu günlüğü +abuseReports: Raporlar +reportAbuse: Rapor +verificationEmailSent: Bir doğrulama maili gönderildi. Doğrulamayı tamamlamak için + lütfen verilen bağlantıyı takip edin. +hashtags: Etiketler +resolved: Çözüldü +flagShowTimelineRepliesDescription: Açıksa, kullanıcıların zaman çizelgesindeki diğer + kullanıcıların gönderilerine verdiği yanıtları gösterir. +clearQueueConfirmText: Kuyrukta kalan teslim edilmemiş gönderiler birleştirilmeyecektir. + Genellikle bu işleme gerek yoktur. +image: Resim +video: Video +showMore: Daha Fazla +showLess: Kapat +selectAntenna: Anten seç +selectWidget: Bir widget seç +unsuspendConfirm: Bu hesabın askıya almasını kaldırmak istediğinize emin misiniz? +selectList: Liste seç +editWidgets: Widget'ları düzenle +showEmojisInReactionNotifications: Tepki bildirimlerinde emojileri göster +renoteMute: Yükseltmeleri sustur +renoteUnmute: Yükseltmeleri susturmayı kaldır +loginFailed: Giriş yapılamadı +proxyAccount: Vekil Hesap +selectUser: Kullanıcı seç +recipient: Alıcı(lar) +annotation: Yorumlar +federation: Federasyon +registeredAt: Kayıtlı +latestRequestSentAt: Gönderilen son istek +latestRequestReceivedAt: Alınan son istek +latestStatus: Son durum +storageUsage: Depolama kullanımı +charts: Grafikler +perHour: Saat Başı +perDay: Gün Başı +stopActivityDelivery: Etkinlik göndermeyi durdur +blockThisInstance: Bu sunucuyu engelle +themeForDarkMode: Karanlık modda kullanmak için temalar +fileName: Dosya adı +selectFile: Dosya seç +emptyDrive: Drive'ın boş +promote: Terfi +numberOfDays: Gün sayısı +hideThisNote: Bu gönderiyi gizle +file: Dosya +enableEmojiReactions: Emoji tepkilerini aç +cw: İçerik uyarısı +makeFollowManuallyApprove: Onay gerektiren takip istekleri +today: Bugün +enableRecommendedTimeline: Tavsiye edilen zaman çizgisini aktive et +state: Durum +sort: Sırala +script: Skript +keepCw: İçerik uyarılarını sakla +manageAccounts: Hesapları Düzenle +makeReactionsPublicDescription: Bu, tüm geçmiş tepkilerinizin listesini herkesin görebileceği + bir hale getirecektir. +unmuteThread: İleti dizisinin sesini aç +ffVisibility: Takipler/Takipçiler Görünürlüğü +reflectMayTakeTime: Bunun yansıması biraz zaman alabilir. +cropImageAsk: Bu resmi kırpmak istediğinize emin misiniz? +check: Kontrol Et +driveCapOverrideLabel: Bu kullanıcı için drive kapasitesini değiştirin +numberOfPageCache: Önbelleğe alınan sayfa sayısı +license: Lisans +indexFrom: Post ID'den itibaren dizin +xl: XL +notificationSetting: Bildirim ayarları +fillAbuseReportDescription: Lütfen bu raporla ilgili ayrıntıları doldurun. Belirli + bir gönderiyle ilgiliyse, lütfen URL'sini ekleyin. +forwardReportIsAnonymous: Uzak sunucuda, hesabınız yerine raportör olarak anonim bir + sistem hesabı görüntülenecektir. +abuseMarkAsResolved: Raporu çözüldü olarak işaretle +instanceTicker: Göndeirlerdeki sunucu bilgisi +waitingFor: '{x} bekleniyor' +random: Rastgele +public: Herkese açık +i18nInfo: Firefish, gönüllüler tarafından çeşitli dillere çevriliyor. {link} adresinden + yardımcı olabilirsiniz. +disableShowingAnimatedImages: Animasyonlu görüntüleri oynatma +clips: Ataçlar +experimentalFeatures: Deneysel özellikler +developer: Geliştirici +left: Sol +center: Merkez +wide: Geniş +narrow: Dar +reloadToApplySetting: Bu ayar yalnızca bir sayfa yeniden yüklendikten sonra geçerli + olacaktır. Şimdi yeniden yüklensin mi? +editCode: Kodu düzenle +apply: Uygula +receiveAnnouncementFromInstance: Bu sunucudan bildirimleri al +publish: Paylaş +quitFullView: Tam görünümden çık +addDescription: Açıklama ekle +info: Hakkında +noMaintainerInformationWarning: Yönetici bilgileri yapılandırılmadı. +noBotProtectionWarning: Bot koruması yapılandırılmamış. +postToGallery: Yeni galeri gönderisi oluştur +gallery: Galeri +privateModeInfo: Etkinleştirildiğinde, yalnızca beyaz listedeki sunucular sunucunuzla + birleşebilir. Tüm gönderiler halktan gizlenecektir. +itsOff: Etkinsizleştirilmiş +ffVisibilityDescription: Kimleri takip ettiğinizi ve kimlerin sizi takip ettiğini + kimlerin görebileceğini yapılandırmanıza izin verir. +welcomeBackWithName: Tekrar hoş geldin {name} +themeColor: Sunucu Kayan Yazı Rengi +audio: Ses +recentNHours: Son {n} saat +isSystemAccount: Bu hesap sistem tarafından oluşturulur ve otomatik olarak işletilir. + Lütfen bu hesabı denetlemeyin, düzenlemeyin, silmeyin veya başka bir şekilde kurcalamayın, + aksi takdirde sunucunuz bozulabilir. +typeToConfirm: Lütfen onaylamak için {x} girin +remoteOnly: Sadece uzak +failedToUpload: Yükleme başarısız +cannotUploadBecauseInappropriate: Bu dosya, bazı bölümleri potansiyel olarak NSFW + olarak algılandığından yüklenemedi. +cannotUploadBecauseNoFreeSpace: Drive kapasitesi yetersiz olduğundan yükleme başarısız + oldu. +cannotUploadBecauseExceedsFileSizeLimit: Bu dosya, izin verilen maksimum boyutu aştığı + için yüklenemedi. +beta: Beta +enableAutoSensitive: Otomatik NSFW İşaretleme +enableAutoSensitiveDescription: Mümkün olduğunda Makine Öğrenimi yoluyla NSFW ortamının + otomatik olarak algılanmasına ve işaretlenmesine olanak tanır. Bu seçenek devre + dışı bırakılsa bile, sunucu çapında etkinleştirilebilir. +shuffle: Karıştır +pushNotification: Push bildirimleri +unsubscribePushNotification: Push bildirimlerini kapat +pushNotificationNotSupported: Tarayıcınız veya sunucunuz push bildirimleri desteklemiyor +caption: Otomatik Açıklama +moveToLabel: 'Taşıyacağın hesap:' +moveFromDescription: Bu, eski hesabınızın bir takma adını belirleyecek ve böylece + o hesaptan bu mevcut hesaba geçebileceksiniz. Bunu eski hesabınızdan taşınmadan + ÖNCE yapın. Lütfen @person@server.com şeklinde biçimlendirilmiş hesabın etiketini + girin +migrationConfirm: "Hesabınızı {account} hesabına taşımak istediğinizden kesinlikle + emin misiniz? Bunu yaptığınızda, geri alamazsınız ve hesabınızı bir daha normal + şekilde kullanamazsınız.\nAyrıca, lütfen bu cari hesabı, taşındığınız hesap olarak + ayarladığınızdan emin olun." +indexFromDescription: Her gönderiyi dizine eklemek için boş bırakın +indexNotice: Şimdi indeksleniyor. Bu muhtemelen biraz zaman alacaktır, lütfen sunucunuzu + en az bir saat yeniden başlatmayın. +customKaTeXMacro: Özel KaTeX makroları +directNotes: Direkt Mesajlar +import: İçeri Aktar +export: Dışarı Aktar +mentions: Bahsetmeler +files: Dosyalar +driveFileDeleteConfirm: '"{name}" dosyasını silmek istediğinizden emin misiniz? Dosyayı + "Ek" olarak içeren tüm gönderilerden kaldırılacaktır.' +createList: Liste oluştur +listsDesc: Listeler, belirtilen kullanıcılarla zaman çizelgesi oluşturmanıza olanak + tanır. Zaman Çizelgesi sayfasından erişilebilirler. +note: Gönder +enterListName: Liste için isim gir +unfollow: Takipten Çık +privacy: Gizlilik +followRequestPending: Takip isteği bekleniyor +enterEmoji: Bir emoji gir +followRequest: Takip İsteği +followRequests: Takip istekleri +renoted: Yükseldi. +emoji: Emoji +cacheRemoteFiles: Uzak dosyaları önbelleğe al +flagAsBot: Bu hesabı robot olarak işaretle +flagAsBotDescription: Bu hesap bir program tarafından kontrol ediliyorsa bu seçeneği + etkinleştirin. Etkinleştirilirse, diğer geliştiricilerin botlarıyla sonsuz etkileşim + zincirlerinin önlemesi ve Firefish'in dahili sistemlerinin bu hesabı bir bot olarak + ele alacak şekilde ayarlaması için bir bayrak görevi görür. +clearQueue: Sırayı Temizle +hiddenTags: Gizlenmiş Etiketler +done: Tamamlandı +processing: İşleniyor +silenced: Susturulmuş +darkThemes: Karanlık temalar +suspended: Askıya Alınmış +keepOriginalUploadingDescription: Orijinal olarak yüklenen görüntüyü olduğu gibi kaydeder. + Kapatılırsa, yükleme sırasında web'de görüntülenecek bir sürüm oluşturulur. +start: Başla +home: Ev +location: Konum +registeredDate: Katılım tarihi +yearX: '{year}' +pages: Sayfalar +integration: Entegrasyonlar +antennasDesc: "Antenler, belirlediğiniz kriterlere uyan yeni gönderiler görüntüler!\n +  Zaman çizelgeleri sayfasından erişilebilirler." +notesAndReplies: Gönderiler ve yanıtlar +withReplies: Yanıtları da içerir +connectedTo: Aşağıdaki hesap(lar) bağlı +silenceConfirm: Bu kullanıcıyı susturmak istediğinize emin misiniz? +messagingWithUser: Özel sohbet +resetPassword: Şifreyi sıfırla +registerSecurityKey: Yeni security key tanımla +docSource: Bu dökümanın kaynağı +ascendingOrder: Artan +tags: Etiketler +descendingOrder: Azalan +scratchpadDescription: Karalama defteri, AiScript deneyleri için bir ortam sağlar. + İçinde Firefish ile etkileşime girerek sonuçlarını yazabilir, çalıştırabilir ve + kontrol edebilirsiniz. +local: Yerel +remote: Uzak +addRelay: Röle Ekle +accessibility: Erişilebilirlik +showFeaturedNotesInTimeline: Önerilen gönderileri zaman çizelgesinde göster +objectStorageBaseUrlDesc: "Referans olarak kullanılan URL. İkisinden birini kullanıyorsanız, + CDN veya Proxy'nizin URL'sini belirtin.\nS3 için 'https://.s3.amazonaws.com' + kullanın ve GCS veya eşdeğer hizmetler için 'https://storage.googleapis.com/' + vb. kullanın." +objectStoragePrefixDesc: Dosyalar bu prefix ile dizinler altında saklanacaktır. +objectStorageEndpointDesc: AWS S3 kullanıyorsanız bunu boş bırakın, aksi halde kullandığınız + hizmete bağlı olarak uç noktayı "" veya ":" olarak belirtin. +objectStorageRegion: Region +invisibleNote: Gizli Gönderi +deletedNote: Silinmiş Gönderi +visibility: Görünürlük +poll: Anket +themeEditor: Tema düzenleyicisi +enterFileDescription: Açıklama gir +description: Açıklama +describeFile: Açıklama ekle +system: Sistem +desktop: Masaüstü +confirmToUnclipAlreadyClippedNote: Bu gönderi zaten "{name}" atacının bir parçası. + Bunun yerine onu bu ataçtan kaldırmak istiyor musunuz? +sendErrorReportsDescription: "Açıldığında, bir sorun oluştuğunda ayrıntılı hata bilgileri + Firefish ile paylaşılarak Firefish kalitesinin artırılmasına yardımcı olur.\nBu, + işletim sisteminizin sürümü, kullandığınız tarayıcı, Firefish'deki etkinliğiniz + vb. bilgileri içerecektir." +closeAccount: Hesabı kapat +markAllAsRead: Okunmuş olarak işaretle +allowedInstances: Beyaz Listedeki Sunucular +squareAvatars: Kare avatarları göster +unread: Okunmaımş +instanceDefaultDarkTheme: Sunucu genelinde varsayılan karanlık tema +oneDay: Bir gün +showAds: Topluluk bannerlarını göster +adminCustomCssWarn: Bu ayar yalnızca ne işe yaradığını biliyorsanız kullanılmalıdır. + Yanlış değerler girilmesi, HERKESİN istemcilerinin normal şekilde çalışmamasına + neden olabilir. Lütfen CSS'nizi kullanıcı ayarlarınızda test ederek düzgün çalıştığından + emin olun. +customSplashIcons: Özel açılış ekranı simgeleri (url'ler) +recommendedInstancesDescription: Önerilen zaman çizelgesinde görünmesi için satır + sonlarıyla ayrılmış önerilen sunucular. +recommendedInstances: Önerilen sunucular +enableServerMachineStats: Sunucu donanımı istatistiklerini etkinleştir +_sensitiveMediaDetection: + sensitivityDescription: Hassasiyetin düşürülmesi daha az yanlış tespite yol açarken, + hassasiyeti artırmak daha az tespitin gözden kaçmasına yol açacaktır. + setSensitiveFlagAutomaticallyDescription: Bu seçenek kapatılsa bile dahili algılamanın + sonuçları korunacaktır. + description: Makine Öğrenimi yoluyla NSFW ortamını otomatik olarak tanıyarak sunucu + denetleme çabasını azaltır. Bu, sunucudaki yükü biraz artıracaktır. + sensitivity: Algılama hassasiyeti + analyzeVideos: Videoların analizini etkinleştir + setSensitiveFlagAutomatically: NSFW olarak işaretle + analyzeVideosDescription: Görüntülere ek olarak videoları da analiz eder. Bu, sunucudaki + yükü biraz artıracaktır. +enableIdenticonGeneration: Kimlik oluşturmayı etkinleştir +reactionPickerSkinTone: Tercih edilen emoji cilt tonu +noteId: Gönderi ID +preventAiLearning: AI bot öğrenmesini önleyin +preventAiLearningDescription: Gönderiler ve resimler gibi yüklediğiniz içeriği incelememek + için üçüncü taraf yapay zeka dil modellerini isteyin. +isAdmin: Yönetici +_emailUnavailable: + disposable: Tek kullanımlık mail adresleri kullanılamaz + smtp: Bu mail sunucusu cevap vermiyor + mx: Bu mail sunucusu hatalı + used: Bu mail zaten kullanılıyor + format: Bu mail adresi yanlış +apps: Uygulamalar +findOtherInstance: Başka bir sunucu bul +showWithSparkles: Parıltılarla göster +showPopup: Kullanıcıları pop-up ile bilgilendirin +silencedWarning: Bu sayfa, bu kullanıcılar yöneticinizin susturduğu sunuculardan olduğu + için gösteriliyor, bu nedenle potansiyel olarak spam olabilirler. +isPatron: Firefish Patronu +youHaveUnreadAnnouncements: Okunmamış duyurularınız var +donationLink: Bağış sayfası linki +neverShow: Birdaha gösterme +remindMeLater: Belki sonra +removeQuote: Alıntıyı sil +removeRecipient: Alıcıyı sil +removeMember: Kullanıcıyı sil +customKaTeXMacroDescription: 'Kolayca matematiksel ifadeler yazmak için makrolar kurun! + Gösterim, LaTeX komut tanımlarına uygundur ve \newcommand{\ name}{content} veya + \newcommand{\name}[argüman sayısı]{content} şeklinde yazılır. Örneğin, \newcommand{\add}[2]{#1 + + #2}, \add{3}{foo} öğesini 3 + foo olarak genişletir. Makro adını çevreleyen süslü + parantezler, yuvarlak veya köşeli parantezler olarak değiştirilebilir. Bu, bağımsız + değişkenler için kullanılan parantezleri etkiler. Satır başına bir (ve yalnızca + bir) makro tanımlanabilir ve satırı tanımın ortasından ayıramazsınız. Geçersiz satırlar + basitçe yoksayılır. Yalnızca basit dizi değiştirme işlevleri desteklenir; koşullu + dallanma gibi gelişmiş söz dizimi burada kullanılamaz.' +enableCustomKaTeXMacro: Özel KaTeX makrolarını aktif et +isLocked: Bu hesabın takip onayları var +isModerator: Moderatör +signupsDisabled: Bu sunucudaki kayıtlar şu anda devre dışı, ancak istediğiniz zaman + başka bir sunucuya kaydolabilirsiniz! Bu sunucu için bir davet kodunuz varsa, lütfen + aşağıya girin. +sendModMail: Moderasyon Bildirimi Gönder +noGraze: Firefish ile çakıştığı için lütfen "Graze for Mastodon" tarayıcı uzantısını + devre dışı bırakın. +isBot: Bu hesap bir bottur +_2fa: + renewTOTPOk: Yeniden Yapılandır + registerTOTP: Doğrulayıcı uygulamasını kaydedin + renewTOTPCancel: İptal Et + renewTOTPConfirm: Bu, önceki uygulamanızdaki doğrulama kodlarının çalışmamasına + neden olur + alreadyRegistered: Zaten bir 2 faktörlü kimlik doğrulama cihazını kaydettiniz. + chromePasskeyNotSupported: Chrome geçiş anahtarları şu anda desteklenmemektedir. + registerSecurityKey: Bir güvenlik veya geçiş anahtarı kaydedin + securityKeyName: Bir anahtar adı girin + removeKey: Güvenlik anahtarını kaldır + removeKeyConfirm: '{name} anahtarı gerçekten silinsin mi?' + renewTOTP: Kimlik doğrulayıcı uygulamasını yeniden yapılandırın + token: 2FA Tokeni + step1: Öncelikle, cihazınıza bir kimlik doğrulama uygulaması ({a} veya {b} gibi) + yükleyin. + step2Click: Bu QR koduna tıklamak, 2FA'yı güvenlik anahtarınıza veya telefon kimlik + doğrulayıcı uygulamanıza kaydetmenize olanak tanır. + step3Title: Bir kimlik doğrulama kodu girin + securityKeyNotSupported: Tarayıcınız güvenlik anahtarlarını desteklemiyor. + step2: Ardından, bu ekranda görüntülenen QR kodunu tarayın. + step2Url: "Bir masaüstü programı kullanıyorsanız bu URL'yi de girebilirsiniz:" + step3: Kurulumu tamamlamak için uygulamanız tarafından sağlanan tokeni girin. + step4: Şu andan itibaren, gelecekteki herhangi bir oturum açma denemesi böyle bir + oturum açma tokeni isteyecektir. + securityKeyInfo: Parmak izi veya PIN kimlik doğrulamasının yanı sıra, hesabınızın + güvenliğini daha da artırmak için FIDO2'yi destekleyen donanım güvenlik anahtarları + aracılığıyla kimlik doğrulama ayarlayabilirsiniz. + tapSecurityKey: Güvenlik veya geçiş anahtarını kaydetmek için lütfen tarayıcınızı + takip edin + registerTOTPBeforeKey: Bir güvenlik veya geçiş anahtarı kaydetmek için lütfen bir + kimlik doğrulama uygulaması kurun. + whyTOTPOnlyRenew: Kimlik doğrulayıcı uygulaması, bir güvenlik anahtarı kaydedildiği + sürece kaldırılamaz. +_poll: + voted: Oylandı + deadlineTime: Zaman + remainingDays: '{d} gün {h} saat kaldı' + remainingHours: '{h} saat {m} dakika kaldı' + remainingSeconds: '{s} saniye kaldı' + remainingMinutes: '{m} dakika {s} saniye kaldı' + noOnlyOneChoice: En az 2 seçenek gerekiyor + noMore: Daha fazla seçenek ekleyemezsin + at: Bitiş... + deadlineDate: Bitiş tarihi + duration: Süre + votesCount: '{n} oy' + expiration: Anketi bitir + totalVotes: toplam {n} oy + closed: Bitti + infinite: Asla + vote: Oyla + showResult: Sonuçları görüntüle + after: "'den sonra bitiş..." + choiceN: Seçenek {n} + canMultipleVote: Birden fazla seçime izin ver +_theme: + code: Tema kodu + description: Açıklama + builtinThemes: Yerleşik temalar + color: Renk + keys: + fgHighlighted: Vurgulanan Metin + infoWarnFg: Uyarı metni + mention: Bahsetme + mentionMe: Bahsetme (Kendim) + buttonBg: Düğme arka planı + buttonHoverBg: Düğme arka planı (Üstüne Gelince) + shadow: Gölge + navBg: Kenar çubuğu arka planı + accent: Vurgu + fg: Yazı + dateLabelFg: Tarih etiketi metni + navActive: Kenar çubuğu metni (Etkin) + wallpaperOverlay: Arkaplan arayüzü + messageBg: Sohbet arkaplanı + focus: Fokus + accentLighten: Vurgu (Aydınlık) + bg: Arkaplan + indicator: Gösterge + hashtag: Etiket + renote: Yükseltme + modalBg: Modal arka plan + divider: Bölücü + scrollbarHandle: Kaydırma çubuğu kolu + scrollbarHandleHover: Kaydırma çubuğu tutacağı (Üzerine Gelince) + infoBg: Bilgi geçmişi + accentDarken: Vurgu (Karanlık) + header: Başlık + navFg: Kenar çubuğu metni + navIndicator: Kenar çubuğu göstergesi + link: Link + infoFg: Bilgi metni + infoWarnBg: Uyarı arka planı + badge: Rozen + panel: Panel + navHoverFg: Kenar çubuğu metni (Üzerine Gelince) + cwBg: CW düğmesi arka planı + cwFg: CW düğmesi meni + cwHoverBg: CW düğmesi arka planı (Üzerine Gelince) + toastFg: Bildirim metni + inputBorder: Giriş alanı sınırı + listItemHoverBg: Liste öğesi arka planı (Üstüne Gelince) + toastBg: Bildirim arka planı + driveFolderBg: Drive klasörü arkaplanı + funcKind: Fonksiyon tipi + argument: Argüman + lighten: Aydınlat + inputConstantName: Bu sabit için bir ad girin + deleteConstantConfirm: '{const} sabitini gerçekten silmek istiyor musunuz?' + explore: Temaları Keşfet + darken: Karart + base: Temel + manage: Temaları düzenle + installedThemes: Yüklenen temalar + invalid: Bu temanın biçimi geçersiz + make: Tema oluştur + key: Anahtar + alpha: Opaklık + install: Tema yükle + installed: '{name} başarıyla yüklendi' + alreadyInstalled: Bu tema zaten yüklendi + importInfo: Buraya tema kodunu girerseniz, onu tema düzenleyiciye aktarabilirsiniz + func: Fonksiyonlar + basedProp: Referenslanan özellik + constant: Sabit + defaultValue: Varsayılan değer + refConst: Bir sabiti referansla + refProp: Bir mülkü referansla + addConstant: Sabit ekle +_menuDisplay: + sideIcon: Yan (Simgeler) + sideFull: Yan + hide: Gizle + top: Üst +_filters: + fromUser: Kullanıcıdan + withFile: Dosya ile + notesBefore: Gönderiden önce + notesAfter: Gönderiden sonra + followingOnly: Sadece takip ettiklerim + fromDomain: Alan adı ile + followersOnly: Sadece takipçiler +_permissions: + "write:blocks": Engelli kullanıcıları düzenle + "read:drive": Drive dosya ve klasörlerine eriş + "read:favorites": Yer imlerini görüntüle + "write:mutes": Susturulmuş kullanıcıları düzenle + "read:notifications": Bildirimleri görüntüle + "write:notifications": Bildirimleri düzenle + "write:page-likes": Sayfalardaki beğenilerini düzenle + "read:user-groups": Kullanıcı gruplarını göster + "write:reactions": Tepkilerini düzenle + "read:pages": Sayfalarını göster + "write:channels": Kanallarını düzenle + "read:gallery": Galerini göster + "read:gallery-likes": Beğenilen galeri gönderilerini göster + "write:gallery-likes": Galeri gönderilerini düzenle + "write:messaging": Sohbet mesajı oluştur veya sil + "write:user-groups": Kullanıcı gruplarını düzenle veya sil + "read:messaging": Sohbetlerini görüntüle + "read:mutes": Susturulmuş kullanıcıları göster + "write:votes": Bir ankete oy ver + "read:page-likes": Beğenilen sayfalarını göster + "read:reactions": Tepkilerini göster + "read:channels": Kanallarını göster + "write:notes": Gönderi oluştur veya sil + "write:drive": Drive dosya ve klasörlerini düzenle + "write:favorites": Yer imlerini düzenle + "read:following": Kimleri takip ettiğini göster + "write:account": Hesap bilgisini düzenle + "read:account": Hesap bilgisini görüntüle + "read:blocks": Engelli kullanıcıları gör + "write:following": Hesapları takip et veya takipten çıkar + "write:pages": Sayfalarını düzenle veya sil + "write:gallery": Galerini düzenle +_auth: + pleaseGoBack: Lütfen uygulamaya geri dönün + callback: Uygulamaya geri dönülüyor + shareAccess: '"{name}" adlı kişinin bu hesaba erişmesine izin vermek ister misiniz?' + permissionAsk: 'Bu uygulama aşağıdaki izinleri ister:' + allPermissions: Tam hesap erişimi + denied: Erişim reddedildi + copyAsk: 'Lütfen aşağıdaki yetkilendirme kodunu uygulamaya yapıştırın:' + shareAccessAsk: Bu uygulamanın hesabınıza erişmesine izin vermek istediğinizden + emin misiniz? +_antennaSources: + users: Belirli kullanıcılardan gönderiler + homeTimeline: Takip edilen kullanıcılardan gönderiler + all: Tüm gönderiler + instances: Bir sunucudaki tüm kullanıcılardan gelen gönderiler + userList: Belirli bir kullanıcı listesinden gönderiler + userGroup: Belirli bir gruptaki kullanıcıların gönderileri +_charts: + usersIncDec: Kullanıcı sayısı farkı + usersTotal: Toplam kullanıcı sayısı + remoteNotesIncDec: Uzak gönderilerin sayısındaki fark + notesTotal: Toplam gönderi sayısı + filesTotal: Toplam dosya sayısı + apRequest: İstekler + storageUsageIncDec: Depolama kullanımındaki fark + localNotesIncDec: Yerel gönderilerin sayısındaki fark + storageUsageTotal: Toplam depolama kullanımı + federation: Federasyon + notesIncDec: Gönderi sayısındaki fark + activeUsers: Aktif kullanıcılar + filesIncDec: Dosya sayısındaki fark +_pages: + fontSerif: Serif + fontSansSerif: Sans Serif + chooseBlock: Bloğu sil + blocks: + _canvas: + id: Tuval ID + height: Yükseklik + width: Genişlik + _button: + _action: + resetRandom: Rastgele çekirdeği sıfırla + _pushEvent: + no-variable: Hiçbiri + event: Etkinlik ismi + message: Aktif olduğunda gösterilecek mesaj + variable: Gönderilecek değişken + callAiScript: AiScript'i çağırın + _callAiScript: + functionName: Fonksiyon ismi + dialog: Dialog göster + _dialog: + content: İçerik + pushEvent: Etkinlik gönder + text: Başlık + action: Düğmeye basıldığında olacaklar + colored: Renkli + text: Yazı + if: Eğer + _if: + variable: Değişken + canvas: Tuval + note: Gömülü yazı + _note: + id: Gönderi ID + idDescription: Alternatif olarak gönderi URL'sini buraya yapıştırabilirsiniz. + detailed: Detaylı görüntüleme + _counter: + text: Başlık + inc: Adım + name: Değer ismi + radioButton: Seçenek + _radioButton: + name: Değişken ismi + values: Seçenekleri satırlarla ayırın + title: Başlık + default: Varsayılan değer + _post: + text: İçerik + attachCanvasImage: Tuval resmi ekle + canvasId: Tuval ID + _textInput: + text: Başlık + name: Değişken ismi + default: Varsayılan değer + _numberInput: + name: Değiken ismi + text: Başlık + default: Varsayılan değer + _textareaInput: + text: Başlık + name: Değişken ismi + default: Varsayılan değer + textarea: Yazı alanı + _switch: + name: Değişken ismi + default: Varsayılan değer + text: Başlık + counter: Sayaç + switch: Değiştir + post: Gönderi formu + image: Resimler + section: Bölüm + textareaInput: Çok satırlı yazı girişi + button: Düğme + textInput: Yazı girişi + numberInput: Sayısal giriş + script: + categories: + text: Yazı işlemleri + flow: Akış kontrolü + random: Rastgele + fn: Fonksiyonlar + convert: Dönüşümler + list: Listeler + logical: Mantıksal işlem + operation: Hesaplama + comparison: Karşılaştırma + value: Değerler + blocks: + and: A ve B + _or: + arg2: B + arg1: A + _lt: + arg1: A + arg2: B + _ltEq: + arg1: A + arg2: B + textList: Yazı listesi + strReverse: Yazıyı çevir + multiply: Çarp + subtract: Çıkar + _mod: + arg1: A + arg2: B + _divide: + arg2: B + arg1: A + round: Ondalık yuvarlama + _round: + arg1: Sayı + _eq: + arg1: A + arg2: B + notEq: A ve B farklıysa + _notEq: + arg1: A + arg2: B + or: A veya B + gt: "> A, B'den çoksa" + ltEq: <= A, B'den az veya eşitse + gtEq: ">= A, B'den çok veya eşitse" + _gtEq: + arg1: A + arg2: B + _not: + arg1: OLUMSUZ + random: Rastgele + randomPick: Listeden rastgele seç + seedRandom: Random (çekirdek ile) + _for: + arg1: Tekrarlama sayısı + arg2: Eylem + _seedRannum: + arg3: Maksimum değer + arg2: Minimum değer + arg1: Çekirdek + _strReplace: + arg3: ile değiştir + arg2: Değiştirilecek yazı + arg1: Yazı + _subtract: + arg2: B + arg1: A + mod: Kalan + _and: + arg1: A + arg2: B + _DRPWPM: + arg1: Yazı listesi + _fn: + slots-info: Her yuvayı bir satır sonu ile ayırın + arg1: Çıkış + slots: Yuvalar + for: dögü + dailyRandomPick: Listeden rastgele seçim yapın (Her kullanıcı için günde bir + kez değişir) + _dailyRannum: + arg1: Minimum değer + arg2: Maksimum değer + _seedRandomPick: + arg2: Liste + arg1: Çekirdek + _pick: + arg2: Pozisyon + arg1: Liste + number: Sayı + _if: + arg3: Yoksa + arg1: Eğer + arg2: Sonra + _rannum: + arg1: Minimum değer + arg2: Maksimum değer + eq: A ve B eşitse + _gt: + arg1: A + arg2: B + rannum: Rastgele sayı + _randomPick: + arg1: Liste + pick: Listeden seç + _listLen: + arg1: Liste + _multiply: + arg2: B + arg1: A + divide: Böl + strPick: Dize ayıklayın + _strPick: + arg1: Yazı + arg2: Dize konunumu + dailyRandom: Rastgele (Her kullanıcı için günde bir kez değişir) + _dailyRandom: + arg1: Olasılık + dailyRannum: Rastgele sayı (Her kullanıcı için günde bir kez değişir) + _stringToNumber: + arg1: Yazı + if: Şube + strReplace: Yedek dize + text: Yazı + _splitStrByLine: + arg1: Yazı + not: OLUMSUZ + _seedRandom: + arg1: Çekirdek + arg2: Olasılık + seedRandomPick: Listeden rastgele seçim yapın (çekirdek ile) + fn: Fonksiyon + multiLineText: Yazı (çok satırlı) + _textList: + info: Her girişi satırlar ile ayırın + _strReverse: + arg1: Yazı + join: Yazıyı birleştirme + _join: + arg1: Listeler + arg2: Ayraç + add: Ekle + _add: + arg1: A + arg2: B + _strLen: + arg1: Yazu + aiScriptVar: AiScript Değişkeni + ref: Değişken + splitStrByLine: Yazıyı satır sonlarına göre bölme + strLen: Yazı uzunluğu + lt: < A, B'den azsa + _random: + arg1: Olasılık + DRPWPM: Ağırlıklı listeden rastgele seçim yapın (Her kullanıcı için günde bir + kez değişir) + listLen: Listenin uzunluğunu al + numberToString: Sayıdan yazıya + _dailyRandomPick: + arg1: Liste + stringToNumber: Yazıdan Sayıya + seedRannum: Rastgele sayı (çekirdek ile) + _numberToString: + arg1: Sayı + types: + number: Sayı + boolean: Etiket + array: Liste + stringArray: Yazı listesi + string: Yazı + emptySlot: Boş yuva + enviromentVariables: Ortam değikenleri + argVariables: Giriş yuvaları + thereIsEmptySlot: Yuva {slot} boş! + typeError: Yuva {slot}, "{expect}" türündeki değerleri kabul eder, ancak sağlanan + değer "{actual}" türündedir! + pageVariables: Sayfa değişkenleri + readPage: Bu sayfanın kaynağını görüntüle + created: Sayfa başarıyla oluşturuldu + eyeCatchingImageRemove: Afişi sil + selectType: Tip seç + pageSetting: Sayfa ayarları + viewSource: Kaynağı görüntüle + variables: Değişkenler + url: Sayfa URL'si + unlike: Beğeniyi kaldır + my: Sayfalarım + content: Sayfa bloğu + deleted: Sayfa başarıyla silindi + newPage: Yeni sayfa oluştur + editPage: Bu sayfayı düzenle + viewPage: Sayfalarını görüntüle + like: Beğen + nameAlreadyExists: Belirtilen Sayfa URL'si zaten var + invalidNameTitle: Belirtilen Sayfa URL'si geçersiz + invalidNameText: Sayfa başlığının boş olmadığından emin olun + editThisPage: Sayfayı düzenle + featured: Popüler + inspector: Denetçi + contents: İçerik + title: Başlık + liked: Beğenilen Sayfalar + font: Yazı Tipi + alignCenter: İçerikleri ortala + eyeCatchingImageSet: Afiş ayarla + enterVariableName: Değişken ismi ekle + hideTitleWhenPinned: Profile sabitlendiğinde Sayfa başlığını gizle + variableNameIsAlreadyUsed: Bu değişken adı zaten kullanımda + contentBlocks: İçerik + inputBlocks: Giriş + specialBlocks: Özel + updated: Sayfa başarıyla düzenlendi + summary: Sayfa özeti +_notification: + _types: + follow: Yeni takipçiler + mention: Bahsetmeler + app: Bağlı uygulamalardan bildirimler + pollEnded: Biten anket + receiveFollowRequest: Takip istekleri alındı + reaction: Tepkiler + all: Hepsi + followRequestAccepted: Takip istekleri kabul edildi + pollVote: Anket oylamaları + renote: Yükseltmeler + reply: Yanıtlar + groupInvited: Grup davetleri + quote: Alıntılar + pollEnded: Anket sonuçları açıklandı + fileUploaded: Dosya başarıyla yüklendi + youRenoted: '{name} tarafından yükseltildin' + _actions: + followBack: Seni geri takip etti + reply: Yanıtla + renote: Yükseltmeler + youGotMention: '{name} senden bahsetti' + youWereFollowed: seni takip etti + youGotMessagingMessageFromGroup: '{name} grubuna bir sohbet mesajı gönderildi' + renoted: gönderini yükseltti + youGotQuote: '{name} seni alıntıladı' + youGotReply: '{name} seni yanıtladı' + reacted: gönderine tepki ekledi + yourFollowRequestAccepted: Takip isteğin kabul edildi + emptyPushNotificationMessage: Push bildirimleri güncellendi + youWereInvitedToGroup: '{userName} seni gruba davet etti' + voted: anketine oy verdi + youReceivedFollowRequest: Bir takip isteği geldi + youGotPoll: '{name} anketinde oylama yaptı' + youGotMessagingMessageFromUser: '{name} sana bir sohbet mesajı gönderdi' +_experiments: + title: Deneyler + postImportsCaption: Kullanıcıların geçmiş Firefish, Misskey, Mastodon, Akkoma ve + Pleroma hesaplarından gönderilerini içe aktarmalarına izin verir. Kuyruğunuz tıkanırsa + yükleme sırasında yavaşlamalara neden olabilir. + enablePostImports: Gönderi içeri aktarmasını aktif et +_dialog: + charactersExceeded: 'Maksimum karakter aşıldı! Geçerli: {current}/Sınır: {max}' + charactersBelow: 'Yeterli karakter yok! Geçerli: {current}/Sınır: {min}' +_signup: + emailSent: Mail adresinize ({email}) bir onay maili gönderildi. Hesap oluşturmayı + tamamlamak için lütfen verilen bağlantıya tıklayın. + almostThere: Neredeyse vardık + emailAddressInfo: Lütfen mail adresinizi giriniz. Herkese açık gözükmeyecektir. +_ad: + back: Geri + reduceFrequencyOfThisAd: Daha az reklam göster +_accountDelete: + accountDelete: Hesabı sil + mayTakeTime: Hesap silme, kaynak yoğun bir işlem olduğundan, ne kadar içerik oluşturduğunuza + ve ne kadar dosya yüklediğinize bağlı olarak tamamlanması biraz zaman alabilir. + sendEmail: Hesap silme işlemi tamamlandıktan sonra, bu hesapta kayıtlı olan mail + adresine bir mail gönderilecektir. + started: Silme işlemi başlatıldı. + requestAccountDelete: Hesap silme talebinde bulun + inProgress: Silme işlemi şu anda devam ediyor +_forgotPassword: + enterEmail: Kaydolmak için kullandığınız mail adresini girin. Parolanızı sıfırlayabileceğiniz + bir bağlantı daha sonra ona gönderilecektir. + contactAdmin: Bu sunucu, mail adreslerinin kullanılmasını desteklemiyor, bunun yerine + şifrenizi sıfırlamak için lütfen sunucu yöneticisiyle iletişime geçin. + ifNoEmail: Kayıt sırasında bir mail kullanmadıysanız, sunucu yöneticisiyle iletişime + geçin. +_gallery: + my: Galerim + liked: Beğenilen Gönderiler + like: Beğen + unlike: Beğeniyi kaldır +_registry: + key: Anahtar + scope: Kapsam + keys: Anahtarlar + createKey: Anahtar oluştur + domain: Alan adı +_email: + _follow: + title: Yeni bir takipçin var + _receiveFollowRequest: + title: Yeni bir takip isteğin var +_preferencesBackups: + apply: Bu cihaza uygula + invalidFile: Geçersiz dosya formatı + applyConfirm: '"{name}" yedeğini bu cihaza gerçekten uygulamak istiyor musunuz? + Bu cihazın mevcut ayarlarının üzerine yazılacak.' + inputName: Lütfen bu yedekleme için bir ad girin + cannotSave: Kaydedilemedi + saveConfirm: Yedekleme {name} olarak kaydedilsin mi? + renameConfirm: '"{old}" olan bu yedeğin adı "{new}" olarak değiştirilsin mi?' + createdAt: 'Oluşturma tarihi: {date} {time}' + save: Değişiklikleri Kaydet + nameAlreadyExists: '"{name}" adlı bir yedek zaten var. Lütfen farklı bir ad girin.' + deleteConfirm: '{name} yedeği silinsin mi?' + noBackups: Yedekleme yok. "Yeni yedekleme oluştur" seçeneğini kullanarak bu sunucudaki + istemci ayarlarınızı yedekleyebilirsiniz. + list: Oluşturulan yedekler + saveNew: Yeni bir yedek oluştur + loadFile: Dosyadan yükle + updatedAt: 'Güncelleme tarihi: {date} {time}' + cannotLoad: Yüklenemedi +_aboutFirefish: + patronsList: Bağış büyüklüğüne göre değil, kronolojik olarak listelenmiştir. Adınızı + buraya almak için yukarıdaki bağlantıyla bağış yapın! + about: Firefish, 2022'den beri geliştirilmekte olan ThatOneCalculator tarafından + yapılan bir Misskey çatalıdır. + allContributors: Tüm katkıda bulunanlar + patrons: Firefish patronları + morePatrons: Burada listelenmeyen diğer birçok yardımcının desteğini de takdir ediyoruz. + Teşekkür ederim! 🥰 + donate: Firefish'e bağışta bulunun + contributors: Ana katkıda bulunanlar + source: Kaynak Kodu + translation: Firefish'i tercüme et + donateTitle: Firefish'den hoşlanıyor musunuz? + pleaseDonateToFirefish: Lütfen gelişimini desteklemek için Firefish'e bağış yapmayı + düşünün. + pleaseDonateToHost: İşletme maliyetlerini desteklemek için lütfen ev sunucunuz {host}'a + bağış yapmayı da düşünün. + donateHost: '{ev sahibi} için bağış yapın' + sponsors: Firefish sponsorları + misskeyContributors: Misskey'e katkıda bulunanlar +_weekday: + saturday: Cumartesi + sunday: Pazar + wednesday: Çarşamba + friday: Cuma + thursday: Perşembe + monday: Pazartesi + tuesday: Salı +_serverDisconnectedBehavior: + reload: Otomatik olarak yenile + quiet: Göze çarpmayan uyarı göster + nothing: Hiçbir şey yapma + dialog: Uyarı mesajını göster +_channel: + removeBanner: Afişi sil + owned: Sahip Olunan + nameOnly: Sadece isim + featured: Popüler + setBanner: Afiş ayarla + usersCount: '{n} Katılımcı' + create: Kanal oluştur + following: Takip + notesCount: '{n} Gönderi' + nameAndDescription: İsim ve açıklama + edit: Kanalı düzenle +_messaging: + groups: Gruplar + dms: Özel +_tutorial: + step5_5: Sosyal {icon} zaman çizelgesi, Ev ve Yerel zaman çizelgelerinin bir kombinasyonudur. + step5_6: Önerilen {icon} zaman çizelgesi, yöneticilerin önerdiği sunuculardan gelen + gönderileri görebileceğiniz yerdir. + step6_1: Peki burası neresi? + title: Firefish nasıl kullanılır + step3_2: "Ev ve sosyal zaman çizelgeleriniz, kimi takip ettiğinize bağlıdır, bu + nedenle başlamak için birkaç hesabı takip etmeyi deneyin.\nTakip etmek için bir + profilin sağ üstündeki artı dairesine tıklayın." + step5_3: Ana Sayfa {icon} zaman çizelgesi, takip ettiğiniz hesaplardan gelen gönderileri + görebileceğiniz yerdir. + step5_4: Yerel {icon} zaman çizelgesi, bu sunucudaki diğer herkesin gönderilerini + görebileceğiniz yerdir. + step6_2: Firefish'e öylece katılmadın. Binlerce sunucudan oluşan birbirine bağlı + bir ağ olan Fediverse'e giden bir portala katıldınız. + step6_4: Şimdi gidin, keşfedin ve eğlenin! + step5_7: Global {icon} zaman çizelgesi, bağlı diğer tüm sunuculardan gelen gönderileri + görebileceğiniz yerdir. + step2_1: Öncelikle lütfen profilinizi doldurunuz. + step2_2: Kim olduğunuz hakkında biraz bilgi vermeniz, başkalarının gönderilerinizi + görmek mi yoksa sizi takip etmek mi istediklerini anlamalarını kolaylaştıracaktır. + step3_1: Şimdi birkaç kullanıcı takip etme zamanı! + step1_1: Hoşgeldin! + step1_2: Hadi seni hazırlayalım. Kısa sürede kullanmaya başlayacaksınız! + step5_1: Zaman çizelgeleri, her yerde zaman çizelgeleri! + step6_3: Her sunucu farklı şekillerde çalışır ve tüm sunucular Firefish'i çalıştırmaz. + Ama bu sunucu kullanıyor! Biraz karışık ama kısa sürede anlayacaksın. + step4_1: Seni oradan çıkaralım. + step5_2: Sunucunuzda etkinleştirilmiş {timelines} farklı zaman çizelgesi var. + step4_2: İlk gönderiniz için, bazı insanlar bir {introduction} gönderisi veya basit + bir "Merhaba dünya!" gönderir +_visibility: + public: Herkese açık + publicDescription: Gönderiniz herkese açık tüm zaman çizelgelerinde görünür olacak + specified: Direkt + followersDescription: Yalnızca takipçilerinize ve adı geçen kullanıcılara görünür + kılın + localOnlyDescription: Uzak kullanıcılara gözükmez + home: Listelenmemiş + homeDescription: Yalnızca ev zaman çizelgesine yayınla + followers: Takipçiler + specifiedDescription: Belirli kullanıcılara özel yapın + localOnly: Sadece yerel +_postForm: + quotePlaceholder: Bu gönderiyi alıntıla... + _placeholders: + a: Ne ile meşgulsün? + b: Etrafında neler oluyor? + f: Yazman bekleniyor... + c: Aklınızdan ne geçiyor? + d: Ne demek istiyorsun? + e: Yazmaya başka... + replyPlaceholder: Bu gönderiyi yanıtla... + channelPlaceholder: Bir kanala gönder... +_exportOrImport: + allNotes: Tüm gönderiler + followingList: Takip edilen kullanıcılar + muteList: Susturulmuş kullanıcılar + excludeMutingUsers: Susturulmuş kullanıcıları hariç tut + excludeInactiveUsers: Aktif olmayan kullanıcıları hariç tut + userLists: Kullanıcı listeleri + blockingList: Engellenimş kullanıcılar +_instanceCharts: + notes: Gönderi sayısındaki fark + notesTotal: Toplu gönderi sayısı + files: Dosya sayısındaki fark + filesTotal: Toplu dosya sayısı + requests: İstekler + usersTotal: Toplu kullanıcı sayısı + users: Kullanıcı sayısı farkı + cacheSize: Önbellek boyutundaki fark + ff: 'Takip edilen / Takipçi sayısındaki fark ' + cacheSizeTotal: Toplam önbellek boyutu + ffTotal: Toplu Takip edilen / Takipçi sayısı +_wordMute: + soft: Yumuşak + muteWords: Susturulmuş kelimeler + muteWordsDescription: AND koşulu için boşluklarla veya OR koşulu için satır sonlarıyla + ayırın. + softDescription: Belirlenen koşulları karşılayan gönderileri zaman çizelgesinden + gizleyin. + hardDescription: Belirlenen koşulları sağlayan gönderilerin zaman çizelgesineeklenmesini + engeller. Ayrıca bu gönderiler, koşullar değişse dahi zaman tüneline eklenmeyecektir. + mutedNotes: Susturulmuş gönderiler + hard: Sert + muteWordsDescription2: Normal ifadeleri kullanmak için anahtar kelimeleri eğik çizgilerle + çevreleyin. +_ago: + weeksAgo: '{n}hafta önce' + minutesAgo: '{n}dakika önce' + daysAgo: '{n}gün önce' + future: Gelecek + justNow: Şimdi + secondsAgo: '{n}saniye önce' + hoursAgo: '{n}saat önce' + monthsAgo: '{n}ay önce' + yearsAgo: '{n}yıl önce' +_timelines: + home: Ev + local: Yerel + social: Sosyal + global: Global + recommended: Tavsiye Edilen +_nsfw: + respect: NSFW medyasını gizle + force: Tüm medyayı gizle + ignore: NSFW medyasını gizleme +_cw: + files: '{count} dosya(lar)' + chars: '{count} harf' + hide: Gizle + show: İçeriği göster +_relayStatus: + rejected: Reddedildi + accepted: Kabul edildi + requesting: Bekleniyor +_time: + day: Gün(ler) + hour: Saat(ler) + second: Saniye(ler) + minute: Dakika(lar) +_skinTones: + light: Aydınlık + medium: Orta + mediumLight: Orta Aydınlık + dark: Karanlık + yellow: Sarı + mediumDark: Orta Karanlık +_plugin: + install: Eklenti indir + installWarn: Lütfen güvenli olmayan eklentiler kurmayınız. + manage: Eklentileri yönet +_instanceTicker: + remote: Uzak kullanıcılar için göster + always: Her zaman göster + none: Asla gösterme +_instanceMute: + heading: Sessize alınacak sunucuların listesi + instanceMuteDescription2: Yeni satırlarla ayırın + title: Listelenen sunuculardan gönderileri gizler. + instanceMuteDescription: Bu, sessize alınmış bir sunucudan bir kullanıcıya yanıt + veren kullanıcılarınkiler de dahil olmak üzere, listelenen sunuculardan gelen + tüm gönderileri/yükseltmeleri sessize alacaktır. +_ffVisibility: + followers: Takipçilere açık + private: Gizli + public: Herkese açık +verifiedLink: Doğrulanmış bağlantı +_feeds: + copyFeed: Akışı kopyala + rss: RSS + atom: Atom + jsonFeed: JSON akışı +origin: Kaynak +objectStorageS3ForcePathStyle: Path temelli bir endpoint URL'leri kullan +objectStorageS3ForcePathStyleDesc: Bunu açarak 's3.amazonaws.com//' over '.s3.amazonaws.com' + formatında endpoint URL'leri kurabilirsin. +delete2fa: 2FA'yı devre dışı bırak +deletePasskeys: Passkey'leri sil +inputNotMatch: Girdi eşleşmiyor +deletePasskeysConfirm: Bu işlem geri alınamaz bir şekilde bu hesapta ki tüm passkey'leri + ve güvenlik anahtarlarını silecektir. İşleme devam ediyor musunuz? +delete2faConfirm: Bu işlem geri alınamaz bir şekilde 2FA'yı bu hesaptan silecektir. + İşleme devam ediyor musunuz? +detectPostLanguage: Yabancı dildeki gönderiler için dili otomatik olarak tespit et + ve bir tercüme düğmesi göster +indexableDescription: Yerleşik aramanın herkese açık gönderilerinizi göstermesine + izin ver +addRe: İçerik uyarısına sahip bir gönderiye yanıt olarak paylaşılan gönderinin başına + "re:" ekle +exportZip: ZIP dışa aktar +emojiPackCreator: Emoji paketi oluşturucu +importZip: ZIP içe aktar +indexable: Endekslenebilir +languageForTranslation: Çeviri sonrası dili +confirm: Onayla diff --git a/locales/uk-UA.yml b/locales/uk-UA.yml index 712c0fd03e..f1c9dab4b4 100644 --- a/locales/uk-UA.yml +++ b/locales/uk-UA.yml @@ -1,7 +1,7 @@ ---- _lang_: "Українська" -headlineMisskey: "Мережа об'єднана записами" -introMisskey: "Ласкаво просимо! Calckey - децентралізована служба мікроблогів з відкритим кодом.\nСтворюйте \"нотатки\", щоб поділитися тим, що відбувається, і розповісти всім про себе 📡\nЗа допомогою \"реакцій\" ви також можете швидко висловити свої почуття щодо нотаток інших 👍\nДосліджуймо новий світ! 🚀" +headlineFirefish: "Мережа об'єднана записами" +introFirefish: "Ласкаво просимо! Firefish - децентралізована служба мікроблогів з + назавжди відкритим кодом! 🚀" monthAndDay: "{month}/{day}" search: "Пошук" notifications: "Сповіщення" @@ -14,18 +14,18 @@ gotIt: "Зрозуміло!" cancel: "Скасувати" enterUsername: "Введіть ім'я користувача" renotedBy: "Поширено {user}" -noNotes: "Немає нотаток" +noNotes: "Немає записів" noNotifications: "Немає сповіщень" -instance: "Інстанс" +instance: "Сервер" settings: "Налаштування" basicSettings: "Основні налаштування" otherSettings: "Інші налаштування" openInWindow: "Відкрити у вікні" profile: "Профіль" timeline: "Стрічка" -noAccountDescription: "Цей користувач ще нічого не написав про себе" +noAccountDescription: "Цей користувач ще нічого не написав про себе." login: "Увійти" -loggingIn: "Здійснюємо вхід..." +loggingIn: "Здійснюємо вхід" logout: "Вийти" signup: "Реєстрація" uploading: "Завантаження..." @@ -44,7 +44,8 @@ copyContent: "Скопіювати контент" copyLink: "Скопіювати посилання" delete: "Видалити" deleteAndEdit: "Видалити й редагувати" -deleteAndEditConfirm: "Ви впевнені, що хочете видалити цю нотатку та відредагувати її? Ви втратите всі реакції, поширення та відповіді на неї." +deleteAndEditConfirm: "Ви впевнені, що хочете видалити цей запис та відредагувати + його? Ви втратите всі реакції, поширення та відповіді на нього." addToList: "Додати до списку" sendMessage: "Надіслати повідомлення" copyUsername: "Скопіювати ім’я користувача" @@ -64,9 +65,11 @@ import: "Імпорт" export: "Експорт" files: "Файли" download: "Завантажити" -driveFileDeleteConfirm: "Ви впевнені, що хочете видалити файл {name}? Нотатки із цим файлом також буде видалено." +driveFileDeleteConfirm: "Ви впевнені, що хочете видалити файл {name}? Його буде видалено + з усіх записів які містили його." unfollowConfirm: "Ви впевнені, що хочете відписатися від {name}?" -exportRequested: "Експортування розпочато. Це може зайняти деякий час. Після завершення експорту отриманий файл буде додано на диск." +exportRequested: "Експортування розпочато. Це може зайняти деякий час. Після завершення + експорту отриманий файл буде додано на диск." importRequested: "Імпортування розпочато. Це може зайняти деякий час." lists: "Списки" noLists: "Немає списків" @@ -80,10 +83,12 @@ manageLists: "Управління списками" error: "Помилка" somethingHappened: "Щось пішло не так" retry: "Спробувати знову" -pageLoadError: "Помилка при завантаженні сторінки" -pageLoadErrorDescription: "Зазвичай це пов’язано з помилками мережі або кешем браузера. Очистіть кеш або почекайте трохи й спробуйте ще раз." +pageLoadError: "Помилка при завантаженні сторінки." +pageLoadErrorDescription: "Зазвичай це пов’язано з помилками мережі або кешем браузера. + Очистіть кеш або почекайте трохи й спробуйте ще раз." serverIsDead: "Відповіді від сервера немає. Зачекайте деякий час і повторіть спробу." -youShouldUpgradeClient: "Перезавантажте та використовуйте нову версію клієнта, щоб переглянути цю сторінку." +youShouldUpgradeClient: "Перезавантажте та використовуйте нову версію клієнта, щоб + переглянути цю сторінку." enterListName: "Введіть назву списку" privacy: "Конфіденційність" makeFollowManuallyApprove: "Підтверджувати підписників уручну" @@ -95,10 +100,10 @@ unfollow: "Відписатись" followRequestPending: "Очікуючі запити на підписку" enterEmoji: "Введіть емодзі" renote: "Поширити" -unrenote: "Відміна поширення" -renoted: "Поширити запис." -cantRenote: "Неможливо поширити." -cantReRenote: "Поширення не можливо поширити." +unrenote: "скасувати поширення" +renoted: "Поширено." +cantRenote: "Цей запис неможливо поширити." +cantReRenote: "Поширення неможливо поширити." quote: "Цитата" pinnedNote: "Закріплений запис" pinned: "Закріпити" @@ -108,7 +113,8 @@ sensitive: "NSFW" add: "Додати" reaction: "Реакції" reactionSetting: "Налаштування реакцій" -reactionSettingDescription2: "Перемістити щоб змінити порядок, Клацнути мишою щоб видалити, Натиснути \"+\" щоб додати." +reactionSettingDescription2: "Перемістити щоб змінити порядок, Клацнути мишою щоб + видалити, Натиснути \"+\" щоб додати." rememberNoteVisibility: "Пам’ятати параметри видимісті" attachCancel: "Видалити вкладення" markAsSensitive: "Позначити як NSFW" @@ -137,14 +143,21 @@ emojiUrl: "URL емодзі" addEmoji: "Додати емодзі" settingGuide: "Рекомендована конфігурація" cacheRemoteFiles: "Кешувати дані з інших інстансів" -cacheRemoteFilesDescription: "Якщо кешування вимкнено, віддалені файли завантажуються безпосередньо з віддаленого інстансу. Це зменшує використання сховища, але збільшує трафік, оскільки не генеруются ескізи." +cacheRemoteFilesDescription: "Якщо кешування вимкнено, віддалені файли завантажуються + безпосередньо з віддаленого серверу. Це зменшує використання сховища, але збільшує + трафік, оскільки не генеруются ескізи." flagAsBot: "Акаунт бота" -flagAsBotDescription: "Ввімкніть якщо цей обліковий запис використовується ботом. Ця опція позначить обліковий запис як бота. Це потрібно щоб виключити безкінечну інтеракцію між ботами а також відповідного підлаштування Calckey." +flagAsBotDescription: "Ввімкніть якщо цей обліковий запис використовується ботом. + Ця опція позначить обліковий запис як бота. Це потрібно щоб виключити безкінечну + інтеракцію між ботами а також відповідного підлаштування Firefish." flagAsCat: "Акаунт кота" -flagAsCatDescription: "Ввімкніть, щоб позначити, що обліковий запис є котиком." -flagShowTimelineReplies: "Показувати відповіді на нотатки на часовій шкалі" -flagShowTimelineRepliesDescription: "Показує відповіді користувачів на нотатки інших користувачів на часовій шкалі." -autoAcceptFollowed: "Автоматично приймати запити на підписку від користувачів, на яких ви підписані" +flagAsCatDescription: "Ввімкніть, щоб позначити, що обліковий запис є котиком, та + отримати котячі вуха!" +flagShowTimelineReplies: "Показувати відповіді на записи в стрічці" +flagShowTimelineRepliesDescription: "Показує відповіді користувачів на записи інших + користувачів у стрічці." +autoAcceptFollowed: "Автоматично приймати запити на підписку від користувачів, на + яких ви підписані" addAccount: "Додати акаунт" loginFailed: "Не вдалося увійти" showOnRemote: "Переглянути в оригіналі" @@ -155,14 +168,18 @@ removeWallpaper: "Прибрати шпалери" searchWith: "Пошук: {q}" youHaveNoLists: "У вас немає списків" followConfirm: "Підписатися на {name}?" -proxyAccount: "Проксі-акаунт" -proxyAccountDescription: "Обліковий запис проксі – це обліковий запис, який діє як віддалений підписник для користувачів за певних умов. Наприклад, коли користувач додає віддаленого користувача до списку, активність віддаленого користувача не буде доставлена на сервер, якщо жоден локальний користувач не стежить за цим користувачем, то замість нього буде використовуватися обліковий запис проксі-сервера." +proxyAccount: "Обліковий запис проксі" +proxyAccountDescription: "Обліковий запис проксі – це обліковий запис, який діє як + віддалений підписник для користувачів за певних умов. Наприклад, коли користувач + додає віддаленого користувача до списку, активність віддаленого користувача не буде + доставлена на сервер, якщо жоден локальний користувач не стежить за цим користувачем, + то замість нього буде використовуватися обліковий запис проксі-сервера." host: "Хост" selectUser: "Виберіть користувача" recipient: "Отримувач" annotation: "Коментарі" federation: "Федіверс" -instances: "Інстанс" +instances: "Сервери" registeredAt: "Приєднався(лась)" latestRequestSentAt: "Останній запит надіслано" latestRequestReceivedAt: "Останній запит прийнято" @@ -172,7 +189,7 @@ charts: "Графіки" perHour: "Щогодинно" perDay: "Щоденно" stopActivityDelivery: "Припинити розсилання активності" -blockThisInstance: "Заблокувати цей інстанс" +blockThisInstance: "Заблокувати цей сервер" operations: "Операції" software: "Програмне забезпечення" version: "Версія" @@ -182,23 +199,25 @@ jobQueue: "Черга завдань" cpuAndMemory: "ЦП та пам'ять" network: "Мережа" disk: "Диск" -instanceInfo: "Про цей інстанс" +instanceInfo: "Про цей сервер" statistics: "Статистика" clearQueue: "Очистити чергу" clearQueueConfirmTitle: "Ви впевнені, що хочете очистити чергу?" -clearQueueConfirmText: "Будь-які невідправлені нотатки, що залишилися в черзі, не будуть передані. Зазвичай ця операція НЕ потрібна." +clearQueueConfirmText: "Будь-які невідправлені записи, що залишилися в черзі, не будуть + передані. Зазвичай ця операція НЕ потрібна." clearCachedFiles: "Очистити кеш" clearCachedFilesConfirm: "Ви впевнені, що хочете видалити всі кешовані файли?" -blockedInstances: "Заблоковані інстанси" -blockedInstancesDescription: "Вкажіть інстанси, які потрібно заблокувати. Перелічені інстанси більше не зможуть спілкуватися з цим інстансом." +blockedInstances: "Заблоковані сервери" +blockedInstancesDescription: "Вкажіть сервери, які потрібно заблокувати. Перелічені + сервери більше не зможуть спілкуватися з цим сервером." muteAndBlock: "Заглушення і блокування" mutedUsers: "Заглушені користувачі" blockedUsers: "Заблоковані користувачі" noUsers: "Немає користувачів" editProfile: "Редагувати обліковий запис" noteDeleteConfirm: "Ви дійсно хочете видалити цей запис?" -pinLimitExceeded: "Більше записів не можна закріпити" -intro: "Встановлення Calckey завершено! Будь ласка, створіть обліковий запис адміністратора." +pinLimitExceeded: "Ви не можете закріпити більше записів" +intro: "Встановлення Firefish завершено! Будь ласка, створіть обліковий запис адміністратора." done: "Готово" processing: "Обробка" preview: "Попередній перегляд" @@ -212,9 +231,9 @@ all: "Всі" subscribing: "Підписка" publishing: "Публікація" notResponding: "Не відповідає" -instanceFollowing: "Підписка на інстанс" -instanceFollowers: "Підписники інстансу" -instanceUsers: "Користувачі цього інстансу" +instanceFollowing: "Підписка на сервер" +instanceFollowers: "Підписники серверу" +instanceUsers: "Користувачі цього серверу" changePassword: "Змінити пароль" security: "Безпека" retypedNotMatch: "Введені дані не збігаються." @@ -238,7 +257,8 @@ saved: "Збережено" messaging: "Чати" upload: "Завантажити" keepOriginalUploading: "Зберегти оригінальне зображення" -keepOriginalUploadingDescription: "Зберігає початково завантажене зображення як є. Якщо вимкнено, версія для відображення в Інтернеті буде створена під час завантаження." +keepOriginalUploadingDescription: "Зберігає початково завантажене зображення як є. + Якщо вимкнено, версія для відображення в Інтернеті буде створена під час завантаження." fromDrive: "З диска" fromUrl: "З посилання" uploadFromUrl: "Завантажити з посилання" @@ -285,10 +305,10 @@ emptyDrive: "Диск порожній" emptyFolder: "Тека порожня" unableToDelete: "Видалення неможливе" inputNewFileName: "Введіть ім'я нового файлу" -inputNewDescription: "Введіть новий заголовок" +inputNewDescription: "Введіть новий опис" inputNewFolderName: "Введіть ім'я нової теки" circularReferenceFolder: "Ви намагаєтесь перемістити папку в її підпапку." -hasChildFilesOrFolders: "Ця тека не порожня і не може бути видалена" +hasChildFilesOrFolders: "Ця тека не порожня і не може бути видалена." copyUrl: "Копіювати URL" rename: "Перейменувати" avatar: "Аватар" @@ -304,8 +324,8 @@ unwatch: "Не стежити" accept: "Прийняти" reject: "Відхилити" normal: "Нормальний" -instanceName: "Назва інстансу" -instanceDescription: "Описання інстансу" +instanceName: "Назва серверу" +instanceDescription: "Опис серверу" maintainerName: "Ім'я адміністратора" maintainerEmail: "Email адміністратора" tosUrl: "URL умов використання" @@ -316,12 +336,13 @@ dayX: "{day}" monthX: "{month}" yearX: "{year}" pages: "Сторінки" -integration: "Інтеграція" +integration: "Інтеграції" connectService: "Під’єднати" disconnectService: "Відключитися" enableLocalTimeline: "Увімкнути локальну стрічку" enableGlobalTimeline: "Увімкнути глобальну стрічку" -disablingTimelinesInfo: "Адміністратори та модератори завжди мають доступ до всіх стрічок, навіть якщо вони вимкнуті." +disablingTimelinesInfo: "Адміністратори та модератори завжди мають доступ до всіх + стрічок, навіть якщо вони вимкнуті." registration: "Реєстрація" enableRegistration: "Дозволити реєстрацію" invite: "Запросити" @@ -333,12 +354,14 @@ bannerUrl: "URL банера" backgroundImageUrl: "URL-адреса фонового зображення" basicInfo: "Основна інформація" pinnedUsers: "Закріплені користувачі" -pinnedUsersDescription: "Впишіть в список користувачів, яких хочете закріпити на сторінці \"Знайти\", ім'я в стовпчик." +pinnedUsersDescription: "Впишіть в список користувачів, яких хочете закріпити на сторінці + \"Знайти\", ім'я в стовпчик." pinnedPages: "Закріплені сторінки" -pinnedPagesDescription: "Введіть шляхи сторінок, які ви бажаєте закріпити на головній сторінці цього інстанса, розділені новими рядками." -pinnedClipId: "Ідентифікатор закріпленої замітки." -pinnedNotes: "Закріплена нотатка" -hcaptcha: "hCaptcha" +pinnedPagesDescription: "Введіть шляхи сторінок, які ви бажаєте закріпити на головній + сторінці цього сервера, розділені новими рядками." +pinnedClipId: "Ідентифікатор закріпленої замітки" +pinnedNotes: "Закріплений запис" +hcaptcha: "Перевірка з використанням hCaptcha" enableHcaptcha: "Увімкнути hCaptcha" hcaptchaSiteKey: "Ключ сайту" hcaptchaSecretKey: "Секретний ключ" @@ -346,22 +369,25 @@ recaptcha: "reCAPTCHA" enableRecaptcha: "Увімкнути reCAPTCHA" recaptchaSiteKey: "Ключ сайту" recaptchaSecretKey: "Секретний ключ" -avoidMultiCaptchaConfirm: "Використання кількох систем Captcha може спричинити перешкоди між ними. Бажаєте вимкнути інші активні системи Captcha? Якщо ви хочете, щоб вони залишалися ввімкненими, натисніть «Скасувати»." +avoidMultiCaptchaConfirm: "Використання кількох систем Captcha може спричинити перешкоди + між ними. Бажаєте вимкнути інші активні системи Captcha? Якщо ви хочете, щоб вони + залишалися ввімкненими, натисніть «Скасувати»." antennas: "Антени" manageAntennas: "Налаштування антен" name: "Ім'я" antennaSource: "Джерело антени" antennaKeywords: "Ключові слова антени" antennaExcludeKeywords: "Винятки" -antennaKeywordsDescription: "Розділення ключових слів пробілами для \"І\" або з нової лінійки для \"АБО\"" -notifyAntenna: "Сповіщати про нові нотатки" -withFileAntenna: "Тільки нотатки з вкладеними файлами" +antennaKeywordsDescription: "Відокремте пробілами для умови \"І\" або перенесенням + до нового рядка для умови \"АБО\"." +notifyAntenna: "Сповіщати про нові записи" +withFileAntenna: "Тільки записи з вкладеними файлами" enableServiceworker: "Ввімкнути ServiceWorker" antennaUsersDescription: "Список імя користувачів в стопчик" caseSensitive: "З урахуванням регістру" withReplies: "Включаючи відповіді" connectedTo: "Наступні акаунти під'єднані" -notesAndReplies: "Нотатки та відповіді" +notesAndReplies: "Записи та відповіді" withFiles: "Файли" silence: "Заглушити" silenceConfirm: "Ви впевнені, що хочете заглушити цього користувача?" @@ -372,11 +398,11 @@ recentlyUpdatedUsers: "Нещодавно активні користувачі" recentlyRegisteredUsers: "Нещодавно зареєстровані користувачі" recentlyDiscoveredUsers: "Нещодавно знайдені користувачі" exploreUsersCount: "{count} користувачів" -exploreFediverse: "Огляд федіверсу" +exploreFediverse: "Досліджуйте Fediverse" popularTags: "Популярні теги" userList: "Списки" about: "Інформація" -aboutMisskey: "Про Calckey" +aboutFirefish: "Про Firefish" administrator: "Адмін" token: "Токен" twoStepAuthentication: "Двохфакторна аутентифікація" @@ -397,7 +423,7 @@ notFoundDescription: "Сторінка за вказаною адресою не uploadFolder: "Місце для завантаження за замовчуванням" cacheClear: "Очистити кеш" markAsReadAllNotifications: "Позначити всі сповіщення як прочитані" -markAsReadAllUnreadNotes: "Позначити всі нотатки як прочитані" +markAsReadAllUnreadNotes: "Позначити всі записи як прочитані" markAsReadAllTalkMessages: "Позначити всі повідомлення як прочитані" help: "Допомога" inputMessageHere: "Введіть повідомлення тут" @@ -418,7 +444,7 @@ text: "Текст" enable: "Увімкнути" next: "Далі" retype: "Введіть ще раз" -noteOf: "Нотатка {user}" +noteOf: "Запис {user}" inviteToGroup: "Запрошення до групи" quoteAttached: "Цитата" quoteQuestion: "Ви хочете додати цитату?" @@ -431,7 +457,8 @@ invitationCode: "Код запрошення" checking: "Перевірка…" available: "Доступно" unavailable: "Недоступно" -usernameInvalidFormat: "літери, цифри та _ є прийнятними" +usernameInvalidFormat: "Ви можете використовувати великі та малі літери, цифри та + підкреслення." tooShort: "Занадто короткий" tooLong: "Занадто довгий" weakPassword: "Слабкий пароль" @@ -454,7 +481,7 @@ joinOrCreateGroup: "Отримуйте запрошення до груп або noHistory: "Історія порожня" signinHistory: "Історія входів" disableAnimatedMfm: "Відключити анімації MFM" -doing: "Виконується" +doing: "Виконується..." category: "Категорія" tags: "Теги" docSource: "Джерело цього документа" @@ -476,29 +503,36 @@ accountSettings: "Налаштування акаунта" promotion: "Виділене" promote: "Виділити" numberOfDays: "Кількість днів" -hideThisNote: "Сховати цю нотатку" -showFeaturedNotesInTimeline: "Показувати популярні нотатки у стрічці" -objectStorage: "Object Storage" +hideThisNote: "Сховати цей запис" +showFeaturedNotesInTimeline: "Показувати популярні записи у стрічці" +objectStorage: "Сховище" useObjectStorage: "Використовувати object storage" -objectStorageBaseUrl: "Base URL" -objectStorageBaseUrlDesc: "Це початкова частина адреси, що використовується CDN або проксі, наприклад для S3: https://.s3.amazonaws.com, або GCS: 'https://storage.googleapis.com/'" -objectStorageBucket: "Bucket" +objectStorageBaseUrl: "Базовий URL" +objectStorageBaseUrlDesc: "URL-адреса, що використовується як джерело. Вкажіть URL-адресу + вашого CDN або проксі-сервера, якщо ви їх використовуєте.\nДля S3 використовуйте + 'https://.s3.amazonaws.com', а для GCS або подібних сервісів - 'https://storage.googleapis.com/', + тощо." +objectStorageBucket: "Сховище (Bucket)" objectStorageBucketDesc: "Будь ласка вкажіть назву відра в налаштованому сервісі." objectStoragePrefix: "Prefix" objectStoragePrefixDesc: "Файли будуть зберігатись у розташуванні з цим префіксом." -objectStorageEndpoint: "Endpoint" -objectStorageEndpointDesc: "Залиште пустим при використанні AWS S3. Інакше введіть кінцевий пункт як '' або ':' слідуючи інструкціям сервісу, який використовується." +objectStorageEndpoint: "Кінцевий пункт" +objectStorageEndpointDesc: "Залиште пустим при використанні AWS S3. Інакше введіть + кінцевий пункт як '' або ':' слідуючи інструкціям сервісу, який + використовується." objectStorageRegion: "Region" -objectStorageRegionDesc: "Введіть регіон у формі 'xx-east-1'. Залиште пустим, якщо ваш сервіс не різниться відповідно до регіонів, або введіть 'us-east-1'." +objectStorageRegionDesc: "Введіть регіон у формі 'xx-east-1'. Залиште пустим, якщо + ваш сервіс не різниться відповідно до регіонів, або введіть 'us-east-1'." objectStorageUseSSL: "Використовувати SSL" objectStorageUseSSLDesc: "Вимкніть коли не використовується HTTPS для з'єднання API" objectStorageUseProxy: "Використовувати Proxy" -objectStorageUseProxyDesc: "Вимкніть коли проксі не використовується для з'єднання ObjectStorage" +objectStorageUseProxyDesc: "Вимкніть коли проксі не використовується для з'єднання + ObjectStorage" objectStorageSetPublicRead: "Встановіть 'публічне читання' при завантаженні" serverLogs: "Журнал сервера" deleteAll: "Видалити все" -showFixedPostForm: "Показати форму запису над стрічкою новин." -newNoteRecived: "Є нові нотатки" +showFixedPostForm: "Показати форму запису над стрічкою новин" +newNoteRecived: "Є нові записи" sounds: "Звуки" listen: "Слухати" none: "Відсутній" @@ -521,7 +555,8 @@ sort: "Сортування" ascendingOrder: "За зростанням" descendingOrder: "За спаданням" scratchpad: "Чернетка" -scratchpadDescription: "Scratchpad надає середовище для експериментів з AiScript. Ви можете писати, виконувати його і тестувати взаємодію з Calckey." +scratchpadDescription: "Scratchpad надає середовище для експериментів з AiScript. + Ви можете писати, виконувати його і тестувати взаємодію з Firefish." output: "Вихід" script: "Скрипт" disablePagesScript: "Вимкнути AiScript на Сторінках" @@ -529,21 +564,24 @@ updateRemoteUser: "Оновити інформацію про віддалено deleteAllFiles: "Видалити всі файли" deleteAllFilesConfirm: "Ви дійсно хочете видалити всі файли?" removeAllFollowing: "Скасувати всі підписки" -removeAllFollowingDescription: "Скасувати підписку на всі акаунти з {host}. Будь ласка, робіть це, якщо інстанс більше не існує." +removeAllFollowingDescription: "Скасувати підписку на всі акаунти з {host}. Будь ласка, + робіть це, якщо сервер більше не існує." userSuspended: "Обліковий запис заблокований." userSilenced: "Обліковий запис приглушений." yourAccountSuspendedTitle: "Цей обліковий запис заблоковано" -yourAccountSuspendedDescription: "Цей обліковий запис було заблоковано через порушення умов надання послуг сервера. Зв'яжіться з адміністратором, якщо ви хочете дізнатися докладнішу причину. Будь ласка, не створюйте новий обліковий запис." +yourAccountSuspendedDescription: "Цей обліковий запис було заблоковано через порушення + умов надання послуг сервера. Зв'яжіться з адміністратором, якщо ви хочете дізнатися + докладнішу причину. Будь ласка, не створюйте новий обліковий запис." menu: "Меню" divider: "Розділювач" addItem: "Додати елемент" relays: "Ретранслятори" addRelay: "Додати ретранслятор" -inboxUrl: "Inbox URL" +inboxUrl: "URL скриньки вхідних повідомлень" addedRelays: "Додані ретранслятори" serviceworkerInfo: "Повинен бути ввімкнений для push-сповіщень." -deletedNote: "Видалена нотатка" -invisibleNote: "Приховані записи" +deletedNote: "Видалений запис" +invisibleNote: "Прихований запис" enableInfiniteScroll: "Увімкнути нескінченну прокрутку" visibility: "Видимість" poll: "Опитування" @@ -553,8 +591,8 @@ disablePlayer: "Закрити відеоплеєр" expandTweet: "Розгорнути твіт" themeEditor: "Редактор тем" description: "Опис" -describeFile: "Додати підпис" -enterFileDescription: "Введіть підпис" +describeFile: "Додати опис" +enterFileDescription: "Введіть опис" author: "Автор" leaveConfirm: "Зміни не збережені. Ви дійсно хочете скасувати зміни?" manage: "Управління" @@ -573,12 +611,14 @@ permission: "Права" enableAll: "Увімкнути все" disableAll: "Вимкнути все" tokenRequested: "Надати доступ до акаунту" -pluginTokenRequestedDescription: "Цей плагін зможе використовувати дозволи які тут вказані." +pluginTokenRequestedDescription: "Цей плагін зможе використовувати дозволи які тут + вказані." notificationType: "Тип сповіщення" edit: "Редагувати" emailServer: "Сервер електронної пошти" enableEmail: "Увімкнути функцію доставки пошти" -emailConfigInfo: "Використовується для підтвердження електронної пошти підчас реєстрації, а також для відновлення паролю." +emailConfigInfo: "Використовується для підтвердження електронної пошти під час реєстрації, + а також для відновлення паролю" email: "E-mail" emailAddress: "E-mail адреса" smtpConfig: "Налаштування сервера SMTP" @@ -586,14 +626,16 @@ smtpHost: "Хост" smtpPort: "Порт" smtpUser: "Ім'я користувача" smtpPass: "Пароль" -emptyToDisableSmtpAuth: "Залиште назву користувача і пароль пустими для вимкнення підтвердження SMTP" +emptyToDisableSmtpAuth: "Залиште назву користувача і пароль пустими для вимкнення + підтвердження SMTP" smtpSecure: "Використовувати безумовне шифрування SSL/TLS для з'єднань SMTP" -smtpSecureInfo: "Вимкніть при використанні STARTTLS " +smtpSecureInfo: "Вимкніть при використанні STARTTLS" testEmail: "Тестовий email" wordMute: "Блокування слів" regexpError: "Помилка регулярного виразу" -regexpErrorDescription: "Сталася помилка в регулярному виразі в рядку {line} вашого слова {tab} слова що ігноруються:" -instanceMute: "Приглушення інстансів" +regexpErrorDescription: "Сталася помилка в регулярному виразі в рядку {line} вашого + слова {tab} слова що ігноруються:" +instanceMute: "Приглушення серверів" userSaysSomething: "{name} щось сказав(ла)" makeActive: "Активувати" display: "Відображення" @@ -606,12 +648,15 @@ database: "База даних" channel: "Канали" create: "Створити" notificationSetting: "Параметри сповіщень" -notificationSettingDesc: "Виберіть типи сповіщень для відображення" +notificationSettingDesc: "Оберіть типи сповіщень для відображення." useGlobalSetting: "Застосувати глобальнi параметри" -useGlobalSettingDesc: "Якщо увімкнено, то будуть використовуватись налаштування повідомлень облікового запису, інакше можливо налаштувати індивідуально." +useGlobalSettingDesc: "Якщо увімкнено, то будуть використовуватись налаштування повідомлень + облікового запису, інакше можливо налаштувати індивідуально." other: "Інше" regenerateLoginToken: "Оновити Login Token" -regenerateLoginTokenDescription: "Регенерувати внутрішній ключ використовуваний під час входу. Зазвичай цього не потрібно робити. При регенерації всі пристрої вийдуть з системи." +regenerateLoginTokenDescription: "Регенерувати внутрішній ключ використовуваний під + час входу. Зазвичай цього не потрібно робити. При регенерації всі пристрої вийдуть + з системи." setMultipleBySeparatingWithSpace: "Можна вказати кілька значень, відділивши їх пробілом." fileIdOrUrl: "Ідентифікатор файлу або посилання" behavior: "Поведінка" @@ -619,34 +664,38 @@ sample: "Приклад" abuseReports: "Скарги" reportAbuse: "Поскаржитись" reportAbuseOf: "Поскаржитись на {name}" -fillAbuseReportDescription: "Будь ласка вкажіть подробиці скарги. Якщо скарга стосується запису, вкажіть посилання на нього." -abuseReported: "Дякуємо, вашу скаргу було відправлено. " +fillAbuseReportDescription: "Будь ласка вкажіть подробиці скарги. Якщо скарга стосується + запису, вкажіть посилання на нього." +abuseReported: "Дякуємо. Ваш звіт було відправлено." reporter: "Репортер" reporteeOrigin: "Про кого повідомлено" reporterOrigin: "Хто повідомив" -forwardReport: "Переслати звіт на віддалений інстанс" -forwardReportIsAnonymous: "Замість вашого облікового запису анонімний системний обліковий запис буде відображатися як доповідач на віддаленому інстансі" +forwardReport: "Переслати звіт на віддалений сервер" +forwardReportIsAnonymous: "Замість вашого облікового запису, анонімний системний обліковий + запис буде відображатися як доповідач на віддаленому сервері." send: "Відправити" abuseMarkAsResolved: "Позначити скаргу як вирішену" openInNewTab: "Відкрити в новій вкладці" openInSideView: "Відкрити збоку" defaultNavigationBehaviour: "Поведінка навігації за замовчуванням" -editTheseSettingsMayBreakAccount: "Зміна цих параметрів може призвести до пошкодження вашого акаунта." -instanceTicker: "Мітка з назвою інстанса в нотатках" +editTheseSettingsMayBreakAccount: "Зміна цих параметрів може призвести до пошкодження + вашого акаунта." +instanceTicker: "Інформація про записи на сервері" waitingFor: "Чекаємо на {x}" random: "Випадковий" system: "Система" switchUi: "Інтерфейс" desktop: "Десктоп" -clip: "Добірка" +clip: "Підбірка" createNew: "Створити новий" optional: "Необов'язково" -createNewClip: "Створити нотатку" +createNewClip: "Створити підбірку" public: "Публічний" -i18nInfo: "Calckey перекладається на різні мови волонтерами. Ви можете допомогти: {link}" +i18nInfo: "Firefish перекладається на різні мови волонтерами. Ви можете допомогти + за посиланням: {link}." manageAccessTokens: "Керування токенами доступу" accountInfo: "Інформація про акаунт" -notesCount: "Кількість нотаток" +notesCount: "Кількість записів" repliesCount: "Кількість надісланих відповідей" renotesCount: "Кількість поширень" repliedCount: "Кількість отриманих відповідей" @@ -662,15 +711,19 @@ no: "Ні" driveFilesCount: "Кількість файлів на диску" driveUsage: "Використання місця на диску" noCrawle: "Заборонити індексацію" -noCrawleDescription: "Просити пошукові системи не індексувати ваш профіль, нотатки, сторінки тощо." -lockedAccountInfo: "Якщо видимість вашого запису не встановлена як \"Тільки підписники\", то кожен зможе побачити ваш запис, навіть якщо ви вимагаєте підтвердження підписок вручну." -alwaysMarkSensitive: "Позначати NSFW за замовчуванням" +noCrawleDescription: "Просити пошукові системи не індексувати ваш профіль, записи, + сторінки тощо." +lockedAccountInfo: "Якщо видимість вашого запису не встановлена як \"Тільки підписники\"\ + , то кожен зможе побачити ваш запис, навіть якщо ви вимагаєте підтвердження підписок + вручну." +alwaysMarkSensitive: "Позначати як NSFW за замовчуванням" loadRawImages: "Відображати вкладені зображення повністю замість ескізів" disableShowingAnimatedImages: "Не програвати анімовані зображення" -verificationEmailSent: "Електронний лист з підтвердженням відісланий. Будь ласка перейдіть по посиланню в листі для підтвердження." +verificationEmailSent: "Електронний лист з підтвердженням відісланий. Будь ласка перейдіть + по посиланню в листі для підтвердження." notSet: "Не налаштовано" -emailVerified: "Електронну пошту підтверджено." -noteFavoritesCount: "Кількість улюблених нотаток" +emailVerified: "Електронну пошту підтверджено" +noteFavoritesCount: "Кількість улюблених записів" pageLikesCount: "Кількість отриманих вподобань сторінки" pageLikedCount: "Кількість вподобаних сторінок" contact: "Контакт" @@ -679,7 +732,8 @@ clips: "Добірка" experimentalFeatures: "Експериментальні функції" developer: "Розробник" makeExplorable: "Зробіть обліковий запис видимим у розділі \"Огляд\"" -makeExplorableDescription: "Вимкніть, щоб обліковий запис не показувався у розділі \"Огляд\"." +makeExplorableDescription: "Вимкніть, щоб обліковий запис не показувався у розділі + \"Огляд\"." showGapBetweenNotesInTimeline: "Показувати розрив між записами у стрічці новин" duplicate: "Дублікат" left: "Лівий" @@ -694,7 +748,10 @@ onlineUsersCount: "{n} користувачів онлайн" nUsers: "{n} Користувачів" nNotes: "{n} Записів" sendErrorReports: "Надіслати звіт про помилки" -sendErrorReportsDescription: "При увімкненні детальна інформація про помилки буде надана Calckey у разі виникнення проблем, що дасть можливість покращити Calckey." +sendErrorReportsDescription: "Якщо увімкнено, детальна інформація про помилки буде + передаватися до Firefish, коли виникає проблема, це допоможе покращити якість роботи + Firefish.\nЦе буде включати інформацію таку як: версія вашої ОС, який браузер ви + використовуєте, ваша активність в Firefish тощо." myTheme: "Моя тема" backgroundColor: "Фон" accentColor: "Акцент" @@ -718,96 +775,119 @@ capacity: "Ємність" inUse: "Зайнято" editCode: "Редагувати вихідний текст" apply: "Застосувати" -receiveAnnouncementFromInstance: "Отримувати оповіщення з інстансу" +receiveAnnouncementFromInstance: "Отримувати сповіщення з серверу" emailNotification: "Сповіщення електронною поштою" publish: "Опублікувати" inChannelSearch: "Пошук за каналом" useReactionPickerForContextMenu: "Відкривати палітру реакцій правою кнопкою" -typingUsers: "Стук клавіш. Це {users}…" +typingUsers: "{users} пише" goBack: "Назад" info: "Інформація" -user: "Користувачі" +user: "Користувач" administration: "Управління" expiration: "Опитування закінчується" middle: "Середній" global: "Глобальна" -sent: "Відправити" +sent: "Відправлене" hashtags: "Хештеґ" hide: "Сховати" searchByGoogle: "Пошук" indefinitely: "Ніколи" file: "Файли" -reverse: "Перевернути" +reverse: "Переворот" colored: "Кольоровий" label: "Назва" localOnly: "Локально" _ffVisibility: public: "Опублікувати" + private: Приватні + followers: Доступно тільки для підписників _ad: back: "Назад" + reduceFrequencyOfThisAd: Менше показувати цю рекламу _gallery: - unlike: "Не вподобати" + unlike: "Видалити вподобайку" + liked: Вподобані записи + like: Подобається + my: Моя галерея _email: _follow: title: "Новий підписник" + _receiveFollowRequest: + title: Ви отримали запит на підписку _registry: key: "Ключ" keys: "Ключі" domain: "Домен" createKey: "Створити ключ" -_aboutMisskey: - about: "Misskey - це програмне забезпечення з відкритим кодом, яке розробляє syuilo з 2014 року." + scope: Область +_aboutFirefish: + about: "Firefish - це форк Misskey з відкритим кодом, яке розробляє ThatOneCalculator + з 2022 року." contributors: "Головні помічники" allContributors: "Всі помічники" source: "Вихідний код" - translation: "Перекладати Calckey" - donate: "Пожертвувати Calckey" - morePatrons: "Ми дуже цінуємо підтримку багатьох інших помічників, не перелічених тут. Дякуємо! 🥰" + translation: "Перекладати Firefish" + donate: "Пожертвувати Firefish" + morePatrons: "Ми дуже цінуємо підтримку багатьох інших помічників, не перелічених + тут. Дякуємо! 🥰" patrons: "Підтримали" + patronsList: Перераховані в хронологічному порядку, а не за розміром пожертви. Зробіть + внесок за посиланням вище, щоб ваше ім'я було тут! + donateTitle: Сподобався Firefish? + pleaseDonateToFirefish: Будь ласка, підтримайте розробку Firefish. + pleaseDonateToHost: Також не забудьте підтримати ваш домашній сервер {host}, щоб + допомогти з його операційними витратами. + donateHost: Зробити внесок на рахунок {host} + sponsors: Спонсори Firefish + misskeyContributors: Контрибутори Misskey _nsfw: respect: "Приховувати NSFW медіа" ignore: "Не приховувати NSFW медіа" force: "Приховувати всі медіа файли" _mfm: - cheatSheet: " Довідка MFM" - intro: "MFM це ексклюзивна мова розмітки тексту в Calckey, яку можна використовувати в багатьох місцях. Тут ви можете переглянути приклади її синтаксису." - dummy: "Calckey розширює світ Федіверсу" + cheatSheet: "Довідка MFM" + intro: "MFM це ексклюзивна мова розмітки тексту в Firefish, яку можна використовувати + в багатьох місцях. Тут ви можете переглянути приклади її синтаксису." + dummy: "Firefish розширює світ Федіверсу" mention: "Згадка" - mentionDescription: "За допомогою знака \"@\" перед ім'ям можна згадати конкретного користувача." + mentionDescription: "За допомогою знака \"@\" перед ім'ям можна згадати конкретного + користувача." hashtag: "Хештеґ" hashtagDescription: "За допомогою знака \"решітка\" перед словом задається хештег." url: "URL" urlDescription: "Відображаються URL-адреси." link: "Посилання" - linkDescription: "Окремі частини тексту можуть містити посилання" + linkDescription: "Окремі частини тексту можуть містити посилання." bold: "Жирний шрифт" - boldDescription: "Виділяє літери, роблячи їх товще" + boldDescription: "Виділяє літери, роблячи їх товщими." small: "Дрібний шрифт" - smallDescription: "Робить текст маленьким і тонким" + smallDescription: "Робить текст маленьким і тонким." center: "По центру" - centerDescription: "Показує вміст у центрі" + centerDescription: "Показує вміст у центрі." inlineCode: "Код (у рядку)" - inlineCodeDescription: "Показує фрагмент тексту у рядку як програмний код" + inlineCodeDescription: "Відображає підсвічування синтаксису для коду (програми)." blockCode: "Код (блок)" - blockCodeDescription: "Показує кілька рядків тексту як блок програмного кода" + blockCodeDescription: "Відображає підсвічування синтаксису для багаторядкового (програмного) + коду в блоці." inlineMath: "Формула (у рядку)" inlineMathDescription: "Відображення математичних формул (KaTeX) у рядку" blockMath: "Формули (блок)" - blockMathDescription: "Відображати багаторядкові формули (KaTeX) блоками" + blockMathDescription: "Відображати математичні формули (KaTeX) блоками" quote: "Цитата" quoteDescription: "Відображає зміст як цитату." emoji: "Кастомні емоджі" emojiDescription: "Щоб показати нетиповий емоджі, потрібно ввести його назву в двокрапках." search: "Пошук" - searchDescription: "Відображає вікно пошуку з попередньо введеним текстом" + searchDescription: "Відображає вікно пошуку з попередньо введеним текстом." flip: "Перевернути" - flipDescription: "Віддзеркалює вміст по горизонталі або вертикалі" + flipDescription: "Віддзеркалює вміст по горизонталі або вертикалі." jelly: "Анімація (желе)" - jellyDescription: "Створює желеподібну анімацію" + jellyDescription: "Створює желеподібну анімацію." tada: "Анімація (Тада!)" - tadaDescription: "Створює анімацію з відчуттям \"Тада!\"" + tadaDescription: "Створює анімацію з відчуттям \"Тада!\"." jump: "Анімація (стрибки)" - jumpDescription: "Показує стрибаючу анімацію" + jumpDescription: "Надає вмісту стрибучу анімацію." bounce: "Анімація (пружина)" shake: "Анімація (Shake)" twitch: "Анімація (Twitch)" @@ -819,10 +899,41 @@ _mfm: x4: "Надзвичайно великий" x4Description: "Показує контент надзвичайно великим." blur: "Розмиття" - blurDescription: "Цей ефект зробить контент розмитим. Контент можна зробити чітким, якщо навести на нього вказівник миші." + blurDescription: "Цей ефект зробить контент розмитим. Контент можна зробити чітким, + якщо навести на нього вказівник миші." font: "Шрифт" fontDescription: "Встановлює шрифт для контенту." rotate: "Обертати" + play: Відтворити MFM + alwaysPlay: Завжди автозапускати всі анімовані MFM + twitchDescription: Надає контенту анімацію, що сильно сіпається. + spinDescription: Надає контенту анімацію обертання. + sparkle: Блиск + sparkleDescription: Надає вмісту ефект мерехтливого блиску. + fade: Згасання + fadeDescription: Зменшує та збільшує видимість контенту. + crop: Обрізати + cropDescription: Обрізати вміст. + scale: Масштабувати + positionDescription: Перемістити вміст на вказане значення. + scaleDescription: Масштабувати вміст на вказану величину. + background: Колір фону + foreground: Колір переднього плану + foregroundDescription: Змінити колір тексту на передньому плані. + bounceDescription: Надає контенту пружної анімації. + shakeDescription: Надає контенту тремтливої анімації. + rainbowDescription: Робить вміст веселковим. + rotateDescription: Повертає вміст на вказаний кут. + advancedDescription: Якщо вимкнено, дозволяє лише базову розмітку, якщо не відтворюється + анімований MFM + plainDescription: Вимикає ефекти всіх MFM, що містяться в цьому MFM-ефекті. + stop: Зупинити MFM + plain: Звичайний текст + advanced: Розширені MFM + warn: MFM може містити швидко-рухому або яскраву анімацію + position: Розташування + rainbow: Веселка + backgroundDescription: Змінити колір фону тексту. _instanceTicker: none: "Не відображати" remote: "Відображати для віддалених користувачів" @@ -831,6 +942,7 @@ _serverDisconnectedBehavior: reload: "Автоматично перезавантажити" dialog: "Показати діалогове вікно" quiet: "Показати ненав’язливе попередження" + nothing: Нічого не робити _channel: create: "Створити канал" edit: "Редагувати канал" @@ -839,18 +951,27 @@ _channel: featured: "Тренди" following: "Підписки" usersCount: "{n} учасників" - notesCount: "{n} дописів" + notesCount: "{n} записів" + nameOnly: Тільки назва + nameAndDescription: Назва та опис + owned: Власні _menuDisplay: hide: "Сховати" + sideFull: Збоку + sideIcon: Збоку (тільки іконки) + top: Верх _wordMute: muteWords: "Заглушені слова" - muteWordsDescription: "Розділення ключових слів пробілами для \"І\" або з нової лінійки для \"АБО\"" - muteWordsDescription2: "Для використання RegEx, ключові слова потрібно вписати поміж слешів \"/\"." - softDescription: "Приховати записи які відповідають критеріям зі стрічки подій." - hardDescription: "Приховати записи які відповідають критеріям зі стрічки подій. Також приховані записи не будуть додані до стрічки подій навіть якщо критерії буде змінено." + muteWordsDescription: "Відокремліть ключові слова пробілами для умови \"І\" або + з нового рядку для умови \"АБО\"." + muteWordsDescription2: "Для використання RegEx, ключові слова потрібно вписати поміж + слешів \"/\"." + softDescription: "Приховати записи які відповідають критеріям зі стрічки." + hardDescription: "Приховати записи які відповідають критеріям зі стрічки подій. + Також приховані записи не будуть додані до стрічки навіть якщо критерії буде змінено." soft: "М'яко" hard: "Жорстко" - mutedNotes: "Заблоковані нотатки" + mutedNotes: "Ігноровані записи" _theme: explore: "Оглянути теми" install: "Встановити тему" @@ -914,9 +1035,20 @@ _theme: accentDarken: "Акцент (Затемлений)" accentLighten: "Акцент (Освітлений)" fgHighlighted: "Виділений текст" + color: Колір + refProp: Посилання на властивість + alpha: Прозорість + constant: Стала + refConst: Посилання на сталу + key: Ключ + funcKind: Тип функції + darken: Затемнення + argument: Аргумент + basedProp: Початкова властивість + addConstant: Додати сталу _sfx: - note: "Нотатки" - noteMy: "Мої нотатки" + note: "Новий запис" + noteMy: "Мої записи" notification: "Сповіщення" chat: "Чати" chatBg: "Чати (фон)" @@ -926,7 +1058,7 @@ _ago: future: "Майбутнє" justNow: "Щойно" secondsAgo: "{n}с тому" - minutesAgo: "{n}х тому" + minutesAgo: "{n}хв тому" hoursAgo: "{n}г тому" daysAgo: "{n}д тому" weeksAgo: "{n} тиж. тому" @@ -938,28 +1070,69 @@ _time: hour: "г" day: "д" _tutorial: - title: "Як використовувати Calckey" + title: "Як користуватися Firefish" step1_1: "Ласкаво просимо!" step1_2: "Давайте налаштуємо вас. Ви будете працювати в найкоротші терміни!" - step2_1: "Спочатку, будь ласка, заповніть свій профіль" - step2_2: "Надавши деяку інформацію про себе, іншим людям буде легше зрозуміти, чи хочуть вони бачити ваші записи або стежити за вами." - step3_1: "Тепер настав час стежити за деякими людьми!" - step3_2: "Ваша домашня і соціальна стрічки ґрунтуються на тому, за ким ви стежите, тому для початку спробуйте стежити за кількома акаунтами.\nНатисніть на гурток із плюсом у правому верхньому кутку профілю, щоб стежити за ним." - step4_1: "Давайте вийдемо на вас" - step4_2: "Для свого першого повідомлення деякі люди люблять робити {introduction} повідомлення або просте \"Hello world!\"" - step5_1: "Тимчасові рамки, скрізь тимчасові рамки!" - step5_2: "У вашому екземплярі включені {timelines} різних часових ліній." - step5_3: "Головна {icon} часова шкала - це шкала, де ви можете бачити повідомлення ваших підписників." - step5_4: "Місцева {icon} тимчасова шкала - це шкала, де ви можете бачити повідомлення всіх інших користувачів даного екземпляра" - step5_5: "Тимчасова шкала Рекомендовані {icon} - це шкала, де ви можете бачити повідомлення від інстанцій, рекомендованих адміністраторами." - step5_6: "На часовій шкалі Social {icon} відображаються повідомлення від друзів ваших підписників" - step5_7: "Глобальна {icon} часова шкала - це місце, де ви можете бачити повідомлення від усіх інших підключених екземплярів" + step2_1: "Спочатку, будь ласка, заповніть свій профіль." + step2_2: "Після надання інформації про себе, іншим людям буде легше зрозуміти, чи + хочуть вони бачити ваші записи або стежити за вами." + step3_1: "Тепер настав час на когось підписатися!" + step3_2: "Ваша домашня і соціальна стрічки ґрунтуються на тому, за ким ви стежите, + тому для початку спробуйте стежити за кількома акаунтами.\nНатисніть на гурток + із плюсом у правому верхньому кутку профілю, щоб стежити за ним." + step4_1: "Давайте вийдемо на вас." + step4_2: "Для свого першого повідомлення деякі люди люблять робити {introduction} + повідомлення або просте \"Hello world!\"" + step5_1: "Стрічки, скрізь одні стрічки!" + step5_2: "У вашому сервері включені {timelines} різні стрічки." + step5_3: "Домашня {icon} стрічка - це стрічка, де ви можете бачити записи тих, на + кого ви підписалися." + step5_4: "Місцева {icon} стрічка - це стрічка, де ви можете бачити записи всіх інших + користувачів даного серверу." + step5_5: "Стрічка рекомендованих {icon} - це комбінація домашньої та місцевої стрічок." + step5_6: "На стрічці Рекомендованих {icon} ви можете бачити записи з серверів, які + рекомендують адміністратори." + step5_7: "Глобальна {icon} стрічка - це місце, де ви можете бачити записи від усіх + інших приєднаних серверів." step6_1: "Отже, що це за місце?" - step6_2: "Ну, ви не просто приєдналися до Кальки. Ви приєдналися до порталу в Fediverse, взаємопов'язаної мережі з тисяч серверів, званих \"інстансами\"." - step6_3: "Кожен сервер працює по-своєму, і не на всіх серверах працює Calckey. Але цей працює! Це трохи складно, але ви швидко розберетеся" + step6_2: "Ну, ви не просто приєдналися до Firefish. Ви увійшли до Fediverse, взаємопов'язану + мережу з тисяч серверів." + step6_3: "Кожен сервер працює по-своєму, і не на всіх серверах працює Firefish. + Але цей працює! Це трохи складно, але ви швидко розберетеся." step6_4: "Тепер ідіть, вивчайте і розважайтеся!" _2fa: registerSecurityKey: "Зареєструвати новий ключ безпеки" + registerTOTP: Зареєструйте новий пристрій + tapSecurityKey: Будь ласка, дотримуйтесь інструкцій вашого браузера, щоб зареєструвати + апаратний ключ безпеки або ключ-пароль + securityKeyName: Введіть назву ключа + chromePasskeyNotSupported: Паролі Chrome наразі не підтримуються. + renewTOTPOk: Переналаштувати + removeKey: Видалити ключ безпеки + alreadyRegistered: 2FA вже налаштовано. + step2Click: Натиснувши на цей QR-код, ви зможете зареєструвати 2FA у вашому ключі + безпеки або додатку-автентифікаторі для телефону. + step3Title: Введіть код автентифікації + step1: По-перше, встановіть програму 2FA (наприклад, {a} або {b}) на свій пристрій. + securityKeyNotSupported: Ваш браузер не підтримує ключі безпеки. + step4: Відтепер при наступних спробах входу в систему буде запитуватися такий токен. + securityKeyInfo: Окрім автентифікації за відбитком пальця або PIN-кодом, ви також + можете налаштувати автентифікацію за допомогою апаратних ключів безпеки, які підтримують + FIDO2, щоб додатково захистити свій обліковий запис. + removeKeyConfirm: Дійсно видалити ключ {name}? + whyTOTPOnlyRenew: Додаток автентифікатора не можна видалити, доки зареєстровано + ключ безпеки. + renewTOTP: Переналаштувати додаток-автентифікатор + renewTOTPCancel: Скасувати + renewTOTPConfirm: Це призведе до того, що коди підтвердження з попереднього додатку + перестануть працювати + token: 2FA Токен + registerTOTPBeforeKey: Будь ласка, налаштуйте додаток-автентифікатор, щоб зареєструвати + ключ безпеки або пароль. + step2Url: 'Також, ви можете ввести цю URL-адресу, якщо використовуєте десктопну + програму:' + step3: Введіть токен, наданий вашим додатком, щоб завершити налаштування. + step2: Потім відскануйте QR-код, що відображається на цьому екрані. _permissions: "read:account": "Переглядати дані профілю" "write:account": "Змінити дані акаунту" @@ -975,7 +1148,7 @@ _permissions: "write:messaging": "Створювати та видаляти повідомлення" "read:mutes": "Переглядати список ігнорованих" "write:mutes": "Змінювати список ігнорованих" - "write:notes": "Писати і видаляти нотатки" + "write:notes": "Створення та видалення записів" "read:notifications": "Переглядати сповіщення" "read:reactions": "Переглядати реакції" "write:reactions": "Змінювати реакції" @@ -988,13 +1161,27 @@ _permissions: "write:user-groups": "Змінювати групи користувача" "read:channels": "Переглядати канали" "write:channels": "Змінювати канали" + "read:gallery": Переглянути галерею + "write:gallery": Редагування галереї + "read:gallery-likes": Переглянути список вподобаних записів галереї + "write:notifications": Керування сповіщеннями + "write:gallery-likes": Редагувати список вподобаних записів галереї _auth: shareAccess: "Ви хочете надати \"{name}\" доступ до цього акаунту?" shareAccessAsk: "Ви впевнені, що хочете надати цій програмі доступ до вашого акаунту?" denied: "У доступі відмовлено" + allPermissions: Повний доступ до облікового запису + permissionAsk: 'Цей додаток запитує наступні дозволи:' + copyAsk: 'Будь ласка, вставте наступний код авторизації в додаток:' + pleaseGoBack: Будь ласка, поверніться до додатку + callback: Повернення до додатку _antennaSources: - all: "Всі нотатки" - homeTimeline: "Нотатки тих, на кого ви підписані" + all: "Усі записи" + homeTimeline: "Записи тих, на кого ви підписані" + instances: Записи від усіх користувачів на сервері + userGroup: Записи від користувачів у вказаній групі + users: Записи обраних користувачів + userList: Дописи користувачів із вказаного списку _weekday: sunday: "Неділя" monday: "Понеділок" @@ -1015,20 +1202,30 @@ _widgets: photos: "Фото" digitalClock: "Цифровий годинник" federation: "Федіверс" - postForm: "Створення нотатки" + postForm: "Створення запису" slideshow: "Слайд-шоу" button: "Кнопка" onlineUsers: "Користувачі онлайн" jobQueue: "Черга завдань" - serverMetric: "Показники сервера " + serverMetric: "Показники сервера" aiscript: "Консоль AiScript" + _userList: + chooseList: Оберіть список + meiliStatus: Стан сервера + meiliSize: Розмір індексу + rssTicker: RSS-тікер + instanceCloud: Хмара серверів + unixClock: Годинник UNIX + userList: Список користувачів + serverInfo: Інформація про сервер + meiliIndexCount: Індексовані записи _cw: hide: "Сховати" show: "Показати більше" chars: "{count} символів" files: "{count} файлів" _poll: - noOnlyOneChoice: "Потрібні принаймні два варіанти." + noOnlyOneChoice: "Потрібні принаймні два варіанти" choiceN: "Варіант {n}" noMore: "Більше варіантів додати не можна" canMultipleVote: "Можна вибрати кілька варіантів" @@ -1051,19 +1248,19 @@ _poll: remainingSeconds: "Залишилось {s} секунд" _visibility: public: "Публічний" - publicDescription: "Для всіх користувачів" - home: "Домівка" + publicDescription: "Ваш запис буде видно в усіх публічних стрічках" + home: "Домашній" homeDescription: "Лише на домашній стрічці" followers: "Підписники" - followersDescription: "Тільки для підписників" + followersDescription: "Зробити видимим тільки для ваших підписників і згаданих користувачів" specified: "Особисто" specifiedDescription: "Лише для певних користувачів" localOnly: "Локально" localOnlyDescription: "Приховано для віддалених користувачів" _postForm: - replyPlaceholder: "Відповідь на цю нотатку..." - quotePlaceholder: "Прокоментуйте цю нотатку..." - channelPlaceholder: "Опублікувати в каналі" + replyPlaceholder: "Відповідь на цей запис..." + quotePlaceholder: "Прокоментуйте цей запис..." + channelPlaceholder: "Опублікувати в каналі..." _placeholders: a: "Чим займаєтесь?" b: "Що відбувається навколо вас?" @@ -1078,56 +1275,71 @@ _profile: youCanIncludeHashtags: "Ви також можете включити хештеги у свій опис." metadata: "Додаткова інформація" metadataEdit: "Редагувати додаткову інформацію" - metadataDescription: "Ви можете вказати до чотирьох пунктів додаткової інформації у своєму профілі." + metadataDescription: "Ви можете вказати до чотирьох пунктів додаткової інформації + у своєму профілі. Ви можете додати тег {a} або {l} за допомогою {rel}, щоб підтвердити + посилання у своєму профілі!" metadataLabel: "Назва" metadataContent: "Вміст" changeAvatar: "Змінити аватар" changeBanner: "Змінити банер" + locationDescription: Якщо ви спочатку введете своє місто, іншим користувачам буде + показано ваш місцевий час. _exportOrImport: - allNotes: "Всі нотатки" + allNotes: "Всі записи" followingList: "Підписки" muteList: "Ігнорувати" blockingList: "Заблокувати" userLists: "Списки" + excludeInactiveUsers: Вилучити неактивних користувачів + excludeMutingUsers: Вилучити заглушених користувачів _charts: federation: "Федіверс" apRequest: "Запити" usersTotal: "Загальна кількість користувачів" activeUsers: "Активні користувачі" - notesTotal: "Загальна кількість нотаток" + notesTotal: "Загальна кількість записів" filesIncDec: "Зміни кількості файлів" filesTotal: "Загальна кількість файлів" + storageUsageIncDec: Різниця в використанні ємності диску + remoteNotesIncDec: Різниця в кількості віддалених записів + notesIncDec: Різниця в кількості записів + localNotesIncDec: Різниця в кількості локальних записів + storageUsageTotal: Загальне використання пам'яті + usersIncDec: Різниця в кількості користувачів _instanceCharts: requests: "Запити" usersTotal: "Сумарна кількість користувачів" - notes: "Різниця кількості зроблених записів" - notesTotal: "Сумарна кількість нотаток" - ff: "Різниця кількості підписників" + notes: "Різниця в кількості зроблених записів" + notesTotal: "Сумарна кількість записів" + ff: "Різниця кількості підписників " ffTotal: "Кількість підписників" cacheSizeTotal: "Сумарний розмір кешу" files: "Різниця в кількості файлів" filesTotal: "Сумарна кількість файлів" + users: Різниця в кількості користувачів + cacheSize: Різниця в розмірі кешу _timelines: home: "Домівка" local: "Локальна" social: "Соціальна" global: "Глобальна" + recommended: Рекомендована _pages: newPage: "Створити сторінку" editPage: "Редагувати сторінку" readPage: "Перегляд вихідного коду" - created: "Сторінка успішно створена." - updated: "Сторінка успішно оновлена." + created: "Сторінка успішно створена" + updated: "Сторінка успішно оновлена" deleted: "Сторінку видалено" pageSetting: "Налаштування сторінки" - nameAlreadyExists: "Вказана адреса сторінки вже існує." - invalidNameTitle: "Вказана адреса сторінки неприпустима." - invalidNameText: "Переконайтеся, що не залишили порожнім." + nameAlreadyExists: "Вказана адреса сторінки вже існує" + invalidNameTitle: "Вказана адреса сторінки неприпустима" + invalidNameText: "Переконайтеся, що поле заголовка сторінки не порожнє" editThisPage: "Редагувати цю сторінку" viewSource: "Переглянути вихідний код" viewPage: "Переглянути свої сторінки" like: "Вподобати" - unlike: "Не вподобати" + unlike: "Видалити вподобайку" my: "Мої сторінки" liked: "Вподобані сторінки" featured: "Популярні" @@ -1141,10 +1353,10 @@ _pages: alignCenter: "Рівняти елементи по центру" hideTitleWhenPinned: "Приховати заголовок сторінки при закріпленні в профілі" font: "Шрифт" - fontSerif: "Serif" - fontSansSerif: "Sans serif" - eyeCatchingImageSet: "Встановити привабливе зображення" - eyeCatchingImageRemove: "Видалити привабливе зображення" + fontSerif: "Шрифт Serif" + fontSansSerif: "Шрифт Sans serif" + eyeCatchingImageSet: "Встановити мініатюру" + eyeCatchingImageRemove: "Видалити мініатюру" chooseBlock: "Додати блок" selectType: "Виберіть тип" enterVariableName: "Введіть назву для змінної" @@ -1165,6 +1377,7 @@ _pages: _post: text: "Вміст" canvasId: "Ідентифікатор полотна" + attachCanvasImage: Прикріпити зображення полотна textInput: "Введення тексту" _textInput: name: "Ім'я змінної" @@ -1185,10 +1398,10 @@ _pages: id: "Ідентифікатор полотна" width: "Ширина" height: "Висота" - note: "Вбудована нотатка" + note: "Вбудований запис" _note: - id: "Ідентифікатор нотатки" - idDescription: "Також можна вказати посилання на нотатку" + id: "Ідентифікатор запису" + idDescription: "Також можна вказати посилання на запис." detailed: "Детальний вигляд" switch: "Перемикач" _switch: @@ -1379,7 +1592,7 @@ _pages: arg1: "Текст" ref: "Змінні" aiScriptVar: "Змінна AiScript" - fn: "Функції" + fn: "Функція" _fn: slots: "Паз" slots-info: "Використовувати нову лінію як роздільник пазів" @@ -1388,7 +1601,8 @@ _pages: _for: arg1: "Кількість повторень" arg2: "Дія" - typeError: "Паз {slot} приймає \"{expect}\" тип, але надана змінна має тип \"{actual}\"!" + typeError: "Паз {slot} приймає \"{expect}\" тип, але надана змінна має тип \"\ + {actual}\"!" thereIsEmptySlot: "Паз {slot} пустий!" types: string: "Текст" @@ -1430,9 +1644,16 @@ _notification: followRequestAccepted: "Прийняті підписки" groupInvited: "Запрошення до груп" app: "Сповіщення від додатків" + pollEnded: Опитування закінчено _actions: reply: "Відповісти" - renote: "Поширити" + renote: "Поширення" + followBack: також підписався на вас + emptyPushNotificationMessage: Push-сповіщення були оновлені + voted: проголосував на вашому опитуванні + renoted: поширив ваш запис + reacted: відреагував на ваш запис + pollEnded: Стали доступні результати опитування _deck: alwaysShowMainColumn: "Завжди показувати головну колонку" columnAlign: "Вирівняти стовпці" @@ -1443,13 +1664,494 @@ _deck: swapDown: "Пересунути вниз" stackLeft: "У стовпчик вліво" popRight: "Витягнути вправо" - profile: "Обліковий запис" + profile: "Простір" _columns: main: "Головна" widgets: "Віджети" notifications: "Сповіщення" tl: "Стрічка" - antenna: "Антени" + antenna: "Антена" list: "Списки" mentions: "Згадки" - direct: "Особисте" + direct: "Особисті повідомлення" + channel: Канал + newProfile: Новий простір + introduction2: Натисніть на + у правій частині екрана, щоб додавати нові стовпці + по бажанню. + configureColumn: Налаштування стовпців + introduction: Створіть ідеальний інтерфейс для себе, вільно розташовуючи стовпці! + widgetsIntroduction: Будь ласка, виберіть "Редагувати віджети" в меню колонки і + додайте віджет. + renameProfile: Перейменувати простір + deleteProfile: Видалити простір + nameAlreadyExists: Простір із такою назвою вже існує. +removeReaction: Видалити вашу реакцію +renoteMute: Ігнорувати поширення +renoteUnmute: Показувати поширення +flagSpeakAsCat: Говорити як кішка +accessibility: Доступність +priority: Пріорітет +high: Високий +customCss: Користувацькі CSS +itsOn: Увімкнено +showingPastTimeline: Наразі відображається стара стрічка +enabled: Увімкнено +noMaintainerInformationWarning: Інформація про супровідника не налаштована. +recommended: Рекомендоване +resolved: Вирішено +itsOff: Вимкнено +emailRequiredForSignup: Вимагати адресу електронної пошти для реєстрації +moderation: Модерація +selectInstance: Оберіть сервер +instanceSecurity: Безпека сервера +searchPlaceholder: Шукати у Firefish +editNote: Відредагувати запис +enableEmojiReactions: Ввімкнути реакції емодзі +low: Низький +emailNotConfiguredWarning: Адрес електронної пошти не встановлено. +unresolved: Не вирішено +offline: Не в мережі +disabled: Вимкнено +configure: Налаштувати +popularPosts: Популярні сторінки +silenced: Ігнорується +manageGroups: Керування групами +active: Активний +whatIsNew: Показати зміни +deleted: Видалено +selectChannel: Виберіть канал +flagSpeakAsCatDescription: Ваші записи будуть няніфіковані у режимі кота +userSaysSomethingReason: '{name} сказав(ла) {reason}' +clear: Очистити +userInfo: Інформація про користувача +selectAccount: Оберіть обліковий запис +switchAccount: Змінити обліковий запис +accounts: Облікові записи +switch: Змінити +noBotProtectionWarning: Захист від ботів не налаштовано. +gallery: Галерея +recentPosts: Недавні сторінки +privateModeInfo: Якщо увімкнено, лише сервери з білого списку можуть федеруватися + з вашим сервером. Всі повідомлення будуть приховані від публіки. +troubleshooting: Вирішення проблем +customCssWarn: Цей параметр слід використовувати лише тоді, коли ви знаєте, що він + робить. Введення неправильних значень може призвести до того, що клієнт перестане + нормально функціонувати. +newer: новіші +older: старіші +addDescription: Додати опис +notSpecifiedMentionWarning: У цьому записі згадуються користувачі, яких не було включено + до списку одержувачів +markAllAsRead: Позначити все як прочитане +userPagePinTip: Ви можете відображати записи тут, вибравши "Прикріпити до профілю" + в меню окремих записів. +unknown: Невідомо +onlineStatus: Онлайн-статус +hideOnlineStatus: Приховати онлайн-статус +online: В мережі +breakFollow: Видалити підписника +translate: Перекласти +translatedFrom: Перекладено з {x} +userSaysSomethingReasonQuote: '{name} цитував запис з {reason}' +userSaysSomethingReasonRenote: '{name} поширив запис з {reason}' +notRecommended: Не рекомендується +botProtection: Захист від ботів +instanceBlocking: Керування Федерацією +privateMode: Приватний режим +allowedInstances: Сервери у білому списку +previewNoteText: Показати прев'ю +antennaInstancesDescription: Введіть по одному хосту сервера на рядок +breakFollowConfirm: Ви дійсно бажаєте видалити підписника? +ads: Рекламні оголошення +cw: Попередження про вміст +hiddenTags: Приховані хештеги +noInstances: Немає серверів +misskeyUpdated: Firefish оновлено! +received: Отримане +xl: Надвеликий +searchResult: Результати пошуку +useBlurEffect: Використовувати ефекти розмиття в інтерфейсі +learnMore: Дізнатися більше +usernameInfo: Ім'я, яке ідентифікує ваш обліковий запис серед інших на цьому сервері. Ви + можете використовувати алфавіт (a~z, A~Z), цифри (0~9) або знаки підкреслення (_). + Ім'я користувача не може бути змінено пізніше. +noThankYou: Ні, дякую +keepCw: Зберігати попередження про вміст +showEmojisInReactionNotifications: Показувати емодзі у сповіщеннях про реакції +accountMoved: 'Користувач переїхав до нового облікового запису:' +expandOnNoteClickDesc: Якщо цю опцію вимкнено, ви все одно зможете відкривати дописи + в меню, клацнувши правою кнопкою миші або натиснувши на мітку часу. +deleteAccountConfirm: Це призведе до незворотного видалення вашого облікового запису. + Приступити? +unread: Непрочитане +filter: Фільтри +useDrawerReactionPickerForMobile: Відображати вибирач реакцій як шухляду на мобільному + телефоні +leaveGroupConfirm: Ви впевнені, що хочете залишити "{name}"? +clickToFinishEmailVerification: Будь ласка, натисніть [{ok}], щоб завершити перевірку + електронної пошти. +welcomeBackWithName: Ласкаво просимо назад, {name} +overridedDeviceKind: Тип пристрою +themeColor: Колір теми серверу +oneDay: Один день +instanceDefaultLightTheme: Світла тема за замовчуванням для сервера +oneWeek: Одна неділя +instanceDefaultDarkTheme: Темна тема за замовчуванням для сервера +video: Відео +audio: Аудіо +rateLimitExceeded: Перевищено ліміт +numberOfPageCacheDescription: Збільшення цієї величини покращить зручність для користувачів, + але призведе до збільшення навантаження на сервер та використання більшої кількості + пам'яті. +lastActiveDate: Останній раз використовувався у +statusbar: Панель статусу +speed: Швидкість +sensitiveMediaDetection: Виявлення NSFW медіа +cannotUploadBecauseNoFreeSpace: Завантаження не вдалося через брак місця на Диску. +cannotUploadBecauseExceedsFileSizeLimit: Цей файл не може бути завантажений, оскільки + він перевищує максимально дозволений розмір. +account: Обліковий запис +move: Перемістити +pushNotification: Push-сповіщення +subscribePushNotification: Увімкнути push-сповіщення +unsubscribePushNotification: Вимкнути push-сповіщення +pushNotificationAlreadySubscribed: Push-сповіщення вже увімкнено +enterSendsMessage: Натисніть Enter у повідомленнях, щоб надіслати повідомлення (якщо + вимкнено, то Ctrl + Enter) +showAds: Показувати рекламні оголошення +customMOTD: Користувацькі MOTD (повідомлення на заставці) +customSplashIcons: Користувацькі іконки заставки (URL) +splash: Заставка +adminCustomCssWarn: Цей параметр слід використовувати, тільки якщо ви знаєте, що він + робить. Введення неправильних значень може призвести до того, що ВСІ клієнти перестануть + нормально працювати. Будь ласка, переконайтеся, що ваш CSS працює належним чином, + протестувавши його в налаштуваннях користувача. +_filters: + followersOnly: Тільки підписники + fromUser: Від користувача + notesBefore: Записи до + withFile: З файлом + fromDomain: З домену + notesAfter: Записи після + followingOnly: Тільки підписки +sendModMail: Надіслати повідомлення про модерацію +enableServerMachineStats: Увімкнути статистику серверного обладнання +enableIdenticonGeneration: Увімкнути генерацію Identicon +_sensitiveMediaDetection: + analyzeVideosDescription: Аналізує відео так само як і зображення. Це трохи збільшить + навантаження на сервер. + description: Зменшує навантаження на серверну модерацію завдяки автоматичному розпізнаванню + NSFW медіа за допомогою машинного навчання. Це трохи збільшить навантаження на + сервер. + sensitivity: Чутливість виявлення + sensitivityDescription: Зменшення чутливості призведе до зменшення кількості хибних + спрацьовувань, тоді як збільшення чутливості призведе до зменшення кількості пропущених + спрацьовувань. + setSensitiveFlagAutomatically: Позначити як NSFW + setSensitiveFlagAutomaticallyDescription: Результати внутрішнього виявлення будуть + збережені, навіть якщо цю опцію вимкнено. + analyzeVideos: Ввімкнути аналіз відео +_emailUnavailable: + used: Ця електронна пошта вже використовується + format: Формат цієї адреси електронної пошти є неправильним + mx: Цей сервер електронної пошти є недійсним + disposable: Використовувати одноразові адреси електронної пошти заборонено + smtp: Цей поштовий сервер не відповідає +_messaging: + dms: Приватні + groups: Групи +_instanceMute: + instanceMuteDescription: Це приховає всі записи/поширення із вказаних серверів, + включно з відповідями користувачам заглушеного серверу. + title: Приховує записи з перелічених серверів. + instanceMuteDescription2: Розділити новими рядками + heading: Список серверів для заглушення +_experiments: + enablePostImports: Ввімкнути імпорт записів + title: Експерименти + postImportsCaption: Дозволяє користувачам імпортувати свої записи з минулих облікових + записів Firefish, Misskey, Mastodon, Akkoma і Pleroma. Це може спричинити зниження + швидкості під час завантаження, якщо ваша черга перевантажена. +_dialog: + charactersExceeded: 'Перевищено максимальну кількість символів! Обмеження: {current}/{max}' + charactersBelow: 'Недостатньо символів! Обмеження: {current}/{min}' +jumpToSpecifiedDate: Перейти до конкретної дати +quitFullView: Закрити повний вигляд +ffVisibility: Видимість підписок/підписників +numberOfColumn: Кількість стовпців +failedToFetchAccountInformation: Не вдалося отримати інформацію про обліковий запис +reflectMayTakeTime: Може пройти деякий час, перш ніж зміни набудуть чинності. +recentNHours: Останні {n} годин +logoutConfirm: Ви впевнені, що хочете вийти? +enableRecommendedTimeline: Увімкнути рекомендовану стрічку +_accountDelete: + requestAccountDelete: Запросити видалення облікового запису + accountDelete: Видалити обліковий запис + mayTakeTime: Оскільки видалення облікового запису є ресурсоємним процесом, він може + зайняти деякий час, залежно від того, скільки контенту ви створили та скільки + файлів завантажили. + sendEmail: Коли ваш обліковий запис буде видалено, ми повідомимо на вказану вами + електронну пошту. + started: Процес видалення розпочався. + inProgress: Наразі триває видалення +_preferencesBackups: + deleteConfirm: Видалити резервну копію {name}? + applyConfirm: Ви дійсно хочете застосувати резервну копію "{name}" до цього пристрою? + Існуючі налаштування цього пристрою буде замінено. + saveConfirm: Зберегти резервну копію як {name}? + saveNew: Зберегти нову резервну копію + save: Зберегти зміни + inputName: Будь ласка, введіть назву для цієї резервної копії + loadFile: Завантажити з файлу + updatedAt: 'Оновлено: {date} {time}' + invalidFile: Неправильний формат файлу + apply: Застосувати до цього пристрою + list: Створені резервні копії + cannotSave: Збереження невдале + nameAlreadyExists: Резервна копія з назвою "{name}" вже існує. Будь ласка, введіть + іншу назву. + renameConfirm: Перейменувати цю резервну копію з "{old}" на "{new}"? + noBackups: Резервних копій немає. Ви можете створити резервну копію налаштувань + клієнта на цьому сервері за допомогою "Створити нову резервну копію". + createdAt: 'Створено: {date} {time}' + cannotLoad: Не вдалося завантажити +beta: Бета +customMOTDDescription: Користувацькі повідомлення для MOTD (заставки), розділені новими + рядками, які будуть показуватися випадковим чином щоразу, коли користувач завантажує/перезавантажує + сторінку. +replayTutorial: Перезапустити туторіал +_forgotPassword: + ifNoEmail: Якщо ви не використовували електронну пошту під час реєстрації, зверніться + до адміністратора серверу. + enterEmail: Введіть адресу електронної пошти, яку ви використовували для реєстрації. + На неї буде надіслано посилання, за яким ви зможете скинути пароль. + contactAdmin: Цей сервер не підтримує використання адрес електронної пошти, будь + ласка, зверніться до адміністратора сервера, щоб скинути пароль. +reactionPickerSkinTone: Бажаний колір шкіри емодзі +addInstance: Додати сервер +jumpToPrevious: Перейти до попереднього +listsDesc: Списки дозволяють створювати стрічки із вказаними користувачами. Доступ + до них можна отримати на сторінці стрічок. +channelFederationWarn: Канали наразі федеруються з іншими серверами +lastCommunication: Останнє повідомлення +edited: Відредаговано {date} о {time} +confirmToUnclipAlreadyClippedNote: Цей запис уже в підбірці "{name}". Чи бажаєте ви + натомість видалити пост із підбірки? +quickAction: Швидкі дії +remoteOnly: Тільки віддалені +failedToUpload: Помилка завантаження +moveFrom: Мігрувати на цей обліковий запис зі старого облікового запису +preventAiLearning: Захист від скрепінгу ШІ-ботів +moveAccountDescription: Цей процес є незворотнім. Переконайтеся, що ви створили псевдонім + для цього акаунта в новому акаунті перед переїздом. Будь ласка, введіть тег акаунта + у форматі @person@server.com +_signup: + almostThere: Майже готово + emailAddressInfo: Будь ласка, введіть свою адресу електронної пошти. Вона не буде + опублікована. + emailSent: На вашу електронну адресу ({email}) було надіслано лист із підтвердженням. + Будь ласка, перейдіть за посиланням, щоб завершити створення облікового запису. +defaultValueIs: 'За замовчуванням: {value}' +shareWithNote: Поділитися з записом +classic: Відцентрований +size: Розмір +slow: Повільно +alt: ALT +auto: Автоматично +oneHour: Одна година +instanceDefaultThemeDescription: Введіть код теми в об'єктному форматі. +cropImageAsk: Чи бажаєте ви обрізати це зображення? +noEmailServerWarning: Поштовий сервер не налаштовано. +thereIsUnresolvedAbuseReportWarning: Є не розглянуті звіти. +image: Зображення +check: Перевірити +isSystemAccount: Цей акаунт створений і автоматично управляється системою. Будь ласка, + не модеруйте, не редагуйте, не видаляйте та не втручайтеся в цей акаунт будь-яким + іншим чином, інакше це може призвести до поломки вашого серверу. +document: Документація +driveCapOverrideCaption: Ви можете скинути ємність до значення за замовчуванням, ввівши + значення 0 або менше. +numberOfPageCache: Кількість кешованих сторінок +pleaseSelect: Оберіть варіант +refreshInterval: 'Інтервал оновлення ' +enableAutoSensitive: Автоматичне маркування NSFW +cannotUploadBecauseInappropriate: Цей файл не може бути завантажений тому що його + частини були виявлені як потенційне NSFW. +sendPushNotificationReadMessageCaption: На короткий час буде показано сповіщення з + текстом "{emptyPushNotificationMessage}". Це може призвести до збільшення споживання + заряду акумулятора вашого пристрою, якщо це можливо. +pushNotificationNotSupported: Ваш браузер або сервер не підтримує push-сповіщення +showUpdates: Показувати спливаюче вікно при оновленні Firefish +updateAvailable: Можливо, є доступне оновлення! +recommendedInstancesDescription: Рекомендовані сервери відокремлюються переведенням + рядка, щоб з'явитися на стрічці рекомендацій. +caption: Автоматичний опис +showAdminUpdates: Вказати, що доступна нова версія Firefish (тільки для адміністратора) +defaultReaction: Емодзі реакція за замовчуванням для вихідних і вхідних записів +license: Ліцензія +indexPosts: Індексувати пости +indexFrom: Індексувати записи з ID +indexFromDescription: Залиште порожнім, щоб індексувати кожен запис +indexNotice: Зараз відбувається індексація. Це, ймовірно, займе деякий час, будь ласка, + не перезавантажуйте сервер принаймні годину. +signupsDisabled: Реєстрація на цьому сервері наразі відключена, але ви завжди можете + зареєструватися на іншому сервері! Якщо у вас є код запрошення на цей сервер, будь + ласка, введіть його нижче. +findOtherInstance: Знайти інший сервер +customKaTeXMacro: Користувацькі макроси KaTeX +enableCustomKaTeXMacro: Увімкнути користувацькі макроси KaTeX +apps: Додатки +isModerator: Модератор +isAdmin: Адміністратор +isPatron: Патрон Firefish +swipeOnMobile: Дозволити гортання між сторінками +migration: Міграція +swipeOnDesktop: Дозволити свайп у мобільному стилі на десктопі +logoImageUrl: URL-адреса зображення логотипу +moveTo: Перенести поточний обліковий запис на новий +moveFromDescription: Це встановить псевдонім вашого старого облікового запису, щоб + ви могли перейти зі старого облікового запису до цього поточного. Зробіть це ДО + переходу зі старого акаунта. Будь ласка, введіть тег акаунта у форматі @person@server.com +moveToLabel: 'Обліковий запис, на який ви мігруєте:' +moveAccount: Перемістити обліковий запис! +moveFromLabel: 'Обліковий запис, з якого ви мігруєте:' +_plugin: + install: Встановлення плагінів + manage: Керування плагінами + installWarn: Будь ласка, не встановлюйте ненадійні плагіни. +_skinTones: + yellow: Жовтий + mediumLight: Середньо-світлий + medium: Середній + mediumDark: Середньо-темний + dark: Темний + light: Світлий +tenMinutes: 10 хвилин +expandOnNoteClick: Відкрити запис кліком +preferencesBackups: Резервне копіювання +unlikeConfirm: Дійсно видалити вподобайку? +fullView: Повний вигляд +postToGallery: Опублікувати в галереї +memo: Нотатки +allowedInstancesDescription: Хости серверів, які будуть допущені до федерації, кожен + з яких відокремлюється новим рядком (стосується лише приватного режиму). +squareAvatars: Квадратні аватарки +aiChanMode: Режим ШІ +controlPanel: Панель керування +manageAccounts: Керування обліковими записами +incorrectPassword: Неправильний пароль. +voteConfirm: Підтвердити свій голос за "{choice}"? +leaveGroup: Залишити групу +smartphone: Смартфон +mutePeriod: Тривалість глушіння +requireAdminForView: Ви маєте увійти з облікового запису адміністратора, щоб переглянути + це. +fast: Швидко +isBot: Цей обліковий запис є ботом +isLocked: Цей обліковий запис має схвалення запитів на підписку +silenceThisInstance: Ігнорувати цей сервер +hideOnlineStatusDescription: Приховування вашого онлайн-статусу знижує зручність деяких + функцій, таких як пошук. +accountDeletionInProgress: Наразі триває видалення облікового запису +makeReactionsPublic: Зробити історію реакцій публічною +continueThread: Показати наступні відповіді +unmuteThread: Скасувати глушіння гілки +ffVisibilityDescription: Дозволяє налаштувати, хто може бачити, на кого ви підписані + і хто підписаний на вас. +tablet: Планшет +cropImage: Обрізати зображення +recentNDays: Останні {n} днів +navbar: Панель навігації +noGraze: Будь ласка, вимкніть розширення браузера "Graze для Mastodon", оскільки воно + заважає роботі Firefish. +preventAiLearningDescription: Попросити сторонні мовні моделі ШІ не вивчати вміст, + який ви завантажуєте, наприклад, записи та зображення. +userSaysSomethingReasonReply: '{name} відповів на пост з {reason}' +secureMode: Безпечний режим (Authorized Fetch) +seperateRenoteQuote: Розділити кнопки поширення та цитати +makeReactionsPublicDescription: Це зробить список усіх ваших минулих реакцій публічно + видимим. +muteThread: Заглушити гілку +sendPushNotificationReadMessage: Видаляти push-сповіщення після того, як відповідні + сповіщення або повідомлення будуть прочитані +unclip: Видалити з підбірки +silencedInstances: Ігноровані сервери +typeToConfirm: Введіть {x} щоб підтвердити +silencedWarning: Ця сторінка відображається тому, що ці користувачі з серверів, які + ваш адміністратор заглушив, тому вони потенційно можуть бути спамом. +shuffle: Перетасувати +ratio: Співвідношення +secureModeInfo: У разі запитів з інших серверів не надсилати непідтверджену відповідь. +pubSub: Облікові записи Pub/Sub +driveCapOverrideLabel: Змінити ємність диску для цього користувача +deleteAccount: Видалити обліковий запис +type: Тип +enableAutoSensitiveDescription: Дозволяє автоматично виявляти та позначати медіафайли + NSFW за допомогою машинного навчання, де це можливо. Навіть якщо цю опцію вимкнено, + вона може бути увімкнена на всьому сервері. +recommendedInstances: Рекомендовані сервери +noteId: Ідентифікатор запису +showPopup: Сповіщати користувачів спливаючим вікном +showWithSparkles: Показати з блиском +youHaveUnreadAnnouncements: У вас є непрочитані оголошення +donationLink: Посилання на сторінку для внесків +neverShow: Не показувати знову +remindMeLater: Можливо пізніше +removeQuote: Видалити цитату +removeRecipient: Видалити одержувача +removeMember: Видалити члена +silencedInstancesDescription: Вкажіть імена хостів серверів, які ви хочете ігнорувати. + Облікові записи на перелічених серверах вважаються "Ігнорованими", можуть робити + лише запити на підписку і не можуть згадувати локальні облікові записи, якщо на + них не підписалися. Це не вплине на заблоковані сервери. +hiddenTagsDescription: 'Перелічіть хештеги (без #), які ви хочете приховати з трендів + і дослідження. Приховані хештеги все одно можна знайти іншими способами.' +antennasDesc: "Антени показують нові дописи, що відповідають встановленим вами критеріям!\n + Доступ до них можна отримати зі сторінки стрічок." +clipsDesc: Підбірки схожі на категоризовані закладки, до яких можна надавати спільний + доступ. Ви можете створювати підбірки з меню окремих записів. +migrationConfirm: "Ви точно впевнені, що хочете перенести свій обліковий запис на + {account}? Якщо ви це зробите, ви не зможете скасувати цю операцію і не зможете + користуватися своїм обліковим записом як раніше.\nТакож, будь ласка, переконайтеся, + що ви вибрали цей поточний обліковий запис як обліковий запис, з якого ви переходите." +customKaTeXMacroDescription: 'Налаштуйте макроси, щоб легко писати математичні вирази! + Позначення відповідає визначенню команд LaTeX і записується у вигляді \newcommand{\ + name}{content} або \newcommand{\name}[number of arguments]{content}. Наприклад, + \newcommand{\add}[2]{#1 + #2} розширить \add{3}{foo} to 3 + foo. Фігурні дужки навколо + назви макросу можна змінити на круглі або квадратні. Це вплине на дужки, що використовуються + для аргументів. В одному рядку можна визначити один (і тільки один) макрос, і жоден + рядок не можна розривати посередині визначення. Неправильні рядки просто ігноруються. + Підтримуються лише прості функції заміни рядків; розширений синтаксис, такий як + умовне розгалуження, не може бути використаний тут.' +activeEmailValidationDescription: Вмикає більш сувору перевірку адрес електронної + пошти, яка включає перевірку на наявність одноразових адрес і перевірку того, чи + дійсно з нею можна зв'язатися. Якщо цей прапорець знято, перевіряється лише формат + електронної пошти. +customSplashIconsDescription: URL-адреси іконок для заставки, розділені новими рядками, + які будуть показуватися випадковим чином щоразу, коли користувач завантажує/перезавантажує + сторінку. Будь ласка, переконайтеся, що зображення знаходяться на статичній URL-адресі, + бажано, щоб вони були змінені до розміру 192x192. +verifiedLink: Перевірене посилання +_feeds: + copyFeed: Скопіювати стрічку + rss: RSS + jsonFeed: JSON-стрічка + atom: Atom +origin: Походження +objectStorageS3ForcePathStyle: Використовувати URL-адреси кінцевої точки на основі + шляху +objectStorageS3ForcePathStyleDesc: Увімкніть цей параметр, щоб вибудувати URL-адреси + кінцевих точок у форматі 's3.amazonaws.com//' поверх '.s3.amazonaws.com'. +deletePasskeys: Видалити ключ-пароль +delete2faConfirm: Це видалить двофакторну авторизацію на цьому обліковому записі без + можливості відмінити цю дію. Продовжити? +delete2fa: Вимкнути двофакторну авторизацію +inputNotMatch: Введене не співпадає +deletePasskeysConfirm: Це видалить усі ключ-паролі і ключі безпеки на цьому обліковому + записі без можливости відмінити цю дію. Продовжити? +addRe: Додати "re:" на початку коментаря у відповідь на запис із попередженням про + вміст +confirm: Підтвердити +importZip: Імпортувати ZIP +exportZip: Експортувати ZIP +emojiPackCreator: Генератор паків емодзі diff --git a/locales/vi-VN.yml b/locales/vi-VN.yml index ddd79084fc..297be51e1c 100644 --- a/locales/vi-VN.yml +++ b/locales/vi-VN.yml @@ -1,7 +1,9 @@ ---- _lang_: "Tiếng Việt" -headlineMisskey: "Mạng xã hội liên hợp" -introMisskey: "Xin chào! Calckey là một nền tảng tiểu blog phi tập trung mã nguồn mở.\nViết \"tút\" để chia sẻ những suy nghĩ của bạn 📡\nBằng \"biểu cảm\", bạn có thể bày tỏ nhanh chóng cảm xúc của bạn với các tút 👍\nHãy khám phá một thế giới mới! 🚀" +headlineFirefish: "Mạng xã hội liên hợp" +introFirefish: "Xin chào! Firefish là một nền tảng tiểu blog phi tập trung mã nguồn + mở.\nViết \"tút\" để chia sẻ những suy nghĩ của bạn 📡\nBằng \"biểu cảm\", bạn có + thể bày tỏ nhanh chóng cảm xúc của bạn với các tút 👍\nHãy khám phá một thế giới + mới! 🚀" monthAndDay: "{day} tháng {month}" search: "Tìm kiếm" notifications: "Thông báo" @@ -13,7 +15,7 @@ ok: "Đồng ý" gotIt: "Đã hiểu!" cancel: "Hủy" enterUsername: "Nhập tên người dùng" -renotedBy: "Chia sẻ bởi {user}" +renotedBy: "{user} đăng lại" noNotes: "Chưa có tút nào." noNotifications: "Không có thông báo" instance: "Máy chủ" @@ -44,11 +46,12 @@ copyContent: "Chép nội dung" copyLink: "Chép liên kết" delete: "Xóa" deleteAndEdit: "Sửa" -deleteAndEditConfirm: "Bạn có chắc muốn sửa tút này? Những biểu cảm, lượt trả lời và đăng lại sẽ bị mất." +deleteAndEditConfirm: "Bạn có chắc muốn sửa tút này? Những biểu cảm, lượt trả lời + và đăng lại sẽ bị mất." addToList: "Thêm vào danh sách" sendMessage: "Gửi tin nhắn" copyUsername: "Chép tên người dùng" -searchUser: "Tìm kiếm người dùng" +searchUser: "Tìm người" reply: "Trả lời" loadMore: "Tải thêm" showMore: "Xem thêm" @@ -64,9 +67,11 @@ import: "Nhập dữ liệu" export: "Xuất dữ liệu" files: "Tập tin" download: "Tải xuống" -driveFileDeleteConfirm: "Bạn có chắc muốn xóa tập tin \"{name}\"? Tút liên quan cũng sẽ bị xóa theo." +driveFileDeleteConfirm: "Bạn có chắc muốn xóa tập tin \"{name}\"? Tút liên quan cũng + sẽ bị xóa theo." unfollowConfirm: "Bạn có chắc muốn ngưng theo dõi {name}?" -exportRequested: "Đang chuẩn bị xuất tập tin. Quá trình này có thể mất ít phút. Nó sẽ được tự động thêm vào Drive sau khi hoàn thành." +exportRequested: "Đang chuẩn bị xuất tập tin. Quá trình này có thể mất ít phút. Nó + sẽ được tự động thêm vào Drive sau khi hoàn thành." importRequested: "Bạn vừa yêu cầu nhập dữ liệu. Quá trình này có thể mất ít phút." lists: "Danh sách" noLists: "Bạn chưa có danh sách nào" @@ -81,7 +86,8 @@ error: "Lỗi" somethingHappened: "Xảy ra lỗi" retry: "Thử lại" pageLoadError: "Xảy ra lỗi khi tải trang." -pageLoadErrorDescription: "Có thể là do bộ nhớ đệm của trình duyệt. Hãy thử xóa bộ nhớ đệm và thử lại sau ít phút." +pageLoadErrorDescription: "Có thể là do bộ nhớ đệm của trình duyệt. Hãy thử xóa bộ + nhớ đệm và thử lại sau ít phút." serverIsDead: "Máy chủ không phản hồi. Vui lòng thử lại sau giây lát." youShouldUpgradeClient: "Để xem trang này, hãy làm tươi để cập nhật ứng dụng." enterListName: "Đặt tên cho danh sách" @@ -129,7 +135,7 @@ selectAntenna: "Chọn một antenna" selectWidget: "Chọn tiện ích" editWidgets: "Sửa tiện ích" editWidgetsExit: "Xong" -customEmojis: "Tùy chỉnh emoji" +customEmojis: "Emoji" emoji: "Emoji" emojis: "Emoji" emojiName: "Tên emoji" @@ -137,18 +143,24 @@ emojiUrl: "URL Emoji" addEmoji: "Thêm emoji" settingGuide: "Cài đặt đề xuất" cacheRemoteFiles: "Tập tin cache từ xa" -cacheRemoteFilesDescription: "Khi tùy chọn này bị tắt, các tập tin từ xa sẽ được tải trực tiếp từ máy chủ khác. Điều này sẽ giúp giảm dung lượng lưu trữ nhưng lại tăng lưu lượng truy cập, vì hình thu nhỏ sẽ không được tạo." +cacheRemoteFilesDescription: "Khi tùy chọn này bị tắt, các tập tin từ xa sẽ được tải + trực tiếp từ máy chủ khác. Điều này sẽ giúp giảm dung lượng lưu trữ nhưng lại tăng + lưu lượng truy cập, vì hình thu nhỏ sẽ không được tạo." flagAsBot: "Đánh dấu đây là tài khoản bot" -flagAsBotDescription: "Bật tùy chọn này nếu tài khoản này được kiểm soát bởi một chương trình. Nếu được bật, nó sẽ được đánh dấu để các nhà phát triển khác ngăn chặn chuỗi tương tác vô tận với các bot khác và điều chỉnh hệ thống nội bộ của Calckey để coi tài khoản này như một bot." +flagAsBotDescription: "Bật tùy chọn này nếu tài khoản này được kiểm soát bởi một chương + trình. Nếu được bật, nó sẽ được đánh dấu để các nhà phát triển khác ngăn chặn chuỗi + tương tác vô tận với các bot khác và điều chỉnh hệ thống nội bộ của Firefish để + coi tài khoản này như một bot." flagAsCat: "Tài khoản này là mèo" flagAsCatDescription: "Bật tùy chọn này để đánh dấu tài khoản là một con mèo." flagShowTimelineReplies: "Hiện lượt trả lời trong bảng tin" -flagShowTimelineRepliesDescription: "Hiện lượt trả lời của người bạn theo dõi trên tút của những người khác." +flagShowTimelineRepliesDescription: "Hiện lượt trả lời của người bạn theo dõi trên + tút của những người khác." autoAcceptFollowed: "Tự động phê duyệt theo dõi từ những người mà bạn đang theo dõi" addAccount: "Thêm tài khoản" loginFailed: "Đăng nhập không thành công" showOnRemote: "Truy cập trang của người này" -general: "Tổng quan" +general: "Tổng quát" wallpaper: "Ảnh bìa" setWallpaper: "Đặt ảnh bìa" removeWallpaper: "Xóa ảnh bìa" @@ -156,7 +168,11 @@ searchWith: "Tìm kiếm: {q}" youHaveNoLists: "Bạn chưa có danh sách nào" followConfirm: "Bạn có chắc muốn theo dõi {name}?" proxyAccount: "Tài khoản proxy" -proxyAccountDescription: "Tài khoản proxy là tài khoản hoạt động như một người theo dõi từ xa cho người dùng trong những điều kiện nhất định. Ví dụ: khi người dùng thêm người dùng từ xa vào danh sách, hoạt động của người dùng từ xa sẽ không được chuyển đến phiên bản nếu không có người dùng cục bộ nào theo dõi người dùng đó, vì vậy tài khoản proxy sẽ theo dõi." +proxyAccountDescription: "Tài khoản proxy là tài khoản hoạt động như một người theo + dõi từ xa cho người dùng trong những điều kiện nhất định. Ví dụ: khi người dùng + thêm người dùng từ xa vào danh sách, hoạt động của người dùng từ xa sẽ không được + chuyển đến phiên bản nếu không có người dùng cục bộ nào theo dõi người dùng đó, + vì vậy tài khoản proxy sẽ theo dõi." host: "Host" selectUser: "Chọn người dùng" recipient: "Người nhận" @@ -168,9 +184,9 @@ latestRequestSentAt: "Yêu cầu cuối gửi lúc" latestRequestReceivedAt: "Yêu cầu cuối nhận lúc" latestStatus: "Trạng thái cuối cùng" storageUsage: "Dung lượng lưu trữ" -charts: "Đồ thị" -perHour: "Mỗi Giờ" -perDay: "Mỗi Ngày" +charts: "Biểu đồ" +perHour: "Mỗi giờ" +perDay: "Mỗi ngày" stopActivityDelivery: "Ngưng gửi hoạt động" blockThisInstance: "Chặn máy chủ này" operations: "Vận hành" @@ -186,11 +202,13 @@ instanceInfo: "Thông tin máy chủ" statistics: "Thống kê" clearQueue: "Xóa hàng đợi" clearQueueConfirmTitle: "Bạn có chắc muốn xóa hàng đợi?" -clearQueueConfirmText: "Mọi tút chưa được gửi còn lại trong hàng đợi sẽ không được liên hợp. Thông thường thao tác này không cần thiết." +clearQueueConfirmText: "Mọi tút chưa được gửi còn lại trong hàng đợi sẽ không được + liên hợp. Thông thường thao tác này không cần thiết." clearCachedFiles: "Xóa bộ nhớ đệm" clearCachedFilesConfirm: "Bạn có chắc muốn xóa sạch bộ nhớ đệm?" blockedInstances: "Máy chủ đã chặn" -blockedInstancesDescription: "Danh sách những máy chủ bạn muốn chặn. Chúng sẽ không thể giao tiếp với máy chủy này nữa." +blockedInstancesDescription: "Danh sách những máy chủ bạn muốn chặn. Chúng sẽ không + thể giao tiếp với máy chủy này nữa." muteAndBlock: "Ẩn và Chặn" mutedUsers: "Người đã ẩn" blockedUsers: "Người đã chặn" @@ -198,7 +216,7 @@ noUsers: "Chưa có ai" editProfile: "Sửa hồ sơ" noteDeleteConfirm: "Bạn có chắc muốn xóa tút này?" pinLimitExceeded: "Bạn đã đạt giới hạn số lượng tút có thể ghim" -intro: "Đã cài đặt Calckey! Xin hãy tạo tài khoản admin." +intro: "Đã cài đặt Firefish! Xin hãy tạo tài khoản admin." done: "Xong" processing: "Đang xử lý" preview: "Xem trước" @@ -239,7 +257,8 @@ saved: "Đã lưu" messaging: "Trò chuyện" upload: "Tải lên" keepOriginalUploading: "Giữ hình ảnh gốc" -keepOriginalUploadingDescription: "Giữ nguyên như hình ảnh được tải lên ban đầu. Nếu tắt, một phiên bản để hiển thị trên web sẽ được tạo khi tải lên." +keepOriginalUploadingDescription: "Giữ nguyên như hình ảnh được tải lên ban đầu. Nếu + tắt, một phiên bản để hiển thị trên web sẽ được tạo khi tải lên." fromDrive: "Từ ổ đĩa" fromUrl: "Từ URL" uploadFromUrl: "Tải lên bằng một URL" @@ -255,7 +274,8 @@ agreeTo: "Tôi đồng ý {0}" tos: "Điều khoản dịch vụ" start: "Bắt đầu" home: "Trang chính" -remoteUserCaution: "Vì người dùng này ở máy chủ khác, thông tin hiển thị có thể không đầy đủ." +remoteUserCaution: "Vì người dùng này ở máy chủ khác, thông tin hiển thị có thể không + đầy đủ." activity: "Hoạt động" images: "Hình ảnh" birthday: "Sinh nhật" @@ -288,7 +308,8 @@ unableToDelete: "Không thể xóa" inputNewFileName: "Nhập tên mới cho tập tin" inputNewDescription: "Nhập mô tả mới" inputNewFolderName: "Nhập tên mới cho thư mục" -circularReferenceFolder: "Thư mục đích là một thư mục con của thư mục bạn muốn di chuyển." +circularReferenceFolder: "Thư mục đích là một thư mục con của thư mục bạn muốn di + chuyển." hasChildFilesOrFolders: "Không thể xóa cho đến khi không còn gì trong thư mục." copyUrl: "Sao chép URL" rename: "Đổi tên" @@ -322,7 +343,8 @@ connectService: "Kết nối" disconnectService: "Ngắt kết nối" enableLocalTimeline: "Bật bảng tin máy chủ" enableGlobalTimeline: "Bật bảng tin liên hợp" -disablingTimelinesInfo: "Quản trị viên và Kiểm duyệt viên luôn có quyền truy cập mọi bảng tin, kể cả khi chúng không được bật." +disablingTimelinesInfo: "Quản trị viên và Kiểm duyệt viên luôn có quyền truy cập mọi + bảng tin, kể cả khi chúng không được bật." registration: "Đăng ký" enableRegistration: "Cho phép đăng ký mới" invite: "Mời" @@ -334,7 +356,8 @@ bannerUrl: "URL Ảnh bìa" backgroundImageUrl: "URL Ảnh nền" basicInfo: "Thông tin cơ bản" pinnedUsers: "Những người thú vị" -pinnedUsersDescription: "Liệt kê mỗi hàng một tên người dùng xuống dòng để ghim trên tab \"Khám phá\"." +pinnedUsersDescription: "Liệt kê mỗi hàng một tên người dùng xuống dòng để ghim trên + tab \"Khám phá\"." pinnedPages: "Trang đã ghim" pinnedPagesDescription: "Liệt kê các trang thú vị để ghim trên máy chủ." pinnedClipId: "ID của clip muốn ghim" @@ -347,14 +370,17 @@ recaptcha: "reCAPTCHA" enableRecaptcha: "Bật reCAPTCHA" recaptchaSiteKey: "Khóa của trang" recaptchaSecretKey: "Khóa bí mật" -avoidMultiCaptchaConfirm: "Dùng nhiều hệ thống Captcha có thể gây nhiễu giữa chúng. Bạn có muốn tắt các hệ thống Captcha khác hiện đang hoạt động không? Nếu bạn muốn chúng tiếp tục được bật, hãy nhấn hủy." +avoidMultiCaptchaConfirm: "Dùng nhiều hệ thống Captcha có thể gây nhiễu giữa chúng. + Bạn có muốn tắt các hệ thống Captcha khác hiện đang hoạt động không? Nếu bạn muốn + chúng tiếp tục được bật, hãy nhấn hủy." antennas: "Trạm phát sóng" manageAntennas: "Quản lý trạm phát sóng" name: "Tên" antennaSource: "Nguồn trạm phát sóng" antennaKeywords: "Từ khóa để nghe" antennaExcludeKeywords: "Từ khóa để lọc ra" -antennaKeywordsDescription: "Phân cách bằng dấu cách cho điều kiện AND hoặc bằng xuống dòng cho điều kiện OR." +antennaKeywordsDescription: "Phân cách bằng dấu cách cho điều kiện AND hoặc bằng xuống + dòng cho điều kiện OR." notifyAntenna: "Thông báo có tút mới" withFileAntenna: "Chỉ những tút có media" enableServiceworker: "Bật ServiceWorker" @@ -362,7 +388,7 @@ antennaUsersDescription: "Liệt kê mỗi hàng một tên người dùng" caseSensitive: "Trường hợp nhạy cảm" withReplies: "Bao gồm lượt trả lời" connectedTo: "Những tài khoản sau đã kết nối" -notesAndReplies: "Tút kèm trả lời" +notesAndReplies: "Lượt trả lời" withFiles: "Media" silence: "Ẩn" silenceConfirm: "Bạn có chắc muốn ẩn người này?" @@ -377,7 +403,7 @@ exploreFediverse: "Khám phá Fediverse" popularTags: "Hashtag thông dụng" userList: "Danh sách" about: "Giới thiệu" -aboutMisskey: "Về Misskey" +aboutFirefish: "Về Misskey" administrator: "Quản trị viên" token: "Token" twoStepAuthentication: "Xác minh 2 bước" @@ -433,7 +459,8 @@ invitationCode: "Mã mời" checking: "Đang kiểm tra..." available: "Khả dụng" unavailable: "Không khả dụng" -usernameInvalidFormat: "Bạn có thể dùng viết hoa/viết thường, chữ số, và dấu gạch dưới." +usernameInvalidFormat: "Bạn có thể dùng viết hoa/viết thường, chữ số, và dấu gạch + dưới." tooShort: "Quá ngắn" tooLong: "Quá dài" weakPassword: "Mật khẩu yếu" @@ -442,7 +469,8 @@ strongPassword: "Mật khẩu mạnh" passwordMatched: "Trùng khớp" passwordNotMatched: "Không trùng khớp" signinWith: "Đăng nhập bằng {x}" -signinFailed: "Không thể đăng nhập. Vui lòng kiểm tra tên người dùng và mật khẩu của bạn." +signinFailed: "Không thể đăng nhập. Vui lòng kiểm tra tên người dùng và mật khẩu của + bạn." tapSecurityKey: "Nhấn mã bảo mật của bạn" or: "Hoặc" language: "Ngôn ngữ" @@ -483,15 +511,20 @@ showFeaturedNotesInTimeline: "Hiện tút nổi bật trong bảng tin" objectStorage: "Đối tượng lưu trữ" useObjectStorage: "Dùng đối tượng lưu trữ" objectStorageBaseUrl: "Base URL" -objectStorageBaseUrlDesc: "URL được sử dụng làm tham khảo. Chỉ định URL của CDN hoặc Proxy của bạn nếu bạn đang sử dụng. Với S3 dùng 'https://.s3.amazonaws.com', còn GCS hoặc dịch vụ tương tự dùng 'https://storage.googleapis.com/', etc." +objectStorageBaseUrlDesc: "URL được sử dụng làm tham khảo. Chỉ định URL của CDN hoặc + Proxy của bạn nếu bạn đang sử dụng. Với S3 dùng 'https://.s3.amazonaws.com', + còn GCS hoặc dịch vụ tương tự dùng 'https://storage.googleapis.com/', etc." objectStorageBucket: "Bucket" objectStorageBucketDesc: "Nhập tên bucket dùng ở nhà cung cấp của bạn." objectStoragePrefix: "Tiền tố" -objectStoragePrefixDesc: "Các tập tin sẽ được lưu trữ trong các thư mục có tiền tố này." +objectStoragePrefixDesc: "Các tập tin sẽ được lưu trữ trong các thư mục có tiền tố + này." objectStorageEndpoint: "Đầu cuối" -objectStorageEndpointDesc: "Để trống nếu bạn đang dùng AWS S3, nếu không thì chỉ định đầu cuối là '' hoặc ':', tùy thuộc vào nhà cung cấp dịch vụ." +objectStorageEndpointDesc: "Để trống nếu bạn đang dùng AWS S3, nếu không thì chỉ định + đầu cuối là '' hoặc ':', tùy thuộc vào nhà cung cấp dịch vụ." objectStorageRegion: "Khu vực" -objectStorageRegionDesc: "Nhập một khu vực cụ thể như 'xx-east-1'. Nếu nhà cung cấp dịch vụ của bạn không phân biệt giữa các khu vực, hãy để trống hoặc nhập 'us-east-1'." +objectStorageRegionDesc: "Nhập một khu vực cụ thể như 'xx-east-1'. Nếu nhà cung cấp + dịch vụ của bạn không phân biệt giữa các khu vực, hãy để trống hoặc nhập 'us-east-1'." objectStorageUseSSL: "Dùng SSL" objectStorageUseSSLDesc: "Tắt nếu bạn không dùng HTTPS để kết nối API" objectStorageUseProxy: "Kết nối thông qua Proxy" @@ -523,7 +556,8 @@ sort: "Sắp xếp" ascendingOrder: "Tăng dần" descendingOrder: "Giảm dần" scratchpad: "Scratchpad" -scratchpadDescription: "Scratchpad cung cấp môi trường cho các thử nghiệm AiScript. Bạn có thể viết, thực thi và kiểm tra kết quả tương tác với Calckey trong đó." +scratchpadDescription: "Scratchpad cung cấp môi trường cho các thử nghiệm AiScript. + Bạn có thể viết, thực thi và kiểm tra kết quả tương tác với Firefish trong đó." output: "Nguồn ra" script: "Kịch bản" disablePagesScript: "Tắt AiScript trên Trang" @@ -531,11 +565,14 @@ updateRemoteUser: "Cập nhật thông tin người dùng ở máy chủ khác" deleteAllFiles: "Xóa toàn bộ tập tin" deleteAllFilesConfirm: "Bạn có chắc xóa toàn bộ tập tin?" removeAllFollowing: "Ngưng theo dõi tất cả mọi người" -removeAllFollowingDescription: "Thực hiện điều này sẽ ngưng theo dõi tất cả các tài khoản khỏi {host}. Chỉ thực hiện điều này nếu máy chủ không còn tồn tại." +removeAllFollowingDescription: "Thực hiện điều này sẽ ngưng theo dõi tất cả các tài + khoản khỏi {host}. Chỉ thực hiện điều này nếu máy chủ không còn tồn tại." userSuspended: "Người này đã bị vô hiệu hóa." userSilenced: "Người này đã bị ẩn" yourAccountSuspendedTitle: "Tài khoản bị vô hiệu hóa" -yourAccountSuspendedDescription: "Tài khoản này đã bị vô hiệu hóa do vi phạm quy tắc máy chủ hoặc điều tương tự. Liên hệ với quản trị viên nếu bạn muốn biết lý do chi tiết hơn. Vui lòng không tạo tài khoản mới." +yourAccountSuspendedDescription: "Tài khoản này đã bị vô hiệu hóa do vi phạm quy tắc + máy chủ hoặc điều tương tự. Liên hệ với quản trị viên nếu bạn muốn biết lý do chi + tiết hơn. Vui lòng không tạo tài khoản mới." menu: "Menu" divider: "Phân chia" addItem: "Thêm mục" @@ -576,12 +613,14 @@ permission: "Cho phép " enableAll: "Bật toàn bộ" disableAll: "Tắt toàn bộ" tokenRequested: "Cấp quyền truy cập vào tài khoản" -pluginTokenRequestedDescription: "Plugin này sẽ có thể sử dụng các quyền được đặt ở đây." +pluginTokenRequestedDescription: "Plugin này sẽ có thể sử dụng các quyền được đặt + ở đây." notificationType: "Loại thông báo" edit: "Sửa" emailServer: "Email máy chủ" enableEmail: "Bật phân phối email" -emailConfigInfo: "Được dùng để xác minh email của bạn lúc đăng ký hoặc nếu bạn quên mật khẩu của mình" +emailConfigInfo: "Được dùng để xác minh email của bạn lúc đăng ký hoặc nếu bạn quên + mật khẩu của mình" email: "Email" emailAddress: "Địa chỉ email" smtpConfig: "Cấu hình máy chủ SMTP" @@ -602,7 +641,7 @@ makeActive: "Kích hoạt" display: "Hiển thị" copy: "Sao chép" metrics: "Số liệu" -overview: "Tổng quan" +overview: "Chung" logs: "Nhật ký" delayed: "Độ trễ" database: "Cơ sở dữ liệu" @@ -611,10 +650,13 @@ create: "Tạo" notificationSetting: "Cài đặt thông báo" notificationSettingDesc: "Chọn loại thông báo bạn muốn hiển thị." useGlobalSetting: "Dùng thiết lập chung" -useGlobalSettingDesc: "Nếu được bật, cài đặt thông báo của bạn sẽ được áp dụng. Nếu bị tắt, có thể thực hiện các thiết lập riêng lẻ." +useGlobalSettingDesc: "Nếu được bật, cài đặt thông báo của bạn sẽ được áp dụng. Nếu + bị tắt, có thể thực hiện các thiết lập riêng lẻ." other: "Khác" regenerateLoginToken: "Tạo lại mã đăng nhập" -regenerateLoginTokenDescription: "Tạo lại mã nội bộ có thể dùng để đăng nhập. Thông thường hành động này là không cần thiết. Nếu được tạo lại, tất cả các thiết bị sẽ bị đăng xuất." +regenerateLoginTokenDescription: "Tạo lại mã nội bộ có thể dùng để đăng nhập. Thông + thường hành động này là không cần thiết. Nếu được tạo lại, tất cả các thiết bị sẽ + bị đăng xuất." setMultipleBySeparatingWithSpace: "Tách nhiều mục nhập bằng dấu cách." fileIdOrUrl: "ID tập tin hoặc URL" behavior: "Thao tác" @@ -622,19 +664,22 @@ sample: "Ví dụ" abuseReports: "Lượt báo cáo" reportAbuse: "Báo cáo" reportAbuseOf: "Báo cáo {name}" -fillAbuseReportDescription: "Vui lòng điền thông tin chi tiết về báo cáo này. Nếu đó là về một tút cụ thể, hãy kèm theo URL của tút." +fillAbuseReportDescription: "Vui lòng điền thông tin chi tiết về báo cáo này. Nếu + đó là về một tút cụ thể, hãy kèm theo URL của tút." abuseReported: "Báo cáo đã được gửi. Cảm ơn bạn nhiều." reporter: "Người báo cáo" reporteeOrigin: "Bị báo cáo" reporterOrigin: "Máy chủ người báo cáo" forwardReport: "Chuyển tiếp báo cáo cho máy chủ từ xa" -forwardReportIsAnonymous: "Thay vì tài khoản của bạn, một tài khoản hệ thống ẩn danh sẽ được hiển thị dưới dạng người báo cáo ở máy chủ từ xa." +forwardReportIsAnonymous: "Thay vì tài khoản của bạn, một tài khoản hệ thống ẩn danh + sẽ được hiển thị dưới dạng người báo cáo ở máy chủ từ xa." send: "Gửi" abuseMarkAsResolved: "Đánh dấu đã xử lý" openInNewTab: "Mở trong tab mới" openInSideView: "Mở trong thanh bên" defaultNavigationBehaviour: "Thao tác điều hướng mặc định" -editTheseSettingsMayBreakAccount: "Việc chỉnh sửa các cài đặt này có thể làm hỏng tài khoản của bạn." +editTheseSettingsMayBreakAccount: "Việc chỉnh sửa các cài đặt này có thể làm hỏng + tài khoản của bạn." instanceTicker: "Thông tin máy chủ của tút" waitingFor: "Đang đợi {x}" random: "Ngẫu nhiên" @@ -646,9 +691,11 @@ createNew: "Tạo mới" optional: "Không bắt buộc" createNewClip: "Tạo một ghim mới" unclip: "Bỏ ghim" -confirmToUnclipAlreadyClippedNote: "Bài đăng này là một phần của \"{name}\" ghim. Bạn có muốn bỏ khỏi ghim?" +confirmToUnclipAlreadyClippedNote: "Bài đăng này là một phần của \"{name}\" ghim. + Bạn có muốn bỏ khỏi ghim?" public: "Công khai" -i18nInfo: "Calckey đang được các tình nguyện viên dịch sang nhiều thứ tiếng khác nhau. Bạn có thể hỗ trợ tại {link}." +i18nInfo: "Firefish đang được các tình nguyện viên dịch sang nhiều thứ tiếng khác + nhau. Bạn có thể hỗ trợ tại {link}." manageAccessTokens: "Tạo mã truy cập" accountInfo: "Thông tin tài khoản" notesCount: "Số lượng tút" @@ -667,12 +714,15 @@ no: "Từ chối" driveFilesCount: "Số tập tin trong Ổ đĩa" driveUsage: "Dung lượng ổ đĩa" noCrawle: "Từ chối lập chỉ mục" -noCrawleDescription: "Không cho công cụ tìm kiếm lập chỉ mục trang hồ sơ, tút, Trang, etc." -lockedAccountInfo: "Ghi chú của bạn sẽ hiển thị với bất kỳ ai, trừ khi bạn đặt chế độ hiển thị tút của mình thành \"Chỉ người theo dõi\"." +noCrawleDescription: "Không cho công cụ tìm kiếm lập chỉ mục trang hồ sơ, tút, Trang, + etc." +lockedAccountInfo: "Ghi chú của bạn sẽ hiển thị với bất kỳ ai, trừ khi bạn đặt chế + độ hiển thị tút của mình thành \"Chỉ người theo dõi\"." alwaysMarkSensitive: "Luôn đánh dấu NSFW" loadRawImages: "Tải ảnh gốc thay vì ảnh thu nhỏ" disableShowingAnimatedImages: "Không phát ảnh động" -verificationEmailSent: "Một email xác minh đã được gửi. Vui lòng nhấn vào liên kết đính kèm để hoàn tất xác minh." +verificationEmailSent: "Một email xác minh đã được gửi. Vui lòng nhấn vào liên kết + đính kèm để hoàn tất xác minh." notSet: "Chưa đặt" emailVerified: "Email đã được xác minh" noteFavoritesCount: "Số lượng tút yêu thích" @@ -684,14 +734,16 @@ clips: "Ghim" experimentalFeatures: "Tính năng thử nghiệm" developer: "Nhà phát triển" makeExplorable: "Không hiện tôi trong \"Khám phá\"" -makeExplorableDescription: "Nếu bạn tắt, tài khoản của bạn sẽ không hiện trong mục \"Khám phá\"." +makeExplorableDescription: "Nếu bạn tắt, tài khoản của bạn sẽ không hiện trong mục + \"Khám phá\"." showGapBetweenNotesInTimeline: "Hiện dải phân cách giữa các tút trên bảng tin" duplicate: "Tạo bản sao" left: "Bên trái" center: "Giữa" wide: "Rộng" narrow: "Thu hẹp" -reloadToApplySetting: "Cài đặt này sẽ chỉ áp dụng sau khi tải lại trang. Tải lại ngay bây giờ?" +reloadToApplySetting: "Cài đặt này sẽ chỉ áp dụng sau khi tải lại trang. Tải lại ngay + bây giờ?" needReloadToApply: "Cần tải lại để điều này được áp dụng." showTitlebar: "Hiện thanh tựa đề" clearCache: "Xóa bộ nhớ đệm" @@ -699,7 +751,10 @@ onlineUsersCount: "{n} người đang online" nUsers: "{n} Người" nNotes: "{n} Tút" sendErrorReports: "Báo lỗi" -sendErrorReportsDescription: "Khi được bật, thông tin chi tiết về lỗi sẽ được chia sẻ với Calckey khi xảy ra sự cố, giúp nâng cao chất lượng của Calckey.\nBao gồm thông tin như phiên bản hệ điều hành của bạn, trình duyệt bạn đang sử dụng, hoạt động của bạn trong Calckey, v.v." +sendErrorReportsDescription: "Khi được bật, thông tin chi tiết về lỗi sẽ được chia + sẻ với Firefish khi xảy ra sự cố, giúp nâng cao chất lượng của Firefish.\nBao gồm + thông tin như phiên bản hệ điều hành của bạn, trình duyệt bạn đang sử dụng, hoạt + động của bạn trong Firefish, v.v." myTheme: "Theme của tôi" backgroundColor: "Màu nền" accentColor: "Màu phụ" @@ -708,7 +763,7 @@ saveAs: "Lưu thành" advanced: "Nâng cao" value: "Giá trị" createdAt: "Ngày tạo" -updatedAt: "Cập nhật lúc" +updatedAt: "Cập nhật" saveConfirm: "Lưu thay đổi?" deleteConfirm: "Bạn có muốn xóa không?" invalidValue: "Giá trị không hợp lệ." @@ -738,14 +793,16 @@ unlikeConfirm: "Bạn có chắc muốn bỏ thích ?" fullView: "Kích thước đầy đủ" quitFullView: "Thoát toàn màn hình" addDescription: "Thêm mô tả" -userPagePinTip: "Bạn có thể hiển thị các tút ở đây bằng cách chọn \"Ghim vào hồ sơ\" từ menu của mỗi tút." +userPagePinTip: "Bạn có thể hiển thị các tút ở đây bằng cách chọn \"Ghim vào hồ sơ\"\ + \ từ menu của mỗi tút." notSpecifiedMentionWarning: "Tút này có đề cập đến những người không mong muốn" info: "Giới thiệu" userInfo: "Thông tin người dùng" unknown: "Chưa biết" onlineStatus: "Trạng thái" hideOnlineStatus: "Ẩn trạng thái online" -hideOnlineStatusDescription: "Ẩn trạng thái online của bạn làm giảm sự tiện lợi của một số tính năng như tìm kiếm." +hideOnlineStatusDescription: "Ẩn trạng thái online của bạn làm giảm sự tiện lợi của + một số tính năng như tìm kiếm." online: "Online" active: "Hoạt động" offline: "Offline" @@ -780,22 +837,24 @@ emailNotConfiguredWarning: "Chưa đặt địa chỉ email." ratio: "Tỷ lệ" previewNoteText: "Hiện xem trước" customCss: "Tùy chỉnh CSS" -customCssWarn: "Chỉ sử dụng những cài đặt này nếu bạn biết rõ về nó. Việc nhập các giá trị không đúng có thể khiến máy chủ hoạt động không bình thường." +customCssWarn: "Chỉ sử dụng những cài đặt này nếu bạn biết rõ về nó. Việc nhập các + giá trị không đúng có thể khiến máy chủ hoạt động không bình thường." global: "Toàn cầu" squareAvatars: "Ảnh đại diện vuông" sent: "Gửi" received: "Đã nhận" -searchResult: "Kết quả tìm kiếm" +searchResult: "Tìm thấy" hashtags: "Hashtag" troubleshooting: "Khắc phục sự cố" useBlurEffect: "Dùng hiệu ứng làm mờ trong giao diện" learnMore: "Tìm hiểu thêm" -misskeyUpdated: "Calckey vừa được cập nhật!" +misskeyUpdated: "Firefish vừa được cập nhật!" whatIsNew: "Hiện những thay đổi" translate: "Dịch" translatedFrom: "Dịch từ {x}" accountDeletionInProgress: "Đang xử lý việc xóa tài khoản" -usernameInfo: "Bạn có thể sử dụng chữ cái (a ~ z, A ~ Z), chữ số (0 ~ 9) hoặc dấu gạch dưới (_). Tên người dùng không thể thay đổi sau này." +usernameInfo: "Bạn có thể sử dụng chữ cái (a ~ z, A ~ Z), chữ số (0 ~ 9) hoặc dấu + gạch dưới (_). Tên người dùng không thể thay đổi sau này." aiChanMode: "Chế độ Ai" keepCw: "Giữ cảnh báo nội dung" pubSub: "Tài khoản Chính/Phụ" @@ -811,12 +870,14 @@ filter: "Bộ lọc" controlPanel: "Bảng điều khiển" manageAccounts: "Quản lý tài khoản" makeReactionsPublic: "Đặt lịch sử biểu cảm công khai" -makeReactionsPublicDescription: "Điều này sẽ hiển thị công khai danh sách tất cả các biểu cảm trước đây của bạn." +makeReactionsPublicDescription: "Điều này sẽ hiển thị công khai danh sách tất cả các + biểu cảm trước đây của bạn." classic: "Cổ điển" muteThread: "Không quan tâm nữa" unmuteThread: "Quan tâm tút này" ffVisibility: "Hiển thị Theo dõi/Người theo dõi" -ffVisibilityDescription: "Quyết định ai có thể xem những người bạn theo dõi và những người theo dõi bạn." +ffVisibilityDescription: "Quyết định ai có thể xem những người bạn theo dõi và những + người theo dõi bạn." continueThread: "Tiếp tục xem chuỗi tút" deleteAccountConfirm: "Điều này sẽ khiến tài khoản bị xóa vĩnh viễn. Vẫn tiếp tục?" incorrectPassword: "Sai mật khẩu." @@ -857,14 +918,17 @@ thereIsUnresolvedAbuseReportWarning: "Có báo cáo chưa xử lí." recommended: "Được đề xuất" check: "Kiểm tra" driveCapOverrideLabel: "Thay đổi dung lượng drive cho người này" -driveCapOverrideCaption: "Đặt dung lượng drive về mặc định bằng cách nhập 0 hoặc số âm." +driveCapOverrideCaption: "Đặt dung lượng drive về mặc định bằng cách nhập 0 hoặc số + âm." requireAdminForView: "Bạn phải đăng nhập như là quản trị viên mới xem được." isSystemAccount: "Đã tạo một tài khoản và tự động vận hành bởi hệ thống." typeToConfirm: "Nhấn {x} để xác nhận" deleteAccount: "Xóa tài khoản" document: "Tài liệu" numberOfPageCache: "Số lượng trang bộ nhớ đệm" -numberOfPageCacheDescription: "Việc tăng con số này sẽ cải thiện sự thuận tiện cho người dùng nhưng gây ra nhiều áp lực hơn cho máy chủ cũng như sử dụng nhiều bộ nhớ hơn." +numberOfPageCacheDescription: "Việc tăng con số này sẽ cải thiện sự thuận tiện cho + người dùng nhưng gây ra nhiều áp lực hơn cho máy chủ cũng như sử dụng nhiều bộ nhớ + hơn." logoutConfirm: "Bạn có chắc muốn đăng xuất?" lastActiveDate: "Lần cuối vào" statusbar: "Thanh trạng thái" @@ -881,24 +945,33 @@ sensitiveMediaDetection: "Tự động phát hiện NSFW" localOnly: "Chỉ trên máy chủ" remoteOnly: "Chỉ máy chủ từ xa" failedToUpload: "Tải lên thất bại" -cannotUploadBecauseInappropriate: "Không thể tải lên tập tin này vì các phần của tập tin đã được phát hiện có khả năng là NSFW." +cannotUploadBecauseInappropriate: "Không thể tải lên tập tin này vì các phần của tập + tin đã được phát hiện có khả năng là NSFW." cannotUploadBecauseNoFreeSpace: "Tải lên không thành công do thiếu dung lượng Drive." beta: "Beta" enableAutoSensitive: "Tự động đánh dấu NSFW" -enableAutoSensitiveDescription: "Cho phép tự động phát hiện và đánh dấu media NSFW thông qua học máy, nếu có thể. Ngay cả khi tùy chọn này bị tắt, nó vẫn có thể được bật trên toàn máy chủ." -activeEmailValidationDescription: "Cho phép xác minh địa chỉ email chặt chẽ hơn, bao gồm việc kiểm tra các địa chỉ dùng một lần và xem nó có thực sự được giao tiếp hay không. Khi bỏ chọn, chỉ định dạng của email được xác minh." +enableAutoSensitiveDescription: "Cho phép tự động phát hiện và đánh dấu media NSFW + thông qua học máy, nếu có thể. Ngay cả khi tùy chọn này bị tắt, nó vẫn có thể được + bật trên toàn máy chủ." +activeEmailValidationDescription: "Cho phép xác minh địa chỉ email chặt chẽ hơn, bao + gồm việc kiểm tra các địa chỉ dùng một lần và xem nó có thực sự được giao tiếp hay + không. Khi bỏ chọn, chỉ định dạng của email được xác minh." navbar: "Thanh điều hướng" shuffle: "Xáo trộn" account: "Tài khoản của bạn" move: "Di chuyển" _sensitiveMediaDetection: - description: "Giảm nỗ lực kiểm duyệt máy chủ thông qua việc tự động nhận dạng media NSFW thông qua học máy. Điều này sẽ làm tăng một chút áp lực trên máy chủ." + description: "Giảm nỗ lực kiểm duyệt máy chủ thông qua việc tự động nhận dạng media + NSFW thông qua học máy. Điều này sẽ làm tăng một chút áp lực trên máy chủ." sensitivity: "Phát hiện nhạy cảm" - sensitivityDescription: "Giảm độ nhạy sẽ dẫn đến ít phát hiện sai hơn (dương tính giả), tăng nó sẽ dẫn đến ít phát hiện sai hơn (âm tính giả)." + sensitivityDescription: "Giảm độ nhạy sẽ dẫn đến ít phát hiện sai hơn (dương tính + giả), tăng nó sẽ dẫn đến ít phát hiện sai hơn (âm tính giả)." setSensitiveFlagAutomatically: "Đánh dấu là NSFW" - setSensitiveFlagAutomaticallyDescription: "Kết quả của phát hiện nội bộ sẽ được giữ lại ngay cả khi tùy chọn này bị tắt." + setSensitiveFlagAutomaticallyDescription: "Kết quả của phát hiện nội bộ sẽ được + giữ lại ngay cả khi tùy chọn này bị tắt." analyzeVideos: "Bật chuẩn đoán video" - analyzeVideosDescription: "Phân tích video bên cạnh hình ảnh. Điều này sẽ làm tăng một chút áp lực trên máy chủ." + analyzeVideosDescription: "Phân tích video bên cạnh hình ảnh. Điều này sẽ làm tăng + một chút áp lực trên máy chủ." _emailUnavailable: used: "Địa chỉ email đã được sử dụng" format: "Địa chỉ email không hợp lệ" @@ -912,11 +985,15 @@ _ffVisibility: _signup: almostThere: "Gần xong rồi" emailAddressInfo: "Hãy điền địa chỉ email của bạn. Nó sẽ không được công khai." - emailSent: "Một email xác minh đã được gửi đến địa chỉ email ({email}) của bạn. Vui lòng nhấn vào liên kết trong đó để hoàn tất việc tạo tài khoản." + emailSent: "Một email xác minh đã được gửi đến địa chỉ email ({email}) của bạn. + Vui lòng nhấn vào liên kết trong đó để hoàn tất việc tạo tài khoản." _accountDelete: accountDelete: "Xóa tài khoản" - mayTakeTime: "Vì xóa tài khoản là một quá trình tốn nhiều tài nguyên nên có thể mất một khoảng thời gian để hoàn thành, tùy thuộc vào lượng nội dung bạn đã tạo và số lượng tập tin bạn đã tải lên." - sendEmail: "Sau khi hoàn tất việc xóa tài khoản, một email sẽ được gửi đến địa chỉ email đã đăng ký tài khoản này." + mayTakeTime: "Vì xóa tài khoản là một quá trình tốn nhiều tài nguyên nên có thể + mất một khoảng thời gian để hoàn thành, tùy thuộc vào lượng nội dung bạn đã tạo + và số lượng tập tin bạn đã tải lên." + sendEmail: "Sau khi hoàn tất việc xóa tài khoản, một email sẽ được gửi đến địa chỉ + email đã đăng ký tài khoản này." requestAccountDelete: "Yêu cầu xóa tài khoản" started: "Đang bắt đầu xóa tài khoản." inProgress: "Đang xóa dần tài khoản." @@ -924,9 +1001,12 @@ _ad: back: "Quay lại" reduceFrequencyOfThisAd: "Hiện ít lại" _forgotPassword: - enterEmail: "Nhập địa chỉ email bạn đã sử dụng để đăng ký. Một liên kết mà bạn có thể đặt lại mật khẩu của mình sau đó sẽ được gửi đến nó." - ifNoEmail: "Nếu bạn không sử dụng email lúc đăng ký, vui lòng liên hệ với quản trị viên." - contactAdmin: "Máy chủ này không hỗ trợ sử dụng địa chỉ email, vui lòng liên hệ với quản trị viên để đặt lại mật khẩu của bạn." + enterEmail: "Nhập địa chỉ email bạn đã sử dụng để đăng ký. Một liên kết mà bạn có + thể đặt lại mật khẩu của mình sau đó sẽ được gửi đến nó." + ifNoEmail: "Nếu bạn không sử dụng email lúc đăng ký, vui lòng liên hệ với quản trị + viên." + contactAdmin: "Máy chủ này không hỗ trợ sử dụng địa chỉ email, vui lòng liên hệ + với quản trị viên để đặt lại mật khẩu của bạn." _gallery: my: "Kho Ảnh" liked: "Tút Đã Thích" @@ -950,11 +1030,13 @@ _preferencesBackups: inputName: "Nhập tên bản sao lưu" cannotSave: "Không thể lưu" nameAlreadyExists: "Bản sao lưu \"{name}\" đã tồn tại. Xin nhập tên khác." - applyConfirm: "Bạn có chắc muốn áp dụng bản sao lưu \"{name}\" cho thiết bị này? Thiết lập hiện tại sẽ bị ghi đè." + applyConfirm: "Bạn có chắc muốn áp dụng bản sao lưu \"{name}\" cho thiết bị này? + Thiết lập hiện tại sẽ bị ghi đè." saveConfirm: "Lưu bản sao lưu {name}?" deleteConfirm: "Xóa bản sao lưu {name}?" renameConfirm: "Đổi tên bản sao lưu \"{old}\" thành \"{new}\"?" - noBackups: "Chưa có bản sao lưu. Bạn có thể sao lưu thiết lập trên máy chủ này bằng cách sử dụng \"Tạo sao lưu\"." + noBackups: "Chưa có bản sao lưu. Bạn có thể sao lưu thiết lập trên máy chủ này bằng + cách sử dụng \"Tạo sao lưu\"." createdAt: "Tạo vào: {time} {date}" updatedAt: "Cập nhật: {time} {date}" cannotLoad: "Tải thất bại" @@ -965,23 +1047,32 @@ _registry: keys: "Các mã" domain: "Tên miền" createKey: "Tạo mã" -_aboutMisskey: +_aboutFirefish: about: "Misskey là phần mềm mã nguồn mở được phát triển bởi syuilo từ năm 2014." contributors: "Những người đóng góp nổi bật" allContributors: "Toàn bộ người đóng góp" source: "Mã nguồn" - translation: "Dịch Calckey" - donate: "Ủng hộ Calckey" - morePatrons: "Chúng tôi cũng trân trọng sự hỗ trợ của nhiều người đóng góp khác không được liệt kê ở đây. Cảm ơn! 🥰" + translation: "Dịch Firefish" + donate: "Ủng hộ Firefish" + morePatrons: "Chúng tôi cũng trân trọng sự hỗ trợ của nhiều người đóng góp khác + không được liệt kê ở đây. Cảm ơn! 🥰" patrons: "Người ủng hộ" + patronsList: Liệt kê theo thứ tự, không theo số tiền ủng hộ. Hãy để tên bạn ở đây! + donateTitle: Thích Firefish? + pleaseDonateToFirefish: Hãy cân nhắc ủng hộ Firefish phát triển. + donateHost: Ủng hộ {host} + pleaseDonateToHost: Cũng như ủng hộ chi phí vận hành máy chủ {host} của bạn. + sponsors: Nhà tài trợ Firefish + misskeyContributors: Người đóng góp Misskey _nsfw: respect: "Ẩn nội dung NSFW" ignore: "Hiện nội dung NSFW" force: "Ẩn mọi media" _mfm: cheatSheet: "MFM Cheatsheet" - intro: "MFM là ngôn ngữ phát triển độc quyền của Calckey có thể được sử dụng ở nhiều nơi. Tại đây bạn có thể xem danh sách tất cả các cú pháp MFM có sẵn." - dummy: "Calckey mở rộng thế giới Fediverse" + intro: "MFM là ngôn ngữ phát triển độc quyền của Firefish có thể được sử dụng ở + nhiều nơi. Tại đây bạn có thể xem danh sách tất cả các cú pháp MFM có sẵn." + dummy: "Firefish mở rộng thế giới Fediverse" mention: "Nhắc đến" mentionDescription: "Bạn có thể nhắc đến ai đó bằng cách sử dụng @tên người dùng." hashtag: "Hashtag" @@ -999,11 +1090,13 @@ _mfm: inlineCode: "Mã (Trong dòng)" inlineCodeDescription: "Hiển thị tô sáng cú pháp trong dòng cho mã (chương trình)." blockCode: "Mã (Khối)" - blockCodeDescription: "Hiển thị tô sáng cú pháp cho mã nhiều dòng (chương trình) trong một khối." + blockCodeDescription: "Hiển thị tô sáng cú pháp cho mã nhiều dòng (chương trình) + trong một khối." inlineMath: "Toán học (Trong dòng)" inlineMathDescription: "Hiển thị công thức toán (KaTeX) trong dòng" blockMath: "Toán học (Khối)" - blockMathDescription: "Hiển thị công thức toán học nhiều dòng (KaTeX) trong một khối" + blockMathDescription: "Hiển thị công thức toán học nhiều dòng (KaTeX) trong một + khối" quote: "Trích dẫn" quoteDescription: "Hiển thị nội dung dạng lời trích dạng." emoji: "Tùy chỉnh emoji" @@ -1044,6 +1137,25 @@ _mfm: rotateDescription: "Xoay nội dung theo một góc cụ thể." plain: "Đơn giản" plainDescription: "Vô hiệu hóa mọi hiệu ứng MFM chứa trong hiệu ứng MFM này." + stop: Dừng CĐN + play: Phát CĐN + warn: CĐN có thể gây đau mắt hoặc chóng mặt + alwaysPlay: Luôn tự phát các chuyển động nhanh + position: Vị trí + scaleDescription: Tỉ lệ nội dung theo số cụ thể. + advanced: Nâng cao MFM + positionDescription: Di chuyển nội dung theo một số cụ thể. + foregroundDescription: Đổi màu xung quanh văn bản. + background: Màu nền + advancedDescription: Nếu tắt, chỉ cho phép đánh dấu cơ bản trừ khi đang phát MFM + động + fade: Làm mờ + scale: Tỉ lệ + crop: Cắt + foreground: Màu nền xung quanh + fadeDescription: Làm mờ content vào và ra. + cropDescription: Cắt nội dung. + backgroundDescription: Đổi màu nền của văn bản. _instanceTicker: none: "Không hiển thị" remote: "Hiện cho người dùng từ máy chủ khác" @@ -1052,6 +1164,7 @@ _serverDisconnectedBehavior: reload: "Tự động tải lại" dialog: "Hiện hộp thoại cảnh báo" quiet: "Hiển thị cảnh báo không phô trương" + nothing: không làm gì _channel: create: "Tạo kênh" edit: "Chỉnh sửa kênh" @@ -1062,6 +1175,8 @@ _channel: following: "Đang theo dõi" usersCount: "{n} Thành viên" notesCount: "{n} Tút" + nameOnly: Chỉ tên + nameAndDescription: Tên và mô tả _menuDisplay: sideFull: "Thanh bên" sideIcon: "Thanh bên (Biểu tượng)" @@ -1069,15 +1184,20 @@ _menuDisplay: hide: "Ẩn" _wordMute: muteWords: "Ẩn từ ngữ" - muteWordsDescription: "Separate with spaces for an AND condition or with line breaks for an OR condition." - muteWordsDescription2: "Bao quanh các từ khóa bằng dấu gạch chéo để sử dụng cụm từ thông dụng." + muteWordsDescription: "Separate with spaces for an AND condition or with line breaks + for an OR condition." + muteWordsDescription2: "Bao quanh các từ khóa bằng dấu gạch chéo để sử dụng cụm + từ thông dụng." softDescription: "Ẩn các tút phù hợp điều kiện đã đặt khỏi bảng tin." - hardDescription: "Ngăn các tút đáp ứng các điều kiện đã đặt xuất hiện trên bảng tin. Lưu ý, những tút này sẽ không được thêm vào bảng tin ngay cả khi các điều kiện được thay đổi." + hardDescription: "Ngăn các tút đáp ứng các điều kiện đã đặt xuất hiện trên bảng + tin. Lưu ý, những tút này sẽ không được thêm vào bảng tin ngay cả khi các điều + kiện được thay đổi." soft: "Yếu" hard: "Mạnh" mutedNotes: "Những tút đã ẩn" _instanceMute: - instanceMuteDescription: "Thao tác này sẽ ẩn mọi tút/lượt đăng lại từ các máy chủ được liệt kê, bao gồm cả những tút dạng trả lời từ máy chủ bị ẩn." + instanceMuteDescription: "Thao tác này sẽ ẩn mọi tút/lượt đăng lại từ các máy chủ + được liệt kê, bao gồm cả những tút dạng trả lời từ máy chủ bị ẩn." instanceMuteDescription2: "Tách bằng cách xuống dòng" title: "Ẩn tút từ những máy chủ đã liệt kê." heading: "Danh sách những máy chủ bị ẩn" @@ -1109,7 +1229,8 @@ _theme: darken: "Độ tối" lighten: "Độ sáng" inputConstantName: "Nhập tên cho hằng số này" - importInfo: "Nếu bạn nhập mã theme ở đây, bạn có thể nhập mã đó vào trình chỉnh sửa theme" + importInfo: "Nếu bạn nhập mã theme ở đây, bạn có thể nhập mã đó vào trình chỉnh + sửa theme" deleteConstantConfirm: "Bạn có chắc muốn xóa hằng số {const} không?" keys: accent: "Màu phụ" @@ -1168,7 +1289,7 @@ _ago: justNow: "Vừa xong" secondsAgo: "{n}s trước" minutesAgo: "{n} phút trước" - hoursAgo: "{n} giờ trước" + hoursAgo: "{n} giờ" daysAgo: "{n} ngày trước" weeksAgo: "{n} tuần trước" monthsAgo: "{n} tháng trước" @@ -1179,36 +1300,70 @@ _time: hour: "giờ" day: "ngày" _tutorial: - title: "How to use Calckey" + title: "How to use Firefish" step1_1: "Welcome!" step1_2: "Let's get you set up. You'll be up and running in no time!" step2_1: "First, please fill out your profile." - step2_2: "Providing some information about who you are will make it easier for others to tell if they want to see your notes or follow you." + step2_2: "Providing some information about who you are will make it easier for others + to tell if they want to see your notes or follow you." step3_1: "Now time to follow some people!" - step3_2: "Your home and social timelines are based off of who you follow, so try following a couple accounts to get started.\nClick the plus circle on the top right of a profile to follow them." + step3_2: "Your home and social timelines are based off of who you follow, so try + following a couple accounts to get started.\nClick the plus circle on the top + right of a profile to follow them." step4_1: "Let's get you out there." - step4_2: "For your first post, some people like to made a {introduction} post or a simple \"Hello world!\"" + step4_2: "For your first post, some people like to made a {introduction} post or + a simple \"Hello world!\"" step5_1: "Timelines, timelines everywhere!" step5_2: "Your instance has {timelines} different timelines enabled." step5_3: "The Home {icon} timeline is where you can see posts from your followers." - step5_4: "The Local {icon} timeline is where you can see posts from everyone else on this instance." - step5_5: "The Recommended {icon} timeline is where you can see posts from instances the admins recommend." - step5_6: "The Social {icon} timeline is where you can see posts from friends of your followers." - step5_7: "The Global {icon} timeline is where you can see posts from every other connected instance." + step5_4: "The Local {icon} timeline is where you can see posts from everyone else + on this instance." + step5_5: "The Recommended {icon} timeline is where you can see posts from instances + the admins recommend." + step5_6: "The Social {icon} timeline is where you can see posts from friends of + your followers." + step5_7: "The Global {icon} timeline is where you can see posts from every other + connected instance." step6_1: "So, what is this place?" - step6_2: "Well, you didn't just join Calckey. You joined a portal to the Fediverse, an interconnected network of thousands of servers, called \"instances\"." - step6_3: "Each server works in different ways, and not all servers run Calckey. This one does though! It's a bit complicated, but you'll get the hang of it in no time." - step6_4: "Now go, explore, and have fun!" + step6_2: "Well, you didn't just join Firefish. You joined a portal to the Fediverse, + an interconnected network of thousands of servers, called \"instances\"." + step6_3: "Each server works in different ways, and not all servers run Firefish. + This one does though! It's a bit complicated, but you'll get the hang of it in + no time." + step6_4: "Bây giờ bắt đầu khám phá, và vui thôi!" _2fa: alreadyRegistered: "Bạn đã đăng ký thiết bị xác minh 2 bước." registerTOTP: "Đăng ký một thiết bị" registerSecurityKey: "Đăng ký một mã bảo vệ" - step1: "Trước tiên, hãy cài đặt một ứng dụng xác minh (chẳng hạn như {a} hoặc {b}) trên thiết bị của bạn." + step1: "Trước tiên, hãy cài đặt một ứng dụng xác minh (chẳng hạn như {a} hoặc {b}) + trên thiết bị của bạn." step2: "Sau đó, quét mã QR hiển thị trên màn hình này." step2Url: "Bạn cũng có thể nhập URL này nếu sử dụng một chương trình máy tính:" step3: "Nhập mã token do ứng dụng của bạn cung cấp để hoàn tất thiết lập." - step4: "Kể từ bây giờ, những lần đăng nhập trong tương lai sẽ yêu cầu mã token đăng nhập đó." - securityKeyInfo: "Bên cạnh xác minh bằng vân tay hoặc mã PIN, bạn cũng có thể thiết lập xác minh thông qua khóa bảo mật phần cứng hỗ trợ FIDO2 để bảo mật hơn nữa cho tài khoản của mình." + step4: "Kể từ bây giờ, những lần đăng nhập trong tương lai sẽ yêu cầu mã token đăng + nhập đó." + securityKeyInfo: "Bên cạnh xác minh bằng vân tay hoặc mã PIN, bạn cũng có thể thiết + lập xác minh thông qua khóa bảo mật phần cứng hỗ trợ FIDO2 để bảo mật hơn nữa + cho tài khoản của mình." + registerTOTPBeforeKey: Vui lòng thiết lập một ứng dụng xác thực để đăng ký khóa + bảo mật hoặc mật khẩu. + tapSecurityKey: Vui lòng theo dõi trình duyệt của bạn để đăng ký mã bảo mật hoặc + mã khóa + renewTOTPConfirm: Điều này sẽ khiến mã xác minh từ ứng dụng trước của bạn ngừng + hoạt động + securityKeyName: Nhập tên mã khóa + step3Title: Nhập mã xác thực + chromePasskeyNotSupported: Mật khẩu Chrome hiện không được hỗ trợ. + removeKeyConfirm: Thực sự xóa khóa {name}? + whyTOTPOnlyRenew: Không thể xóa ứng dụng xác thực miễn là đã đăng ký khóa bảo mật. + renewTOTPOk: Cấu hình lại + renewTOTPCancel: Hủy bỏ + removeKey: Xóa khóa bảo mật + step2Click: Nhấn vào mã QR này sẽ cho phép bạn đăng ký 2FA cho khóa bảo mật hoặc + ứng dụng xác thực điện thoại của bạn. + securityKeyNotSupported: Trình duyệt của bạn không hỗ trợ khóa bảo mật. + renewTOTP: Định cấu hình lại ứng dụng xác thực + token: 2FA Token _permissions: "read:account": "Xem thông tin tài khoản của bạn" "write:account": "Sửa thông tin tài khoản của bạn" @@ -1244,17 +1399,21 @@ _permissions: "write:gallery-likes": "Sửa danh sách các tút đã thích trong thư viện của tôi" _auth: shareAccess: "Bạn có muốn cho phép \"{name}\" truy cập vào tài khoản này không?" - shareAccessAsk: "Bạn có chắc muốn cho phép ứng dụng này truy cập vào tài khoản của mình không?" + shareAccessAsk: "Bạn có chắc muốn cho phép ứng dụng này truy cập vào tài khoản của + mình không?" permissionAsk: "Ứng dụng này yêu cầu các quyền sau" pleaseGoBack: "Vui lòng quay lại ứng dụng" callback: "Quay lại ứng dụng" denied: "Truy cập bị từ chối" + allPermissions: Truy cập đầy đủ vào tài khoản + copyAsk: 'Vui lòng dán mã ủy quyền sau vào ứng dụng:' _antennaSources: all: "Toàn bộ tút" homeTimeline: "Tút từ những người đã theo dõi" users: "Tút từ những người cụ thể" userList: "Tút từ danh sách người dùng cụ thể" userGroup: "Tút từ người dùng trong một nhóm cụ thể" + instances: Tút từ mọi người trên máy chủ _weekday: sunday: "Chủ Nhật" monday: "Thứ Hai" @@ -1286,6 +1445,13 @@ _widgets: serverMetric: "Thống kê máy chủ" aiscript: "AiScript console" aichan: "Ai" + userList: Danh sách người dùng + _userList: + chooseList: Chọn một danh sách + meiliSize: Kích cỡ chỉ mục + meiliIndexCount: Tút đã lập chỉ mục + meiliStatus: Trạng thái máy chủ + serverInfo: Thông tin máy chủ _cw: hide: "Ẩn" show: "Tải thêm" @@ -1304,7 +1470,7 @@ _poll: deadlineTime: "giờ" duration: "Thời hạn" votesCount: "{n} bình chọn" - totalVotes: "{n} tổng bình chọn" + totalVotes: "{n} lượt bình chọn" vote: "Bình chọn" showResult: "Xem kết quả" voted: "Đã bình chọn" @@ -1342,11 +1508,15 @@ _profile: youCanIncludeHashtags: "Bạn có thể dùng hashtag trong tiểu sử." metadata: "Thông tin bổ sung" metadataEdit: "Sửa thông tin bổ sung" - metadataDescription: "Sử dụng phần này, bạn có thể hiển thị các mục thông tin bổ sung trong hồ sơ của mình." + metadataDescription: "Sử dụng phần này, bạn có thể hiển thị các mục thông tin bổ + sung trong hồ sơ của mình. Bạn có thể thêm thẻ {a} hoặc thẻ {l} với {rel} để xác + minh liên kết trên tiểu sử của mình!" metadataLabel: "Nhãn" metadataContent: "Nội dung" changeAvatar: "Đổi ảnh đại diện" changeBanner: "Đổi ảnh bìa" + locationDescription: Nếu bạn nhập thành phố của mình trước, nó sẽ hiển thị giờ địa + phương của bạn cho những người dùng khác. _exportOrImport: allNotes: "Toàn bộ tút" followingList: "Đang theo dõi" @@ -1386,6 +1556,7 @@ _timelines: local: "Máy chủ này" social: "Xã hội" global: "Liên hợp" + recommended: Đề xuất _pages: newPage: "Tạo Trang mới" editPage: "Sửa Trang này" @@ -1616,7 +1787,8 @@ _pages: _dailyRannum: arg1: "Giá trị tối thiểu" arg2: "Giá trị tối đa" - dailyRandomPick: "Chọn ngẫu nhiên từ một danh sách (Đổi mỗi người một lần mỗi ngày)" + dailyRandomPick: "Chọn ngẫu nhiên từ một danh sách (Đổi mỗi người một lần mỗi + ngày)" _dailyRandomPick: arg1: "Danh sách" seedRandom: "Ngẫu nhiên (với seed)" @@ -1663,7 +1835,8 @@ _pages: _for: arg1: "Số lần lặp lại" arg2: "Hành động" - typeError: "Chỗ {slot} chấp nhận các giá trị thuộc loại \"{expect}\", nhưng giá trị được cung cấp thuộc loại \"{actual}\"!" + typeError: "Chỗ {slot} chấp nhận các giá trị thuộc loại \"{expect}\", nhưng giá + trị được cung cấp thuộc loại \"{actual}\"!" thereIsEmptySlot: "Chỗ {slot} đang trống!" types: string: "Văn bản" @@ -1712,6 +1885,9 @@ _notification: followBack: "đã theo dõi lại bạn" reply: "Trả lời" renote: "Đăng lại" + voted: đã bình chọn tút của bạn + reacted: đã biểu cảm tút của bạn + renoted: đã đăng lại tút của bạn _deck: alwaysShowMainColumn: "Luôn hiện cột chính" columnAlign: "Căn cột" @@ -1727,7 +1903,8 @@ _deck: newProfile: "Hồ sơ mới" deleteProfile: "Xóa hồ sơ" introduction: "Kết hợp các cột để tạo giao diện của riêng bạn!" - introduction2: "Bạn có thể thêm cột bất kỳ lúc nào bằng cách nhấn + ở bên phải màn hình." + introduction2: "Bạn có thể thêm cột bất kỳ lúc nào bằng cách nhấn + ở bên phải màn + hình." widgetsIntroduction: "Chọn \"Sửa widget\" trong menu cột và thêm một widget." _columns: main: "Chính" @@ -1738,3 +1915,221 @@ _deck: list: "Danh sách" mentions: "Lượt nhắc" direct: "Nhắn riêng" + channel: Kênh + renameProfile: Đổi tên workspace + nameAlreadyExists: Tên workspace này đã tồn tại. +renoteMute: Ẩn lượt chia sẻ +renoteUnmute: Bỏ ẩn lượt chia sẻ +searchPlaceholder: Lướt Firefish +edited: Đã sửa {date} {time} +findOtherInstance: Tìm máy chủ khác +noThankYou: Từ chối +_filters: + withFile: Có file + notesAfter: Đăng sau + followersOnly: Chỉ người theo dõi + fromUser: Từ người dùng + notesBefore: Đăng trước + followingOnly: Đang theo dõi + fromDomain: Từ máy chủ +flagSpeakAsCatDescription: Tút của bạn sẽ biến hóa ngộ nghĩnh khi bật chế độ tôi là + mèo +secureModeInfo: Khi truy vấn từ máy chủ khác, không nhận nếu không có bằng chứng. +pushNotificationNotSupported: Trình duyệt hoặc máy chủ không hỗ trợ thông báo đẩy +sendPushNotificationReadMessage: Xóa thông báo đẩy sau khi thông báo hoặc tin nhắn + liên quan đã được đọc +adminCustomCssWarn: Cài đặt này chỉ nên được sử dụng nếu bạn biết rõ cách thức hoạt + động của nó. Việc nhập các giá trị không phù hợp có thể khiến app của MỌI NGƯỜI + ngừng hoạt động. Vui lòng đảm bảo rằng CSS của bạn hoạt động bình thường bằng cách + kiểm tra nó trong cài đặt người dùng của bạn. +enableCustomKaTeXMacro: Bật tùy chỉnh macro KaTeX +noGraze: Vui lòng tắt tiện ích mở rộng trình duyệt "Graze for Mastodon" vì tiện ích + này can thiệp vào Firefish. +addRe: Thêm "re:" vào đầu bình luận để trả lời tút có cảnh báo nội dung +_experiments: + postImportsCaption: Cho phép người dùng nhập các bài đăng của họ từ các tài khoản + Firefish, Misskey, Mastodon, Akkoma và Pleroma trước đây. Nó có thể gây chậm trong + quá trình tải nếu hàng đợi của bạn bị tắc nghẽn. + title: Thử nghiệm + enablePostImports: Bật nhập tút +_skinTones: + medium: Vừa + light: Sáng + dark: Đen + yellow: Vàng + mediumLight: Sáng Vừa + mediumDark: Đen Vừa +removeReaction: Xóa biểu cảm +enableRecommendedTimeline: Bật bảng tin đề xuất +antennasDesc: "Ăng-ten hiển thị tút mới phù hợp với tiêu chí bạn đặt!\n Chúng có thể + được truy cập từ trang bảng tin." +userSaysSomethingReasonQuote: '{name} trích dẫn một tút chứa {reason}' +allowedInstancesDescription: Host của máy chủ được đưa vào danh sách trắng để liên + hợp, mỗi máy chủ được phân tách bằng cách xuống dòng (chỉ áp dụng ở chế độ riêng + tư). +sendPushNotificationReadMessageCaption: Sẽ hiện thông báo "{emptyPushNotificationMessage}" + trong một khoảng thời gian ngắn. Điều này có thể gây tốn pin của thiết bị. +enterSendsMessage: Nhấn Trở lại trong Tin nhắn để gửi tin nhắn (tắt là Ctlr + Return) +showAdminUpdates: Thông báo có phiên bản Firefish mới (chỉ dành cho quản trị viên) +replayTutorial: Phát lại hướng dẫn +moveFrom: Chuyển từ tài khoản cũ sang +moveFromDescription: Thao tác này sẽ đặt bí danh cho tài khoản cũ của bạn để bạn có + thể chuyển từ tài khoản đó sang tài khoản hiện tại. Làm điều này TRƯỚC KHI di chuyển + từ tài khoản cũ của bạn. Vui lòng nhập định dạng @person@server.com +signupsDisabled: Máy chủ này hiện đang bị tắt đăng ký, nhưng bạn luôn có thể đăng + ký tại một máy chủ khác! Nếu bạn có mã mời cho máy chủ này, vui lòng nhập mã đó + vào bên dưới. +silencedWarning: Trang này đang hiển thị vì những người dùng này đến từ các máy chủ + mà quản trị viên của bạn đã ẩn, vì vậy họ có thể là spam. +_dialog: + charactersExceeded: 'Vượt quá giới hạn ký tự! Hiện tại: {current}/Tối đa: {max}' + charactersBelow: 'Không đủ ký tự tối thiểu! Hiện tại: {current}/Tối thiểu: {min}' +enableIdenticonGeneration: Bật tạo identicon +enableServerMachineStats: Bật thống kê phần cứng máy chủ +secureMode: Chế độ an toàn (Phê duyệt nạp) +_messaging: + dms: Riêng tư + groups: Nhóm +moveToLabel: 'Tài khoản bạn chuyển tới:' +reactionPickerSkinTone: Chọn màu da emoji +jumpToPrevious: Về trước +listsDesc: Danh sách cho phép bạn tạo các bảng tin với những người dùng chọn trước. + Xem danh sách ở trang bảng tin. +enableEmojiReactions: Bật biểu cảm bằng emoji +showEmojisInReactionNotifications: Hiện emoji trong thông báo biểu cảm +silencedInstancesDescription: Liệt kê địa chủ của các máy chủ mà bạn muốn ẩn. Tài + khoản trong các máy chủ được liệt kê được coi là "Ẩn", chỉ có thể thực hiện các + yêu cầu theo dõi và không thể nhắn riêng đến tài khoản máy chủ nếu không được theo + dõi. Điều này sẽ không ảnh hưởng đến các máy chủ bị chặn. +silenced: Đã ẩn +expandOnNoteClick: Mở tút khi nhấn vào +expandOnNoteClickDesc: Nếu tắt, bạn vẫn có thể chọn mở tút trong menu chuột phải hoặc + nhấn vào thời gian đăng. +userSaysSomethingReasonReply: '{name} trả lời một tút chứa {reason}' +userSaysSomethingReasonRenote: '{name} đăng lại một tút chứa {reason}' +channelFederationWarn: Kênh chưa thể liên hợp với máy chủ khác +clipsDesc: Ghim là những tút bạn muốn luôn hiển thị đầu tiên. Bạn có thể tạo ghim + từ menu của mỗi tút. +seperateRenoteQuote: Phân chia nút đăng lại và trích dẫn +subscribePushNotification: Bật thông báo đẩy +noteId: ID tút +moveAccount: Đã chuyển tài khoản! +sendModMail: Gửi lưu ý kiểm duyệt +verifiedLink: Liên kết xác minh +_feeds: + copyFeed: Sao chép feed + rss: RSS + atom: Atom + jsonFeed: JSON +hiddenTags: Những hashtag đã ẩn +cannotUploadBecauseExceedsFileSizeLimit: Không thể tải lên vì vượt quá dung lượng + cho phép. +pushNotificationAlreadySubscribed: Đã bật thông báo đẩy +splash: Splash Screen +alt: ALT +showAds: Hiện banner cộng đồng +migration: Chuyển máy chủ +swipeOnMobile: Cho phép vuốt giữa các trang +logoImageUrl: Đường dẫn hình ảnh logo +moveTo: Chuyển đến tài khoản mới +moveAccountDescription: Quá trình này là không thể đảo ngược. Đảm bảo rằng bạn đã + thiết lập bí danh cho tài khoản này trên tài khoản mới của mình trước khi di chuyển. + Vui lòng nhập định dạng @person@server.com +antennaInstancesDescription: Liệt kê mỗi máy chủ một dòng +privateModeInfo: Khi bật, chỉ các máy chủ trong danh sách trắng mới có thể liên hợp + với máy chủ của bạn. Tất cả tút sẽ được ẩn khỏi công khai. +unsubscribePushNotification: Tắt thông báo đẩy +customMOTD: Tùy chỉnh MOTD (tin nhắn lướt qua trên màn hình) +deleted: Đã xóa +editNote: Sửa tút +flagSpeakAsCat: Tôi là mèo +silenceThisInstance: Ẩn máy chủ này +silencedInstances: Những máy chủ đã ẩn +instanceSecurity: An toàn máy chủ +showUpdates: Hiện popup khi Firefish có cập nhật +selectChannel: Chọn kênh +isBot: Đây là tài khoản bot +isLocked: Tài khoản này duyệt theo dõi thủ công +origin: Gốc +newer: mới hơn +older: cũ hơn +accountMoved: 'Người này đã chuyển sang:' +hiddenTagsDescription: 'Liệt kê các hashtag (không có #) mà bạn muốn ẩn khỏi xu hướng + và khám phá. Các thẻ bắt đầu bằng # đã ẩn vẫn có thể được thấy ở các nơi khác.' +noInstances: Không có máy chủ nào +manageGroups: Quản lý nhóm +accessibility: Khả năng tiếp cận +indexNotice: Đang lập chỉ mục. Quá trình này có thể mất một lúc, vui lòng không khởi + động lại máy chủ của bạn sau ít nhất một giờ. +breakFollowConfirm: Bạn có chắc muốn xóa người theo dõi? +caption: Caption tự động +objectStorageS3ForcePathStyle: Sử dụng URL điểm cuối dựa trên đường dẫn +objectStorageS3ForcePathStyleDesc: Bật tính năng này để tạo URL điểm cuối ở định dạng + 's3.amazonaws.com//' thay vì '.s3.amazonaws.com'. +privateMode: Chế độ riêng tư +allowedInstances: Danh sách trắng +customMOTDDescription: Tùy chỉnh tin nhắn MOTD (splash screen) được phân tách bằng + dấu ngắt dòng để được hiển thị ngẫu nhiên mỗi khi người dùng tải/tải lại trang. +customSplashIcons: Tùy chỉnh biểu tượng splash screen (urls) +customSplashIconsDescription: URL cho các biểu tượng splash screen tùy chỉnh được + phân tách bằng dấu ngắt dòng sẽ được hiển thị ngẫu nhiên mỗi khi người dùng tải/tải + lại trang. Vui lòng đảm bảo rằng các hình ảnh nằm trên một URL tĩnh, tốt nhất là + tất cả đã được thay đổi kích thước thành 192x192. +recommendedInstances: Máy chủ đề xuất +updateAvailable: Có bản cập nhật mới! +swipeOnDesktop: Cho phép vuốt kiểu điện thoại trên máy tính +moveFromLabel: 'Tài khoản cũ của bạn:' +defaultReaction: Biểu cảm mặc định cho những tút đã đăng và sắp đăng +indexFromDescription: Để trống để lập chỉ mục toàn bộ +donationLink: Liên kết tới trang tài trợ +deletePasskeys: Xóa passkey +delete2faConfirm: Thao tác này sẽ xóa 2FA trên tài khoản này một cách không thể phục + hồi. Tiếp tục? +deletePasskeysConfirm: Thao tác này sẽ xóa hoàn toàn tất cả mật khẩu và khóa bảo mật + trên tài khoản này. Tiếp tục? +inputNotMatch: Không trùng khớp +addInstance: Thêm một máy chủ +delete2fa: Tắt 2FA +apps: App +image: Hình ảnh +video: Video +audio: Âm thanh +selectInstance: Chọn máy chủ +userSaysSomethingReason: '{name} cho biết {reason}' +pushNotification: Thông báo đẩy +indexPosts: Chỉ mục tút +indexFrom: Chỉ mục từ Post ID +customKaTeXMacro: Tùy chỉnh macro KaTeX +license: Giấy phép +cw: Nội dung ẩn +showPopup: Thông báo người dùng bằng popup +showWithSparkles: Hiện kèm hiệu ứng lấp lánh +youHaveUnreadAnnouncements: Bạn có thông báo chưa đọc +migrationConfirm: "Bạn có hoàn toàn chắc chắn muốn di chuyển tài khoản của mình sang + {account} không? Sau khi thực hiện việc này, bạn sẽ không thể đảo ngược nó và sẽ + không thể sử dụng lại tài khoản của mình một cách bình thường.\nNgoài ra, vui lòng + đảm bảo rằng bạn đã đặt tài khoản hiện tại này làm tài khoản mà bạn đang chuyển + từ đó." +xl: XL +neverShow: Không hiện lại nữa +remindMeLater: Để sau +removeQuote: Xóa trích dẫn +removeRecipient: Xóa người nhận +removeMember: Xóa thành viên +customKaTeXMacroDescription: 'Thiết lập macro để viết các biểu thức toán học một cách + dễ dàng! Ký hiệu tuân theo định nghĩa lệnh của LaTeX và được viết là \newcommand{\ + name}{content} hoặc \newcommand{\name}[số lượng đối số]{content}. Ví dụ: \newcommand{\add}[2]{#1 + + #2} sẽ mở rộng \add{3}{foo} thành 3 + foo. Dấu ngoặc nhọn bao quanh tên macro + có thể được thay đổi thành dấu ngoặc tròn hoặc vuông. Điều này ảnh hưởng đến các + dấu ngoặc được sử dụng cho các đối số. Một (và chỉ một) macro có thể được xác định + trên mỗi dòng và bạn không thể ngắt dòng ở giữa định nghĩa. Các dòng không hợp lệ + chỉ đơn giản là bị bỏ qua. Chỉ hỗ trợ các hàm thay thế chuỗi đơn giản; cú pháp nâng + cao, chẳng hạn như phân nhánh có điều kiện, không thể được sử dụng ở đây.' +preventAiLearning: Chặn AI bot càn quét +preventAiLearningDescription: Yêu cầu các mô hình ngôn ngữ AI của bên thứ ba không + nghiên cứu nội dung bạn tải lên, chẳng hạn như tút và hình ảnh. +isModerator: Kiểm duyệt viên +isAdmin: Quản trị viên +isPatron: Người bảo trợ Firefish +recommendedInstancesDescription: Các máy chủ được đề xuất được phân tách bằng dấu + ngắt dòng để xuất hiện trong bảng tin đề xuất. diff --git a/locales/zh-CN.yml b/locales/zh-CN.yml index 36453551da..66983ae464 100644 --- a/locales/zh-CN.yml +++ b/locales/zh-CN.yml @@ -1,6 +1,6 @@ _lang_: "简体中文" -headlineMisskey: "一个开源、去中心化的社交媒体平台,永远免费!🚀" -introMisskey: "欢迎! Calckey 是一个开源、去中心化的社交媒体平台,永久免费!🚀" +headlineFirefish: "一个开源、去中心化的社交媒体平台,永远免费!🚀" +introFirefish: "欢迎! Firefish 是一个开源、去中心化的社交媒体平台,永久免费!🚀" monthAndDay: "{month} 月 {day} 日" search: "搜索" notifications: "通知" @@ -142,7 +142,7 @@ settingGuide: "推荐配置" cacheRemoteFiles: "缓存远程文件" cacheRemoteFilesDescription: "当禁用此设定时远程文件将直接从远程服务器载入。禁用后会减小储存空间需求,但是会增加流量,因为缩略图不会被生成。" flagAsBot: "这是一个机器人账号" -flagAsBotDescription: "如果此账号由程序控制,请启用此项。启用后,此标志可以帮助其它开发人员防止机器人之间产生无限互动的行为,并让 Calckey +flagAsBotDescription: "如果此账号由程序控制,请启用此项。启用后,此标志可以帮助其它开发人员防止机器人之间产生无限互动的行为,并让 Firefish 的内部系统将此账号识别为机器人。" flagAsCat: "将这个账号设定为一只猫😺" flagAsCatDescription: "您会长出猫耳朵并像猫一样说话!" @@ -151,7 +151,7 @@ flagShowTimelineRepliesDescription: "启用后,时间线除了显示用户的 autoAcceptFollowed: "自动批准来自关注者的关注请求" addAccount: "添加账号" loginFailed: "登录失败" -showOnRemote: "转到所在服务器显示" +showOnRemote: "打开原网页" general: "常规设置" wallpaper: "壁纸" setWallpaper: "设置壁纸" @@ -202,7 +202,7 @@ noUsers: "无用户" editProfile: "编辑个人资料" noteDeleteConfirm: "确定要删除此帖子吗?" pinLimitExceeded: "无法置顶更多帖子了" -intro: "Calckey 安装完成!请创建一个管理员用户。" +intro: "Firefish 安装完成!请创建一个管理员用户。" done: "完成" processing: "正在处理" preview: "预览" @@ -290,7 +290,7 @@ emptyDrive: "网盘中无文件" emptyFolder: "此文件夹中无文件" unableToDelete: "无法删除" inputNewFileName: "请输入新文件名" -inputNewDescription: "请输入新标题" +inputNewDescription: "请输入新描述" inputNewFolderName: "请输入新文件夹名" circularReferenceFolder: "目标文件夹是您要移动的文件夹的子文件夹。" hasChildFilesOrFolders: "此文件夹中有文件,无法删除。" @@ -381,7 +381,7 @@ exploreFediverse: "探索联邦宇宙" popularTags: "热门标签" userList: "列表" about: "关于" -aboutMisskey: "关于 Calckey" +aboutFirefish: "关于 Firefish" administrator: "管理员" token: "令牌" twoStepAuthentication: "两步验证" @@ -521,7 +521,7 @@ recentUsed: "最近使用" install: "安装" uninstall: "卸载" installedApps: "已授权的应用" -nothing: "没有" +nothing: "暂无更多内容" installedDate: "授权日期" lastUsedDate: "最近使用时间" state: "状态" @@ -529,7 +529,7 @@ sort: "排序" ascendingOrder: "升序" descendingOrder: "降序" scratchpad: "AiScript 控制台" -scratchpadDescription: "AiScript 控制台为 AiScript 提供了实验环境。您可以编写代码以与 Calckey 交互,运行它并查看结果。" +scratchpadDescription: "AiScript 控制台为 AiScript 提供了实验环境。您可以编写代码以与 Firefish 交互,运行它并查看结果。" output: "输出" script: "脚本" disablePagesScript: "在页面中禁用 AiScript" @@ -561,8 +561,8 @@ disablePlayer: "关闭播放器" expandTweet: "展开帖子" themeEditor: "主题编辑器" description: "描述" -describeFile: "添加标题" -enterFileDescription: "输入标题" +describeFile: "添加描述" +enterFileDescription: "输入描述" author: "作者" leaveConfirm: "存在未保存的更改。要放弃更改吗?" manage: "管理" @@ -641,7 +641,7 @@ openInNewTab: "在新标签页中打开" openInSideView: "在侧边栏中打开" defaultNavigationBehaviour: "默认导航" editTheseSettingsMayBreakAccount: "编辑这些设置可能会损坏您的账号。" -instanceTicker: "帖子所在的服务器信息" +instanceTicker: "帖子的实例信息" waitingFor: "等待 {x}" random: "随机" system: "系统" @@ -654,7 +654,7 @@ createNewClip: "新建便签" unclip: "移除便签" confirmToUnclipAlreadyClippedNote: "本帖已包含在便签 \"{name}\" 里。您想要将本帖从该便签中移除吗?" public: "公开" -i18nInfo: "Calckey 已经被志愿者们翻译成了各种语言。如果您也有兴趣,可以通过 {link} 帮助翻译。" +i18nInfo: "Firefish 已经被志愿者们翻译成了各种语言。如果您也有兴趣,可以通过 {link} 帮助翻译。" manageAccessTokens: "管理访问令牌" accountInfo: "账号信息" notesCount: "帖子数量" @@ -673,7 +673,7 @@ no: "否" driveFilesCount: "网盘的文件数" driveUsage: "网盘的空间用量" noCrawle: "要求搜索引擎不索引该用户" -noCrawleDescription: "要求搜索引擎不要收录(索引)您的用户页面,帖子,页面等。" +noCrawleDescription: "要求外部搜索引擎不收录(索引)您的内容。" lockedAccountInfo: "即使通过了关注请求,只要您不将帖子可见范围设置成“关注者”,任何人都可以看到您的帖子。" alwaysMarkSensitive: "默认将媒体文件标记为敏感内容" loadRawImages: "加载原始图像而不是显示缩略图" @@ -705,8 +705,8 @@ onlineUsersCount: "{n} 人在线" nUsers: "{n} 用户" nNotes: "{n} 帖子" sendErrorReports: "发送错误报告" -sendErrorReportsDescription: "启用后,如果出现问题,可以与 Calckey 共享详细的错误信息,从而帮助提高软件的质量。\n这将包括您的操作系统版本、您使用的浏览器、您在 - Calckey 中的活动等信息。" +sendErrorReportsDescription: "启用后,如果出现问题,可以与 Firefish 共享详细的错误信息,从而帮助提高软件的质量。\n这将包括您的操作系统版本、您使用的浏览器、您在 + Firefish 中的活动等信息。" myTheme: "我的主题" backgroundColor: "背景色" accentColor: "强调色" @@ -776,7 +776,7 @@ gallery: "图库" recentPosts: "最新发布" popularPosts: "热门投稿" shareWithNote: "在帖子中分享" -ads: "广告" +ads: "社区横幅" expiration: "截止时间" memo: "便笺" priority: "优先级" @@ -797,7 +797,7 @@ hashtags: "话题标签" troubleshooting: "故障排除" useBlurEffect: "在 UI 上使用模糊效果" learnMore: "更多信息" -misskeyUpdated: "Calckey 更新完成!" +misskeyUpdated: "Firefish 更新完成!" whatIsNew: "显示更新信息" translate: "翻译" translatedFrom: "从 {x} 翻译" @@ -825,7 +825,7 @@ unmuteThread: "取消静音帖子串" ffVisibility: "关注/关注者 可见性" ffVisibilityDescription: "您可以设置谁可以看到您的关注/关注者信息。" continueThread: "查看更多帖子" -deleteAccountConfirm: "将要删除账号。是否继续?" +deleteAccountConfirm: "这将不可逆转地删除账号,是否继续?" incorrectPassword: "密码错误。" voteConfirm: "确定投给 “{choice}” ?" hide: "隐藏" @@ -866,7 +866,7 @@ check: "检查" driveCapOverrideLabel: "修改此用户的网盘容量" driveCapOverrideCaption: "输入 0 或以下的值将容量重置为默认值。" requireAdminForView: "需要使用管理员账号登录才能查看。" -isSystemAccount: "该账号由系统自动创建和管理。请不要修改、编辑、删除或以其它方式篡改这个账号,否则可能会破坏您的服务器。" +isSystemAccount: "该账号由系统自动创建。请不要修改、编辑、删除或以其它方式篡改这个账号,否则可能会破坏您的服务器。" typeToConfirm: "输入 {x} 以确认操作" deleteAccount: "删除账号" document: "文档" @@ -978,24 +978,30 @@ _registry: keys: "键" domain: "域" createKey: "创建键" -_aboutMisskey: - about: "Calckey 是由 ThatOneCalculator 创建的 Misskey 的一个分支,自 2022 年开始开发。" +_aboutFirefish: + about: "Firefish 是由 ThatOneCalculator 创建的 Misskey 的一个分支,自 2022 年开始开发。" contributors: "主要贡献者" allContributors: "全体贡献者" source: "源代码" - translation: "翻译 Calckey" - donate: "赞助 Calckey" + translation: "翻译 Firefish" + donate: "赞助 Firefish" morePatrons: "还有很多其它的人也在支持我们,非常感谢🥰" - patrons: "Calckey 赞助者" + patrons: "Firefish 赞助者" patronsList: 按时间顺序而不是捐赠金额排列。通过上面的链接捐款,让您的名字出现在这里! + sponsors: Firefish 赞助者们 + donateTitle: 喜欢 Firefish 吗? + pleaseDonateToFirefish: 请考虑赞助 Firefish 以支持其开发。 + pleaseDonateToHost: 也请考虑赞助您的主服务器 {host},以帮助支持其运营成本。 + donateHost: 赞助 {host} + misskeyContributors: Misskey 贡献者 _nsfw: respect: "隐藏敏感内容" ignore: "不隐藏敏感内容" force: "总是隐藏内容" _mfm: cheatSheet: "MFM 代码速查表" - intro: "MFM 是一种在 Misskey、Calckey、Akkoma 中使用的标记语言,可以在很多地方使用。您可以在此处查看所有可用的 MFM 语法的列表。" - dummy: "通过 Calckey 扩展联邦宇宙的世界" + intro: "MFM 是一种在 Misskey、Firefish、Akkoma 中使用的标记语言,可以在很多地方使用。您可以在此处查看所有可用的 MFM 语法的列表。" + dummy: "通过 Firefish 扩展联邦宇宙的世界" mention: "提及" mentionDescription: "可以使用 @+用户名 来指示特定用户。" hashtag: "话题标签" @@ -1104,11 +1110,16 @@ _menuDisplay: hide: "隐藏" _wordMute: muteWords: "过滤词" + muteLangs: "过滤语言" muteWordsDescription: "AND 条件用空格分隔,OR 条件用换行符分隔。" muteWordsDescription2: "将关键字用斜线括起来表示正则表达式。" + muteLangsDescription: "OR 条件用空格,换行符分隔" + muteLangsDescription2: "使用语言代码。例: en, fr, ja, zh." softDescription: "隐藏时间线中指定条件的帖子。" + langDescription: "从时间线中隐藏与设置语言匹配的帖子。" hardDescription: "防止将具有指定条件的帖子添加到时间线。 即使您更改条件,原先未添加的帖文也会被排除在外。" soft: "软过滤" + lang: "语言" hard: "硬过滤" mutedNotes: "已过滤的帖子" _instanceMute: @@ -1214,7 +1225,7 @@ _time: hour: "小时" day: "日" _tutorial: - title: "如何使用 Calckey" + title: "如何使用 Firefish" step1_1: "欢迎!" step1_2: "让我们帮您设置一下。您很快就能开始畅游联邦宇宙!" step2_1: "首先,请完成您的个人资料。" @@ -1226,13 +1237,13 @@ _tutorial: step5_1: "时间线,无处不在的时间线!" step5_2: "您的服务器已启用 {timelines} 种不同的时间线。" step5_3: "主页 {icon} 时间线是您可以看到您关注账号的帖子的时间线。" - step5_4: "本地 {icon} 时间线是您可以看到此服务器上其它用户的帖子的时间线。" - step5_5: "社交 {icon} 时间线是主页和本地时间线的结合。" - step5_6: "推荐 {icon} 时间线是您可以看到管理员推荐服务器的帖子的时间线。" - step5_7: "全球 {icon} 时间线是您可以看到来自其它所有互联服务器的帖子的时间线。" + step5_4: "本地{icon}时间线是您可以看到此服务器上其它用户的帖子的时间线。" + step5_5: "社交{icon}时间线是主页和本地时间线的结合。" + step5_6: "推荐{icon}时间线是您可以看到管理员推荐服务器的帖子的时间线。" + step5_7: "全球{icon}时间线是您可以看到来自其它所有互联服务器的帖子的时间线。" step6_1: "那么,这里是什么地方?" - step6_2: "好吧,您不只是加入 Calckey。您已经加入了 Fediverse 的一个门户,这是一个由成千上万台服务器组成的互联网络。" - step6_3: "每个服务器的工作方式不同,并不是所有的服务器都运行 Calckey。但这个服务器是的! 这有点复杂,但您很快就会明白的。" + step6_2: "好吧,您不只是加入 Firefish。您已经加入了 Fediverse 的一个门户,这是一个由成千上万台服务器组成的互联网络。" + step6_3: "每个服务器的工作方式不同,并不是所有的服务器都运行 Firefish。但这个服务器是的! 这有点复杂,但您很快就会明白的。" step6_4: "现在,去吧,去探索,去享受乐趣吧!" _2fa: alreadyRegistered: "您已经注册了两步验证设备。" @@ -1402,7 +1413,7 @@ _profile: youCanIncludeHashtags: "您可以包含一个话题标签。" metadata: "附加信息" metadataEdit: "附加信息编辑" - metadataDescription: "使用这些,您可以在您的个人资料中显示其它信息字段。" + metadataDescription: "使用这些,您可以在您的个人资料中显示其它信息字段。您可以添加带有 {rel} 的 {a} 标签或 {l} 标签来验证您个人资料上的链接!" metadataLabel: "标签" metadataContent: "内容" changeAvatar: "修改头像" @@ -1813,7 +1824,7 @@ _messaging: migration: 迁移 _experiments: title: 实验性功能 - postImportsCaption: 允许用户从过去的 Calckey、Misskey、Mastodon、Akkoma 和 Pleroma 账号导入帖子。如果您的队列出现拥堵,则可能会导致加载速度减慢。 + postImportsCaption: 允许用户从过去的 Firefish、Misskey、Mastodon、Akkoma 和 Pleroma 账号导入帖子。如果您的队列出现拥堵,则可能会导致加载速度减慢。 enablePostImports: 启用帖子导入 license: 许可证 flagSpeakAsCatDescription: 在猫模式下您的帖子会喵化 @@ -1831,16 +1842,16 @@ adminCustomCssWarn: 仅当您知道此设置的作用时才应使用它。输入 customMOTDDescription: 自定义 MOTD(启动屏幕)消息,一行一个,每次用户加载/刷新页面时都会随机显示。 customSplashIconsDescription: 用换行符隔开的自定义启动屏幕图标的 URL,在用户每次加载/重新载入页面时随机显示。请确保图片是在一个静态的 URL 上,最好全部调整为 192x192 的大小。 -recommendedInstancesDescription: 推荐的服务器一行一个,它们将出现在推荐的时间线中。不要添加 "https://",仅添加域名。 +recommendedInstancesDescription: 推荐的服务器一行一个,它们将出现在推荐时间线中。 splash: 启动画面 -showUpdates: Calckey 更新后显示弹出窗口 +showUpdates: Firefish 更新后显示弹出窗口 selectInstance: 选择服务器 silencedInstances: 禁言的服务器 antennaInstancesDescription: 列出服务器主机名,一行一个 pushNotification: 推送通知 subscribePushNotification: 启用推送通知 -showAdminUpdates: 提示新的 Calckey 版本可用(仅对于管理员) -searchPlaceholder: 搜索 Calckey +showAdminUpdates: 提示新的 Firefish 版本可用(仅对于管理员) +searchPlaceholder: 搜索 Firefish addInstance: 添加服务器 jumpToPrevious: 跳转到上一个 silenceThisInstance: 禁言此服务器 @@ -1851,7 +1862,7 @@ seperateRenoteQuote: 单独的转发和引用按钮 customSplashIcons: 自定义启动屏幕图标(urls) alt: 替代文字 pushNotificationNotSupported: 您的浏览器或者服务器不支持推送通知 -showAds: 显示广告 +showAds: 显示社区横幅 enterSendsMessage: 按回车键发送信息(关闭则是 Ctrl + Retun 发送) recommendedInstances: 推荐服务器 updateAvailable: 可能有可用更新! @@ -1870,7 +1881,7 @@ clipsDesc: 便签就像可共享的分类书签。您可以从各个帖子的菜 privateModeInfo: 当启用时,只有白名单上的服务器可以与您的服务器联合,所有的帖子都会对公共时间线隐藏。 allowedInstancesDescription: 要列入联合白名单的服务器的主机名,一行一个(仅适用于私密模式)。 breakFollowConfirm: 确定要移除关注者吗? -caption: 自动显示说明文字 +caption: 自动显示描述文字 newer: 更新的 older: 更旧的 noInstances: 没有服务器 @@ -1916,7 +1927,7 @@ moveAccountDescription: 这个过程是不可逆的。在迁移之前,请确 moveFromLabel: 您要迁移出的旧账号: preventAiLearning: 阻止 AI 机器人抓取 preventAiLearningDescription: 请求第三方人工智能语言模型不要研究您上传的内容,例如帖子和图像。 -noGraze: 请禁用 "Graze for Mastodon" 浏览器扩展,因为它会干扰 Calckey。 +noGraze: 请禁用 "Graze for Mastodon" 浏览器扩展,因为它会干扰 Firefish。 moveTo: 将当前账号迁移至新账号 moveToLabel: 您要迁移到的目标账号: moveAccount: 迁移账号! @@ -1938,9 +1949,43 @@ _filters: fromUser: 来自用户 followersOnly: 仅关注者 reactionPickerSkinTone: 首选的表情符号肤色 -isPatron: Calckey 赞助 +isPatron: Firefish 赞助 _dialog: charactersExceeded: 超出了最大字符数!当前:{current} / 限制:{max} charactersBelow: 没有足够的字符!当前:{current} / 限制:{min} enableIdenticonGeneration: 启用 Identicon 生成 enableServerMachineStats: 启用服务器硬件统计 +_feeds: + atom: Atom + rss: RSS + jsonFeed: JSON 订阅源 + copyFeed: 复制订阅源 +verifiedLink: 已验证链接 +xl: 特大 +showPopup: 以弹出窗口通知用户 +showWithSparkles: 闪闪发光地展示 +youHaveUnreadAnnouncements: 您有未读的公告 +donationLink: 赞助页面链接 +neverShow: 不再显示 +remindMeLater: 稍后再说 +removeQuote: 移除引用 +removeRecipient: 移除接收者 +removeMember: 移除成员 +origin: 起源 +confirm: 确认 +importZip: 导入 ZIP +exportZip: 导出 ZIP +emojiPackCreator: 表情包创建工具 +objectStorageS3ForcePathStyleDesc: 打开此选项可构建格式为 's3.amazonaws.com//' 而非 '.s3.amazonaws.com' + 的端点 URL。 +objectStorageS3ForcePathStyle: 使用基于路径的端点 URL +delete2fa: 禁用 2FA +deletePasskeysConfirm: 这将不可逆转地删除此账号上的所有通行密钥和安全密钥。是否继续? +inputNotMatch: 输入不匹配 +deletePasskeys: 删除通行密钥 +delete2faConfirm: 这将不可逆转地删除此账户上的 2FA。是否继续? +addRe: 在回复有内容警告的帖子时,在评论开头添加 "re:" +detectPostLanguage: 自动检测语言,并显示外文帖子的翻译按钮 +indexableDescription: 允许内置搜索显示您的公开帖子 +indexable: 可索引的 +languageForTranslation: 帖子翻译语言 diff --git a/locales/zh-TW.yml b/locales/zh-TW.yml index 2803d7846c..9a1a0a75cc 100644 --- a/locales/zh-TW.yml +++ b/locales/zh-TW.yml @@ -1,6 +1,6 @@ _lang_: "繁體中文" -headlineMisskey: "貼文連繫網路" -introMisskey: "歡迎! Calckey是一個開源、去中心化且永遠免費的社群網路平台!🚀" +headlineFirefish: "貼文連繫網路" +introFirefish: "歡迎! Firefish是一個開源、去中心化且永遠免費的社群網路平台!🚀" monthAndDay: "{month}月 {day}日" search: "搜尋" notifications: "通知" @@ -142,7 +142,7 @@ settingGuide: "推薦設定" cacheRemoteFiles: "快取遠端檔案" cacheRemoteFilesDescription: "禁用此設定會停止遠端檔案的緩存,從而節省儲存空間,但資料會因直接連線從而產生額外數據花費。" flagAsBot: "標記此帳號是機器人" -flagAsBotDescription: "如果本帳戶是由程式控制,請啟用此選項。啟用後,會作為標示幫助其他開發者防止機器人之間產生無限互動的行為,並會調整Calckey內部系統將本帳戶識別為機器人。" +flagAsBotDescription: "如果本帳戶是由程式控制,請啟用此選項。啟用後,會作為標示幫助其他開發者防止機器人之間產生無限互動的行為,並會調整Firefish內部系統將本帳戶識別為機器人。" flagAsCat: "你是喵咪嗎?w😺" flagAsCatDescription: "如果想將本帳戶標示為一隻貓,請開啟此標示!" flagShowTimelineReplies: "在時間線上顯示貼文的回覆" @@ -201,7 +201,7 @@ noUsers: "沒有任何使用者" editProfile: "編輯個人檔案" noteDeleteConfirm: "確定刪除此貼文嗎?" pinLimitExceeded: "不能置頂更多貼文了" -intro: "Calckey 部署完成!請建立管理員帳戶。" +intro: "Firefish 部署完成!請建立管理員帳戶。" done: "完成" processing: "處理中" preview: "預覽" @@ -236,7 +236,7 @@ imageUrl: "圖片URL" remove: "刪除" removed: "已成功刪除" removeAreYouSure: "確定要刪掉「{x}」嗎?" -deleteAreYouSure: "確定要刪掉「{x}」嗎?" +deleteAreYouSure: "確定要刪除「{x}」嗎?" resetAreYouSure: "確定要重設嗎?" saved: "已儲存" messaging: "訊息" @@ -380,7 +380,7 @@ exploreFediverse: "探索聯邦世界" popularTags: "熱門標籤" userList: "清單" about: "資訊" -aboutMisskey: "關於 Calckey" +aboutFirefish: "關於 Firefish" administrator: "管理員" token: "權杖" twoStepAuthentication: "兩階段驗證" @@ -525,14 +525,14 @@ state: "狀態" sort: "排序" ascendingOrder: "昇冪" descendingOrder: "降冪" -scratchpad: "暫存記憶體" -scratchpadDescription: "AiScript控制台為AiScript提供了實驗環境。您可以在此編寫、執行和確認代碼與Calckey互動的结果。" +scratchpad: "AiScript控制台" +scratchpadDescription: "AiScript控制台為AiScript提供了實驗環境。您可以在此編寫、執行和確認代碼與Firefish互動的结果。" output: "輸出" script: "腳本" disablePagesScript: "停用頁面的AiScript腳本" updateRemoteUser: "更新遠端使用者資訊" deleteAllFiles: "刪除所有檔案" -deleteAllFilesConfirm: "要删除所有檔案嗎?" +deleteAllFilesConfirm: "確定要刪除所有檔案嗎?" removeAllFollowing: "解除所有追蹤" removeAllFollowingDescription: "解除{host}所有的追蹤。在伺服器不再存在時執行。" userSuspended: "此使用者已被停用。" @@ -651,7 +651,7 @@ createNewClip: "建立新摘錄" unclip: "解除摘錄" confirmToUnclipAlreadyClippedNote: "此貼文已包含在摘錄「{name}」中。 你想將貼文從這個摘錄中排除嗎?" public: "公開" -i18nInfo: "Calckey已經被志願者們翻譯成各種語言版本,如果想要幫忙的話,可以進入{link}幫助翻譯。" +i18nInfo: "Firefish已經被志願者們翻譯成各種語言版本,如果想要幫忙的話,可以進入{link}幫助翻譯。" manageAccessTokens: "管理存取權杖" accountInfo: "帳戶資訊" notesCount: "貼文數量" @@ -702,8 +702,8 @@ onlineUsersCount: "{n}人正在線上" nUsers: "{n}用戶" nNotes: "{n}貼文" sendErrorReports: "傳送錯誤報告" -sendErrorReportsDescription: "開啟後,錯誤出現時將會與 Calckey 分享詳細紀錄,對於 Calckey 的開發會有非常大的幫助。\n - 這將包括您的操作系統版本、使用的瀏覽器、您在 Calckey 中的活動等資料。" +sendErrorReportsDescription: "開啟後,錯誤出現時將會與 Firefish 分享詳細紀錄,對於 Firefish 的開發會有非常大的幫助。\n + 這將包括您的操作系統版本、使用的瀏覽器、您在 Firefish 中的活動等資料。" myTheme: "我的佈景主題" backgroundColor: "背景" accentColor: "重點色彩" @@ -794,7 +794,7 @@ hashtags: "#tag" troubleshooting: "故障排除" useBlurEffect: "在 UI 上使用模糊效果" learnMore: "更多資訊" -misskeyUpdated: "Calckey 更新完成!" +misskeyUpdated: "Firefish 更新完成!" whatIsNew: "顯示更新資訊" translate: "翻譯" translatedFrom: "從 {x} 翻譯" @@ -895,11 +895,11 @@ navbar: "導覽列" shuffle: "隨機" account: "帳戶" move: "移動" -customKaTeXMacro: "自定義 KaTeX 宏" -customKaTeXMacroDescription: "使用宏來輕鬆的輸入數學表達式吧!宏的用法與 LaTeX 中的命令定義相同。你可以使用 \\newcommand{\\ - name}{content} 或 \\newcommand{\\name}[number of arguments]{content} 來輸入數學表達式。舉個例子,\\ - newcommand{\\add}[2]{#1 + #2} 會將 \\add{3}{foo} 展開為 3 + foo。此外,宏名稱外的花括號 {} 可以被替換為圓括號 - () 和方括號 [],這會影響用於參數的括號。每行只能夠定義一個宏,無法在中間換行,且無效的行將被忽略。只支持簡單字符串替換功能,不支持高級語法,如條件分支等。" +customKaTeXMacro: "自訂KaTeX巨集" +customKaTeXMacroDescription: "使用巨集來輕鬆輸入數學表達式吧!巨集的用法與 LaTeX 中的命令定義相同。你可以使用 \\newcommand{\\ + name}{content} 或 \\newcommand{\\name}[number of arguments]{content} 來輸入數學表達式。舉例來說,\\ + newcommand{\\add}[2]{#1 + #2} 會將 \\add{3}{foo} 展開為 3 + foo。巨集名稱除了可用大括號 {} 括起來之外,也可使用小括號 + () 和中括號 [],但使用於巨集參數的括號會有所變更。每行只能夠定義一個巨集,巨集中間無法間換。無效的行將被忽略。只支援簡單字串的替換功能,不支援條件分歧的高級語法。" enableCustomKaTeXMacro: "啟用自定義 KaTeX 宏" _sensitiveMediaDetection: description: "您可以使用機器學習自動檢測敏感媒體並將其用於審核。 伺服器的負荷會稍微增加。" @@ -975,23 +975,30 @@ _registry: keys: "機碼" domain: "域" createKey: "新增機碼" -_aboutMisskey: - about: "Calckey是由ThatOneCalculator自2022年起開發的Misskey分支。" +_aboutFirefish: + about: "Firefish是由ThatOneCalculator自2022年起開發的Misskey分支。" contributors: "主要貢獻者" allContributors: "全體貢獻人員" source: "原始碼" - translation: "翻譯Calckey" - donate: "贊助Calckey" + translation: "翻譯Firefish" + donate: "贊助Firefish" morePatrons: "還有許許多多幫助我們的其他人,非常感謝你們。 🥰" patrons: "贊助者" + patronsList: 按時間順序列出,而不是按贊助規模列出。使用上面的連結贊助,在這裡獲得顯示您名字的機會! + sponsors: Firefish 贊助者們 + donateTitle: 覺得 Firefish 棒嗎? + pleaseDonateToFirefish: 請考慮向 Firefish 贊助以支持其發展。 + pleaseDonateToHost: 還請考慮捐贈給您在使用的伺服器 {host},以支援龐大的運營成本。 + donateHost: 贊助給 {host} + misskeyContributors: Misskey的貢獻者 _nsfw: respect: "隱藏敏感內容" ignore: "不隱藏敏感內容" force: "隱藏所有內容" _mfm: cheatSheet: "MFM代碼小抄" - intro: "MFM是Misskey專用的標記語言,可以在Misskey中的各個位置使用。 您可以這裏看到MFM可用語法列表。" - dummy: "Calckey拓展了Fediverse的世界" + intro: "MFM是Misskey、Firefish、Akkoma等專用的標記語言,可以在各個位置使用。 您可以這裏看到MFM可用語法列表。" + dummy: "Firefish拓展了Fediverse的世界" mention: "提及" mentionDescription: "透過 @+用戶名 來標示特定使用者。" hashtag: "#tag" @@ -1060,6 +1067,18 @@ _mfm: position: 位置 alwaysPlay: 自動播放所有MFM動畫 positionDescription: 按指定數量移動內容。 + advancedDescription: 如果禁用,則僅允許基本標記,除非正在播放 MFM 動畫 + advanced: 高級MFM + fade: 淡出 + foreground: 文字顏色 + crop: 裁切 + scale: 縮放 + scaleDescription: 按指定數量縮放內容。 + fadeDescription: 將內容淡入淡出。 + background: 背景顏色 + backgroundDescription: 改變背景顏色。 + cropDescription: 裁切內容。 + foregroundDescription: 改變文字顏色。 _instanceTicker: none: "隱藏" remote: "向遠端使用者顯示" @@ -1198,25 +1217,25 @@ _time: hour: "小時" day: "日" _tutorial: - title: "如何使用Calckey" + title: "如何使用Firefish" step1_1: "歡迎!" step1_2: "讓我們把你安排好。你很快就會啟動並運行!" step2_1: "首先,請完成你的個人資料。" - step2_2: "通過提供一些關於你自己的資料,其他人會更容易了解他們是否想看到你的帖子或關注你。" + step2_2: "通過提供一些關於你自己的資料,其他人會更容易了解他們是否想看到你的貼文或關注你。" step3_1: "現在是時候追隨一些人了!" step3_2: "你的主頁和社交時間線是基於你所追蹤的人,所以試著先追蹤幾個帳戶。\n點擊個人資料右上角的加號圈就可以關注它。" step4_1: "讓我們出去找你。" step4_2: "對於他們的第一條信息,有些人喜歡做 {introduction} 或一個簡單的 \"hello world!\"" step5_1: "時間線,到處都是時間線!" step5_2: "您的伺服器已啟用了{timelines}個時間線。" - step5_3: "首頁 {icon} 時間線是顯示你追蹤的帳號的帖子。" + step5_3: "首頁 {icon} 時間線是顯示你追蹤的帳號的貼文。" step5_4: "本地 {icon} 時間線是你可以看到伺服器中所有其他用戶的貼文的時間線。" step5_5: "社交 {icon} 時間線是你的 首頁時間線 和 本地時間線 的結合體。" step5_6: "推薦 {icon} 時間線是顯示你的伺服器管理員推薦的貼文。" step5_7: "全球 {icon} 時間線是顯示來自所有其他連接的伺服器的貼文。" step6_1: "那麼,這裡是什麼地方?" - step6_2: "你不只是加入Calckey。你已經加入了Fediverse的一個門戶,這是一個由成千上萬台服務器組成的互聯網絡。" - step6_3: "每個服務器也有不同,而並不是所有的服務器都運行Calckey。但這個服務器確實是運行Calckey的! 你可能會覺得有點複雜,但你很快就會明白的。" + step6_2: "你不只是加入Firefish。你已經加入了Fediverse的一個門戶,這是一個由成千上萬台服務器組成的互聯網絡。" + step6_3: "每個服務器也有不同,而並不是所有的服務器都運行Firefish。但這個服務器確實是運行Firefish的! 你可能會覺得有點複雜,但你很快就會明白的。" step6_4: "現在開始探索吧!" _2fa: alreadyRegistered: "你已註冊過一個雙重認證的裝置。" @@ -1228,6 +1247,20 @@ _2fa: step3: "輸入您的App提供的權杖以完成設定。" step4: "從現在開始,任何登入操作都將要求您提供權杖。" securityKeyInfo: "您可以設定使用支援FIDO2的硬體安全鎖、終端設備的指纹認證或者PIN碼來登入。" + renewTOTPCancel: 取消 + removeKey: 移除安全金鑰 + removeKeyConfirm: 真的要刪掉 {name} 嗎? + renewTOTP: 重新配置身份驗證器應用程式 + chromePasskeyNotSupported: 目前不支持 Chrome 密鑰。 + whyTOTPOnlyRenew: 只要註冊了安全金鑰,就無法刪除身份驗證器應用程式。 + renewTOTPConfirm: 這將導致您之前的身分驗證器應用程式停止工作 + securityKeyName: 取一個金鑰的名字 + tapSecurityKey: 請按照您的瀏覽器註冊安全金鑰或密碼 + token: 兩步驟驗證金鑰 + registerTOTPBeforeKey: 請設置身份驗證器應用程式以註冊安全金鑰或密碼。 + renewTOTPOk: 重新配置 + step3Title: 輸入驗證碼 + securityKeyNotSupported: 您使用的瀏覧器不支援安全金鑰(Security key)。 _permissions: "read:account": "查看我的帳戶資訊" "write:account": "更改我的帳戶資訊" @@ -1264,16 +1297,19 @@ _permissions: _auth: shareAccess: "要授權「“{name}”」存取您的帳戶嗎?" shareAccessAsk: "您確定要授權這個應用程式使用您的帳戶嗎?" - permissionAsk: "此應用程式需要以下權限" + permissionAsk: "此應用程式需要以下權限:" pleaseGoBack: "請返回至應用程式" callback: "回到應用程式" denied: "拒絕訪問" + copyAsk: 請將以下授權代碼貼上到應用程式中: + allPermissions: 完全帳戶訪問許可權 _antennaSources: all: "全部貼文" homeTimeline: "來自已追隨使用者的貼文" users: "來自特定使用者的貼文" userList: "來自特定清單中的貼文" userGroup: "來自特定群組的貼文" + instances: 伺服器上所有使用者的貼文 _weekday: sunday: "週日" monday: "週一" @@ -1289,22 +1325,29 @@ _widgets: calendar: "行事曆" trends: "發燒貼文" clock: "時鐘" - rss: "RSS閱讀器" - rssTicker: "RSS跑馬燈" + rss: "RSS 閱讀器" + rssTicker: "RSS 跑馬燈" activity: "動態" photos: "照片" digitalClock: "電子時鐘" unixClock: "UNIX時間" federation: "聯邦宇宙" - instanceCloud: "伺服器雲端" + instanceCloud: "伺服器雲" postForm: "發佈窗口" slideshow: "幻燈片" button: "按鈕" onlineUsers: "線上的用戶" jobQueue: "佇列" serverMetric: "伺服器指標" - aiscript: "AiScript控制台" + aiscript: "AiScript 控制台" aichan: "小藍" + serverInfo: 伺服器資訊 + userList: 使用者列表 + _userList: + chooseList: 選擇一個清單 + meiliIndexCount: 編入索引的帖子 + meiliStatus: 伺服器狀態 + meiliSize: 索引大小 _cw: hide: "隱藏" show: "瀏覽更多" @@ -1334,11 +1377,11 @@ _poll: remainingSeconds: "{s}秒後截止" _visibility: public: "公開" - publicDescription: "發布給所有用戶" + publicDescription: "發佈至公開時間線" home: "不在主頁顯示" homeDescription: "僅發送至首頁的時間線" followers: "追隨者" - followersDescription: "僅發送至關注者" + followersDescription: "僅發佈至關注者" specified: "指定使用者" specifiedDescription: "僅發送至指定使用者" localOnly: "僅限本地" @@ -1361,7 +1404,7 @@ _profile: youCanIncludeHashtags: "你也可以在「關於我」中加上 #tag。" metadata: "進階資訊" metadataEdit: "編輯進階資訊" - metadataDescription: "可以在個人資料中以表格形式顯示其他資訊。" + metadataDescription: "可以在個人資料中以表格形式顯示其他資訊。您可以添加帶有 {rel} 的 {a} 標籤或 {l} 標籤來驗證您個人資料上的鏈接!" metadataLabel: "標籤" metadataContent: "内容" changeAvatar: "更換大頭貼" @@ -1733,6 +1776,7 @@ _notification: followBack: "回關" reply: "回覆" renote: "轉發" + reacted: 對您的貼文做出了反應 _deck: alwaysShowMainColumn: "總是顯示主欄" columnAlign: "對齊欄位" @@ -1761,6 +1805,7 @@ _deck: list: "清單" mentions: "提及" direct: "指定使用者" + channel: 頻道 secureMode: 安全模式(授權獲取) instanceSecurity: 伺服器安全性 privateMode: 私人模式 @@ -1776,7 +1821,7 @@ customMOTDDescription: 每次用戶加載/重新加載頁面時,由換行符 privateModeInfo: 啟用後,只有列入白名單的伺服器才能與你的伺服器聯合。所有貼文都將對公眾隱藏。 adminCustomCssWarn: 除非你知道它的作用,否則請不要使用此設定。 輸入不正確的值可能會導致每個人的客戶端無法正常運行。你可在你的的用戶設定中測試,確保你的 CSS 正常工作。 -showUpdates: Calckey 更新時顯示彈出視窗 +showUpdates: Firefish 更新時顯示彈出視窗 recommendedInstances: 建議的伺服器 caption: 自動字幕 enterSendsMessage: 在 Messaging 中按 Return 發送消息 (如關閉則是 Ctrl + Return) @@ -1805,7 +1850,7 @@ customMOTD: 自定義MOTD (網頁載入時顯示的信息) customSplashIcons: 啟動畫面圖標 (網址) splash: 啟動畫面 updateAvailable: 可能有可用的更新! -showAdminUpdates: 表明新的 Calckey 版本可用(只限管理員) +showAdminUpdates: 表明新的 Firefish 版本可用(只限管理員) migration: 遷移 homeTimeline: 主頁時間軸 swipeOnDesktop: 允許在桌面上進行手機式滑動 @@ -1819,16 +1864,16 @@ silenced: 已靜音 _experiments: title: 試驗功能 findOtherInstance: 找找另一個伺服器 -noGraze: 瀏覽器擴展 "Graze for Mastodon" 會與Calckey發生衝突,請停用該擴展。 -userSaysSomethingReasonRenote: '{name} 轉傳了包含 {reason} 的帖子' +noGraze: 瀏覽器擴展 "Graze for Mastodon" 會與Firefish發生衝突,請停用該擴展。 +userSaysSomethingReasonRenote: '{name} 轉傳了包含 {reason} 的貼文' pushNotificationNotSupported: 你的瀏覽器或伺服器不支援推送通知 accessibility: 輔助功能 -userSaysSomethingReasonReply: '{name} 回復了包含 {reason} 的帖子' +userSaysSomethingReasonReply: '{name} 回覆了包含 {reason} 的貼文' hiddenTags: 隱藏主題標籤 -indexPosts: 索引帖子 +indexPosts: 索引貼文 indexNotice: 現在開始索引。 這可能需要一段時間,請不要在一個小時內重啟你的伺服器。 deleted: 已刪除 -editNote: 編輯筆記 +editNote: 編輯貼文 edited: '於 {date} {time} 編輯' userSaysSomethingReason: '{name} 說了 {reason}' allowedInstancesDescription: 要加入聯邦白名單的服務器,每台伺服器用新行分隔(僅適用於私有模式)。 @@ -1839,8 +1884,8 @@ pushNotification: 推送通知 subscribePushNotification: 啟用推送通知 unsubscribePushNotification: 禁用推送通知 pushNotificationAlreadySubscribed: 推送通知已經啟用 -recommendedInstancesDescription: 以每行分隔的推薦伺服器出現在推薦的時間線中。 不要添加 `https://`,只添加域名。 -searchPlaceholder: 在聯邦網路上搜尋 +recommendedInstancesDescription: 以每行分隔的推薦伺服器出現在推薦的時間線中。 +searchPlaceholder: 在 Firefish 上搜尋 cw: 內容警告 selectChannel: 選擇一個頻道 newer: 較新 @@ -1851,7 +1896,7 @@ listsDesc: 清單可以創建一個只有您指定用戶的時間線。 可以 flagSpeakAsCatDescription: 在喵咪模式下你的貼文會被喵化ヾ(•ω•`)o antennasDesc: "天線會顯示符合您設置條件的新貼文!\n 可以從時間線訪問它們。" expandOnNoteClick: 點擊以打開貼文 -expandOnNoteClickDesc: 如果禁用,您仍然可以通過右鍵單擊菜單或單擊時間戳來打開貼文。 +expandOnNoteClickDesc: 即使停用,您仍然可以從右鍵選單或單擊發文時間來打開貼文。 hiddenTagsDescription: '列出您希望隱藏趨勢和探索的主題標籤(不帶 #)。 隱藏的主題標籤仍然可以通過其他方式發現。' userSaysSomethingReasonQuote: '{name} 引用了一篇包含 {reason} 的貼文' silencedInstancesDescription: 列出您想要靜音的伺服器的網址。 您列出的伺服器內的帳戶將被視為“沉默”,只能發出追隨請求,如果不追隨則不能提及本地帳戶。 @@ -1861,9 +1906,59 @@ audio: 音訊 sendPushNotificationReadMessageCaption: 包含文本 “{emptyPushNotificationMessage}” 的通知將顯示一小段時間。 這可能會增加您設備的電池使用量(如果適用)。 channelFederationWarn: 頻道功能尚未與聯邦宇宙連動 -swipeOnMobile: 允許在頁面之間滑動 +swipeOnMobile: 允許以滑動在頁面之間切換 sendPushNotificationReadMessage: 閱讀相關通知或消息後刪除推送通知 image: 圖片 seperateRenoteQuote: 分別獨立的轉傳及引用按鈕 clipsDesc: 摘錄就像一個可以分享的書籤。 你可以從每個貼文的菜單創建新摘錄或將貼文加入已有的摘錄。 noteId: 貼文 ID +sendModMail: 發送審核通知 +enableIdenticonGeneration: 啟用碎片生成 +enableServerMachineStats: 啟用伺服器硬體統計資訊 +reactionPickerSkinTone: 首選表情符號膚色 +indexFromDescription: 留空以索引每個貼文 +preventAiLearning: 防止 AI 機器人抓取 +preventAiLearningDescription: 請求第三方 AI 語言模型不要研究您上傳的內容,例如貼文和圖像。 +indexFrom: 從貼文 ID 開始的索引 +isLocked: 該帳戶已獲得以下批准 +isModerator: 板主 +isAdmin: 管理員 +isPatron: Firefish 項目贊助者 +silencedWarning: 顯示此頁面是因為這些使用者來自您伺服器管理員已靜音的伺服器,因此他們可能是垃圾訊息。 +signupsDisabled: 該伺服器上的註冊當前已被禁用,但您隨時可以在另一台伺服器上註冊!或是您有該伺服器的邀請碼,請在下面輸入。 +showPopup: 通過彈出式視窗通知用戶 +showWithSparkles: 閃閃發光的顯示 +youHaveUnreadAnnouncements: 您有未讀的公告 +donationLink: 連結到贊助頁面 +neverShow: 不再顯示 +remindMeLater: 可能之後 +removeQuote: 删除引用 +removeRecipient: 刪除收件者 +removeMember: 刪除成員 +isBot: 此帳戶是機器人 +verifiedLink: 已驗證連結 +_filters: + followersOnly: 只顯示關注者的 + fromDomain: 從域名 + notesBefore: 指定時間以前 + notesAfter: 指定時間以後 + followingOnly: 只顯示關注的 + fromUser: 從使用者 + withFile: 有檔案 +alt: 替代文字 +xl: 特大 +inputNotMatch: 輸入不一致 +delete2faConfirm: 二階段認證(2FA)將被完全刪除。是否繼續? +_dialog: + charactersBelow: 字數不足! 當前 {current} / 限制 {min} + charactersExceeded: 超過字數限制! 當前 {current} / 限制 {max} +_skinTones: + yellow: 黃色 +exportZip: 匯出ZIP +_feeds: + atom: Atom + rss: RSS +emojiPackCreator: 表情包的作者 +importZip: 匯入ZIP +delete2fa: 停用二階段認證(2FA) +confirm: 確認 diff --git a/package.json b/package.json index ec899739fb..8fd9680aac 100644 --- a/package.json +++ b/package.json @@ -1,16 +1,16 @@ { - "name": "calckey", - "version": "14.0.0-rc3", + "name": "firefish", + "version": "1.0.5-dev14", "codename": "aqua", "repository": { "type": "git", - "url": "https://codeberg.org/calckey/calckey.git" + "url": "https://git.joinfirefish.org/firefish/firefish.git" }, - "packageManager": "pnpm@8.6.6", + "packageManager": "pnpm@8.7.6", "private": true, "scripts": { - "rebuild": "pnpm run clean && pnpm node ./scripts/build-greet.js && pnpm -r run build && pnpm run gulp", - "build": "pnpm node ./scripts/build-greet.js && pnpm -r run build && pnpm run gulp", + "rebuild": "pnpm run clean && ./scripts/build-greet.sh && pnpm -r --parallel run build && pnpm run gulp", + "build": "./scripts/build-greet.sh && pnpm -r --parallel run build && pnpm run gulp", "start": "pnpm --filter backend run start", "start:test": "pnpm --filter backend run start:test", "init": "pnpm run migrate", @@ -21,13 +21,15 @@ "watch": "pnpm run dev", "dev": "pnpm node ./scripts/dev.js", "dev:staging": "NODE_OPTIONS=--max_old_space_size=3072 NODE_ENV=development pnpm run build && pnpm run start", - "lint": "pnpm -r run lint", + "lint": "pnpm -r --parallel run lint", + "debug": "pnpm run build:debug && pnpm run start", + "build:debug": "pnpm -r --parallel run build:debug && pnpm run gulp", "cy:open": "cypress open --browser --e2e --config-file=cypress.config.ts", "cy:run": "cypress run", "e2e": "start-server-and-test start:test http://localhost:61812 cy:run", "mocha": "pnpm --filter backend run mocha", "test": "pnpm run mocha", - "format": "pnpm -r run format", + "format": "pnpm -r --parallel run format", "clean": "pnpm node ./scripts/clean.js", "clean-all": "pnpm node ./scripts/clean-all.js", "cleanall": "pnpm run clean-all" @@ -36,18 +38,23 @@ "chokidar": "^3.3.1" }, "dependencies": { - "@bull-board/api": "5.2.0", - "@bull-board/ui": "5.2.0", - "@napi-rs/cli": "^2.16.1", - "@tensorflow/tfjs": "^3.21.0", + "@bull-board/api": "5.8.0", + "@bull-board/ui": "5.8.0", + "@napi-rs/cli": "^2.16.2", + "@tensorflow/tfjs": "^4.10.0", "js-yaml": "4.1.0", "seedrandom": "^3.0.5" }, "devDependencies": { - "@types/node": "18.11.18", - "@types/gulp": "4.0.10", - "@types/gulp-rename": "2.0.1", - "chalk": "4.1.2", + "@biomejs/biome": "1.0.0", + "@biomejs/cli-darwin-arm64": "^1.0.0", + "@biomejs/cli-darwin-x64": "^1.0.0", + "@biomejs/cli-linux-arm64": "^1.0.0", + "@biomejs/cli-linux-x64": "^1.0.0", + "@types/gulp": "4.0.13", + "@types/gulp-rename": "2.0.2", + "@types/node": "20.5.8", + "add": "2.0.6", "cross-env": "7.0.3", "cypress": "10.11.0", "execa": "5.1.1", @@ -57,8 +64,8 @@ "gulp-replace": "1.1.4", "gulp-terser": "2.1.0", "install-peers": "^1.0.4", - "rome": "^12.1.3", + "pnpm": "8.7.1", "start-server-and-test": "1.15.2", - "typescript": "4.9.4" + "typescript": "5.2.2" } } diff --git a/packages/README.md b/packages/README.md index 0ed7c64039..ea04817f06 100644 --- a/packages/README.md +++ b/packages/README.md @@ -1,10 +1,10 @@ # 📦 Packages -This directory contains all of the packages Calckey uses. +This directory contains all of the packages Firefish uses. - `backend`: Main backend code written in TypeScript for NodeJS - `backend/native-utils`: Backend code written in Rust, bound to NodeJS by [NAPI-RS](https://napi.rs/) - `client`: Web interface written in Vue3 and TypeScript - `sw`: Web [Service Worker](https://developer.mozilla.org/en-US/docs/Web/API/Service_Worker_API) written in TypeScript -- `calckey-js`: TypeScript SDK for both backend and client, also published on [NPM](https://www.npmjs.com/package/calckey-js) for public use +- `firefish-js`: TypeScript SDK for both backend and client, also published on [NPM](https://www.npmjs.com/package/firefish-js) for public use - `megalodon`: TypeScript library used for partial Mastodon API compatibility diff --git a/packages/backend/assets/LICENSE b/packages/backend/assets/LICENSE new file mode 100644 index 0000000000..cb57aef954 --- /dev/null +++ b/packages/backend/assets/LICENSE @@ -0,0 +1,13 @@ +Copyright 2023 Firefish + +Licensed under the Apache License, Version 2.0 (the "License"); +you may not use this file except in compliance with the License. +You may obtain a copy of the License at + + http://www.apache.org/licenses/LICENSE-2.0 + +Unless required by applicable law or agreed to in writing, software +distributed under the License is distributed on an "AS IS" BASIS, +WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. +See the License for the specific language governing permissions and +limitations under the License. diff --git a/packages/backend/assets/api-doc.png b/packages/backend/assets/api-doc.png index 95fe6977fd..c5594fff97 100644 Binary files a/packages/backend/assets/api-doc.png and b/packages/backend/assets/api-doc.png differ diff --git a/packages/backend/assets/apple-touch-icon.png b/packages/backend/assets/apple-touch-icon.png index 35963d8f08..e9e0ac4735 100644 Binary files a/packages/backend/assets/apple-touch-icon.png and b/packages/backend/assets/apple-touch-icon.png differ diff --git a/packages/backend/assets/badges/CREDITS b/packages/backend/assets/badges/CREDITS deleted file mode 100644 index 678ee543a5..0000000000 --- a/packages/backend/assets/badges/CREDITS +++ /dev/null @@ -1,7 +0,0 @@ -All images om this directory are illustrated by Henki (https://www.youtube.com/c/Henkiwashere) -Please show them some love, they're an awesome artist! - -Character design by ThatOneCalculator (https://t1c.dev) - -The images in this directory are complete redraws based off of the original Misskey error images. -The artist and license of said original images is sadly unknown. diff --git a/packages/backend/assets/badges/LICENSE b/packages/backend/assets/badges/LICENSE deleted file mode 100644 index 795087c264..0000000000 --- a/packages/backend/assets/badges/LICENSE +++ /dev/null @@ -1,427 +0,0 @@ -Attribution-ShareAlike 4.0 International - -======================================================================= - -Creative Commons Corporation ("Creative Commons") is not a law firm and -does not provide legal services or legal advice. Distribution of -Creative Commons public licenses does not create a lawyer-client or -other relationship. Creative Commons makes its licenses and related -information available on an "as-is" basis. Creative Commons gives no -warranties regarding its licenses, any material licensed under their -terms and conditions, or any related information. Creative Commons -disclaims all liability for damages resulting from their use to the -fullest extent possible. - -Using Creative Commons Public Licenses - -Creative Commons public licenses provide a standard set of terms and -conditions that creators and other rights holders may use to share -original works of authorship and other material subject to copyright -and certain other rights specified in the public license below. The -following considerations are for informational purposes only, are not -exhaustive, and do not form part of our licenses. - - Considerations for licensors: Our public licenses are - intended for use by those authorized to give the public - permission to use material in ways otherwise restricted by - copyright and certain other rights. Our licenses are - irrevocable. Licensors should read and understand the terms - and conditions of the license they choose before applying it. - Licensors should also secure all rights necessary before - applying our licenses so that the public can reuse the - material as expected. Licensors should clearly mark any - material not subject to the license. This includes other CC- - licensed material, or material used under an exception or - limitation to copyright. More considerations for licensors: - wiki.creativecommons.org/Considerations_for_licensors - - Considerations for the public: By using one of our public - licenses, a licensor grants the public permission to use the - licensed material under specified terms and conditions. If - the licensor's permission is not necessary for any reason--for - example, because of any applicable exception or limitation to - copyright--then that use is not regulated by the license. Our - licenses grant only permissions under copyright and certain - other rights that a licensor has authority to grant. Use of - the licensed material may still be restricted for other - reasons, including because others have copyright or other - rights in the material. A licensor may make special requests, - such as asking that all changes be marked or described. - Although not required by our licenses, you are encouraged to - respect those requests where reasonable. More considerations - for the public: - wiki.creativecommons.org/Considerations_for_licensees - -======================================================================= - -Creative Commons Attribution-ShareAlike 4.0 International Public -License - -By exercising the Licensed Rights (defined below), You accept and agree -to be bound by the terms and conditions of this Creative Commons -Attribution-ShareAlike 4.0 International Public License ("Public -License"). To the extent this Public License may be interpreted as a -contract, You are granted the Licensed Rights in consideration of Your -acceptance of these terms and conditions, and the Licensor grants You -such rights in consideration of benefits the Licensor receives from -making the Licensed Material available under these terms and -conditions. - - -Section 1 -- Definitions. - - a. Adapted Material means material subject to Copyright and Similar - Rights that is derived from or based upon the Licensed Material - and in which the Licensed Material is translated, altered, - arranged, transformed, or otherwise modified in a manner requiring - permission under the Copyright and Similar Rights held by the - Licensor. For purposes of this Public License, where the Licensed - Material is a musical work, performance, or sound recording, - Adapted Material is always produced where the Licensed Material is - synched in timed relation with a moving image. - - b. Adapter's License means the license You apply to Your Copyright - and Similar Rights in Your contributions to Adapted Material in - accordance with the terms and conditions of this Public License. - - c. BY-SA Compatible License means a license listed at - creativecommons.org/compatiblelicenses, approved by Creative - Commons as essentially the equivalent of this Public License. - - d. Copyright and Similar Rights means copyright and/or similar rights - closely related to copyright including, without limitation, - performance, broadcast, sound recording, and Sui Generis Database - Rights, without regard to how the rights are labeled or - categorized. For purposes of this Public License, the rights - specified in Section 2(b)(1)-(2) are not Copyright and Similar - Rights. - - e. Effective Technological Measures means those measures that, in the - absence of proper authority, may not be circumvented under laws - fulfilling obligations under Article 11 of the WIPO Copyright - Treaty adopted on December 20, 1996, and/or similar international - agreements. - - f. Exceptions and Limitations means fair use, fair dealing, and/or - any other exception or limitation to Copyright and Similar Rights - that applies to Your use of the Licensed Material. - - g. License Elements means the license attributes listed in the name - of a Creative Commons Public License. The License Elements of this - Public License are Attribution and ShareAlike. - - h. Licensed Material means the artistic or literary work, database, - or other material to which the Licensor applied this Public - License. - - i. Licensed Rights means the rights granted to You subject to the - terms and conditions of this Public License, which are limited to - all Copyright and Similar Rights that apply to Your use of the - Licensed Material and that the Licensor has authority to license. - - j. Licensor means the individual(s) or entity(ies) granting rights - under this Public License. - - k. Share means to provide material to the public by any means or - process that requires permission under the Licensed Rights, such - as reproduction, public display, public performance, distribution, - dissemination, communication, or importation, and to make material - available to the public including in ways that members of the - public may access the material from a place and at a time - individually chosen by them. - - l. Sui Generis Database Rights means rights other than copyright - resulting from Directive 96/9/EC of the European Parliament and of - the Council of 11 March 1996 on the legal protection of databases, - as amended and/or succeeded, as well as other essentially - equivalent rights anywhere in the world. - - m. You means the individual or entity exercising the Licensed Rights - under this Public License. Your has a corresponding meaning. - - -Section 2 -- Scope. - - a. License grant. - - 1. Subject to the terms and conditions of this Public License, - the Licensor hereby grants You a worldwide, royalty-free, - non-sublicensable, non-exclusive, irrevocable license to - exercise the Licensed Rights in the Licensed Material to: - - a. reproduce and Share the Licensed Material, in whole or - in part; and - - b. produce, reproduce, and Share Adapted Material. - - 2. Exceptions and Limitations. For the avoidance of doubt, where - Exceptions and Limitations apply to Your use, this Public - License does not apply, and You do not need to comply with - its terms and conditions. - - 3. Term. The term of this Public License is specified in Section - 6(a). - - 4. Media and formats; technical modifications allowed. The - Licensor authorizes You to exercise the Licensed Rights in - all media and formats whether now known or hereafter created, - and to make technical modifications necessary to do so. The - Licensor waives and/or agrees not to assert any right or - authority to forbid You from making technical modifications - necessary to exercise the Licensed Rights, including - technical modifications necessary to circumvent Effective - Technological Measures. For purposes of this Public License, - simply making modifications authorized by this Section 2(a) - (4) never produces Adapted Material. - - 5. Downstream recipients. - - a. Offer from the Licensor -- Licensed Material. Every - recipient of the Licensed Material automatically - receives an offer from the Licensor to exercise the - Licensed Rights under the terms and conditions of this - Public License. - - b. Additional offer from the Licensor -- Adapted Material. - Every recipient of Adapted Material from You - automatically receives an offer from the Licensor to - exercise the Licensed Rights in the Adapted Material - under the conditions of the Adapter's License You apply. - - c. No downstream restrictions. You may not offer or impose - any additional or different terms or conditions on, or - apply any Effective Technological Measures to, the - Licensed Material if doing so restricts exercise of the - Licensed Rights by any recipient of the Licensed - Material. - - 6. No endorsement. Nothing in this Public License constitutes or - may be construed as permission to assert or imply that You - are, or that Your use of the Licensed Material is, connected - with, or sponsored, endorsed, or granted official status by, - the Licensor or others designated to receive attribution as - provided in Section 3(a)(1)(A)(i). - - b. Other rights. - - 1. Moral rights, such as the right of integrity, are not - licensed under this Public License, nor are publicity, - privacy, and/or other similar personality rights; however, to - the extent possible, the Licensor waives and/or agrees not to - assert any such rights held by the Licensor to the limited - extent necessary to allow You to exercise the Licensed - Rights, but not otherwise. - - 2. Patent and trademark rights are not licensed under this - Public License. - - 3. To the extent possible, the Licensor waives any right to - collect royalties from You for the exercise of the Licensed - Rights, whether directly or through a collecting society - under any voluntary or waivable statutory or compulsory - licensing scheme. In all other cases the Licensor expressly - reserves any right to collect such royalties. - - -Section 3 -- License Conditions. - -Your exercise of the Licensed Rights is expressly made subject to the -following conditions. - - a. Attribution. - - 1. If You Share the Licensed Material (including in modified - form), You must: - - a. retain the following if it is supplied by the Licensor - with the Licensed Material: - - i. identification of the creator(s) of the Licensed - Material and any others designated to receive - attribution, in any reasonable manner requested by - the Licensor (including by pseudonym if - designated); - - ii. a copyright notice; - - iii. a notice that refers to this Public License; - - iv. a notice that refers to the disclaimer of - warranties; - - v. a URI or hyperlink to the Licensed Material to the - extent reasonably practicable; - - b. indicate if You modified the Licensed Material and - retain an indication of any previous modifications; and - - c. indicate the Licensed Material is licensed under this - Public License, and include the text of, or the URI or - hyperlink to, this Public License. - - 2. You may satisfy the conditions in Section 3(a)(1) in any - reasonable manner based on the medium, means, and context in - which You Share the Licensed Material. For example, it may be - reasonable to satisfy the conditions by providing a URI or - hyperlink to a resource that includes the required - information. - - 3. If requested by the Licensor, You must remove any of the - information required by Section 3(a)(1)(A) to the extent - reasonably practicable. - - b. ShareAlike. - - In addition to the conditions in Section 3(a), if You Share - Adapted Material You produce, the following conditions also apply. - - 1. The Adapter's License You apply must be a Creative Commons - license with the same License Elements, this version or - later, or a BY-SA Compatible License. - - 2. You must include the text of, or the URI or hyperlink to, the - Adapter's License You apply. You may satisfy this condition - in any reasonable manner based on the medium, means, and - context in which You Share Adapted Material. - - 3. You may not offer or impose any additional or different terms - or conditions on, or apply any Effective Technological - Measures to, Adapted Material that restrict exercise of the - rights granted under the Adapter's License You apply. - - -Section 4 -- Sui Generis Database Rights. - -Where the Licensed Rights include Sui Generis Database Rights that -apply to Your use of the Licensed Material: - - a. for the avoidance of doubt, Section 2(a)(1) grants You the right - to extract, reuse, reproduce, and Share all or a substantial - portion of the contents of the database; - - b. if You include all or a substantial portion of the database - contents in a database in which You have Sui Generis Database - Rights, then the database in which You have Sui Generis Database - Rights (but not its individual contents) is Adapted Material, - including for purposes of Section 3(b); and - - c. You must comply with the conditions in Section 3(a) if You Share - all or a substantial portion of the contents of the database. - -For the avoidance of doubt, this Section 4 supplements and does not -replace Your obligations under this Public License where the Licensed -Rights include other Copyright and Similar Rights. - - -Section 5 -- Disclaimer of Warranties and Limitation of Liability. - - a. UNLESS OTHERWISE SEPARATELY UNDERTAKEN BY THE LICENSOR, TO THE - EXTENT POSSIBLE, THE LICENSOR OFFERS THE LICENSED MATERIAL AS-IS - AND AS-AVAILABLE, AND MAKES NO REPRESENTATIONS OR WARRANTIES OF - ANY KIND CONCERNING THE LICENSED MATERIAL, WHETHER EXPRESS, - IMPLIED, STATUTORY, OR OTHER. THIS INCLUDES, WITHOUT LIMITATION, - WARRANTIES OF TITLE, MERCHANTABILITY, FITNESS FOR A PARTICULAR - PURPOSE, NON-INFRINGEMENT, ABSENCE OF LATENT OR OTHER DEFECTS, - ACCURACY, OR THE PRESENCE OR ABSENCE OF ERRORS, WHETHER OR NOT - KNOWN OR DISCOVERABLE. WHERE DISCLAIMERS OF WARRANTIES ARE NOT - ALLOWED IN FULL OR IN PART, THIS DISCLAIMER MAY NOT APPLY TO YOU. - - b. TO THE EXTENT POSSIBLE, IN NO EVENT WILL THE LICENSOR BE LIABLE - TO YOU ON ANY LEGAL THEORY (INCLUDING, WITHOUT LIMITATION, - NEGLIGENCE) OR OTHERWISE FOR ANY DIRECT, SPECIAL, INDIRECT, - INCIDENTAL, CONSEQUENTIAL, PUNITIVE, EXEMPLARY, OR OTHER LOSSES, - COSTS, EXPENSES, OR DAMAGES ARISING OUT OF THIS PUBLIC LICENSE OR - USE OF THE LICENSED MATERIAL, EVEN IF THE LICENSOR HAS BEEN - ADVISED OF THE POSSIBILITY OF SUCH LOSSES, COSTS, EXPENSES, OR - DAMAGES. WHERE A LIMITATION OF LIABILITY IS NOT ALLOWED IN FULL OR - IN PART, THIS LIMITATION MAY NOT APPLY TO YOU. - - c. The disclaimer of warranties and limitation of liability provided - above shall be interpreted in a manner that, to the extent - possible, most closely approximates an absolute disclaimer and - waiver of all liability. - - -Section 6 -- Term and Termination. - - a. This Public License applies for the term of the Copyright and - Similar Rights licensed here. However, if You fail to comply with - this Public License, then Your rights under this Public License - terminate automatically. - - b. Where Your right to use the Licensed Material has terminated under - Section 6(a), it reinstates: - - 1. automatically as of the date the violation is cured, provided - it is cured within 30 days of Your discovery of the - violation; or - - 2. upon express reinstatement by the Licensor. - - For the avoidance of doubt, this Section 6(b) does not affect any - right the Licensor may have to seek remedies for Your violations - of this Public License. - - c. For the avoidance of doubt, the Licensor may also offer the - Licensed Material under separate terms or conditions or stop - distributing the Licensed Material at any time; however, doing so - will not terminate this Public License. - - d. Sections 1, 5, 6, 7, and 8 survive termination of this Public - License. - - -Section 7 -- Other Terms and Conditions. - - a. The Licensor shall not be bound by any additional or different - terms or conditions communicated by You unless expressly agreed. - - b. Any arrangements, understandings, or agreements regarding the - Licensed Material not stated herein are separate from and - independent of the terms and conditions of this Public License. - - -Section 8 -- Interpretation. - - a. For the avoidance of doubt, this Public License does not, and - shall not be interpreted to, reduce, limit, restrict, or impose - conditions on any use of the Licensed Material that could lawfully - be made without permission under this Public License. - - b. To the extent possible, if any provision of this Public License is - deemed unenforceable, it shall be automatically reformed to the - minimum extent necessary to make it enforceable. If the provision - cannot be reformed, it shall be severed from this Public License - without affecting the enforceability of the remaining terms and - conditions. - - c. No term or condition of this Public License will be waived and no - failure to comply consented to unless expressly agreed to by the - Licensor. - - d. Nothing in this Public License constitutes or may be interpreted - as a limitation upon, or waiver of, any privileges and immunities - that apply to the Licensor or You, including from the legal - processes of any jurisdiction or authority. - - -======================================================================= - -Creative Commons is not a party to its public licenses. -Notwithstanding, Creative Commons may elect to apply one of its public -licenses to material it publishes and in those instances will be -considered the “Licensor.” The text of the Creative Commons public -licenses is dedicated to the public domain under the CC0 Public Domain -Dedication. Except for the limited purpose of indicating that material -is shared under a Creative Commons public license or as otherwise -permitted by the Creative Commons policies published at -creativecommons.org/policies, Creative Commons does not authorize the -use of the trademark "Creative Commons" or any other trademark or logo -of Creative Commons without its prior written consent including, -without limitation, in connection with any unauthorized modifications -to any of its public licenses or any other arrangements, -understandings, or agreements concerning use of licensed material. For -the avoidance of doubt, this paragraph does not form part of the public -licenses. - -Creative Commons may be contacted at creativecommons.org. diff --git a/packages/backend/assets/badges/error.png b/packages/backend/assets/badges/error.png index e90912b405..046f18e149 100644 Binary files a/packages/backend/assets/badges/error.png and b/packages/backend/assets/badges/error.png differ diff --git a/packages/backend/assets/badges/error_original.png b/packages/backend/assets/badges/error_original.png deleted file mode 100644 index 3fef1053a2..0000000000 Binary files a/packages/backend/assets/badges/error_original.png and /dev/null differ diff --git a/packages/backend/assets/badges/info.png b/packages/backend/assets/badges/info.png index ac70544e4a..c6ab300a72 100644 Binary files a/packages/backend/assets/badges/info.png and b/packages/backend/assets/badges/info.png differ diff --git a/packages/backend/assets/badges/info_original.png b/packages/backend/assets/badges/info_original.png deleted file mode 100644 index 4f148ba615..0000000000 Binary files a/packages/backend/assets/badges/info_original.png and /dev/null differ diff --git a/packages/backend/assets/badges/not-found.png b/packages/backend/assets/badges/not-found.png index 73d611e0e1..63356530ce 100644 Binary files a/packages/backend/assets/badges/not-found.png and b/packages/backend/assets/badges/not-found.png differ diff --git a/packages/backend/assets/badges/not-found_original.png b/packages/backend/assets/badges/not-found_original.png deleted file mode 100644 index 3022473dcf..0000000000 Binary files a/packages/backend/assets/badges/not-found_original.png and /dev/null differ diff --git a/packages/backend/assets/favicon.ico b/packages/backend/assets/favicon.ico index 11a614ae72..4b603dccb0 100644 Binary files a/packages/backend/assets/favicon.ico and b/packages/backend/assets/favicon.ico differ diff --git a/packages/backend/assets/favicon.png b/packages/backend/assets/favicon.png index 0f482d7f04..983e0d700e 100644 Binary files a/packages/backend/assets/favicon.png and b/packages/backend/assets/favicon.png differ diff --git a/packages/backend/assets/favicon.svg b/packages/backend/assets/favicon.svg index e1a3abbbc2..981fe2f8f9 100644 --- a/packages/backend/assets/favicon.svg +++ b/packages/backend/assets/favicon.svg @@ -1 +1,33 @@ - \ No newline at end of file + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + diff --git a/packages/backend/assets/icons/192.png b/packages/backend/assets/icons/192.png index 536e01cc1f..b84abe9b60 100644 Binary files a/packages/backend/assets/icons/192.png and b/packages/backend/assets/icons/192.png differ diff --git a/packages/backend/assets/icons/512.png b/packages/backend/assets/icons/512.png index 6455268532..be83db8cf8 100644 Binary files a/packages/backend/assets/icons/512.png and b/packages/backend/assets/icons/512.png differ diff --git a/packages/backend/assets/icons/maskable.png b/packages/backend/assets/icons/maskable.png index 44b214ca7c..a224833ed6 100644 Binary files a/packages/backend/assets/icons/maskable.png and b/packages/backend/assets/icons/maskable.png differ diff --git a/packages/backend/assets/icons/monochrome.png b/packages/backend/assets/icons/monochrome.png index 75894e7a4e..8eb1955d89 100644 Binary files a/packages/backend/assets/icons/monochrome.png and b/packages/backend/assets/icons/monochrome.png differ diff --git a/packages/backend/assets/inverse wordmark.png b/packages/backend/assets/inverse wordmark.png deleted file mode 100644 index 6455268532..0000000000 Binary files a/packages/backend/assets/inverse wordmark.png and /dev/null differ diff --git a/packages/backend/assets/inverse wordmark.svg b/packages/backend/assets/inverse wordmark.svg deleted file mode 100644 index c0110540ea..0000000000 --- a/packages/backend/assets/inverse wordmark.svg +++ /dev/null @@ -1 +0,0 @@ - \ No newline at end of file diff --git a/packages/backend/assets/mi-white.png b/packages/backend/assets/mi-white.png index 2a186a9bce..360db4fa78 100644 Binary files a/packages/backend/assets/mi-white.png and b/packages/backend/assets/mi-white.png differ diff --git a/packages/backend/assets/notification-badges/LICENSE b/packages/backend/assets/notification-badges/LICENSE index 841c4c682b..28b0b502d7 100644 --- a/packages/backend/assets/notification-badges/LICENSE +++ b/packages/backend/assets/notification-badges/LICENSE @@ -1,5 +1,24 @@ -Font Awesome Icons +Phosphor Icons ------------------------- -Ⓒ Font Awesome -CC BY 4.0 (https://creativecommons.org/licenses/by/4.0/) +MIT License + +Copyright (c) 2020 Phosphor Icons + +Permission is hereby granted, free of charge, to any person obtaining a copy +of this software and associated documentation files (the "Software"), to deal +in the Software without restriction, including without limitation the rights +to use, copy, modify, merge, publish, distribute, sublicense, and/or sell +copies of the Software, and to permit persons to whom the Software is +furnished to do so, subject to the following conditions: + +The above copyright notice and this permission notice shall be included in all +copies or substantial portions of the Software. + +THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR +IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, +FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE +AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER +LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, +OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE +SOFTWARE. diff --git a/packages/backend/assets/notification-badges/at.png b/packages/backend/assets/notification-badges/at.png index d1492856de..4ffb1c30bd 100644 Binary files a/packages/backend/assets/notification-badges/at.png and b/packages/backend/assets/notification-badges/at.png differ diff --git a/packages/backend/assets/notification-badges/check.png b/packages/backend/assets/notification-badges/check.png index baeb76babf..e1f6d41d81 100644 Binary files a/packages/backend/assets/notification-badges/check.png and b/packages/backend/assets/notification-badges/check.png differ diff --git a/packages/backend/assets/notification-badges/clipboard-check-solid.png b/packages/backend/assets/notification-badges/clipboard-check-solid.png index d8cdfa9da4..65c62187ee 100644 Binary files a/packages/backend/assets/notification-badges/clipboard-check-solid.png and b/packages/backend/assets/notification-badges/clipboard-check-solid.png differ diff --git a/packages/backend/assets/notification-badges/clock.png b/packages/backend/assets/notification-badges/clock.png index 9323f8f307..1beea217e2 100644 Binary files a/packages/backend/assets/notification-badges/clock.png and b/packages/backend/assets/notification-badges/clock.png differ diff --git a/packages/backend/assets/notification-badges/comments.png b/packages/backend/assets/notification-badges/comments.png index bc8a1c35b4..515799c697 100644 Binary files a/packages/backend/assets/notification-badges/comments.png and b/packages/backend/assets/notification-badges/comments.png differ diff --git a/packages/backend/assets/notification-badges/id-card-alt.png b/packages/backend/assets/notification-badges/id-card-alt.png index 67e1410e34..9bcaf26ff9 100644 Binary files a/packages/backend/assets/notification-badges/id-card-alt.png and b/packages/backend/assets/notification-badges/id-card-alt.png differ diff --git a/packages/backend/assets/notification-badges/plus.png b/packages/backend/assets/notification-badges/plus.png index 05362c122b..3e114247fe 100644 Binary files a/packages/backend/assets/notification-badges/plus.png and b/packages/backend/assets/notification-badges/plus.png differ diff --git a/packages/backend/assets/notification-badges/poll-h.png b/packages/backend/assets/notification-badges/poll-h.png index 3b7ded6659..825b69c635 100644 Binary files a/packages/backend/assets/notification-badges/poll-h.png and b/packages/backend/assets/notification-badges/poll-h.png differ diff --git a/packages/backend/assets/notification-badges/quote-right.png b/packages/backend/assets/notification-badges/quote-right.png index 0fa4837654..a41a15b495 100644 Binary files a/packages/backend/assets/notification-badges/quote-right.png and b/packages/backend/assets/notification-badges/quote-right.png differ diff --git a/packages/backend/assets/notification-badges/reply.png b/packages/backend/assets/notification-badges/reply.png index 77021f71a7..53d7cf3a15 100644 Binary files a/packages/backend/assets/notification-badges/reply.png and b/packages/backend/assets/notification-badges/reply.png differ diff --git a/packages/backend/assets/notification-badges/user-plus.png b/packages/backend/assets/notification-badges/user-plus.png index 9d376d04d6..f47144576e 100644 Binary files a/packages/backend/assets/notification-badges/user-plus.png and b/packages/backend/assets/notification-badges/user-plus.png differ diff --git a/packages/backend/assets/redoc.html b/packages/backend/assets/redoc.html index 6f48c17660..403af4bbfa 100644 --- a/packages/backend/assets/redoc.html +++ b/packages/backend/assets/redoc.html @@ -1,7 +1,7 @@ - Calckey API + Firefish API diff --git a/packages/backend/assets/screenshots/1.webp b/packages/backend/assets/screenshots/1.webp index 50a69a1a54..876b571335 100644 Binary files a/packages/backend/assets/screenshots/1.webp and b/packages/backend/assets/screenshots/1.webp differ diff --git a/packages/backend/assets/screenshots/2.webp b/packages/backend/assets/screenshots/2.webp index 3686dc6307..30b85d9b7c 100644 Binary files a/packages/backend/assets/screenshots/2.webp and b/packages/backend/assets/screenshots/2.webp differ diff --git a/packages/backend/assets/splash.png b/packages/backend/assets/splash.png index 8c1da72fbf..5f026e3544 100644 Binary files a/packages/backend/assets/splash.png and b/packages/backend/assets/splash.png differ diff --git a/packages/backend/assets/splash.svg b/packages/backend/assets/splash.svg new file mode 100644 index 0000000000..33651311c3 --- /dev/null +++ b/packages/backend/assets/splash.svg @@ -0,0 +1,153 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + diff --git a/packages/backend/migration/1557761316509-AddSomeUrls.js b/packages/backend/migration/1557761316509-AddSomeUrls.js index 9365643bb0..9839fe010b 100644 --- a/packages/backend/migration/1557761316509-AddSomeUrls.js +++ b/packages/backend/migration/1557761316509-AddSomeUrls.js @@ -4,10 +4,10 @@ export class AddSomeUrls1557761316509 { `ALTER TABLE "meta" ADD "ToSUrl" character varying(512)`, ); await queryRunner.query( - `ALTER TABLE "meta" ADD "repositoryUrl" character varying(512) NOT NULL DEFAULT 'https://codeberg.org/calckey/calckey'`, + `ALTER TABLE "meta" ADD "repositoryUrl" character varying(512) NOT NULL DEFAULT 'https://codeberg.org/firefish/firefish'`, ); await queryRunner.query( - `ALTER TABLE "meta" ADD "feedbackUrl" character varying(512) DEFAULT 'https://codeberg.org/calckey/calckey/issues'`, + `ALTER TABLE "meta" ADD "feedbackUrl" character varying(512) DEFAULT 'https://codeberg.org/firefish/firefish/issues'`, ); } async down(queryRunner) { diff --git a/packages/backend/migration/1658203170545calckey.js b/packages/backend/migration/1658203170545calckey.js deleted file mode 100644 index 95c3f05d3d..0000000000 --- a/packages/backend/migration/1658203170545calckey.js +++ /dev/null @@ -1,27 +0,0 @@ -export class calckey1658203170545 { - name = "calckey1658203170545"; - - async up(queryRunner) { - await queryRunner.query( - `UPDATE meta SET "useStarForReactionFallback" = TRUE;`, - ); - await queryRunner.query( - `UPDATE meta SET "repositoryUrl" = 'https://codeberg/calckey/calckey'`, - ); - await queryRunner.query( - `UPDATE meta SET "feedbackUrl" = 'https://codeberg/calckey/calckey/issues'`, - ); - } - - async down(queryRunner) { - await queryRunner.query( - `UPDATE meta SET "useStarForReactionFallback" = FALSE;`, - ); - await queryRunner.query( - `UPDATE meta SET "repositoryUrl" = 'https://codeberg/calckey/calckey'`, - ); - await queryRunner.query( - `UPDATE meta SET "feedbackUrl" = 'https://codeberg/calckey/calckey/issues'`, - ); - } -} diff --git a/packages/backend/migration/1658203170545firefish.js b/packages/backend/migration/1658203170545firefish.js new file mode 100644 index 0000000000..c66996d088 --- /dev/null +++ b/packages/backend/migration/1658203170545firefish.js @@ -0,0 +1,21 @@ +export class calckey1658203170545 { + name = "calckey1658203170545"; + + async up(queryRunner) { + await queryRunner.query( + `UPDATE meta SET "repositoryUrl" = 'https://codeberg/firefish/firefish'`, + ); + await queryRunner.query( + `UPDATE meta SET "feedbackUrl" = 'https://codeberg/firefish/firefish/issues'`, + ); + } + + async down(queryRunner) { + await queryRunner.query( + `UPDATE meta SET "repositoryUrl" = 'https://codeberg/firefish/firefish'`, + ); + await queryRunner.query( + `UPDATE meta SET "feedbackUrl" = 'https://codeberg/firefish/firefish/issues'`, + ); + } +} diff --git a/packages/backend/migration/1658981842728FixCalckey.js b/packages/backend/migration/1658981842728FixCalckey.js index 1a0305538d..96dfd77ac3 100644 --- a/packages/backend/migration/1658981842728FixCalckey.js +++ b/packages/backend/migration/1658981842728FixCalckey.js @@ -1,15 +1,15 @@ -export class FixCalckey1658981842728 { - name = "FixCalckey1658981842728"; +export class FixFirefish1658981842728 { + name = "FixFirefish1658981842728"; async up(queryRunner) { await queryRunner.query( `UPDATE "meta" SET "useStarForReactionFallback" = TRUE;`, ); await queryRunner.query( - `UPDATE "meta" SET "repositoryUrl" = 'https://codeberg/calckey/calckey'`, + `UPDATE "meta" SET "repositoryUrl" = 'https://codeberg/firefish/firefish'`, ); await queryRunner.query( - `UPDATE "meta" SET "feedbackUrl" = 'https://codeberg/calckey/calckey/issues'`, + `UPDATE "meta" SET "feedbackUrl" = 'https://codeberg/firefish/firefish/issues'`, ); } @@ -18,10 +18,10 @@ export class FixCalckey1658981842728 { `UPDATE "meta" SET "useStarForReactionFallback" = FALSE;`, ); await queryRunner.query( - `UPDATE "meta" SET "repositoryUrl" = 'https://codeberg/calckey/calckey'`, + `UPDATE "meta" SET "repositoryUrl" = 'https://codeberg/firefish/firefish'`, ); await queryRunner.query( - `UPDATE "meta" SET "feedbackUrl" = 'https://codeberg/calckey/calckey/issues'`, + `UPDATE "meta" SET "feedbackUrl" = 'https://codeberg/firefish/firefish/issues'`, ); } } diff --git a/packages/backend/migration/1668831378728FixCalckeyAgain.js b/packages/backend/migration/1668831378728FixCalckeyAgain.js index c65dd54cd7..33db2b15a7 100644 --- a/packages/backend/migration/1668831378728FixCalckeyAgain.js +++ b/packages/backend/migration/1668831378728FixCalckeyAgain.js @@ -1,5 +1,5 @@ -export class FixCalckeyAgain1668831378728 { - name = "FixCalckeyAgain1668831378728"; +export class FixFirefishAgain1668831378728 { + name = "FixFirefishAgain1668831378728"; async up(queryRunner) { await queryRunner.query( diff --git a/packages/backend/migration/1671388343000-CalckeyRepoMove.js b/packages/backend/migration/1671388343000-CalckeyRepoMove.js index 60550f0446..e11ddcb435 100644 --- a/packages/backend/migration/1671388343000-CalckeyRepoMove.js +++ b/packages/backend/migration/1671388343000-CalckeyRepoMove.js @@ -1,23 +1,23 @@ -/* "CalckeyRepoMove1671388343000" is a class that updates the "useStarForReactionFallback" column in +/* "FirefishRepoMove1671388343000" is a class that updates the "useStarForReactionFallback" column in the "meta" table to TRUE */ -export class CalckeyRepoMove1671388343000 { - name = "CalckeyRepoMove1671388343000"; +export class FirefishRepoMove1671388343000 { + name = "FirefishRepoMove1671388343000"; async up(queryRunner) { await queryRunner.query( - `UPDATE meta SET "repositoryUrl" = 'https://codeberg/calckey/calckey'`, + `UPDATE meta SET "repositoryUrl" = 'https://codeberg/firefish/firefish'`, ); await queryRunner.query( - `UPDATE meta SET "feedbackUrl" = 'https://codeberg/calckey/calckey/issues'`, + `UPDATE meta SET "feedbackUrl" = 'https://codeberg/firefish/firefish/issues'`, ); } async down(queryRunner) { await queryRunner.query( - `UPDATE meta SET "repositoryUrl" = 'https://codeberg/calckey/calckey'`, + `UPDATE meta SET "repositoryUrl" = 'https://codeberg/firefish/firefish'`, ); await queryRunner.query( - `UPDATE meta SET "feedbackUrl" = 'https://codeberg/calckey/calckey/issues'`, + `UPDATE meta SET "feedbackUrl" = 'https://codeberg/firefish/firefish/issues'`, ); } } diff --git a/packages/backend/migration/1678426061773-tweak-varchar-length.js b/packages/backend/migration/1678426061773-tweak-varchar-length.js new file mode 100644 index 0000000000..00ddcaebea --- /dev/null +++ b/packages/backend/migration/1678426061773-tweak-varchar-length.js @@ -0,0 +1,16 @@ +export class tweakVarcharLength1678426061773 { + name = "tweakVarcharLength1678426061773"; + + async up(queryRunner) { + await queryRunner.query( + `ALTER TABLE "meta" ALTER COLUMN "smtpUser" TYPE character varying(1024)`, + undefined, + ); + await queryRunner.query( + `ALTER TABLE "meta" ALTER COLUMN "smtpPass" TYPE character varying(1024)`, + undefined, + ); + } + + async down(queryRunner) {} +} diff --git a/packages/backend/migration/1679269929000-fix-repo.js b/packages/backend/migration/1679269929000-fix-repo.js index 3571da4f51..2abcd71bb9 100644 --- a/packages/backend/migration/1679269929000-fix-repo.js +++ b/packages/backend/migration/1679269929000-fix-repo.js @@ -3,19 +3,19 @@ export class FixRepo1679269929000 { async up(queryRunner) { await queryRunner.query( - `UPDATE meta SET "repositoryUrl" = 'https://codeberg.org/calckey/calckey'`, + `UPDATE meta SET "repositoryUrl" = 'https://codeberg.org/firefish/firefish'`, ); await queryRunner.query( - `UPDATE meta SET "feedbackUrl" = 'https://codeberg.org/calckey/calckey/issues'`, + `UPDATE meta SET "feedbackUrl" = 'https://codeberg.org/firefish/firefish/issues'`, ); } async down(queryRunner) { await queryRunner.query( - `UPDATE meta SET "repositoryUrl" = 'https://codeberg.org/calckey/calckey'`, + `UPDATE meta SET "repositoryUrl" = 'https://codeberg.org/firefish/firefish'`, ); await queryRunner.query( - `UPDATE meta SET "feedbackUrl" = 'https://codeberg.org/calckey/calckey/issues'`, + `UPDATE meta SET "feedbackUrl" = 'https://codeberg.org/firefish/firefish/issues'`, ); } } diff --git a/packages/backend/migration/1689136347561-donation-link.js b/packages/backend/migration/1689136347561-donation-link.js new file mode 100644 index 0000000000..dbe0ed7c8e --- /dev/null +++ b/packages/backend/migration/1689136347561-donation-link.js @@ -0,0 +1,15 @@ +export class DonationLink1689136347561 { + name = "DonationLink1689136347561"; + + async up(queryRunner) { + await queryRunner.query( + `ALTER TABLE "meta" ADD "donationLink" character varying(256)`, + ); + } + + async down(queryRunner) { + await queryRunner.query( + `ALTER TABLE "meta" DROP COLUMN "DonationLink1689136347561"`, + ); + } +} diff --git a/packages/backend/migration/1689739513827-firefish-repo.js b/packages/backend/migration/1689739513827-firefish-repo.js new file mode 100644 index 0000000000..d2491f2139 --- /dev/null +++ b/packages/backend/migration/1689739513827-firefish-repo.js @@ -0,0 +1,21 @@ +export class FirefishRepo1689739513827 { + name = "FirefishRepo1689739513827"; + + async up(queryRunner) { + await queryRunner.query( + `UPDATE meta SET "repositoryUrl" = 'https://codeberg.org/firefish/firefish'`, + ); + await queryRunner.query( + `UPDATE meta SET "feedbackUrl" = 'https://codeberg.org/firefish/firefish/issues'`, + ); + } + + async down(queryRunner) { + await queryRunner.query( + `UPDATE meta SET "repositoryUrl" = 'https://codeberg.org/calckey/calckey'`, + ); + await queryRunner.query( + `UPDATE meta SET "feedbackUrl" = 'https://codeberg.org/calckey/calckey/firefish/firefish/issues'`, + ); + } +} diff --git a/packages/backend/migration/1689957674000-firefish-repo.js b/packages/backend/migration/1689957674000-firefish-repo.js new file mode 100644 index 0000000000..fb45538ddf --- /dev/null +++ b/packages/backend/migration/1689957674000-firefish-repo.js @@ -0,0 +1,21 @@ +export class FirefishRepo1689957674000 { + name = "FirefishRepo1689957674000"; + + async up(queryRunner) { + await queryRunner.query( + `UPDATE meta SET "repositoryUrl" = 'https://git.joinfirefish.org/firefish/firefish'`, + ); + await queryRunner.query( + `UPDATE meta SET "feedbackUrl" = 'https://git.joinfirefish.org/firefish/firefish/issues'`, + ); + } + + async down(queryRunner) { + await queryRunner.query( + `UPDATE meta SET "repositoryUrl" = 'https://codeberg.org/firefish/firefish'`, + ); + await queryRunner.query( + `UPDATE meta SET "feedbackUrl" = 'https://codeberg.org/firefish/firefish/issues'`, + ); + } +} diff --git a/packages/backend/migration/1692374635734-IncreaseHostCharLimit.js b/packages/backend/migration/1692374635734-IncreaseHostCharLimit.js new file mode 100644 index 0000000000..feb0d18a63 --- /dev/null +++ b/packages/backend/migration/1692374635734-IncreaseHostCharLimit.js @@ -0,0 +1,119 @@ +export class IncreaseHostCharLimit1692374635734 { + name = "IncreaseHostCharLimit1692374635734"; + + async up(queryRunner) { + await queryRunner.query( + `ALTER TABLE "drive_file" ALTER COLUMN "userHost" TYPE character varying(512)`, + ); + await queryRunner.query( + `ALTER TABLE "user" ALTER COLUMN "host" TYPE character varying(512)`, + ); + await queryRunner.query( + `ALTER TABLE "user_profile" ALTER COLUMN "userHost" TYPE character varying(512)`, + ); + await queryRunner.query( + `ALTER TABLE "user_publickey" ALTER COLUMN "keyId" TYPE character varying(512)`, + ); + await queryRunner.query( + `ALTER TABLE "emoji" ALTER COLUMN "host" TYPE character varying(512)`, + ); + await queryRunner.query( + `ALTER TABLE "note" ALTER COLUMN "userHost" TYPE character varying(512)`, + ); + await queryRunner.query( + `ALTER TABLE "note" ALTER COLUMN "replyUserHost" TYPE character varying(512)`, + ); + await queryRunner.query( + `ALTER TABLE "note" ALTER COLUMN "renoteUserHost" TYPE character varying(512)`, + ); + await queryRunner.query( + `ALTER TABLE "instance" ALTER COLUMN "host" TYPE character varying(512)`, + ); + await queryRunner.query( + `ALTER TABLE "instance" ALTER COLUMN "iconUrl" TYPE character varying(4096)`, + ); + await queryRunner.query( + `ALTER TABLE "instance" ALTER COLUMN "faviconUrl" TYPE character varying(4096)`, + ); + + await queryRunner.query( + `ALTER TABLE "poll" ALTER COLUMN "userHost" TYPE character varying(512)`, + ); + await queryRunner.query( + `ALTER TABLE "abuse_user_report" ALTER COLUMN "targetUserHost" TYPE character varying(512)`, + ); + await queryRunner.query( + `ALTER TABLE "abuse_user_report" ALTER COLUMN "reporterHost" TYPE character varying(512)`, + ); + await queryRunner.query( + `ALTER TABLE "following" ALTER COLUMN "followeeHost" TYPE character varying(512)`, + ); + await queryRunner.query( + `ALTER TABLE "following" ALTER COLUMN "followerHost" TYPE character varying(512)`, + ); + await queryRunner.query( + `ALTER TABLE "follow_request" ALTER COLUMN "followeeHost" TYPE character varying(512)`, + ); + await queryRunner.query( + `ALTER TABLE "follow_request" ALTER COLUMN "followerHost" TYPE character varying(512)`, + ); + } + + async down(queryRunner) { + await queryRunner.query( + `ALTER TABLE "drive_file" ALTER COLUMN "userHost" TYPE character varying(128)`, + ); + await queryRunner.query( + `ALTER TABLE "user" ALTER COLUMN "host" TYPE character varying(128)`, + ); + await queryRunner.query( + `ALTER TABLE "user_profile" ALTER COLUMN "userHost" TYPE character varying(128)`, + ); + await queryRunner.query( + `ALTER TABLE "user_publickey" ALTER COLUMN "keyId" TYPE character varying(256)`, + ); + await queryRunner.query( + `ALTER TABLE "emoji" ALTER COLUMN "host" TYPE character varying(128)`, + ); + await queryRunner.query( + `ALTER TABLE "note" ALTER COLUMN "userHost" TYPE character varying(128)`, + ); + await queryRunner.query( + `ALTER TABLE "note" ALTER COLUMN "replyUserHost" TYPE character varying(128)`, + ); + await queryRunner.query( + `ALTER TABLE "note" ALTER COLUMN "renoteUserHost" TYPE character varying(128)`, + ); + await queryRunner.query( + `ALTER TABLE "instance" ALTER COLUMN "host" TYPE character varying(128)`, + ); + await queryRunner.query( + `ALTER TABLE "instance" ALTER COLUMN "iconUrl" TYPE character varying(256)`, + ); + await queryRunner.query( + `ALTER TABLE "instance" ALTER COLUMN "faviconUrl" TYPE character varying(256)`, + ); + + await queryRunner.query( + `ALTER TABLE "poll" ALTER COLUMN "userHost" TYPE character varying(128)`, + ); + await queryRunner.query( + `ALTER TABLE "abuse_user_report" ALTER COLUMN "targetUserHost" TYPE character varying(128)`, + ); + await queryRunner.query( + `ALTER TABLE "abuse_user_report" ALTER COLUMN "reporterHost" TYPE character varying(128)`, + ); + await queryRunner.query( + `ALTER TABLE "following" ALTER COLUMN "followeeHost" TYPE character varying(128)`, + ); + await queryRunner.query( + `ALTER TABLE "following" ALTER COLUMN "followerHost" TYPE character varying(128)`, + ); + await queryRunner.query( + `ALTER TABLE "follow_request" ALTER COLUMN "followeeHost" TYPE character varying(128)`, + ); + await queryRunner.query( + `ALTER TABLE "follow_request" ALTER COLUMN "followerHost" TYPE character varying(128)`, + ); + } +} diff --git a/packages/backend/native-utils/Cargo.lock b/packages/backend/native-utils/Cargo.lock index 1a20b792c2..95d3e9af23 100644 --- a/packages/backend/native-utils/Cargo.lock +++ b/packages/backend/native-utils/Cargo.lock @@ -196,6 +196,12 @@ version = "0.21.2" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "604178f6c5c21f02dc555784810edfb88d34ac2c73b2eae109655649ee73ce3d" +[[package]] +name = "basen" +version = "0.1.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "1dbe4bb73fd931c4d1aaf53b35d1286c8a948ad00ec92c8e3c856f15fd027f43" + [[package]] name = "bigdecimal" version = "0.3.1" @@ -458,6 +464,20 @@ version = "1.0.0" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "acbf1af155f9b9ef647e42cdc158db4b64a1b61f743629225fde6f3e0be2a7c7" +[[package]] +name = "combine" +version = "4.6.6" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "35ed6e9d84f0b51a7f52daf1c7d71dd136fd7a3f41a8462b8cdb8c78d920fad4" +dependencies = [ + "bytes", + "futures-core", + "memchr", + "pin-project-lite", + "tokio", + "tokio-util", +] + [[package]] name = "console" version = "0.15.7" @@ -486,6 +506,16 @@ dependencies = [ "unicode-segmentation", ] +[[package]] +name = "core-foundation" +version = "0.9.3" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "194a7a9e6de53fa55116934067c844d9d749312f75c6f6d0980e8c252f8c2146" +dependencies = [ + "core-foundation-sys", + "libc", +] + [[package]] name = "core-foundation-sys" version = "0.8.4" @@ -1275,14 +1305,18 @@ checksum = "2dffe52ecf27772e601905b7522cb4ef790d2cc203488bbd0e2fe85fcb74566d" name = "migration" version = "0.1.0" dependencies = [ + "basen", "futures", "indicatif", "native-utils", + "redis", + "sea-orm", "sea-orm-migration", "serde", "serde_json", "serde_yaml", "tokio", + "url", "urlencoding", ] @@ -1372,6 +1406,7 @@ name = "native-utils" version = "0.0.0" dependencies = [ "async-trait", + "basen", "cfg-if", "chrono", "cuid2", @@ -1383,7 +1418,6 @@ dependencies = [ "once_cell", "parse-display", "pretty_assertions", - "radix_fmt", "rand", "schemars", "sea-orm", @@ -1509,6 +1543,12 @@ version = "1.18.0" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "dd8b5dd2ae5ed71462c540258bedcb51965123ad7e7ccf4b9a8cafaa4a63576d" +[[package]] +name = "openssl-probe" +version = "0.1.5" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "ff011a302c396a5197692431fc1948019154afc178baf7d8e37367442a4601cf" + [[package]] name = "os_str_bytes" version = "6.5.0" @@ -1798,12 +1838,6 @@ version = "0.7.0" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "dc33ff2d4973d518d823d61aa239014831e521c75da58e3df4840d3f47749d09" -[[package]] -name = "radix_fmt" -version = "1.0.0" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "ce082a9940a7ace2ad4a8b7d0b1eac6aa378895f18be598230c5f2284ac05426" - [[package]] name = "rand" version = "0.8.5" @@ -1843,6 +1877,29 @@ dependencies = [ "rand_core", ] +[[package]] +name = "redis" +version = "0.23.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "3ea8c51b5dc1d8e5fd3350ec8167f464ec0995e79f2e90a075b63371500d557f" +dependencies = [ + "async-trait", + "bytes", + "combine", + "futures-util", + "itoa", + "percent-encoding", + "pin-project-lite", + "rustls 0.21.3", + "rustls-native-certs", + "ryu", + "sha1_smol", + "tokio", + "tokio-rustls 0.24.1", + "tokio-util", + "url", +] + [[package]] name = "redox_syscall" version = "0.2.16" @@ -2043,6 +2100,30 @@ dependencies = [ "webpki", ] +[[package]] +name = "rustls" +version = "0.21.3" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "b19faa85ecb5197342b54f987b142fb3e30d0c90da40f80ef4fa9a726e6676ed" +dependencies = [ + "log", + "ring", + "rustls-webpki", + "sct", +] + +[[package]] +name = "rustls-native-certs" +version = "0.6.3" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "a9aace74cb666635c918e9c12bc0d348266037aa8eb599b5cba565709a8dff00" +dependencies = [ + "openssl-probe", + "rustls-pemfile", + "schannel", + "security-framework", +] + [[package]] name = "rustls-pemfile" version = "1.0.2" @@ -2052,6 +2133,16 @@ dependencies = [ "base64 0.21.2", ] +[[package]] +name = "rustls-webpki" +version = "0.101.1" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "15f36a6828982f422756984e47912a7a51dcbc2a197aa791158f8ca61cd8204e" +dependencies = [ + "ring", + "untrusted", +] + [[package]] name = "rustversion" version = "1.0.12" @@ -2076,6 +2167,15 @@ version = "1.0.13" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "f91339c0467de62360649f8d3e185ca8de4224ff281f66000de5eb2a77a79041" +[[package]] +name = "schannel" +version = "0.1.22" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "0c3733bf4cf7ea0880754e19cb5a462007c4a8c1914bff372ccc95b464f1df88" +dependencies = [ + "windows-sys 0.48.0", +] + [[package]] name = "schemars" version = "0.8.12" @@ -2286,6 +2386,29 @@ version = "4.1.0" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "1c107b6f4780854c8b126e228ea8869f4d7b71260f962fefb57b996b8959ba6b" +[[package]] +name = "security-framework" +version = "2.9.1" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "1fc758eb7bffce5b308734e9b0c1468893cae9ff70ebf13e7090be8dcbcc83a8" +dependencies = [ + "bitflags 1.3.2", + "core-foundation", + "core-foundation-sys", + "libc", + "security-framework-sys", +] + +[[package]] +name = "security-framework-sys" +version = "2.9.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "f51d0c0d83bec45f16480d0ce0058397a69e48fcdc52d1dc8855fb68acbd31a7" +dependencies = [ + "core-foundation-sys", + "libc", +] + [[package]] name = "semver" version = "1.0.17" @@ -2370,6 +2493,12 @@ dependencies = [ "digest", ] +[[package]] +name = "sha1_smol" +version = "1.0.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "ae1a47186c03a32177042e55dbc5fd5aee900b8e0069a8d70fba96a9375cd012" + [[package]] name = "sha2" version = "0.10.6" @@ -2518,7 +2647,7 @@ dependencies = [ "percent-encoding", "rand", "rust_decimal", - "rustls", + "rustls 0.20.8", "rustls-pemfile", "serde", "serde_json", @@ -2564,7 +2693,7 @@ checksum = "804d3f245f894e61b1e6263c84b23ca675d96753b5abfd5cc8597d86806e8024" dependencies = [ "once_cell", "tokio", - "tokio-rustls", + "tokio-rustls 0.23.4", ] [[package]] @@ -2778,11 +2907,21 @@ version = "0.23.4" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "c43ee83903113e03984cb9e5cebe6c04a5116269e900e3ddba8f068a62adda59" dependencies = [ - "rustls", + "rustls 0.20.8", "tokio", "webpki", ] +[[package]] +name = "tokio-rustls" +version = "0.24.1" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "c28327cf380ac148141087fbfb9de9d7bd4e84ab5d2c28fbc911d753de8a7081" +dependencies = [ + "rustls 0.21.3", + "tokio", +] + [[package]] name = "tokio-stream" version = "0.1.14" @@ -2949,6 +3088,7 @@ dependencies = [ "form_urlencoded", "idna", "percent-encoding", + "serde", ] [[package]] diff --git a/packages/backend/native-utils/Cargo.toml b/packages/backend/native-utils/Cargo.toml index f93180fe43..2b8aaaa8e4 100644 --- a/packages/backend/native-utils/Cargo.toml +++ b/packages/backend/native-utils/Cargo.toml @@ -9,7 +9,7 @@ members = ["migration"] [features] default = [] noarray = [] -napi = ["dep:napi", "dep:napi-derive", "dep:radix_fmt"] +napi = ["dep:napi", "dep:napi-derive"] [lib] crate-type = ["cdylib", "lib"] @@ -35,7 +35,7 @@ utoipa = "3.3.0" # Default enable napi4 feature, see https://nodejs.org/api/n-api.html#node-api-version-matrix napi = { version = "2.13.1", default-features = false, features = ["napi6", "tokio_rt"], optional = true } napi-derive = { version = "2.12.0", optional = true } -radix_fmt = { version = "1.0.0", optional = true } +basen = "0.1.0" [dev-dependencies] pretty_assertions = "1.3.0" diff --git a/packages/backend/native-utils/__test__/index.spec.mjs b/packages/backend/native-utils/__test__/index.spec.mjs index 6e6a91858c..9ff8ead6c9 100644 --- a/packages/backend/native-utils/__test__/index.spec.mjs +++ b/packages/backend/native-utils/__test__/index.spec.mjs @@ -12,18 +12,18 @@ test("convert to mastodon id", (t) => { t.is(convertId("9gf61ehcxv", IdConvertType.MastodonId), "960365976481219"); t.is( convertId("9fbr9z0wbrjqyd3u", IdConvertType.MastodonId), - "3954607381600562394", + "2083785058661759970208986", ); t.is( convertId("9fbs680oyviiqrol9md73p8g", IdConvertType.MastodonId), - "3494513243013053824", + "5878598648988104013828532260828151168", ); }); test("create cuid2 with timestamp prefix", (t) => { nativeInitIdGenerator(16, ""); - t.not(nativeCreateId(BigInt(Date.now())), nativeCreateId(BigInt(Date.now()))); - t.is(nativeCreateId(BigInt(Date.now())).length, 16); + t.not(nativeCreateId(Date.now()), nativeCreateId(Date.now())); + t.is(nativeCreateId(Date.now()).length, 16); }); test("create random string", (t) => { diff --git a/packages/backend/native-utils/migration/Cargo.toml b/packages/backend/native-utils/migration/Cargo.toml index 7ed9fd5f03..454d9bff43 100644 --- a/packages/backend/native-utils/migration/Cargo.toml +++ b/packages/backend/native-utils/migration/Cargo.toml @@ -21,14 +21,18 @@ futures = { version = "0.3.28", optional = true } serde_yaml = "0.9.21" serde = { version = "1.0.163", features = ["derive"] } urlencoding = "2.1.2" +redis = { version = "0.23.0", features = ["tokio-rustls-comp"] } +sea-orm = "0.11.3" +url = { version = "2.4.0", features = ["serde"] } +basen = "0.1.0" [dependencies.sea-orm-migration] version = "0.11.0" features = [ - # Enable at least one `ASYNC_RUNTIME` and `DATABASE_DRIVER` feature if you want to run migration via CLI. - # View the list of supported features at https://www.sea-ql.org/SeaORM/docs/install-and-config/database-and-async-runtime. - # e.g. - "runtime-tokio-rustls", # `ASYNC_RUNTIME` feature - "sqlx-postgres", # `DATABASE_DRIVER` feature + # Enable at least one `ASYNC_RUNTIME` and `DATABASE_DRIVER` feature if you want to run migration via CLI. + # View the list of supported features at https://www.sea-ql.org/SeaORM/docs/install-and-config/database-and-async-runtime. + # e.g. + "runtime-tokio-rustls", # `ASYNC_RUNTIME` feature + "sqlx-postgres", # `DATABASE_DRIVER` feature "sqlx-sqlite", ] diff --git a/packages/backend/native-utils/migration/src/lib.rs b/packages/backend/native-utils/migration/src/lib.rs index 94e2b08cc4..f8be136f46 100644 --- a/packages/backend/native-utils/migration/src/lib.rs +++ b/packages/backend/native-utils/migration/src/lib.rs @@ -1,7 +1,12 @@ pub use sea_orm_migration::prelude::*; +use basen::BASE36; + mod m20230531_180824_drop_reversi; mod m20230627_185451_index_note_url; +mod m20230709_000510_move_antenna_to_cache; +mod m20230806_170616_fix_antenna_stream_ids; +mod m20230904_013244_is_indexable; pub struct Migrator; @@ -11,6 +16,18 @@ impl MigratorTrait for Migrator { vec![ Box::new(m20230531_180824_drop_reversi::Migration), Box::new(m20230627_185451_index_note_url::Migration), + Box::new(m20230709_000510_move_antenna_to_cache::Migration), + Box::new(m20230806_170616_fix_antenna_stream_ids::Migration), + Box::new(m20230904_013244_is_indexable::Migration), ] } } + +pub fn get_timestamp(id: &str) -> i64 { + const TIME_2000: i64 = 946_684_800_000; + let n: Option = BASE36.decode_var_len(&id[0..8]); + match n { + None => -1, + Some(n) => n as i64 + TIME_2000, + } +} diff --git a/packages/backend/native-utils/migration/src/m20230709_000510_move_antenna_to_cache.rs b/packages/backend/native-utils/migration/src/m20230709_000510_move_antenna_to_cache.rs new file mode 100644 index 0000000000..76ae721769 --- /dev/null +++ b/packages/backend/native-utils/migration/src/m20230709_000510_move_antenna_to_cache.rs @@ -0,0 +1,248 @@ +use redis::streams::StreamMaxlen; +use sea_orm::Statement; +use sea_orm_migration::prelude::*; +use std::env; + +#[derive(DeriveMigrationName)] +pub struct Migration; + +#[async_trait::async_trait] +impl MigrationTrait for Migration { + async fn up(&self, manager: &SchemaManager) -> Result<(), DbErr> { + let cache_url = env::var("CACHE_URL").unwrap(); + let skip_copy = env::var("ANTENNA_MIGRATION_SKIP").unwrap_or_default(); + let copy_limit = env::var("ANTENNA_MIGRATION_COPY_LIMIT").unwrap_or_default(); + let read_limit: u64 = env::var("ANTENNA_MIGRATION_READ_LIMIT") + .unwrap_or("10000".to_string()) + .parse() + .unwrap(); + let copy_limit: i64 = match copy_limit.parse() { + Ok(limit) => limit, + Err(_) => 0, + }; + + if skip_copy == "true" { + println!("Skipped antenna migration"); + } else { + let prefix = env::var("CACHE_PREFIX").unwrap(); + + let db = manager.get_connection(); + let bk = manager.get_database_backend(); + + let count_stmt = + Statement::from_string(bk, "SELECT COUNT(1) FROM antenna_note".to_owned()); + let total_num = db + .query_one(count_stmt) + .await? + .unwrap() + .try_get_by_index::(0)?; + let copy_limit = if copy_limit > 0 { + copy_limit + } else { + total_num + }; + println!( + "Copying {} out of {} entries in antenna_note.", + copy_limit, total_num + ); + + let stmt_base = Query::select() + .column((AntennaNote::Table, AntennaNote::Id)) + .column(AntennaNote::AntennaId) + .column(AntennaNote::NoteId) + .from(AntennaNote::Table) + .order_by((AntennaNote::Table, AntennaNote::Id), Order::Asc) + .limit(read_limit) + .to_owned(); + + let mut stmt = stmt_base.clone(); + + let client = redis::Client::open(cache_url).unwrap(); + let mut redis_conn = client.get_connection().unwrap(); + + let mut remaining = total_num; + let mut pagination: i64 = 0; + + loop { + let res = db.query_all(bk.build(&stmt)).await?; + if res.len() == 0 { + break; + } + let val: Vec<(String, String, String)> = res + .iter() + .filter_map(|q| q.try_get_many_by_index().ok()) + .collect(); + + remaining -= val.len() as i64; + if remaining <= copy_limit { + let mut pipe = redis::pipe(); + for v in &val { + pipe.xadd_maxlen( + format!("{}:antennaTimeline:{}", prefix, v.1), + StreamMaxlen::Approx(200), + "*", + &[("note", v.2.to_owned())], + ) + .ignore(); + } + pipe.query::<()>(&mut redis_conn).unwrap_or(()); + } + + let copied = total_num - remaining; + let copied = std::cmp::min(copied, total_num); + pagination += 1; + if pagination % 10 == 0 { + println!( + "Migrating antenna [{:.2}%]", + (copied as f64 / total_num as f64) * 100_f64, + ); + } + + if let Some((last_id, _, _)) = val.last() { + stmt = stmt_base + .clone() + .and_where( + Expr::col((AntennaNote::Table, AntennaNote::Id)).gt(last_id.to_owned()), + ) + .to_owned(); + } else { + break; + } + } + + println!("Migrating antenna [100.00%]"); + } + + manager + .drop_table( + Table::drop() + .table(AntennaNote::Table) + .if_exists() + .to_owned(), + ) + .await?; + + Ok(()) + } + + async fn down(&self, manager: &SchemaManager) -> Result<(), DbErr> { + manager + .create_table( + Table::create() + .table(AntennaNote::Table) + .if_not_exists() + .col( + ColumnDef::new(AntennaNote::Id) + .string_len(32) + .not_null() + .primary_key(), + ) + .col( + ColumnDef::new(AntennaNote::NoteId) + .string_len(32) + .not_null(), + ) + .col( + ColumnDef::new(AntennaNote::AntennaId) + .string_len(32) + .not_null(), + ) + .col( + ColumnDef::new(AntennaNote::Read) + .boolean() + .default(false) + .not_null(), + ) + .to_owned(), + ) + .await?; + manager + .create_index( + Index::create() + .name("IDX_0d775946662d2575dfd2068a5f") + .table(AntennaNote::Table) + .col(AntennaNote::AntennaId) + .if_not_exists() + .to_owned(), + ) + .await?; + manager + .create_index( + Index::create() + .name("IDX_bd0397be22147e17210940e125") + .table(AntennaNote::Table) + .col(AntennaNote::NoteId) + .if_not_exists() + .to_owned(), + ) + .await?; + manager + .create_index( + Index::create() + .name("IDX_335a0bf3f904406f9ef3dd51c2") + .table(AntennaNote::Table) + .col(AntennaNote::NoteId) + .col(AntennaNote::AntennaId) + .unique() + .if_not_exists() + .to_owned(), + ) + .await?; + manager + .create_index( + Index::create() + .name("IDX_9937ea48d7ae97ffb4f3f063a4") + .table(AntennaNote::Table) + .col(AntennaNote::Read) + .if_not_exists() + .to_owned(), + ) + .await?; + manager + .create_foreign_key( + ForeignKey::create() + .name("FK_0d775946662d2575dfd2068a5f5") + .from(AntennaNote::Table, AntennaNote::AntennaId) + .to(Antenna::Table, Antenna::Id) + .on_delete(ForeignKeyAction::Cascade) + .to_owned(), + ) + .await?; + manager + .create_foreign_key( + ForeignKey::create() + .name("FK_bd0397be22147e17210940e125b") + .from(AntennaNote::Table, AntennaNote::NoteId) + .to(Note::Table, Note::Id) + .on_delete(ForeignKeyAction::Cascade) + .to_owned(), + ) + .await?; + + Ok(()) + } +} + +/// Learn more at https://docs.rs/sea-query#iden +#[derive(Iden)] +enum AntennaNote { + Table, + Id, + #[iden = "noteId"] + NoteId, + #[iden = "antennaId"] + AntennaId, + Read, +} + +#[derive(Iden)] +enum Antenna { + Table, + Id, +} + +#[derive(Iden)] +enum Note { + Table, + Id, +} diff --git a/packages/backend/native-utils/migration/src/m20230806_170616_fix_antenna_stream_ids.rs b/packages/backend/native-utils/migration/src/m20230806_170616_fix_antenna_stream_ids.rs new file mode 100644 index 0000000000..6d45b76139 --- /dev/null +++ b/packages/backend/native-utils/migration/src/m20230806_170616_fix_antenna_stream_ids.rs @@ -0,0 +1,60 @@ +use std::env; + +use redis::Commands; +use sea_orm_migration::prelude::*; + +use crate::get_timestamp; + +#[derive(DeriveMigrationName)] +pub struct Migration; + +#[async_trait::async_trait] +impl MigrationTrait for Migration { + async fn up(&self, _manager: &SchemaManager) -> Result<(), DbErr> { + // Replace the sample below with your own migration scripts + let cache_url = env::var("CACHE_URL").unwrap(); + let prefix = env::var("CACHE_PREFIX").unwrap(); + + let client = redis::Client::open(cache_url).unwrap(); + let mut redis_conn = client.get_connection().unwrap(); + + let keys: Vec = redis_conn + .keys(format!("{}:antennaTimeline:*", prefix)) + .unwrap(); + let key_len = keys.len(); + + println!( + "Fixing corrupted stream IDs: {} timelines to be fixed", + key_len + ); + + for (i, key) in keys.iter().enumerate() { + let all_elems: Vec>> = redis_conn.xrange_all(key).unwrap(); // Get all post IDs in stream + let stream_ids = all_elems + .iter() + .map(|v| format!("{}-*", get_timestamp(&v[1][1]))); // Get correct stream id with timestamp + redis_conn.del::<_, ()>(key).unwrap(); + for (j, v) in stream_ids.enumerate() { + redis_conn + .xadd(key, v, &[("note", &all_elems[j][1][1])]) + .unwrap_or(()); + } + + if i % 10 == 0 { + println!( + "Fixing streams [{:.2}%]", + (i as f64 / key_len as f64) * 100_f64 + ); + } + } + + println!("Fixing streams [100.00%]"); + + Ok(()) + } + + async fn down(&self, _manager: &SchemaManager) -> Result<(), DbErr> { + // Replace the sample below with your own migration scripts + Ok(()) + } +} diff --git a/packages/backend/native-utils/migration/src/m20230904_013244_is_indexable.rs b/packages/backend/native-utils/migration/src/m20230904_013244_is_indexable.rs new file mode 100644 index 0000000000..84898fd95a --- /dev/null +++ b/packages/backend/native-utils/migration/src/m20230904_013244_is_indexable.rs @@ -0,0 +1,74 @@ +use sea_orm_migration::prelude::*; + +#[derive(DeriveMigrationName)] +pub struct Migration; + +#[async_trait::async_trait] +impl MigrationTrait for Migration { + async fn up(&self, manager: &SchemaManager) -> Result<(), DbErr> { + manager + .alter_table( + Table::alter() + .table(User::Table) + .add_column( + ColumnDef::new(User::IsIndexable) + .boolean() + .not_null() + .default(true), + ) + .to_owned(), + ) + .await?; + manager + .alter_table( + Table::alter() + .table(UserProfile::Table) + .add_column( + ColumnDef::new(UserProfile::IsIndexable) + .boolean() + .not_null() + .default(true), + ) + .to_owned(), + ) + .await?; + + Ok(()) + } + + async fn down(&self, manager: &SchemaManager) -> Result<(), DbErr> { + manager + .alter_table( + Table::alter() + .table(User::Table) + .drop_column(User::IsIndexable) + .to_owned(), + ) + .await?; + manager + .alter_table( + Table::alter() + .table(UserProfile::Table) + .drop_column(UserProfile::IsIndexable) + .to_owned(), + ) + .await?; + + Ok(()) + } +} + +/// Learn more at https://docs.rs/sea-query#iden +#[derive(Iden)] +enum User { + Table, + #[iden = "isIndexable"] + IsIndexable, +} + +#[derive(Iden)] +enum UserProfile { + Table, + #[iden = "isIndexable"] + IsIndexable, +} diff --git a/packages/backend/native-utils/migration/src/main.rs b/packages/backend/native-utils/migration/src/main.rs index f0f761f657..ca1246cf53 100644 --- a/packages/backend/native-utils/migration/src/main.rs +++ b/packages/backend/native-utils/migration/src/main.rs @@ -5,6 +5,10 @@ use urlencoding::encode; use sea_orm_migration::prelude::*; +const DB_URL_ENV: &str = "DATABASE_URL"; +const CACHE_URL_ENV: &str = "CACHE_URL"; +const CACHE_PREFIX_ENV: &str = "CACHE_PREFIX"; + #[cfg(feature = "convert")] mod vec_to_json; @@ -15,17 +19,50 @@ async fn main() { .expect("Failed to open '.config/default.yml'"); let config: Config = serde_yaml::from_reader(yml).expect("Failed to parse yaml"); - env::set_var( - "DATABASE_URL", - format!( - "postgres://{}:{}@{}:{}/{}", - config.db.user, - encode(&config.db.pass), - config.db.host, - config.db.port, - config.db.db, - ), - ); + if env::var_os(DB_URL_ENV).is_none() { + env::set_var( + DB_URL_ENV, + format!( + "postgres://{}:{}@{}:{}/{}", + config.db.user, + encode(&config.db.pass), + config.db.host, + config.db.port, + config.db.db, + ), + ); + }; + + if env::var_os(CACHE_URL_ENV).is_none() { + let redis_conf = match config.cache_server { + None => config.redis, + Some(conf) => conf, + }; + let redis_proto = match redis_conf.tls { + None => "redis", + Some(_) => "rediss", + }; + let redis_user = redis_conf.user.unwrap_or("default".to_string()); + let redis_uri_userpass = format!( + "{}:{}", + redis_user, + encode(&redis_conf.pass.unwrap_or_default()) + ); + let redis_uri_hostport = format!("{}:{}", redis_conf.host, redis_conf.port); + let redis_uri = format!( + "{}://{}@{}/{}", + redis_proto, redis_uri_userpass, redis_uri_hostport, redis_conf.db + ); + env::set_var(CACHE_URL_ENV, redis_uri); + env::set_var( + CACHE_PREFIX_ENV, + if redis_conf.prefix.is_empty() { + config.url.host_str().unwrap() + } else { + &redis_conf.prefix + }, + ); + } cli::run_cli(migration::Migrator).await; @@ -34,13 +71,15 @@ async fn main() { } #[derive(Debug, PartialEq, Deserialize)] -#[serde(rename = "camelCase")] +#[serde(rename_all = "camelCase")] pub struct Config { + pub url: url::Url, pub db: DbConfig, + pub redis: RedisConfig, + pub cache_server: Option, } #[derive(Debug, PartialEq, Deserialize)] -#[serde(rename = "camelCase")] pub struct DbConfig { pub host: String, pub port: u32, @@ -48,3 +87,23 @@ pub struct DbConfig { pub user: String, pub pass: String, } + +#[derive(Debug, PartialEq, Deserialize)] +pub struct RedisConfig { + pub host: String, + pub port: u32, + pub user: Option, + pub pass: Option, + pub tls: Option, + #[serde(default)] + pub db: u32, + #[serde(default)] + pub prefix: String, +} + +#[derive(Debug, PartialEq, Deserialize)] +#[serde(rename_all = "camelCase")] +pub struct TlsConfig { + pub host: String, + pub reject_unauthorized: bool, +} diff --git a/packages/backend/native-utils/package.json b/packages/backend/native-utils/package.json index 385330d776..180c24cbe3 100644 --- a/packages/backend/native-utils/package.json +++ b/packages/backend/native-utils/package.json @@ -36,13 +36,14 @@ "artifacts": "napi artifacts", "build": "pnpm run build:napi && pnpm run build:migration", "build:napi": "napi build --features napi --platform --release ./built/", - "build:migration": "cargo build --locked --release --manifest-path ./migration/Cargo.toml && cp ./target/release/migration ./built/migration", - "build:debug": "napi build --platform ./built/ && cargo build --manifest-path ./migration/Cargo.toml", + "build:migration": "cargo build --locked --release --manifest-path ./migration/Cargo.toml && cp -v ./target/release/migration ./built/migration", + "build:debug": "napi build --features napi --platform ./built/ && cargo build --locked --manifest-path ./migration/Cargo.toml && cp -v ./target/debug/migration ./built/migration", "prepublishOnly": "napi prepublish -t npm", "test": "pnpm run cargo:test && pnpm run build:napi && ava", "universal": "napi universal", "version": "napi version", - "format": "cargo fmt --all", + "format": "cargo fmt --all -- --check", + "lint": "cargo clippy --fix --allow-dirty --allow-staged && cargo fmt --all -- --check", "cargo:test": "pnpm run cargo:unit && pnpm run cargo:integration", "cargo:unit": "cargo test unit_test && cargo test -F napi unit_test", "cargo:integration": "cargo test -F noarray int_test -- --test-threads=1" diff --git a/packages/backend/native-utils/src/mastodon_api.rs b/packages/backend/native-utils/src/mastodon_api.rs index 6c27d34955..150a762455 100644 --- a/packages/backend/native-utils/src/mastodon_api.rs +++ b/packages/backend/native-utils/src/mastodon_api.rs @@ -8,7 +8,7 @@ static CHAR_COLLECTION: &str = "0123456789abcdefghijklmnopqrstuvwxyz"; #[napi] pub enum IdConvertType { MastodonId, - CalckeyId, + FirefishId, } #[napi] @@ -23,7 +23,7 @@ pub fn convert_id(in_id: String, id_convert_type: IdConvertType) -> napi::Result Ok(out.to_string()) } - CalckeyId => { + FirefishId => { let mut input: i128 = match in_id.parse() { Ok(s) => s, Err(_) => { diff --git a/packages/backend/native-utils/src/model/entity.rs b/packages/backend/native-utils/src/model/entity.rs index d71057fdee..ccf3f00601 100644 --- a/packages/backend/native-utils/src/model/entity.rs +++ b/packages/backend/native-utils/src/model/entity.rs @@ -8,7 +8,6 @@ pub mod ad; pub mod announcement; pub mod announcement_read; pub mod antenna; -pub mod antenna_note; pub mod app; pub mod attestation_challenge; pub mod auth_session; diff --git a/packages/backend/native-utils/src/model/entity/announcement.rs b/packages/backend/native-utils/src/model/entity/announcement.rs index e8a2a28aa8..5cdb690d23 100644 --- a/packages/backend/native-utils/src/model/entity/announcement.rs +++ b/packages/backend/native-utils/src/model/entity/announcement.rs @@ -15,6 +15,10 @@ pub struct Model { pub image_url: Option, #[sea_orm(column_name = "updatedAt")] pub updated_at: Option, + #[sea_orm(column_name = "showPopup")] + pub show_popup: bool, + #[sea_orm(column_name = "isGoodNews")] + pub is_good_news: bool, } #[derive(Copy, Clone, Debug, EnumIter, DeriveRelation)] diff --git a/packages/backend/native-utils/src/model/entity/antenna.rs b/packages/backend/native-utils/src/model/entity/antenna.rs index 85bdfbfeac..9d5a64f82f 100644 --- a/packages/backend/native-utils/src/model/entity/antenna.rs +++ b/packages/backend/native-utils/src/model/entity/antenna.rs @@ -37,8 +37,6 @@ pub struct Model { #[derive(Copy, Clone, Debug, EnumIter, DeriveRelation)] pub enum Relation { - #[sea_orm(has_many = "super::antenna_note::Entity")] - AntennaNote, #[sea_orm( belongs_to = "super::user::Entity", from = "Column::UserId", @@ -65,12 +63,6 @@ pub enum Relation { UserList, } -impl Related for Entity { - fn to() -> RelationDef { - Relation::AntennaNote.def() - } -} - impl Related for Entity { fn to() -> RelationDef { Relation::User.def() diff --git a/packages/backend/native-utils/src/model/entity/meta.rs b/packages/backend/native-utils/src/model/entity/meta.rs index 2c0dc315c6..ac43a78427 100644 --- a/packages/backend/native-utils/src/model/entity/meta.rs +++ b/packages/backend/native-utils/src/model/entity/meta.rs @@ -189,6 +189,10 @@ pub struct Model { pub silenced_hosts: StringVec, #[sea_orm(column_name = "experimentalFeatures", column_type = "JsonBinary")] pub experimental_features: Json, + #[sea_orm(column_name = "enableServerMachineStats")] + pub enable_server_machine_stats: bool, + #[sea_orm(column_name = "enableIdenticonGeneration")] + pub enable_identicon_generation: bool, } #[derive(Copy, Clone, Debug, EnumIter, DeriveRelation)] diff --git a/packages/backend/native-utils/src/model/entity/note.rs b/packages/backend/native-utils/src/model/entity/note.rs index 077841e48b..5c97a20cf9 100644 --- a/packages/backend/native-utils/src/model/entity/note.rs +++ b/packages/backend/native-utils/src/model/entity/note.rs @@ -67,8 +67,6 @@ pub struct Model { #[derive(Copy, Clone, Debug, EnumIter, DeriveRelation)] pub enum Relation { - #[sea_orm(has_many = "super::antenna_note::Entity")] - AntennaNote, #[sea_orm( belongs_to = "super::channel::Entity", from = "Column::ChannelId", @@ -131,12 +129,6 @@ pub enum Relation { UserNotePining, } -impl Related for Entity { - fn to() -> RelationDef { - Relation::AntennaNote.def() - } -} - impl Related for Entity { fn to() -> RelationDef { Relation::Channel.def() diff --git a/packages/backend/native-utils/src/model/entity/prelude.rs b/packages/backend/native-utils/src/model/entity/prelude.rs index 8be696cb40..a859a9cc37 100644 --- a/packages/backend/native-utils/src/model/entity/prelude.rs +++ b/packages/backend/native-utils/src/model/entity/prelude.rs @@ -6,7 +6,6 @@ pub use super::ad::Entity as Ad; pub use super::announcement::Entity as Announcement; pub use super::announcement_read::Entity as AnnouncementRead; pub use super::antenna::Entity as Antenna; -pub use super::antenna_note::Entity as AntennaNote; pub use super::app::Entity as App; pub use super::attestation_challenge::Entity as AttestationChallenge; pub use super::auth_session::Entity as AuthSession; diff --git a/packages/backend/native-utils/src/model/entity/user.rs b/packages/backend/native-utils/src/model/entity/user.rs index e76ae08c7f..7988bec3ad 100644 --- a/packages/backend/native-utils/src/model/entity/user.rs +++ b/packages/backend/native-utils/src/model/entity/user.rs @@ -71,6 +71,8 @@ pub struct Model { pub also_known_as: Option, #[sea_orm(column_name = "speakAsCat")] pub speak_as_cat: bool, + #[sea_orm(column_name = "isIndexable")] + pub is_indexable: bool, } #[derive(Copy, Clone, Debug, EnumIter, DeriveRelation)] diff --git a/packages/backend/native-utils/src/model/entity/user_profile.rs b/packages/backend/native-utils/src/model/entity/user_profile.rs index 4c2f903d4b..5fd09dea30 100644 --- a/packages/backend/native-utils/src/model/entity/user_profile.rs +++ b/packages/backend/native-utils/src/model/entity/user_profile.rs @@ -75,6 +75,8 @@ pub struct Model { pub moderation_note: String, #[sea_orm(column_name = "preventAiLearning")] pub prevent_ai_learning: bool, + #[sea_orm(column_name = "isIndexable")] + pub is_indexable: bool, } #[derive(Copy, Clone, Debug, EnumIter, DeriveRelation)] diff --git a/packages/backend/native-utils/src/model/repository/antenna.rs b/packages/backend/native-utils/src/model/repository/antenna.rs index 7c614b954b..80f34fed10 100644 --- a/packages/backend/native-utils/src/model/repository/antenna.rs +++ b/packages/backend/native-utils/src/model/repository/antenna.rs @@ -1,9 +1,9 @@ use async_trait::async_trait; use cfg_if::cfg_if; -use sea_orm::{ColumnTrait, EntityTrait, QueryFilter}; +use sea_orm::EntityTrait; use crate::database; -use crate::model::entity::{antenna, antenna_note, user_group_joining}; +use crate::model::entity::{antenna, user_group_joining}; use crate::model::error::Error; use crate::model::schema::Antenna; @@ -14,12 +14,6 @@ use super::Repository; impl Repository for antenna::Model { async fn pack(self) -> Result { let db = database::get_database()?; - let has_unread_note = antenna_note::Entity::find() - .filter(antenna_note::Column::AntennaId.eq(self.id.to_owned())) - .filter(antenna_note::Column::Read.eq(false)) - .one(db) - .await? - .is_some(); let user_group_joining = match self.user_group_joining_id { None => None, Some(id) => user_group_joining::Entity::find_by_id(id).one(db).await?, @@ -46,13 +40,13 @@ impl Repository for antenna::Model { src: self.src.try_into()?, user_list_id: self.user_list_id, user_group_id, - users: self.users.into(), + users: self.users, instances: self.instances.into(), case_sensitive: self.case_sensitive, notify: self.notify, with_replies: self.with_replies, with_file: self.with_file, - has_unread_note, + has_unread_note: false, }) } diff --git a/packages/backend/native-utils/src/model/schema/antenna.rs b/packages/backend/native-utils/src/model/schema/antenna.rs index 4ec1e07946..da2c3061b4 100644 --- a/packages/backend/native-utils/src/model/schema/antenna.rs +++ b/packages/backend/native-utils/src/model/schema/antenna.rs @@ -58,7 +58,7 @@ impl TryFrom for super::AntennaSrc { // ---- TODO: could be macro impl Schema for super::Antenna {} -pub static VALIDATOR: Lazy = Lazy::new(|| super::Antenna::validator()); +pub static VALIDATOR: Lazy = Lazy::new(super::Antenna::validator); // ---- cfg_if! { diff --git a/packages/backend/native-utils/src/model/schema/app.rs b/packages/backend/native-utils/src/model/schema/app.rs index 682b82ec07..1da7b35201 100644 --- a/packages/backend/native-utils/src/model/schema/app.rs +++ b/packages/backend/native-utils/src/model/schema/app.rs @@ -18,7 +18,7 @@ pub struct App { pub is_authorized: Option, } -/// This represents `permissions` in `packages/calckey-js/src/consts.ts`. +/// This represents `permissions` in `packages/firefish-js/src/consts.ts`. #[derive(Clone, Debug, PartialEq, Eq, JsonSchema, ToSchema)] pub enum AppPermission { #[serde(rename = "read:account")] @@ -91,7 +91,7 @@ pub enum AppPermission { impl Schema for App {} -pub static VALIDATOR: Lazy = Lazy::new(|| App::validator()); +pub static VALIDATOR: Lazy = Lazy::new(App::validator); #[cfg(test)] mod unit_test { @@ -105,9 +105,9 @@ mod unit_test { #[test] fn app_valid() { - init_id(12, ""); + init_id(16, ""); let instance = json!({ - "id": create_id().unwrap(), + "id": create_id(0).unwrap(), "name": "Test App", "secret": gen_string(24), "callbackUrl": "urn:ietf:wg:oauth:2.0:oob", @@ -119,9 +119,9 @@ mod unit_test { #[test] fn app_invalid() { - init_id(12, ""); + init_id(16, ""); let instance = json!({ - "id": create_id().unwrap(), + "id": create_id(0).unwrap(), // "name" is required "name": null, // "permission" must be one of the app permissions diff --git a/packages/backend/native-utils/src/util/id.rs b/packages/backend/native-utils/src/util/id.rs index d922518f9d..2fd94e9019 100644 --- a/packages/backend/native-utils/src/util/id.rs +++ b/packages/backend/native-utils/src/util/id.rs @@ -1,7 +1,10 @@ //! ID generation utility based on [cuid2] +use basen::BASE36; use cfg_if::cfg_if; +use chrono::Utc; use once_cell::sync::OnceCell; +use std::cmp; use crate::impl_into_napi_error; @@ -14,47 +17,69 @@ impl_into_napi_error!(ErrorUninitialized); static FINGERPRINT: OnceCell = OnceCell::new(); static GENERATOR: OnceCell = OnceCell::new(); +const TIME_2000: i64 = 946_684_800_000; +const TIMESTAMP_LENGTH: u16 = 8; + /// Initializes Cuid2 generator. Must be called before any [create_id]. -pub fn init_id(length: u16, fingerprint: impl Into) { - FINGERPRINT.get_or_init(move || format!("{}{}", fingerprint.into(), cuid2::create_id())); +pub fn init_id<'a>(length: u16, fingerprint: &'a str) { + FINGERPRINT.get_or_init(move || format!("{}{}", fingerprint, cuid2::create_id())); GENERATOR.get_or_init(move || { cuid2::CuidConstructor::new() - .with_length(length) + // length to pass shoule be greater than or equal to 8. + .with_length(cmp::max(length - TIMESTAMP_LENGTH, 8)) .with_fingerprinter(|| FINGERPRINT.get().unwrap().clone()) }); } /// Returns Cuid2 with the length specified by [init_id]. Must be called after /// [init_id], otherwise returns [ErrorUninitialized]. -pub fn create_id() -> Result { +/// The current timestamp via [chrono::Utc] is used if `date_num` is `0`. +pub fn create_id(date_num: i64) -> Result { match GENERATOR.get() { None => Err(ErrorUninitialized), - Some(gen) => Ok(gen.create_id()), + Some(gen) => { + let date_num = if date_num > 0 { + date_num + } else { + Utc::now().timestamp_millis() + }; + let time = cmp::max(date_num - TIME_2000, 0); + Ok(format!( + "{:0>8}{}", + BASE36.encode_var_len(&(time as u64)), + gen.create_id() + )) + } + } +} + +pub fn get_timestamp(id: &str) -> i64 { + let n: Option = BASE36.decode_var_len(&id[0..8]); + match n { + None => -1, + Some(n) => n as i64 + TIME_2000, } } cfg_if! { if #[cfg(feature = "napi")] { - use radix_fmt::radix_36; - use std::cmp; - use napi::bindgen_prelude::BigInt; use napi_derive::napi; - const TIME_2000: u64 = 946_684_800_000; - const TIMESTAMP_LENGTH: u16 = 8; - /// Calls [init_id] inside. Must be called before [native_create_id]. #[napi] pub fn native_init_id_generator(length: u16, fingerprint: String) { - // length to pass init_id shoule be greater than or equal to 8. - init_id(cmp::max(length - TIMESTAMP_LENGTH, 8), fingerprint); + init_id(length, &fingerprint); } /// Generates #[napi] - pub fn native_create_id(date_num: BigInt) -> String { - let time = cmp::max(date_num.get_u64().1 - TIME_2000, 0); - format!("{:0>8}{}", radix_36(time).to_string(), create_id().unwrap()) + pub fn native_create_id(date_num: i64) -> String { + create_id(date_num).unwrap() + } + + #[napi] + pub fn native_get_timestamp(id: String) -> i64 { + get_timestamp(&id) } } } @@ -62,37 +87,23 @@ cfg_if! { #[cfg(test)] mod unit_test { use crate::util::id; - use cfg_if::cfg_if; + use chrono::Utc; use pretty_assertions::{assert_eq, assert_ne}; use std::thread; - cfg_if! { - if #[cfg(feature = "napi")] { - use chrono::Utc; + #[test] + fn can_create_and_decode() { + assert_eq!(id::create_id(0), Err(id::ErrorUninitialized)); + id::init_id(16, ""); + assert_eq!(id::create_id(0).unwrap().len(), 16); + assert_ne!(id::create_id(0).unwrap(), id::create_id(0).unwrap()); + let id1 = thread::spawn(|| id::create_id(0).unwrap()); + let id2 = thread::spawn(|| id::create_id(0).unwrap()); + assert_ne!(id1.join().unwrap(), id2.join().unwrap()); - #[test] - fn can_generate_aid_compat_ids() { - id::native_init_id_generator(20, "".to_string()); - let id1 = id::native_create_id(Utc::now().timestamp_millis().into()); - assert_eq!(id1.len(), 20); - let id1 = id::native_create_id(Utc::now().timestamp_millis().into()); - let id2 = id::native_create_id(Utc::now().timestamp_millis().into()); - assert_ne!(id1, id2); - let id1 = thread::spawn(|| id::native_create_id(Utc::now().timestamp_millis().into())); - let id2 = thread::spawn(|| id::native_create_id(Utc::now().timestamp_millis().into())); - assert_ne!(id1.join().unwrap(), id2.join().unwrap()); - } - } else { - #[test] - fn can_generate_unique_ids() { - assert_eq!(id::create_id(), Err(id::ErrorUninitialized)); - id::init_id(12, ""); - assert_eq!(id::create_id().unwrap().len(), 12); - assert_ne!(id::create_id().unwrap(), id::create_id().unwrap()); - let id1 = thread::spawn(|| id::create_id().unwrap()); - let id2 = thread::spawn(|| id::create_id().unwrap()); - assert_ne!(id1.join().unwrap(), id2.join().unwrap()); - } - } + let now = Utc::now().timestamp_millis(); + let test_id = id::create_id(now).unwrap(); + let timestamp = id::get_timestamp(&test_id); + assert_eq!(now, timestamp); } } diff --git a/packages/backend/native-utils/tests/common.rs b/packages/backend/native-utils/tests/common.rs index 186e862bd5..674297606f 100644 --- a/packages/backend/native-utils/tests/common.rs +++ b/packages/backend/native-utils/tests/common.rs @@ -139,17 +139,17 @@ async fn cleanup() { } async fn setup_model(db: &DbConn) { - init_id(12, ""); + init_id(16, ""); db.transaction::<_, (), DbErr>(|txn| { Box::pin(async move { - let user_id = create_id().unwrap(); + let user_id = create_id(0).unwrap(); let name = "Alice"; let user_model = entity::user::Model { id: user_id.to_owned(), created_at: Utc::now().into(), - username: name.to_lowercase().to_string(), - username_lower: name.to_lowercase().to_string(), + username: name.to_lowercase(), + username_lower: name.to_lowercase(), name: Some(name.to_string()), token: Some(gen_string(16)), is_admin: true, @@ -161,7 +161,7 @@ async fn setup_model(db: &DbConn) { .insert(txn) .await?; let antenna_model = entity::antenna::Model { - id: create_id().unwrap(), + id: create_id(0).unwrap(), created_at: Utc::now().into(), user_id: user_id.to_owned(), name: "Alice Antenna".to_string(), @@ -186,7 +186,7 @@ async fn setup_model(db: &DbConn) { .insert(txn) .await?; let note_model = entity::note::Model { - id: create_id().unwrap(), + id: create_id(0).unwrap(), created_at: Utc::now().into(), text: Some("Testing 123".to_string()), user_id: user_id.to_owned(), diff --git a/packages/backend/native-utils/tests/model/repository/antenna.rs b/packages/backend/native-utils/tests/model/repository/antenna.rs index 3bda2ca183..9b03d3652d 100644 --- a/packages/backend/native-utils/tests/model/repository/antenna.rs +++ b/packages/backend/native-utils/tests/model/repository/antenna.rs @@ -43,18 +43,16 @@ mod int_test { keywords: vec![ vec!["foo".to_string(), "bar".to_string()], vec!["foobar".to_string()], - ] - .into(), + ], exclude_keywords: vec![ vec!["abc".to_string()], vec!["def".to_string(), "ghi".to_string()], - ] - .into(), + ], src: schema::AntennaSrc::All, user_list_id: None, user_group_id: None, - users: vec![].into(), - instances: vec![].into(), + users: vec![], + instances: vec![], case_sensitive: true, notify: true, with_replies: false, @@ -95,7 +93,7 @@ mod int_test { .unwrap() .expect("note not found"); let antenna_note = antenna_note::Model { - id: util::id::create_id().unwrap(), + id: util::id::create_id(0).unwrap(), antenna_id: alice_antenna.id.to_owned(), note_id: note_model.id.to_owned(), read: false, diff --git a/packages/backend/nsfw-model/model.json b/packages/backend/nsfw-model/model.json index 8b24b119bc..fde062a3ce 100644 --- a/packages/backend/nsfw-model/model.json +++ b/packages/backend/nsfw-model/model.json @@ -1 +1,10929 @@ -{"modelTopology": {"keras_version": "2.2.4", "backend": "tensorflow", "model_config": {"class_name": "Model", "config": {"name": "model_1", "layers": [{"name": "input_1", "class_name": "InputLayer", "config": {"batch_input_shape": [null, 299, 299, 3], "dtype": "float32", "sparse": false, "name": "input_1"}, "inbound_nodes": []}, {"name": "conv2d_1", "class_name": "Conv2D", "config": {"name": "conv2d_1", "trainable": false, "filters": 32, "kernel_size": [3, 3], "strides": [2, 2], "padding": "valid", "data_format": "channels_last", "dilation_rate": [1, 1], "activation": "linear", "use_bias": false, "kernel_initializer": {"class_name": "VarianceScaling", "config": {"scale": 1.0, "mode": "fan_avg", "distribution": "uniform", "seed": null}}, "bias_initializer": {"class_name": "Zeros", "config": {}}, "kernel_regularizer": null, "bias_regularizer": null, "activity_regularizer": null, "kernel_constraint": null, "bias_constraint": null}, "inbound_nodes": [[["input_1", 0, 0, {}]]]}, {"name": "batch_normalization_1", "class_name": "BatchNormalization", "config": {"name": "batch_normalization_1", "trainable": false, "axis": 3, "momentum": 0.99, "epsilon": 0.001, "center": true, "scale": false, "beta_initializer": {"class_name": "Zeros", "config": {}}, "gamma_initializer": {"class_name": "Ones", "config": {}}, "moving_mean_initializer": {"class_name": "Zeros", "config": {}}, "moving_variance_initializer": {"class_name": "Ones", "config": {}}, "beta_regularizer": null, "gamma_regularizer": null, "beta_constraint": null, "gamma_constraint": null}, "inbound_nodes": [[["conv2d_1", 0, 0, {}]]]}, {"name": "activation_1", "class_name": "Activation", "config": {"name": "activation_1", "trainable": false, "activation": "relu"}, "inbound_nodes": [[["batch_normalization_1", 0, 0, {}]]]}, {"name": "conv2d_2", "class_name": "Conv2D", "config": {"name": "conv2d_2", "trainable": false, "filters": 32, "kernel_size": [3, 3], "strides": [1, 1], "padding": "valid", "data_format": "channels_last", "dilation_rate": [1, 1], "activation": "linear", "use_bias": false, "kernel_initializer": {"class_name": "VarianceScaling", "config": {"scale": 1.0, "mode": "fan_avg", "distribution": "uniform", "seed": null}}, "bias_initializer": {"class_name": "Zeros", "config": {}}, "kernel_regularizer": null, "bias_regularizer": null, "activity_regularizer": null, "kernel_constraint": null, "bias_constraint": null}, "inbound_nodes": [[["activation_1", 0, 0, {}]]]}, {"name": "batch_normalization_2", "class_name": "BatchNormalization", "config": {"name": "batch_normalization_2", "trainable": false, "axis": 3, "momentum": 0.99, "epsilon": 0.001, "center": true, "scale": false, "beta_initializer": {"class_name": "Zeros", "config": {}}, "gamma_initializer": {"class_name": "Ones", "config": {}}, "moving_mean_initializer": {"class_name": "Zeros", "config": {}}, "moving_variance_initializer": {"class_name": "Ones", "config": {}}, "beta_regularizer": null, "gamma_regularizer": null, "beta_constraint": null, "gamma_constraint": null}, "inbound_nodes": [[["conv2d_2", 0, 0, {}]]]}, {"name": "activation_2", "class_name": "Activation", "config": {"name": "activation_2", "trainable": false, "activation": "relu"}, "inbound_nodes": [[["batch_normalization_2", 0, 0, {}]]]}, {"name": "conv2d_3", "class_name": "Conv2D", "config": {"name": "conv2d_3", "trainable": false, "filters": 64, "kernel_size": [3, 3], "strides": [1, 1], "padding": "same", "data_format": "channels_last", "dilation_rate": [1, 1], "activation": "linear", "use_bias": false, "kernel_initializer": {"class_name": "VarianceScaling", "config": {"scale": 1.0, "mode": "fan_avg", "distribution": "uniform", "seed": null}}, "bias_initializer": {"class_name": "Zeros", "config": {}}, "kernel_regularizer": null, "bias_regularizer": null, "activity_regularizer": null, "kernel_constraint": null, "bias_constraint": null}, "inbound_nodes": [[["activation_2", 0, 0, {}]]]}, {"name": "batch_normalization_3", "class_name": "BatchNormalization", "config": {"name": "batch_normalization_3", "trainable": false, "axis": 3, "momentum": 0.99, "epsilon": 0.001, "center": true, "scale": false, "beta_initializer": {"class_name": "Zeros", "config": {}}, "gamma_initializer": {"class_name": "Ones", "config": {}}, "moving_mean_initializer": {"class_name": "Zeros", "config": {}}, "moving_variance_initializer": {"class_name": "Ones", "config": {}}, "beta_regularizer": null, "gamma_regularizer": null, "beta_constraint": null, "gamma_constraint": null}, "inbound_nodes": [[["conv2d_3", 0, 0, {}]]]}, {"name": "activation_3", "class_name": "Activation", "config": {"name": "activation_3", "trainable": false, "activation": "relu"}, "inbound_nodes": [[["batch_normalization_3", 0, 0, {}]]]}, {"name": "max_pooling2d_1", "class_name": "MaxPooling2D", "config": {"name": "max_pooling2d_1", "trainable": false, "pool_size": [3, 3], "padding": "valid", "strides": [2, 2], "data_format": "channels_last"}, "inbound_nodes": [[["activation_3", 0, 0, {}]]]}, {"name": "conv2d_4", "class_name": "Conv2D", "config": {"name": "conv2d_4", "trainable": false, "filters": 80, "kernel_size": [1, 1], "strides": [1, 1], "padding": "valid", "data_format": "channels_last", "dilation_rate": [1, 1], "activation": "linear", "use_bias": false, "kernel_initializer": {"class_name": "VarianceScaling", "config": {"scale": 1.0, "mode": "fan_avg", "distribution": "uniform", "seed": null}}, "bias_initializer": {"class_name": "Zeros", "config": {}}, "kernel_regularizer": null, "bias_regularizer": null, "activity_regularizer": null, "kernel_constraint": null, "bias_constraint": null}, "inbound_nodes": [[["max_pooling2d_1", 0, 0, {}]]]}, {"name": "batch_normalization_4", "class_name": "BatchNormalization", "config": {"name": "batch_normalization_4", "trainable": false, "axis": 3, "momentum": 0.99, "epsilon": 0.001, "center": true, "scale": false, "beta_initializer": {"class_name": "Zeros", "config": {}}, "gamma_initializer": {"class_name": "Ones", "config": {}}, "moving_mean_initializer": {"class_name": "Zeros", "config": {}}, "moving_variance_initializer": {"class_name": "Ones", "config": {}}, "beta_regularizer": null, "gamma_regularizer": null, "beta_constraint": null, "gamma_constraint": null}, "inbound_nodes": [[["conv2d_4", 0, 0, {}]]]}, {"name": "activation_4", "class_name": "Activation", "config": {"name": "activation_4", "trainable": false, "activation": "relu"}, "inbound_nodes": [[["batch_normalization_4", 0, 0, {}]]]}, {"name": "conv2d_5", "class_name": "Conv2D", "config": {"name": "conv2d_5", "trainable": false, "filters": 192, "kernel_size": [3, 3], "strides": [1, 1], "padding": "valid", "data_format": "channels_last", "dilation_rate": [1, 1], "activation": "linear", "use_bias": false, "kernel_initializer": {"class_name": "VarianceScaling", "config": {"scale": 1.0, "mode": "fan_avg", "distribution": "uniform", "seed": null}}, "bias_initializer": {"class_name": "Zeros", "config": {}}, "kernel_regularizer": null, "bias_regularizer": null, "activity_regularizer": null, "kernel_constraint": null, "bias_constraint": null}, "inbound_nodes": [[["activation_4", 0, 0, {}]]]}, {"name": "batch_normalization_5", "class_name": "BatchNormalization", "config": {"name": "batch_normalization_5", "trainable": false, "axis": 3, "momentum": 0.99, "epsilon": 0.001, "center": true, "scale": false, "beta_initializer": {"class_name": "Zeros", "config": {}}, "gamma_initializer": {"class_name": "Ones", "config": {}}, "moving_mean_initializer": {"class_name": "Zeros", "config": {}}, "moving_variance_initializer": {"class_name": "Ones", "config": {}}, "beta_regularizer": null, "gamma_regularizer": null, "beta_constraint": null, "gamma_constraint": null}, "inbound_nodes": [[["conv2d_5", 0, 0, {}]]]}, {"name": "activation_5", "class_name": "Activation", "config": {"name": "activation_5", "trainable": false, "activation": "relu"}, "inbound_nodes": [[["batch_normalization_5", 0, 0, {}]]]}, {"name": "max_pooling2d_2", "class_name": "MaxPooling2D", "config": {"name": "max_pooling2d_2", "trainable": false, "pool_size": [3, 3], "padding": "valid", "strides": [2, 2], "data_format": "channels_last"}, "inbound_nodes": [[["activation_5", 0, 0, {}]]]}, {"name": "conv2d_9", "class_name": "Conv2D", "config": {"name": "conv2d_9", "trainable": false, "filters": 64, "kernel_size": [1, 1], "strides": [1, 1], "padding": "same", "data_format": "channels_last", "dilation_rate": [1, 1], "activation": "linear", "use_bias": false, "kernel_initializer": {"class_name": "VarianceScaling", "config": {"scale": 1.0, "mode": "fan_avg", "distribution": "uniform", "seed": null}}, "bias_initializer": {"class_name": "Zeros", "config": {}}, "kernel_regularizer": null, "bias_regularizer": null, "activity_regularizer": null, "kernel_constraint": null, "bias_constraint": null}, "inbound_nodes": [[["max_pooling2d_2", 0, 0, {}]]]}, {"name": "batch_normalization_9", "class_name": "BatchNormalization", "config": {"name": "batch_normalization_9", "trainable": false, "axis": 3, "momentum": 0.99, "epsilon": 0.001, "center": true, "scale": false, "beta_initializer": {"class_name": "Zeros", "config": {}}, "gamma_initializer": {"class_name": "Ones", "config": {}}, "moving_mean_initializer": {"class_name": "Zeros", "config": {}}, "moving_variance_initializer": {"class_name": "Ones", "config": {}}, "beta_regularizer": null, "gamma_regularizer": null, "beta_constraint": null, "gamma_constraint": null}, "inbound_nodes": [[["conv2d_9", 0, 0, {}]]]}, {"name": "activation_9", "class_name": "Activation", "config": {"name": "activation_9", "trainable": false, "activation": "relu"}, "inbound_nodes": [[["batch_normalization_9", 0, 0, {}]]]}, {"name": "conv2d_7", "class_name": "Conv2D", "config": {"name": "conv2d_7", "trainable": false, "filters": 48, "kernel_size": [1, 1], "strides": [1, 1], "padding": "same", "data_format": "channels_last", "dilation_rate": [1, 1], "activation": "linear", "use_bias": false, "kernel_initializer": {"class_name": "VarianceScaling", "config": {"scale": 1.0, "mode": "fan_avg", "distribution": "uniform", "seed": null}}, "bias_initializer": {"class_name": "Zeros", "config": {}}, "kernel_regularizer": null, "bias_regularizer": null, "activity_regularizer": null, "kernel_constraint": null, "bias_constraint": null}, "inbound_nodes": [[["max_pooling2d_2", 0, 0, {}]]]}, {"name": "conv2d_10", "class_name": "Conv2D", "config": {"name": "conv2d_10", "trainable": false, "filters": 96, "kernel_size": [3, 3], "strides": [1, 1], "padding": "same", "data_format": "channels_last", "dilation_rate": [1, 1], "activation": "linear", "use_bias": false, "kernel_initializer": {"class_name": "VarianceScaling", "config": {"scale": 1.0, "mode": "fan_avg", "distribution": "uniform", "seed": null}}, "bias_initializer": {"class_name": "Zeros", "config": {}}, "kernel_regularizer": null, "bias_regularizer": null, "activity_regularizer": null, "kernel_constraint": null, "bias_constraint": null}, "inbound_nodes": [[["activation_9", 0, 0, {}]]]}, {"name": "batch_normalization_7", "class_name": "BatchNormalization", "config": {"name": "batch_normalization_7", "trainable": false, "axis": 3, "momentum": 0.99, "epsilon": 0.001, "center": true, "scale": false, "beta_initializer": {"class_name": "Zeros", "config": {}}, "gamma_initializer": {"class_name": "Ones", "config": {}}, "moving_mean_initializer": {"class_name": "Zeros", "config": {}}, "moving_variance_initializer": {"class_name": "Ones", "config": {}}, "beta_regularizer": null, "gamma_regularizer": null, "beta_constraint": null, "gamma_constraint": null}, "inbound_nodes": [[["conv2d_7", 0, 0, {}]]]}, {"name": "batch_normalization_10", "class_name": "BatchNormalization", "config": {"name": "batch_normalization_10", "trainable": false, "axis": 3, "momentum": 0.99, "epsilon": 0.001, "center": true, "scale": false, "beta_initializer": {"class_name": "Zeros", "config": {}}, "gamma_initializer": {"class_name": "Ones", "config": {}}, "moving_mean_initializer": {"class_name": "Zeros", "config": {}}, "moving_variance_initializer": {"class_name": "Ones", "config": {}}, "beta_regularizer": null, "gamma_regularizer": null, "beta_constraint": null, "gamma_constraint": null}, "inbound_nodes": [[["conv2d_10", 0, 0, {}]]]}, {"name": "activation_7", "class_name": "Activation", "config": {"name": "activation_7", "trainable": false, "activation": "relu"}, "inbound_nodes": [[["batch_normalization_7", 0, 0, {}]]]}, {"name": "activation_10", "class_name": "Activation", "config": {"name": "activation_10", "trainable": false, "activation": "relu"}, "inbound_nodes": [[["batch_normalization_10", 0, 0, {}]]]}, {"name": "average_pooling2d_1", "class_name": "AveragePooling2D", "config": {"name": "average_pooling2d_1", "trainable": false, "pool_size": [3, 3], "padding": "same", "strides": [1, 1], "data_format": "channels_last"}, "inbound_nodes": [[["max_pooling2d_2", 0, 0, {}]]]}, {"name": "conv2d_6", "class_name": "Conv2D", "config": {"name": "conv2d_6", "trainable": false, "filters": 64, "kernel_size": [1, 1], "strides": [1, 1], "padding": "same", "data_format": "channels_last", "dilation_rate": [1, 1], "activation": "linear", "use_bias": false, "kernel_initializer": {"class_name": "VarianceScaling", "config": {"scale": 1.0, "mode": "fan_avg", "distribution": "uniform", "seed": null}}, "bias_initializer": {"class_name": "Zeros", "config": {}}, "kernel_regularizer": null, "bias_regularizer": null, "activity_regularizer": null, "kernel_constraint": null, "bias_constraint": null}, "inbound_nodes": [[["max_pooling2d_2", 0, 0, {}]]]}, {"name": "conv2d_8", "class_name": "Conv2D", "config": {"name": "conv2d_8", "trainable": false, "filters": 64, "kernel_size": [5, 5], "strides": [1, 1], "padding": "same", "data_format": "channels_last", "dilation_rate": [1, 1], "activation": "linear", "use_bias": false, "kernel_initializer": {"class_name": "VarianceScaling", "config": {"scale": 1.0, "mode": "fan_avg", "distribution": "uniform", "seed": null}}, "bias_initializer": {"class_name": "Zeros", "config": {}}, "kernel_regularizer": null, "bias_regularizer": null, "activity_regularizer": null, "kernel_constraint": null, "bias_constraint": null}, "inbound_nodes": [[["activation_7", 0, 0, {}]]]}, {"name": "conv2d_11", "class_name": "Conv2D", "config": {"name": "conv2d_11", "trainable": false, "filters": 96, "kernel_size": [3, 3], "strides": [1, 1], "padding": "same", "data_format": "channels_last", "dilation_rate": [1, 1], "activation": "linear", "use_bias": false, "kernel_initializer": {"class_name": "VarianceScaling", "config": {"scale": 1.0, "mode": "fan_avg", "distribution": "uniform", "seed": null}}, "bias_initializer": {"class_name": "Zeros", "config": {}}, "kernel_regularizer": null, "bias_regularizer": null, "activity_regularizer": null, "kernel_constraint": null, "bias_constraint": null}, "inbound_nodes": [[["activation_10", 0, 0, {}]]]}, {"name": "conv2d_12", "class_name": "Conv2D", "config": {"name": "conv2d_12", "trainable": false, "filters": 32, "kernel_size": [1, 1], "strides": [1, 1], "padding": "same", "data_format": "channels_last", "dilation_rate": [1, 1], "activation": "linear", "use_bias": false, "kernel_initializer": {"class_name": "VarianceScaling", "config": {"scale": 1.0, "mode": "fan_avg", "distribution": "uniform", "seed": null}}, "bias_initializer": {"class_name": "Zeros", "config": {}}, "kernel_regularizer": null, "bias_regularizer": null, "activity_regularizer": null, "kernel_constraint": null, "bias_constraint": null}, "inbound_nodes": [[["average_pooling2d_1", 0, 0, {}]]]}, {"name": "batch_normalization_6", "class_name": "BatchNormalization", "config": {"name": "batch_normalization_6", "trainable": false, "axis": 3, "momentum": 0.99, "epsilon": 0.001, "center": true, "scale": false, "beta_initializer": {"class_name": "Zeros", "config": {}}, "gamma_initializer": {"class_name": "Ones", "config": {}}, "moving_mean_initializer": {"class_name": "Zeros", "config": {}}, "moving_variance_initializer": {"class_name": "Ones", "config": {}}, "beta_regularizer": null, "gamma_regularizer": null, "beta_constraint": null, "gamma_constraint": null}, "inbound_nodes": [[["conv2d_6", 0, 0, {}]]]}, {"name": "batch_normalization_8", "class_name": "BatchNormalization", "config": {"name": "batch_normalization_8", "trainable": false, "axis": 3, "momentum": 0.99, "epsilon": 0.001, "center": true, "scale": false, "beta_initializer": {"class_name": "Zeros", "config": {}}, "gamma_initializer": {"class_name": "Ones", "config": {}}, "moving_mean_initializer": {"class_name": "Zeros", "config": {}}, "moving_variance_initializer": {"class_name": "Ones", "config": {}}, "beta_regularizer": null, "gamma_regularizer": null, "beta_constraint": null, "gamma_constraint": null}, "inbound_nodes": [[["conv2d_8", 0, 0, {}]]]}, {"name": "batch_normalization_11", "class_name": "BatchNormalization", "config": {"name": "batch_normalization_11", "trainable": false, "axis": 3, "momentum": 0.99, "epsilon": 0.001, "center": true, "scale": false, "beta_initializer": {"class_name": "Zeros", "config": {}}, "gamma_initializer": {"class_name": "Ones", "config": {}}, "moving_mean_initializer": {"class_name": "Zeros", "config": {}}, "moving_variance_initializer": {"class_name": "Ones", "config": {}}, "beta_regularizer": null, "gamma_regularizer": null, "beta_constraint": null, "gamma_constraint": null}, "inbound_nodes": [[["conv2d_11", 0, 0, {}]]]}, {"name": "batch_normalization_12", "class_name": "BatchNormalization", "config": {"name": "batch_normalization_12", "trainable": false, "axis": 3, "momentum": 0.99, "epsilon": 0.001, "center": true, "scale": false, "beta_initializer": {"class_name": "Zeros", "config": {}}, "gamma_initializer": {"class_name": "Ones", "config": {}}, "moving_mean_initializer": {"class_name": "Zeros", "config": {}}, "moving_variance_initializer": {"class_name": "Ones", "config": {}}, "beta_regularizer": null, "gamma_regularizer": null, "beta_constraint": null, "gamma_constraint": null}, "inbound_nodes": [[["conv2d_12", 0, 0, {}]]]}, {"name": "activation_6", "class_name": "Activation", "config": {"name": "activation_6", "trainable": false, "activation": "relu"}, "inbound_nodes": [[["batch_normalization_6", 0, 0, {}]]]}, {"name": "activation_8", "class_name": "Activation", "config": {"name": "activation_8", "trainable": false, "activation": "relu"}, "inbound_nodes": [[["batch_normalization_8", 0, 0, {}]]]}, {"name": "activation_11", "class_name": "Activation", "config": {"name": "activation_11", "trainable": false, "activation": "relu"}, "inbound_nodes": [[["batch_normalization_11", 0, 0, {}]]]}, {"name": "activation_12", "class_name": "Activation", "config": {"name": "activation_12", "trainable": false, "activation": "relu"}, "inbound_nodes": [[["batch_normalization_12", 0, 0, {}]]]}, {"name": "mixed0", "class_name": "Concatenate", "config": {"name": "mixed0", "trainable": false, "axis": 3}, "inbound_nodes": [[["activation_6", 0, 0, {}], ["activation_8", 0, 0, {}], ["activation_11", 0, 0, {}], ["activation_12", 0, 0, {}]]]}, {"name": "conv2d_16", "class_name": "Conv2D", "config": {"name": "conv2d_16", "trainable": false, "filters": 64, "kernel_size": [1, 1], "strides": [1, 1], "padding": "same", "data_format": "channels_last", "dilation_rate": [1, 1], "activation": "linear", "use_bias": false, "kernel_initializer": {"class_name": "VarianceScaling", "config": {"scale": 1.0, "mode": "fan_avg", "distribution": "uniform", "seed": null}}, "bias_initializer": {"class_name": "Zeros", "config": {}}, "kernel_regularizer": null, "bias_regularizer": null, "activity_regularizer": null, "kernel_constraint": null, "bias_constraint": null}, "inbound_nodes": [[["mixed0", 0, 0, {}]]]}, {"name": "batch_normalization_16", "class_name": "BatchNormalization", "config": {"name": "batch_normalization_16", "trainable": false, "axis": 3, "momentum": 0.99, "epsilon": 0.001, "center": true, "scale": false, "beta_initializer": {"class_name": "Zeros", "config": {}}, "gamma_initializer": {"class_name": "Ones", "config": {}}, "moving_mean_initializer": {"class_name": "Zeros", "config": {}}, "moving_variance_initializer": {"class_name": "Ones", "config": {}}, "beta_regularizer": null, "gamma_regularizer": null, "beta_constraint": null, "gamma_constraint": null}, "inbound_nodes": [[["conv2d_16", 0, 0, {}]]]}, {"name": "activation_16", "class_name": "Activation", "config": {"name": "activation_16", "trainable": false, "activation": "relu"}, "inbound_nodes": [[["batch_normalization_16", 0, 0, {}]]]}, {"name": "conv2d_14", "class_name": "Conv2D", "config": {"name": "conv2d_14", "trainable": false, "filters": 48, "kernel_size": [1, 1], "strides": [1, 1], "padding": "same", "data_format": "channels_last", "dilation_rate": [1, 1], "activation": "linear", "use_bias": false, "kernel_initializer": {"class_name": "VarianceScaling", "config": {"scale": 1.0, "mode": "fan_avg", "distribution": "uniform", "seed": null}}, "bias_initializer": {"class_name": "Zeros", "config": {}}, "kernel_regularizer": null, "bias_regularizer": null, "activity_regularizer": null, "kernel_constraint": null, "bias_constraint": null}, "inbound_nodes": [[["mixed0", 0, 0, {}]]]}, {"name": "conv2d_17", "class_name": "Conv2D", "config": {"name": "conv2d_17", "trainable": false, "filters": 96, "kernel_size": [3, 3], "strides": [1, 1], "padding": "same", "data_format": "channels_last", "dilation_rate": [1, 1], "activation": "linear", "use_bias": false, "kernel_initializer": {"class_name": "VarianceScaling", "config": {"scale": 1.0, "mode": "fan_avg", "distribution": "uniform", "seed": null}}, "bias_initializer": {"class_name": "Zeros", "config": {}}, "kernel_regularizer": null, "bias_regularizer": null, "activity_regularizer": null, "kernel_constraint": null, "bias_constraint": null}, "inbound_nodes": [[["activation_16", 0, 0, {}]]]}, {"name": "batch_normalization_14", "class_name": "BatchNormalization", "config": {"name": "batch_normalization_14", "trainable": false, "axis": 3, "momentum": 0.99, "epsilon": 0.001, "center": true, "scale": false, "beta_initializer": {"class_name": "Zeros", "config": {}}, "gamma_initializer": {"class_name": "Ones", "config": {}}, "moving_mean_initializer": {"class_name": "Zeros", "config": {}}, "moving_variance_initializer": {"class_name": "Ones", "config": {}}, "beta_regularizer": null, "gamma_regularizer": null, "beta_constraint": null, "gamma_constraint": null}, "inbound_nodes": [[["conv2d_14", 0, 0, {}]]]}, {"name": "batch_normalization_17", "class_name": "BatchNormalization", "config": {"name": "batch_normalization_17", "trainable": false, "axis": 3, "momentum": 0.99, "epsilon": 0.001, "center": true, "scale": false, "beta_initializer": {"class_name": "Zeros", "config": {}}, "gamma_initializer": {"class_name": "Ones", "config": {}}, "moving_mean_initializer": {"class_name": "Zeros", "config": {}}, "moving_variance_initializer": {"class_name": "Ones", "config": {}}, "beta_regularizer": null, "gamma_regularizer": null, "beta_constraint": null, "gamma_constraint": null}, "inbound_nodes": [[["conv2d_17", 0, 0, {}]]]}, {"name": "activation_14", "class_name": "Activation", "config": {"name": "activation_14", "trainable": false, "activation": "relu"}, "inbound_nodes": [[["batch_normalization_14", 0, 0, {}]]]}, {"name": "activation_17", "class_name": "Activation", "config": {"name": "activation_17", "trainable": false, "activation": "relu"}, "inbound_nodes": [[["batch_normalization_17", 0, 0, {}]]]}, {"name": "average_pooling2d_2", "class_name": "AveragePooling2D", "config": {"name": "average_pooling2d_2", "trainable": false, "pool_size": [3, 3], "padding": "same", "strides": [1, 1], "data_format": "channels_last"}, "inbound_nodes": [[["mixed0", 0, 0, {}]]]}, {"name": "conv2d_13", "class_name": "Conv2D", "config": {"name": "conv2d_13", "trainable": false, "filters": 64, "kernel_size": [1, 1], "strides": [1, 1], "padding": "same", "data_format": "channels_last", "dilation_rate": [1, 1], "activation": "linear", "use_bias": false, "kernel_initializer": {"class_name": "VarianceScaling", "config": {"scale": 1.0, "mode": "fan_avg", "distribution": "uniform", "seed": null}}, "bias_initializer": {"class_name": "Zeros", "config": {}}, "kernel_regularizer": null, "bias_regularizer": null, "activity_regularizer": null, "kernel_constraint": null, "bias_constraint": null}, "inbound_nodes": [[["mixed0", 0, 0, {}]]]}, {"name": "conv2d_15", "class_name": "Conv2D", "config": {"name": "conv2d_15", "trainable": false, "filters": 64, "kernel_size": [5, 5], "strides": [1, 1], "padding": "same", "data_format": "channels_last", "dilation_rate": [1, 1], "activation": "linear", "use_bias": false, "kernel_initializer": {"class_name": "VarianceScaling", "config": {"scale": 1.0, "mode": "fan_avg", "distribution": "uniform", "seed": null}}, "bias_initializer": {"class_name": "Zeros", "config": {}}, "kernel_regularizer": null, "bias_regularizer": null, "activity_regularizer": null, "kernel_constraint": null, "bias_constraint": null}, "inbound_nodes": [[["activation_14", 0, 0, {}]]]}, {"name": "conv2d_18", "class_name": "Conv2D", "config": {"name": "conv2d_18", "trainable": false, "filters": 96, "kernel_size": [3, 3], "strides": [1, 1], "padding": "same", "data_format": "channels_last", "dilation_rate": [1, 1], "activation": "linear", "use_bias": false, "kernel_initializer": {"class_name": "VarianceScaling", "config": {"scale": 1.0, "mode": "fan_avg", "distribution": "uniform", "seed": null}}, "bias_initializer": {"class_name": "Zeros", "config": {}}, "kernel_regularizer": null, "bias_regularizer": null, "activity_regularizer": null, "kernel_constraint": null, "bias_constraint": null}, "inbound_nodes": [[["activation_17", 0, 0, {}]]]}, {"name": "conv2d_19", "class_name": "Conv2D", "config": {"name": "conv2d_19", "trainable": false, "filters": 64, "kernel_size": [1, 1], "strides": [1, 1], "padding": "same", "data_format": "channels_last", "dilation_rate": [1, 1], "activation": "linear", "use_bias": false, "kernel_initializer": {"class_name": "VarianceScaling", "config": {"scale": 1.0, "mode": "fan_avg", "distribution": "uniform", "seed": null}}, "bias_initializer": {"class_name": "Zeros", "config": {}}, "kernel_regularizer": null, "bias_regularizer": null, "activity_regularizer": null, "kernel_constraint": null, "bias_constraint": null}, "inbound_nodes": [[["average_pooling2d_2", 0, 0, {}]]]}, {"name": "batch_normalization_13", "class_name": "BatchNormalization", "config": {"name": "batch_normalization_13", "trainable": false, "axis": 3, "momentum": 0.99, "epsilon": 0.001, "center": true, "scale": false, "beta_initializer": {"class_name": "Zeros", "config": {}}, "gamma_initializer": {"class_name": "Ones", "config": {}}, "moving_mean_initializer": {"class_name": "Zeros", "config": {}}, "moving_variance_initializer": {"class_name": "Ones", "config": {}}, "beta_regularizer": null, "gamma_regularizer": null, "beta_constraint": null, "gamma_constraint": null}, "inbound_nodes": [[["conv2d_13", 0, 0, {}]]]}, {"name": "batch_normalization_15", "class_name": "BatchNormalization", "config": {"name": "batch_normalization_15", "trainable": false, "axis": 3, "momentum": 0.99, "epsilon": 0.001, "center": true, "scale": false, "beta_initializer": {"class_name": "Zeros", "config": {}}, "gamma_initializer": {"class_name": "Ones", "config": {}}, "moving_mean_initializer": {"class_name": "Zeros", "config": {}}, "moving_variance_initializer": {"class_name": "Ones", "config": {}}, "beta_regularizer": null, "gamma_regularizer": null, "beta_constraint": null, "gamma_constraint": null}, "inbound_nodes": [[["conv2d_15", 0, 0, {}]]]}, {"name": "batch_normalization_18", "class_name": "BatchNormalization", "config": {"name": "batch_normalization_18", "trainable": false, "axis": 3, "momentum": 0.99, "epsilon": 0.001, "center": true, "scale": false, "beta_initializer": {"class_name": "Zeros", "config": {}}, "gamma_initializer": {"class_name": "Ones", "config": {}}, "moving_mean_initializer": {"class_name": "Zeros", "config": {}}, "moving_variance_initializer": {"class_name": "Ones", "config": {}}, "beta_regularizer": null, "gamma_regularizer": null, "beta_constraint": null, "gamma_constraint": null}, "inbound_nodes": [[["conv2d_18", 0, 0, {}]]]}, {"name": "batch_normalization_19", "class_name": "BatchNormalization", "config": {"name": "batch_normalization_19", "trainable": false, "axis": 3, "momentum": 0.99, "epsilon": 0.001, "center": true, "scale": false, "beta_initializer": {"class_name": "Zeros", "config": {}}, "gamma_initializer": {"class_name": "Ones", "config": {}}, "moving_mean_initializer": {"class_name": "Zeros", "config": {}}, "moving_variance_initializer": {"class_name": "Ones", "config": {}}, "beta_regularizer": null, "gamma_regularizer": null, "beta_constraint": null, "gamma_constraint": null}, "inbound_nodes": [[["conv2d_19", 0, 0, {}]]]}, {"name": "activation_13", "class_name": "Activation", "config": {"name": "activation_13", "trainable": false, "activation": "relu"}, "inbound_nodes": [[["batch_normalization_13", 0, 0, {}]]]}, {"name": "activation_15", "class_name": "Activation", "config": {"name": "activation_15", "trainable": false, "activation": "relu"}, "inbound_nodes": [[["batch_normalization_15", 0, 0, {}]]]}, {"name": "activation_18", "class_name": "Activation", "config": {"name": "activation_18", "trainable": false, "activation": "relu"}, "inbound_nodes": [[["batch_normalization_18", 0, 0, {}]]]}, {"name": "activation_19", "class_name": "Activation", "config": {"name": "activation_19", "trainable": false, "activation": "relu"}, "inbound_nodes": [[["batch_normalization_19", 0, 0, {}]]]}, {"name": "mixed1", "class_name": "Concatenate", "config": {"name": "mixed1", "trainable": false, "axis": 3}, "inbound_nodes": [[["activation_13", 0, 0, {}], ["activation_15", 0, 0, {}], ["activation_18", 0, 0, {}], ["activation_19", 0, 0, {}]]]}, {"name": "conv2d_23", "class_name": "Conv2D", "config": {"name": "conv2d_23", "trainable": false, "filters": 64, "kernel_size": [1, 1], "strides": [1, 1], "padding": "same", "data_format": "channels_last", "dilation_rate": [1, 1], "activation": "linear", "use_bias": false, "kernel_initializer": {"class_name": "VarianceScaling", "config": {"scale": 1.0, "mode": "fan_avg", "distribution": "uniform", "seed": null}}, "bias_initializer": {"class_name": "Zeros", "config": {}}, "kernel_regularizer": null, "bias_regularizer": null, "activity_regularizer": null, "kernel_constraint": null, "bias_constraint": null}, "inbound_nodes": [[["mixed1", 0, 0, {}]]]}, {"name": "batch_normalization_23", "class_name": "BatchNormalization", "config": {"name": "batch_normalization_23", "trainable": false, "axis": 3, "momentum": 0.99, "epsilon": 0.001, "center": true, "scale": false, "beta_initializer": {"class_name": "Zeros", "config": {}}, "gamma_initializer": {"class_name": "Ones", "config": {}}, "moving_mean_initializer": {"class_name": "Zeros", "config": {}}, "moving_variance_initializer": {"class_name": "Ones", "config": {}}, "beta_regularizer": null, "gamma_regularizer": null, "beta_constraint": null, "gamma_constraint": null}, "inbound_nodes": [[["conv2d_23", 0, 0, {}]]]}, {"name": "activation_23", "class_name": "Activation", "config": {"name": "activation_23", "trainable": false, "activation": "relu"}, "inbound_nodes": [[["batch_normalization_23", 0, 0, {}]]]}, {"name": "conv2d_21", "class_name": "Conv2D", "config": {"name": "conv2d_21", "trainable": false, "filters": 48, "kernel_size": [1, 1], "strides": [1, 1], "padding": "same", "data_format": "channels_last", "dilation_rate": [1, 1], "activation": "linear", "use_bias": false, "kernel_initializer": {"class_name": "VarianceScaling", "config": {"scale": 1.0, "mode": "fan_avg", "distribution": "uniform", "seed": null}}, "bias_initializer": {"class_name": "Zeros", "config": {}}, "kernel_regularizer": null, "bias_regularizer": null, "activity_regularizer": null, "kernel_constraint": null, "bias_constraint": null}, "inbound_nodes": [[["mixed1", 0, 0, {}]]]}, {"name": "conv2d_24", "class_name": "Conv2D", "config": {"name": "conv2d_24", "trainable": false, "filters": 96, "kernel_size": [3, 3], "strides": [1, 1], "padding": "same", "data_format": "channels_last", "dilation_rate": [1, 1], "activation": "linear", "use_bias": false, "kernel_initializer": {"class_name": "VarianceScaling", "config": {"scale": 1.0, "mode": "fan_avg", "distribution": "uniform", "seed": null}}, "bias_initializer": {"class_name": "Zeros", "config": {}}, "kernel_regularizer": null, "bias_regularizer": null, "activity_regularizer": null, "kernel_constraint": null, "bias_constraint": null}, "inbound_nodes": [[["activation_23", 0, 0, {}]]]}, {"name": "batch_normalization_21", "class_name": "BatchNormalization", "config": {"name": "batch_normalization_21", "trainable": false, "axis": 3, "momentum": 0.99, "epsilon": 0.001, "center": true, "scale": false, "beta_initializer": {"class_name": "Zeros", "config": {}}, "gamma_initializer": {"class_name": "Ones", "config": {}}, "moving_mean_initializer": {"class_name": "Zeros", "config": {}}, "moving_variance_initializer": {"class_name": "Ones", "config": {}}, "beta_regularizer": null, "gamma_regularizer": null, "beta_constraint": null, "gamma_constraint": null}, "inbound_nodes": [[["conv2d_21", 0, 0, {}]]]}, {"name": "batch_normalization_24", "class_name": "BatchNormalization", "config": {"name": "batch_normalization_24", "trainable": false, "axis": 3, "momentum": 0.99, "epsilon": 0.001, "center": true, "scale": false, "beta_initializer": {"class_name": "Zeros", "config": {}}, "gamma_initializer": {"class_name": "Ones", "config": {}}, "moving_mean_initializer": {"class_name": "Zeros", "config": {}}, "moving_variance_initializer": {"class_name": "Ones", "config": {}}, "beta_regularizer": null, "gamma_regularizer": null, "beta_constraint": null, "gamma_constraint": null}, "inbound_nodes": [[["conv2d_24", 0, 0, {}]]]}, {"name": "activation_21", "class_name": "Activation", "config": {"name": "activation_21", "trainable": false, "activation": "relu"}, "inbound_nodes": [[["batch_normalization_21", 0, 0, {}]]]}, {"name": "activation_24", "class_name": "Activation", "config": {"name": "activation_24", "trainable": false, "activation": "relu"}, "inbound_nodes": [[["batch_normalization_24", 0, 0, {}]]]}, {"name": "average_pooling2d_3", "class_name": "AveragePooling2D", "config": {"name": "average_pooling2d_3", "trainable": false, "pool_size": [3, 3], "padding": "same", "strides": [1, 1], "data_format": "channels_last"}, "inbound_nodes": [[["mixed1", 0, 0, {}]]]}, {"name": "conv2d_20", "class_name": "Conv2D", "config": {"name": "conv2d_20", "trainable": false, "filters": 64, "kernel_size": [1, 1], "strides": [1, 1], "padding": "same", "data_format": "channels_last", "dilation_rate": [1, 1], "activation": "linear", "use_bias": false, "kernel_initializer": {"class_name": "VarianceScaling", "config": {"scale": 1.0, "mode": "fan_avg", "distribution": "uniform", "seed": null}}, "bias_initializer": {"class_name": "Zeros", "config": {}}, "kernel_regularizer": null, "bias_regularizer": null, "activity_regularizer": null, "kernel_constraint": null, "bias_constraint": null}, "inbound_nodes": [[["mixed1", 0, 0, {}]]]}, {"name": "conv2d_22", "class_name": "Conv2D", "config": {"name": "conv2d_22", "trainable": false, "filters": 64, "kernel_size": [5, 5], "strides": [1, 1], "padding": "same", "data_format": "channels_last", "dilation_rate": [1, 1], "activation": "linear", "use_bias": false, "kernel_initializer": {"class_name": "VarianceScaling", "config": {"scale": 1.0, "mode": "fan_avg", "distribution": "uniform", "seed": null}}, "bias_initializer": {"class_name": "Zeros", "config": {}}, "kernel_regularizer": null, "bias_regularizer": null, "activity_regularizer": null, "kernel_constraint": null, "bias_constraint": null}, "inbound_nodes": [[["activation_21", 0, 0, {}]]]}, {"name": "conv2d_25", "class_name": "Conv2D", "config": {"name": "conv2d_25", "trainable": false, "filters": 96, "kernel_size": [3, 3], "strides": [1, 1], "padding": "same", "data_format": "channels_last", "dilation_rate": [1, 1], "activation": "linear", "use_bias": false, "kernel_initializer": {"class_name": "VarianceScaling", "config": {"scale": 1.0, "mode": "fan_avg", "distribution": "uniform", "seed": null}}, "bias_initializer": {"class_name": "Zeros", "config": {}}, "kernel_regularizer": null, "bias_regularizer": null, "activity_regularizer": null, "kernel_constraint": null, "bias_constraint": null}, "inbound_nodes": [[["activation_24", 0, 0, {}]]]}, {"name": "conv2d_26", "class_name": "Conv2D", "config": {"name": "conv2d_26", "trainable": false, "filters": 64, "kernel_size": [1, 1], "strides": [1, 1], "padding": "same", "data_format": "channels_last", "dilation_rate": [1, 1], "activation": "linear", "use_bias": false, "kernel_initializer": {"class_name": "VarianceScaling", "config": {"scale": 1.0, "mode": "fan_avg", "distribution": "uniform", "seed": null}}, "bias_initializer": {"class_name": "Zeros", "config": {}}, "kernel_regularizer": null, "bias_regularizer": null, "activity_regularizer": null, "kernel_constraint": null, "bias_constraint": null}, "inbound_nodes": [[["average_pooling2d_3", 0, 0, {}]]]}, {"name": "batch_normalization_20", "class_name": "BatchNormalization", "config": {"name": "batch_normalization_20", "trainable": false, "axis": 3, "momentum": 0.99, "epsilon": 0.001, "center": true, "scale": false, "beta_initializer": {"class_name": "Zeros", "config": {}}, "gamma_initializer": {"class_name": "Ones", "config": {}}, "moving_mean_initializer": {"class_name": "Zeros", "config": {}}, "moving_variance_initializer": {"class_name": "Ones", "config": {}}, "beta_regularizer": null, "gamma_regularizer": null, "beta_constraint": null, "gamma_constraint": null}, "inbound_nodes": [[["conv2d_20", 0, 0, {}]]]}, {"name": "batch_normalization_22", "class_name": "BatchNormalization", "config": {"name": "batch_normalization_22", "trainable": false, "axis": 3, "momentum": 0.99, "epsilon": 0.001, "center": true, "scale": false, "beta_initializer": {"class_name": "Zeros", "config": {}}, "gamma_initializer": {"class_name": "Ones", "config": {}}, "moving_mean_initializer": {"class_name": "Zeros", "config": {}}, "moving_variance_initializer": {"class_name": "Ones", "config": {}}, "beta_regularizer": null, "gamma_regularizer": null, "beta_constraint": null, "gamma_constraint": null}, "inbound_nodes": [[["conv2d_22", 0, 0, {}]]]}, {"name": "batch_normalization_25", "class_name": "BatchNormalization", "config": {"name": "batch_normalization_25", "trainable": false, "axis": 3, "momentum": 0.99, "epsilon": 0.001, "center": true, "scale": false, "beta_initializer": {"class_name": "Zeros", "config": {}}, "gamma_initializer": {"class_name": "Ones", "config": {}}, "moving_mean_initializer": {"class_name": "Zeros", "config": {}}, "moving_variance_initializer": {"class_name": "Ones", "config": {}}, "beta_regularizer": null, "gamma_regularizer": null, "beta_constraint": null, "gamma_constraint": null}, "inbound_nodes": [[["conv2d_25", 0, 0, {}]]]}, {"name": "batch_normalization_26", "class_name": "BatchNormalization", "config": {"name": "batch_normalization_26", "trainable": false, "axis": 3, "momentum": 0.99, "epsilon": 0.001, "center": true, "scale": false, "beta_initializer": {"class_name": "Zeros", "config": {}}, "gamma_initializer": {"class_name": "Ones", "config": {}}, "moving_mean_initializer": {"class_name": "Zeros", "config": {}}, "moving_variance_initializer": {"class_name": "Ones", "config": {}}, "beta_regularizer": null, "gamma_regularizer": null, "beta_constraint": null, "gamma_constraint": null}, "inbound_nodes": [[["conv2d_26", 0, 0, {}]]]}, {"name": "activation_20", "class_name": "Activation", "config": {"name": "activation_20", "trainable": false, "activation": "relu"}, "inbound_nodes": [[["batch_normalization_20", 0, 0, {}]]]}, {"name": "activation_22", "class_name": "Activation", "config": {"name": "activation_22", "trainable": false, "activation": "relu"}, "inbound_nodes": [[["batch_normalization_22", 0, 0, {}]]]}, {"name": "activation_25", "class_name": "Activation", "config": {"name": "activation_25", "trainable": false, "activation": "relu"}, "inbound_nodes": [[["batch_normalization_25", 0, 0, {}]]]}, {"name": "activation_26", "class_name": "Activation", "config": {"name": "activation_26", "trainable": false, "activation": "relu"}, "inbound_nodes": [[["batch_normalization_26", 0, 0, {}]]]}, {"name": "mixed2", "class_name": "Concatenate", "config": {"name": "mixed2", "trainable": false, "axis": 3}, "inbound_nodes": [[["activation_20", 0, 0, {}], ["activation_22", 0, 0, {}], ["activation_25", 0, 0, {}], ["activation_26", 0, 0, {}]]]}, {"name": "conv2d_28", "class_name": "Conv2D", "config": {"name": "conv2d_28", "trainable": false, "filters": 64, "kernel_size": [1, 1], "strides": [1, 1], "padding": "same", "data_format": "channels_last", "dilation_rate": [1, 1], "activation": "linear", "use_bias": false, "kernel_initializer": {"class_name": "VarianceScaling", "config": {"scale": 1.0, "mode": "fan_avg", "distribution": "uniform", "seed": null}}, "bias_initializer": {"class_name": "Zeros", "config": {}}, "kernel_regularizer": null, "bias_regularizer": null, "activity_regularizer": null, "kernel_constraint": null, "bias_constraint": null}, "inbound_nodes": [[["mixed2", 0, 0, {}]]]}, {"name": "batch_normalization_28", "class_name": "BatchNormalization", "config": {"name": "batch_normalization_28", "trainable": false, "axis": 3, "momentum": 0.99, "epsilon": 0.001, "center": true, "scale": false, "beta_initializer": {"class_name": "Zeros", "config": {}}, "gamma_initializer": {"class_name": "Ones", "config": {}}, "moving_mean_initializer": {"class_name": "Zeros", "config": {}}, "moving_variance_initializer": {"class_name": "Ones", "config": {}}, "beta_regularizer": null, "gamma_regularizer": null, "beta_constraint": null, "gamma_constraint": null}, "inbound_nodes": [[["conv2d_28", 0, 0, {}]]]}, {"name": "activation_28", "class_name": "Activation", "config": {"name": "activation_28", "trainable": false, "activation": "relu"}, "inbound_nodes": [[["batch_normalization_28", 0, 0, {}]]]}, {"name": "conv2d_29", "class_name": "Conv2D", "config": {"name": "conv2d_29", "trainable": false, "filters": 96, "kernel_size": [3, 3], "strides": [1, 1], "padding": "same", "data_format": "channels_last", "dilation_rate": [1, 1], "activation": "linear", "use_bias": false, "kernel_initializer": {"class_name": "VarianceScaling", "config": {"scale": 1.0, "mode": "fan_avg", "distribution": "uniform", "seed": null}}, "bias_initializer": {"class_name": "Zeros", "config": {}}, "kernel_regularizer": null, "bias_regularizer": null, "activity_regularizer": null, "kernel_constraint": null, "bias_constraint": null}, "inbound_nodes": [[["activation_28", 0, 0, {}]]]}, {"name": "batch_normalization_29", "class_name": "BatchNormalization", "config": {"name": "batch_normalization_29", "trainable": false, "axis": 3, "momentum": 0.99, "epsilon": 0.001, "center": true, "scale": false, "beta_initializer": {"class_name": "Zeros", "config": {}}, "gamma_initializer": {"class_name": "Ones", "config": {}}, "moving_mean_initializer": {"class_name": "Zeros", "config": {}}, "moving_variance_initializer": {"class_name": "Ones", "config": {}}, "beta_regularizer": null, "gamma_regularizer": null, "beta_constraint": null, "gamma_constraint": null}, "inbound_nodes": [[["conv2d_29", 0, 0, {}]]]}, {"name": "activation_29", "class_name": "Activation", "config": {"name": "activation_29", "trainable": false, "activation": "relu"}, "inbound_nodes": [[["batch_normalization_29", 0, 0, {}]]]}, {"name": "conv2d_27", "class_name": "Conv2D", "config": {"name": "conv2d_27", "trainable": false, "filters": 384, "kernel_size": [3, 3], "strides": [2, 2], "padding": "valid", "data_format": "channels_last", "dilation_rate": [1, 1], "activation": "linear", "use_bias": false, "kernel_initializer": {"class_name": "VarianceScaling", "config": {"scale": 1.0, "mode": "fan_avg", "distribution": "uniform", "seed": null}}, "bias_initializer": {"class_name": "Zeros", "config": {}}, "kernel_regularizer": null, "bias_regularizer": null, "activity_regularizer": null, "kernel_constraint": null, "bias_constraint": null}, "inbound_nodes": [[["mixed2", 0, 0, {}]]]}, {"name": "conv2d_30", "class_name": "Conv2D", "config": {"name": "conv2d_30", "trainable": false, "filters": 96, "kernel_size": [3, 3], "strides": [2, 2], "padding": "valid", "data_format": "channels_last", "dilation_rate": [1, 1], "activation": "linear", "use_bias": false, "kernel_initializer": {"class_name": "VarianceScaling", "config": {"scale": 1.0, "mode": "fan_avg", "distribution": "uniform", "seed": null}}, "bias_initializer": {"class_name": "Zeros", "config": {}}, "kernel_regularizer": null, "bias_regularizer": null, "activity_regularizer": null, "kernel_constraint": null, "bias_constraint": null}, "inbound_nodes": [[["activation_29", 0, 0, {}]]]}, {"name": "batch_normalization_27", "class_name": "BatchNormalization", "config": {"name": "batch_normalization_27", "trainable": false, "axis": 3, "momentum": 0.99, "epsilon": 0.001, "center": true, "scale": false, "beta_initializer": {"class_name": "Zeros", "config": {}}, "gamma_initializer": {"class_name": "Ones", "config": {}}, "moving_mean_initializer": {"class_name": "Zeros", "config": {}}, "moving_variance_initializer": {"class_name": "Ones", "config": {}}, "beta_regularizer": null, "gamma_regularizer": null, "beta_constraint": null, "gamma_constraint": null}, "inbound_nodes": [[["conv2d_27", 0, 0, {}]]]}, {"name": "batch_normalization_30", "class_name": "BatchNormalization", "config": {"name": "batch_normalization_30", "trainable": false, "axis": 3, "momentum": 0.99, "epsilon": 0.001, "center": true, "scale": false, "beta_initializer": {"class_name": "Zeros", "config": {}}, "gamma_initializer": {"class_name": "Ones", "config": {}}, "moving_mean_initializer": {"class_name": "Zeros", "config": {}}, "moving_variance_initializer": {"class_name": "Ones", "config": {}}, "beta_regularizer": null, "gamma_regularizer": null, "beta_constraint": null, "gamma_constraint": null}, "inbound_nodes": [[["conv2d_30", 0, 0, {}]]]}, {"name": "activation_27", "class_name": "Activation", "config": {"name": "activation_27", "trainable": false, "activation": "relu"}, "inbound_nodes": [[["batch_normalization_27", 0, 0, {}]]]}, {"name": "activation_30", "class_name": "Activation", "config": {"name": "activation_30", "trainable": false, "activation": "relu"}, "inbound_nodes": [[["batch_normalization_30", 0, 0, {}]]]}, {"name": "max_pooling2d_3", "class_name": "MaxPooling2D", "config": {"name": "max_pooling2d_3", "trainable": false, "pool_size": [3, 3], "padding": "valid", "strides": [2, 2], "data_format": "channels_last"}, "inbound_nodes": [[["mixed2", 0, 0, {}]]]}, {"name": "mixed3", "class_name": "Concatenate", "config": {"name": "mixed3", "trainable": false, "axis": 3}, "inbound_nodes": [[["activation_27", 0, 0, {}], ["activation_30", 0, 0, {}], ["max_pooling2d_3", 0, 0, {}]]]}, {"name": "conv2d_35", "class_name": "Conv2D", "config": {"name": "conv2d_35", "trainable": false, "filters": 128, "kernel_size": [1, 1], "strides": [1, 1], "padding": "same", "data_format": "channels_last", "dilation_rate": [1, 1], "activation": "linear", "use_bias": false, "kernel_initializer": {"class_name": "VarianceScaling", "config": {"scale": 1.0, "mode": "fan_avg", "distribution": "uniform", "seed": null}}, "bias_initializer": {"class_name": "Zeros", "config": {}}, "kernel_regularizer": null, "bias_regularizer": null, "activity_regularizer": null, "kernel_constraint": null, "bias_constraint": null}, "inbound_nodes": [[["mixed3", 0, 0, {}]]]}, {"name": "batch_normalization_35", "class_name": "BatchNormalization", "config": {"name": "batch_normalization_35", "trainable": false, "axis": 3, "momentum": 0.99, "epsilon": 0.001, "center": true, "scale": false, "beta_initializer": {"class_name": "Zeros", "config": {}}, "gamma_initializer": {"class_name": "Ones", "config": {}}, "moving_mean_initializer": {"class_name": "Zeros", "config": {}}, "moving_variance_initializer": {"class_name": "Ones", "config": {}}, "beta_regularizer": null, "gamma_regularizer": null, "beta_constraint": null, "gamma_constraint": null}, "inbound_nodes": [[["conv2d_35", 0, 0, {}]]]}, {"name": "activation_35", "class_name": "Activation", "config": {"name": "activation_35", "trainable": false, "activation": "relu"}, "inbound_nodes": [[["batch_normalization_35", 0, 0, {}]]]}, {"name": "conv2d_36", "class_name": "Conv2D", "config": {"name": "conv2d_36", "trainable": false, "filters": 128, "kernel_size": [7, 1], "strides": [1, 1], "padding": "same", "data_format": "channels_last", "dilation_rate": [1, 1], "activation": "linear", "use_bias": false, "kernel_initializer": {"class_name": "VarianceScaling", "config": {"scale": 1.0, "mode": "fan_avg", "distribution": "uniform", "seed": null}}, "bias_initializer": {"class_name": "Zeros", "config": {}}, "kernel_regularizer": null, "bias_regularizer": null, "activity_regularizer": null, "kernel_constraint": null, "bias_constraint": null}, "inbound_nodes": [[["activation_35", 0, 0, {}]]]}, {"name": "batch_normalization_36", "class_name": "BatchNormalization", "config": {"name": "batch_normalization_36", "trainable": false, "axis": 3, "momentum": 0.99, "epsilon": 0.001, "center": true, "scale": false, "beta_initializer": {"class_name": "Zeros", "config": {}}, "gamma_initializer": {"class_name": "Ones", "config": {}}, "moving_mean_initializer": {"class_name": "Zeros", "config": {}}, "moving_variance_initializer": {"class_name": "Ones", "config": {}}, "beta_regularizer": null, "gamma_regularizer": null, "beta_constraint": null, "gamma_constraint": null}, "inbound_nodes": [[["conv2d_36", 0, 0, {}]]]}, {"name": "activation_36", "class_name": "Activation", "config": {"name": "activation_36", "trainable": false, "activation": "relu"}, "inbound_nodes": [[["batch_normalization_36", 0, 0, {}]]]}, {"name": "conv2d_32", "class_name": "Conv2D", "config": {"name": "conv2d_32", "trainable": false, "filters": 128, "kernel_size": [1, 1], "strides": [1, 1], "padding": "same", "data_format": "channels_last", "dilation_rate": [1, 1], "activation": "linear", "use_bias": false, "kernel_initializer": {"class_name": "VarianceScaling", "config": {"scale": 1.0, "mode": "fan_avg", "distribution": "uniform", "seed": null}}, "bias_initializer": {"class_name": "Zeros", "config": {}}, "kernel_regularizer": null, "bias_regularizer": null, "activity_regularizer": null, "kernel_constraint": null, "bias_constraint": null}, "inbound_nodes": [[["mixed3", 0, 0, {}]]]}, {"name": "conv2d_37", "class_name": "Conv2D", "config": {"name": "conv2d_37", "trainable": false, "filters": 128, "kernel_size": [1, 7], "strides": [1, 1], "padding": "same", "data_format": "channels_last", "dilation_rate": [1, 1], "activation": "linear", "use_bias": false, "kernel_initializer": {"class_name": "VarianceScaling", "config": {"scale": 1.0, "mode": "fan_avg", "distribution": "uniform", "seed": null}}, "bias_initializer": {"class_name": "Zeros", "config": {}}, "kernel_regularizer": null, "bias_regularizer": null, "activity_regularizer": null, "kernel_constraint": null, "bias_constraint": null}, "inbound_nodes": [[["activation_36", 0, 0, {}]]]}, {"name": "batch_normalization_32", "class_name": "BatchNormalization", "config": {"name": "batch_normalization_32", "trainable": false, "axis": 3, "momentum": 0.99, "epsilon": 0.001, "center": true, "scale": false, "beta_initializer": {"class_name": "Zeros", "config": {}}, "gamma_initializer": {"class_name": "Ones", "config": {}}, "moving_mean_initializer": {"class_name": "Zeros", "config": {}}, "moving_variance_initializer": {"class_name": "Ones", "config": {}}, "beta_regularizer": null, "gamma_regularizer": null, "beta_constraint": null, "gamma_constraint": null}, "inbound_nodes": [[["conv2d_32", 0, 0, {}]]]}, {"name": "batch_normalization_37", "class_name": "BatchNormalization", "config": {"name": "batch_normalization_37", "trainable": false, "axis": 3, "momentum": 0.99, "epsilon": 0.001, "center": true, "scale": false, "beta_initializer": {"class_name": "Zeros", "config": {}}, "gamma_initializer": {"class_name": "Ones", "config": {}}, "moving_mean_initializer": {"class_name": "Zeros", "config": {}}, "moving_variance_initializer": {"class_name": "Ones", "config": {}}, "beta_regularizer": null, "gamma_regularizer": null, "beta_constraint": null, "gamma_constraint": null}, "inbound_nodes": [[["conv2d_37", 0, 0, {}]]]}, {"name": "activation_32", "class_name": "Activation", "config": {"name": "activation_32", "trainable": false, "activation": "relu"}, "inbound_nodes": [[["batch_normalization_32", 0, 0, {}]]]}, {"name": "activation_37", "class_name": "Activation", "config": {"name": "activation_37", "trainable": false, "activation": "relu"}, "inbound_nodes": [[["batch_normalization_37", 0, 0, {}]]]}, {"name": "conv2d_33", "class_name": "Conv2D", "config": {"name": "conv2d_33", "trainable": false, "filters": 128, "kernel_size": [1, 7], "strides": [1, 1], "padding": "same", "data_format": "channels_last", "dilation_rate": [1, 1], "activation": "linear", "use_bias": false, "kernel_initializer": {"class_name": "VarianceScaling", "config": {"scale": 1.0, "mode": "fan_avg", "distribution": "uniform", "seed": null}}, "bias_initializer": {"class_name": "Zeros", "config": {}}, "kernel_regularizer": null, "bias_regularizer": null, "activity_regularizer": null, "kernel_constraint": null, "bias_constraint": null}, "inbound_nodes": [[["activation_32", 0, 0, {}]]]}, {"name": "conv2d_38", "class_name": "Conv2D", "config": {"name": "conv2d_38", "trainable": false, "filters": 128, "kernel_size": [7, 1], "strides": [1, 1], "padding": "same", "data_format": "channels_last", "dilation_rate": [1, 1], "activation": "linear", "use_bias": false, "kernel_initializer": {"class_name": "VarianceScaling", "config": {"scale": 1.0, "mode": "fan_avg", "distribution": "uniform", "seed": null}}, "bias_initializer": {"class_name": "Zeros", "config": {}}, "kernel_regularizer": null, "bias_regularizer": null, "activity_regularizer": null, "kernel_constraint": null, "bias_constraint": null}, "inbound_nodes": [[["activation_37", 0, 0, {}]]]}, {"name": "batch_normalization_33", "class_name": "BatchNormalization", "config": {"name": "batch_normalization_33", "trainable": false, "axis": 3, "momentum": 0.99, "epsilon": 0.001, "center": true, "scale": false, "beta_initializer": {"class_name": "Zeros", "config": {}}, "gamma_initializer": {"class_name": "Ones", "config": {}}, "moving_mean_initializer": {"class_name": "Zeros", "config": {}}, "moving_variance_initializer": {"class_name": "Ones", "config": {}}, "beta_regularizer": null, "gamma_regularizer": null, "beta_constraint": null, "gamma_constraint": null}, "inbound_nodes": [[["conv2d_33", 0, 0, {}]]]}, {"name": "batch_normalization_38", "class_name": "BatchNormalization", "config": {"name": "batch_normalization_38", "trainable": false, "axis": 3, "momentum": 0.99, "epsilon": 0.001, "center": true, "scale": false, "beta_initializer": {"class_name": "Zeros", "config": {}}, "gamma_initializer": {"class_name": "Ones", "config": {}}, "moving_mean_initializer": {"class_name": "Zeros", "config": {}}, "moving_variance_initializer": {"class_name": "Ones", "config": {}}, "beta_regularizer": null, "gamma_regularizer": null, "beta_constraint": null, "gamma_constraint": null}, "inbound_nodes": [[["conv2d_38", 0, 0, {}]]]}, {"name": "activation_33", "class_name": "Activation", "config": {"name": "activation_33", "trainable": false, "activation": "relu"}, "inbound_nodes": [[["batch_normalization_33", 0, 0, {}]]]}, {"name": "activation_38", "class_name": "Activation", "config": {"name": "activation_38", "trainable": false, "activation": "relu"}, "inbound_nodes": [[["batch_normalization_38", 0, 0, {}]]]}, {"name": "average_pooling2d_4", "class_name": "AveragePooling2D", "config": {"name": "average_pooling2d_4", "trainable": false, "pool_size": [3, 3], "padding": "same", "strides": [1, 1], "data_format": "channels_last"}, "inbound_nodes": [[["mixed3", 0, 0, {}]]]}, {"name": "conv2d_31", "class_name": "Conv2D", "config": {"name": "conv2d_31", "trainable": false, "filters": 192, "kernel_size": [1, 1], "strides": [1, 1], "padding": "same", "data_format": "channels_last", "dilation_rate": [1, 1], "activation": "linear", "use_bias": false, "kernel_initializer": {"class_name": "VarianceScaling", "config": {"scale": 1.0, "mode": "fan_avg", "distribution": "uniform", "seed": null}}, "bias_initializer": {"class_name": "Zeros", "config": {}}, "kernel_regularizer": null, "bias_regularizer": null, "activity_regularizer": null, "kernel_constraint": null, "bias_constraint": null}, "inbound_nodes": [[["mixed3", 0, 0, {}]]]}, {"name": "conv2d_34", "class_name": "Conv2D", "config": {"name": "conv2d_34", "trainable": false, "filters": 192, "kernel_size": [7, 1], "strides": [1, 1], "padding": "same", "data_format": "channels_last", "dilation_rate": [1, 1], "activation": "linear", "use_bias": false, "kernel_initializer": {"class_name": "VarianceScaling", "config": {"scale": 1.0, "mode": "fan_avg", "distribution": "uniform", "seed": null}}, "bias_initializer": {"class_name": "Zeros", "config": {}}, "kernel_regularizer": null, "bias_regularizer": null, "activity_regularizer": null, "kernel_constraint": null, "bias_constraint": null}, "inbound_nodes": [[["activation_33", 0, 0, {}]]]}, {"name": "conv2d_39", "class_name": "Conv2D", "config": {"name": "conv2d_39", "trainable": false, "filters": 192, "kernel_size": [1, 7], "strides": [1, 1], "padding": "same", "data_format": "channels_last", "dilation_rate": [1, 1], "activation": "linear", "use_bias": false, "kernel_initializer": {"class_name": "VarianceScaling", "config": {"scale": 1.0, "mode": "fan_avg", "distribution": "uniform", "seed": null}}, "bias_initializer": {"class_name": "Zeros", "config": {}}, "kernel_regularizer": null, "bias_regularizer": null, "activity_regularizer": null, "kernel_constraint": null, "bias_constraint": null}, "inbound_nodes": [[["activation_38", 0, 0, {}]]]}, {"name": "conv2d_40", "class_name": "Conv2D", "config": {"name": "conv2d_40", "trainable": false, "filters": 192, "kernel_size": [1, 1], "strides": [1, 1], "padding": "same", "data_format": "channels_last", "dilation_rate": [1, 1], "activation": "linear", "use_bias": false, "kernel_initializer": {"class_name": "VarianceScaling", "config": {"scale": 1.0, "mode": "fan_avg", "distribution": "uniform", "seed": null}}, "bias_initializer": {"class_name": "Zeros", "config": {}}, "kernel_regularizer": null, "bias_regularizer": null, "activity_regularizer": null, "kernel_constraint": null, "bias_constraint": null}, "inbound_nodes": [[["average_pooling2d_4", 0, 0, {}]]]}, {"name": "batch_normalization_31", "class_name": "BatchNormalization", "config": {"name": "batch_normalization_31", "trainable": false, "axis": 3, "momentum": 0.99, "epsilon": 0.001, "center": true, "scale": false, "beta_initializer": {"class_name": "Zeros", "config": {}}, "gamma_initializer": {"class_name": "Ones", "config": {}}, "moving_mean_initializer": {"class_name": "Zeros", "config": {}}, "moving_variance_initializer": {"class_name": "Ones", "config": {}}, "beta_regularizer": null, "gamma_regularizer": null, "beta_constraint": null, "gamma_constraint": null}, "inbound_nodes": [[["conv2d_31", 0, 0, {}]]]}, {"name": "batch_normalization_34", "class_name": "BatchNormalization", "config": {"name": "batch_normalization_34", "trainable": false, "axis": 3, "momentum": 0.99, "epsilon": 0.001, "center": true, "scale": false, "beta_initializer": {"class_name": "Zeros", "config": {}}, "gamma_initializer": {"class_name": "Ones", "config": {}}, "moving_mean_initializer": {"class_name": "Zeros", "config": {}}, "moving_variance_initializer": {"class_name": "Ones", "config": {}}, "beta_regularizer": null, "gamma_regularizer": null, "beta_constraint": null, "gamma_constraint": null}, "inbound_nodes": [[["conv2d_34", 0, 0, {}]]]}, {"name": "batch_normalization_39", "class_name": "BatchNormalization", "config": {"name": "batch_normalization_39", "trainable": false, "axis": 3, "momentum": 0.99, "epsilon": 0.001, "center": true, "scale": false, "beta_initializer": {"class_name": "Zeros", "config": {}}, "gamma_initializer": {"class_name": "Ones", "config": {}}, "moving_mean_initializer": {"class_name": "Zeros", "config": {}}, "moving_variance_initializer": {"class_name": "Ones", "config": {}}, "beta_regularizer": null, "gamma_regularizer": null, "beta_constraint": null, "gamma_constraint": null}, "inbound_nodes": [[["conv2d_39", 0, 0, {}]]]}, {"name": "batch_normalization_40", "class_name": "BatchNormalization", "config": {"name": "batch_normalization_40", "trainable": false, "axis": 3, "momentum": 0.99, "epsilon": 0.001, "center": true, "scale": false, "beta_initializer": {"class_name": "Zeros", "config": {}}, "gamma_initializer": {"class_name": "Ones", "config": {}}, "moving_mean_initializer": {"class_name": "Zeros", "config": {}}, "moving_variance_initializer": {"class_name": "Ones", "config": {}}, "beta_regularizer": null, "gamma_regularizer": null, "beta_constraint": null, "gamma_constraint": null}, "inbound_nodes": [[["conv2d_40", 0, 0, {}]]]}, {"name": "activation_31", "class_name": "Activation", "config": {"name": "activation_31", "trainable": false, "activation": "relu"}, "inbound_nodes": [[["batch_normalization_31", 0, 0, {}]]]}, {"name": "activation_34", "class_name": "Activation", "config": {"name": "activation_34", "trainable": false, "activation": "relu"}, "inbound_nodes": [[["batch_normalization_34", 0, 0, {}]]]}, {"name": "activation_39", "class_name": "Activation", "config": {"name": "activation_39", "trainable": false, "activation": "relu"}, "inbound_nodes": [[["batch_normalization_39", 0, 0, {}]]]}, {"name": "activation_40", "class_name": "Activation", "config": {"name": "activation_40", "trainable": false, "activation": "relu"}, "inbound_nodes": [[["batch_normalization_40", 0, 0, {}]]]}, {"name": "mixed4", "class_name": "Concatenate", "config": {"name": "mixed4", "trainable": false, "axis": 3}, "inbound_nodes": [[["activation_31", 0, 0, {}], ["activation_34", 0, 0, {}], ["activation_39", 0, 0, {}], ["activation_40", 0, 0, {}]]]}, {"name": "conv2d_45", "class_name": "Conv2D", "config": {"name": "conv2d_45", "trainable": false, "filters": 160, "kernel_size": [1, 1], "strides": [1, 1], "padding": "same", "data_format": "channels_last", "dilation_rate": [1, 1], "activation": "linear", "use_bias": false, "kernel_initializer": {"class_name": "VarianceScaling", "config": {"scale": 1.0, "mode": "fan_avg", "distribution": "uniform", "seed": null}}, "bias_initializer": {"class_name": "Zeros", "config": {}}, "kernel_regularizer": null, "bias_regularizer": null, "activity_regularizer": null, "kernel_constraint": null, "bias_constraint": null}, "inbound_nodes": [[["mixed4", 0, 0, {}]]]}, {"name": "batch_normalization_45", "class_name": "BatchNormalization", "config": {"name": "batch_normalization_45", "trainable": false, "axis": 3, "momentum": 0.99, "epsilon": 0.001, "center": true, "scale": false, "beta_initializer": {"class_name": "Zeros", "config": {}}, "gamma_initializer": {"class_name": "Ones", "config": {}}, "moving_mean_initializer": {"class_name": "Zeros", "config": {}}, "moving_variance_initializer": {"class_name": "Ones", "config": {}}, "beta_regularizer": null, "gamma_regularizer": null, "beta_constraint": null, "gamma_constraint": null}, "inbound_nodes": [[["conv2d_45", 0, 0, {}]]]}, {"name": "activation_45", "class_name": "Activation", "config": {"name": "activation_45", "trainable": false, "activation": "relu"}, "inbound_nodes": [[["batch_normalization_45", 0, 0, {}]]]}, {"name": "conv2d_46", "class_name": "Conv2D", "config": {"name": "conv2d_46", "trainable": false, "filters": 160, "kernel_size": [7, 1], "strides": [1, 1], "padding": "same", "data_format": "channels_last", "dilation_rate": [1, 1], "activation": "linear", "use_bias": false, "kernel_initializer": {"class_name": "VarianceScaling", "config": {"scale": 1.0, "mode": "fan_avg", "distribution": "uniform", "seed": null}}, "bias_initializer": {"class_name": "Zeros", "config": {}}, "kernel_regularizer": null, "bias_regularizer": null, "activity_regularizer": null, "kernel_constraint": null, "bias_constraint": null}, "inbound_nodes": [[["activation_45", 0, 0, {}]]]}, {"name": "batch_normalization_46", "class_name": "BatchNormalization", "config": {"name": "batch_normalization_46", "trainable": false, "axis": 3, "momentum": 0.99, "epsilon": 0.001, "center": true, "scale": false, "beta_initializer": {"class_name": "Zeros", "config": {}}, "gamma_initializer": {"class_name": "Ones", "config": {}}, "moving_mean_initializer": {"class_name": "Zeros", "config": {}}, "moving_variance_initializer": {"class_name": "Ones", "config": {}}, "beta_regularizer": null, "gamma_regularizer": null, "beta_constraint": null, "gamma_constraint": null}, "inbound_nodes": [[["conv2d_46", 0, 0, {}]]]}, {"name": "activation_46", "class_name": "Activation", "config": {"name": "activation_46", "trainable": false, "activation": "relu"}, "inbound_nodes": [[["batch_normalization_46", 0, 0, {}]]]}, {"name": "conv2d_42", "class_name": "Conv2D", "config": {"name": "conv2d_42", "trainable": false, "filters": 160, "kernel_size": [1, 1], "strides": [1, 1], "padding": "same", "data_format": "channels_last", "dilation_rate": [1, 1], "activation": "linear", "use_bias": false, "kernel_initializer": {"class_name": "VarianceScaling", "config": {"scale": 1.0, "mode": "fan_avg", "distribution": "uniform", "seed": null}}, "bias_initializer": {"class_name": "Zeros", "config": {}}, "kernel_regularizer": null, "bias_regularizer": null, "activity_regularizer": null, "kernel_constraint": null, "bias_constraint": null}, "inbound_nodes": [[["mixed4", 0, 0, {}]]]}, {"name": "conv2d_47", "class_name": "Conv2D", "config": {"name": "conv2d_47", "trainable": false, "filters": 160, "kernel_size": [1, 7], "strides": [1, 1], "padding": "same", "data_format": "channels_last", "dilation_rate": [1, 1], "activation": "linear", "use_bias": false, "kernel_initializer": {"class_name": "VarianceScaling", "config": {"scale": 1.0, "mode": "fan_avg", "distribution": "uniform", "seed": null}}, "bias_initializer": {"class_name": "Zeros", "config": {}}, "kernel_regularizer": null, "bias_regularizer": null, "activity_regularizer": null, "kernel_constraint": null, "bias_constraint": null}, "inbound_nodes": [[["activation_46", 0, 0, {}]]]}, {"name": "batch_normalization_42", "class_name": "BatchNormalization", "config": {"name": "batch_normalization_42", "trainable": false, "axis": 3, "momentum": 0.99, "epsilon": 0.001, "center": true, "scale": false, "beta_initializer": {"class_name": "Zeros", "config": {}}, "gamma_initializer": {"class_name": "Ones", "config": {}}, "moving_mean_initializer": {"class_name": "Zeros", "config": {}}, "moving_variance_initializer": {"class_name": "Ones", "config": {}}, "beta_regularizer": null, "gamma_regularizer": null, "beta_constraint": null, "gamma_constraint": null}, "inbound_nodes": [[["conv2d_42", 0, 0, {}]]]}, {"name": "batch_normalization_47", "class_name": "BatchNormalization", "config": {"name": "batch_normalization_47", "trainable": false, "axis": 3, "momentum": 0.99, "epsilon": 0.001, "center": true, "scale": false, "beta_initializer": {"class_name": "Zeros", "config": {}}, "gamma_initializer": {"class_name": "Ones", "config": {}}, "moving_mean_initializer": {"class_name": "Zeros", "config": {}}, "moving_variance_initializer": {"class_name": "Ones", "config": {}}, "beta_regularizer": null, "gamma_regularizer": null, "beta_constraint": null, "gamma_constraint": null}, "inbound_nodes": [[["conv2d_47", 0, 0, {}]]]}, {"name": "activation_42", "class_name": "Activation", "config": {"name": "activation_42", "trainable": false, "activation": "relu"}, "inbound_nodes": [[["batch_normalization_42", 0, 0, {}]]]}, {"name": "activation_47", "class_name": "Activation", "config": {"name": "activation_47", "trainable": false, "activation": "relu"}, "inbound_nodes": [[["batch_normalization_47", 0, 0, {}]]]}, {"name": "conv2d_43", "class_name": "Conv2D", "config": {"name": "conv2d_43", "trainable": false, "filters": 160, "kernel_size": [1, 7], "strides": [1, 1], "padding": "same", "data_format": "channels_last", "dilation_rate": [1, 1], "activation": "linear", "use_bias": false, "kernel_initializer": {"class_name": "VarianceScaling", "config": {"scale": 1.0, "mode": "fan_avg", "distribution": "uniform", "seed": null}}, "bias_initializer": {"class_name": "Zeros", "config": {}}, "kernel_regularizer": null, "bias_regularizer": null, "activity_regularizer": null, "kernel_constraint": null, "bias_constraint": null}, "inbound_nodes": [[["activation_42", 0, 0, {}]]]}, {"name": "conv2d_48", "class_name": "Conv2D", "config": {"name": "conv2d_48", "trainable": false, "filters": 160, "kernel_size": [7, 1], "strides": [1, 1], "padding": "same", "data_format": "channels_last", "dilation_rate": [1, 1], "activation": "linear", "use_bias": false, "kernel_initializer": {"class_name": "VarianceScaling", "config": {"scale": 1.0, "mode": "fan_avg", "distribution": "uniform", "seed": null}}, "bias_initializer": {"class_name": "Zeros", "config": {}}, "kernel_regularizer": null, "bias_regularizer": null, "activity_regularizer": null, "kernel_constraint": null, "bias_constraint": null}, "inbound_nodes": [[["activation_47", 0, 0, {}]]]}, {"name": "batch_normalization_43", "class_name": "BatchNormalization", "config": {"name": "batch_normalization_43", "trainable": false, "axis": 3, "momentum": 0.99, "epsilon": 0.001, "center": true, "scale": false, "beta_initializer": {"class_name": "Zeros", "config": {}}, "gamma_initializer": {"class_name": "Ones", "config": {}}, "moving_mean_initializer": {"class_name": "Zeros", "config": {}}, "moving_variance_initializer": {"class_name": "Ones", "config": {}}, "beta_regularizer": null, "gamma_regularizer": null, "beta_constraint": null, "gamma_constraint": null}, "inbound_nodes": [[["conv2d_43", 0, 0, {}]]]}, {"name": "batch_normalization_48", "class_name": "BatchNormalization", "config": {"name": "batch_normalization_48", "trainable": false, "axis": 3, "momentum": 0.99, "epsilon": 0.001, "center": true, "scale": false, "beta_initializer": {"class_name": "Zeros", "config": {}}, "gamma_initializer": {"class_name": "Ones", "config": {}}, "moving_mean_initializer": {"class_name": "Zeros", "config": {}}, "moving_variance_initializer": {"class_name": "Ones", "config": {}}, "beta_regularizer": null, "gamma_regularizer": null, "beta_constraint": null, "gamma_constraint": null}, "inbound_nodes": [[["conv2d_48", 0, 0, {}]]]}, {"name": "activation_43", "class_name": "Activation", "config": {"name": "activation_43", "trainable": false, "activation": "relu"}, "inbound_nodes": [[["batch_normalization_43", 0, 0, {}]]]}, {"name": "activation_48", "class_name": "Activation", "config": {"name": "activation_48", "trainable": false, "activation": "relu"}, "inbound_nodes": [[["batch_normalization_48", 0, 0, {}]]]}, {"name": "average_pooling2d_5", "class_name": "AveragePooling2D", "config": {"name": "average_pooling2d_5", "trainable": false, "pool_size": [3, 3], "padding": "same", "strides": [1, 1], "data_format": "channels_last"}, "inbound_nodes": [[["mixed4", 0, 0, {}]]]}, {"name": "conv2d_41", "class_name": "Conv2D", "config": {"name": "conv2d_41", "trainable": false, "filters": 192, "kernel_size": [1, 1], "strides": [1, 1], "padding": "same", "data_format": "channels_last", "dilation_rate": [1, 1], "activation": "linear", "use_bias": false, "kernel_initializer": {"class_name": "VarianceScaling", "config": {"scale": 1.0, "mode": "fan_avg", "distribution": "uniform", "seed": null}}, "bias_initializer": {"class_name": "Zeros", "config": {}}, "kernel_regularizer": null, "bias_regularizer": null, "activity_regularizer": null, "kernel_constraint": null, "bias_constraint": null}, "inbound_nodes": [[["mixed4", 0, 0, {}]]]}, {"name": "conv2d_44", "class_name": "Conv2D", "config": {"name": "conv2d_44", "trainable": false, "filters": 192, "kernel_size": [7, 1], "strides": [1, 1], "padding": "same", "data_format": "channels_last", "dilation_rate": [1, 1], "activation": "linear", "use_bias": false, "kernel_initializer": {"class_name": "VarianceScaling", "config": {"scale": 1.0, "mode": "fan_avg", "distribution": "uniform", "seed": null}}, "bias_initializer": {"class_name": "Zeros", "config": {}}, "kernel_regularizer": null, "bias_regularizer": null, "activity_regularizer": null, "kernel_constraint": null, "bias_constraint": null}, "inbound_nodes": [[["activation_43", 0, 0, {}]]]}, {"name": "conv2d_49", "class_name": "Conv2D", "config": {"name": "conv2d_49", "trainable": false, "filters": 192, "kernel_size": [1, 7], "strides": [1, 1], "padding": "same", "data_format": "channels_last", "dilation_rate": [1, 1], "activation": "linear", "use_bias": false, "kernel_initializer": {"class_name": "VarianceScaling", "config": {"scale": 1.0, "mode": "fan_avg", "distribution": "uniform", "seed": null}}, "bias_initializer": {"class_name": "Zeros", "config": {}}, "kernel_regularizer": null, "bias_regularizer": null, "activity_regularizer": null, "kernel_constraint": null, "bias_constraint": null}, "inbound_nodes": [[["activation_48", 0, 0, {}]]]}, {"name": "conv2d_50", "class_name": "Conv2D", "config": {"name": "conv2d_50", "trainable": false, "filters": 192, "kernel_size": [1, 1], "strides": [1, 1], "padding": "same", "data_format": "channels_last", "dilation_rate": [1, 1], "activation": "linear", "use_bias": false, "kernel_initializer": {"class_name": "VarianceScaling", "config": {"scale": 1.0, "mode": "fan_avg", "distribution": "uniform", "seed": null}}, "bias_initializer": {"class_name": "Zeros", "config": {}}, "kernel_regularizer": null, "bias_regularizer": null, "activity_regularizer": null, "kernel_constraint": null, "bias_constraint": null}, "inbound_nodes": [[["average_pooling2d_5", 0, 0, {}]]]}, {"name": "batch_normalization_41", "class_name": "BatchNormalization", "config": {"name": "batch_normalization_41", "trainable": false, "axis": 3, "momentum": 0.99, "epsilon": 0.001, "center": true, "scale": false, "beta_initializer": {"class_name": "Zeros", "config": {}}, "gamma_initializer": {"class_name": "Ones", "config": {}}, "moving_mean_initializer": {"class_name": "Zeros", "config": {}}, "moving_variance_initializer": {"class_name": "Ones", "config": {}}, "beta_regularizer": null, "gamma_regularizer": null, "beta_constraint": null, "gamma_constraint": null}, "inbound_nodes": [[["conv2d_41", 0, 0, {}]]]}, {"name": "batch_normalization_44", "class_name": "BatchNormalization", "config": {"name": "batch_normalization_44", "trainable": false, "axis": 3, "momentum": 0.99, "epsilon": 0.001, "center": true, "scale": false, "beta_initializer": {"class_name": "Zeros", "config": {}}, "gamma_initializer": {"class_name": "Ones", "config": {}}, "moving_mean_initializer": {"class_name": "Zeros", "config": {}}, "moving_variance_initializer": {"class_name": "Ones", "config": {}}, "beta_regularizer": null, "gamma_regularizer": null, "beta_constraint": null, "gamma_constraint": null}, "inbound_nodes": [[["conv2d_44", 0, 0, {}]]]}, {"name": "batch_normalization_49", "class_name": "BatchNormalization", "config": {"name": "batch_normalization_49", "trainable": false, "axis": 3, "momentum": 0.99, "epsilon": 0.001, "center": true, "scale": false, "beta_initializer": {"class_name": "Zeros", "config": {}}, "gamma_initializer": {"class_name": "Ones", "config": {}}, "moving_mean_initializer": {"class_name": "Zeros", "config": {}}, "moving_variance_initializer": {"class_name": "Ones", "config": {}}, "beta_regularizer": null, "gamma_regularizer": null, "beta_constraint": null, "gamma_constraint": null}, "inbound_nodes": [[["conv2d_49", 0, 0, {}]]]}, {"name": "batch_normalization_50", "class_name": "BatchNormalization", "config": {"name": "batch_normalization_50", "trainable": false, "axis": 3, "momentum": 0.99, "epsilon": 0.001, "center": true, "scale": false, "beta_initializer": {"class_name": "Zeros", "config": {}}, "gamma_initializer": {"class_name": "Ones", "config": {}}, "moving_mean_initializer": {"class_name": "Zeros", "config": {}}, "moving_variance_initializer": {"class_name": "Ones", "config": {}}, "beta_regularizer": null, "gamma_regularizer": null, "beta_constraint": null, "gamma_constraint": null}, "inbound_nodes": [[["conv2d_50", 0, 0, {}]]]}, {"name": "activation_41", "class_name": "Activation", "config": {"name": "activation_41", "trainable": false, "activation": "relu"}, "inbound_nodes": [[["batch_normalization_41", 0, 0, {}]]]}, {"name": "activation_44", "class_name": "Activation", "config": {"name": "activation_44", "trainable": false, "activation": "relu"}, "inbound_nodes": [[["batch_normalization_44", 0, 0, {}]]]}, {"name": "activation_49", "class_name": "Activation", "config": {"name": "activation_49", "trainable": false, "activation": "relu"}, "inbound_nodes": [[["batch_normalization_49", 0, 0, {}]]]}, {"name": "activation_50", "class_name": "Activation", "config": {"name": "activation_50", "trainable": false, "activation": "relu"}, "inbound_nodes": [[["batch_normalization_50", 0, 0, {}]]]}, {"name": "mixed5", "class_name": "Concatenate", "config": {"name": "mixed5", "trainable": false, "axis": 3}, "inbound_nodes": [[["activation_41", 0, 0, {}], ["activation_44", 0, 0, {}], ["activation_49", 0, 0, {}], ["activation_50", 0, 0, {}]]]}, {"name": "conv2d_55", "class_name": "Conv2D", "config": {"name": "conv2d_55", "trainable": false, "filters": 160, "kernel_size": [1, 1], "strides": [1, 1], "padding": "same", "data_format": "channels_last", "dilation_rate": [1, 1], "activation": "linear", "use_bias": false, "kernel_initializer": {"class_name": "VarianceScaling", "config": {"scale": 1.0, "mode": "fan_avg", "distribution": "uniform", "seed": null}}, "bias_initializer": {"class_name": "Zeros", "config": {}}, "kernel_regularizer": null, "bias_regularizer": null, "activity_regularizer": null, "kernel_constraint": null, "bias_constraint": null}, "inbound_nodes": [[["mixed5", 0, 0, {}]]]}, {"name": "batch_normalization_55", "class_name": "BatchNormalization", "config": {"name": "batch_normalization_55", "trainable": false, "axis": 3, "momentum": 0.99, "epsilon": 0.001, "center": true, "scale": false, "beta_initializer": {"class_name": "Zeros", "config": {}}, "gamma_initializer": {"class_name": "Ones", "config": {}}, "moving_mean_initializer": {"class_name": "Zeros", "config": {}}, "moving_variance_initializer": {"class_name": "Ones", "config": {}}, "beta_regularizer": null, "gamma_regularizer": null, "beta_constraint": null, "gamma_constraint": null}, "inbound_nodes": [[["conv2d_55", 0, 0, {}]]]}, {"name": "activation_55", "class_name": "Activation", "config": {"name": "activation_55", "trainable": false, "activation": "relu"}, "inbound_nodes": [[["batch_normalization_55", 0, 0, {}]]]}, {"name": "conv2d_56", "class_name": "Conv2D", "config": {"name": "conv2d_56", "trainable": true, "filters": 160, "kernel_size": [7, 1], "strides": [1, 1], "padding": "same", "data_format": "channels_last", "dilation_rate": [1, 1], "activation": "linear", "use_bias": false, "kernel_initializer": {"class_name": "VarianceScaling", "config": {"scale": 1.0, "mode": "fan_avg", "distribution": "uniform", "seed": null}}, "bias_initializer": {"class_name": "Zeros", "config": {}}, "kernel_regularizer": null, "bias_regularizer": null, "activity_regularizer": null, "kernel_constraint": null, "bias_constraint": null}, "inbound_nodes": [[["activation_55", 0, 0, {}]]]}, {"name": "batch_normalization_56", "class_name": "BatchNormalization", "config": {"name": "batch_normalization_56", "trainable": true, "axis": 3, "momentum": 0.99, "epsilon": 0.001, "center": true, "scale": false, "beta_initializer": {"class_name": "Zeros", "config": {}}, "gamma_initializer": {"class_name": "Ones", "config": {}}, "moving_mean_initializer": {"class_name": "Zeros", "config": {}}, "moving_variance_initializer": {"class_name": "Ones", "config": {}}, "beta_regularizer": null, "gamma_regularizer": null, "beta_constraint": null, "gamma_constraint": null}, "inbound_nodes": [[["conv2d_56", 0, 0, {}]]]}, {"name": "activation_56", "class_name": "Activation", "config": {"name": "activation_56", "trainable": true, "activation": "relu"}, "inbound_nodes": [[["batch_normalization_56", 0, 0, {}]]]}, {"name": "conv2d_52", "class_name": "Conv2D", "config": {"name": "conv2d_52", "trainable": true, "filters": 160, "kernel_size": [1, 1], "strides": [1, 1], "padding": "same", "data_format": "channels_last", "dilation_rate": [1, 1], "activation": "linear", "use_bias": false, "kernel_initializer": {"class_name": "VarianceScaling", "config": {"scale": 1.0, "mode": "fan_avg", "distribution": "uniform", "seed": null}}, "bias_initializer": {"class_name": "Zeros", "config": {}}, "kernel_regularizer": null, "bias_regularizer": null, "activity_regularizer": null, "kernel_constraint": null, "bias_constraint": null}, "inbound_nodes": [[["mixed5", 0, 0, {}]]]}, {"name": "conv2d_57", "class_name": "Conv2D", "config": {"name": "conv2d_57", "trainable": true, "filters": 160, "kernel_size": [1, 7], "strides": [1, 1], "padding": "same", "data_format": "channels_last", "dilation_rate": [1, 1], "activation": "linear", "use_bias": false, "kernel_initializer": {"class_name": "VarianceScaling", "config": {"scale": 1.0, "mode": "fan_avg", "distribution": "uniform", "seed": null}}, "bias_initializer": {"class_name": "Zeros", "config": {}}, "kernel_regularizer": null, "bias_regularizer": null, "activity_regularizer": null, "kernel_constraint": null, "bias_constraint": null}, "inbound_nodes": [[["activation_56", 0, 0, {}]]]}, {"name": "batch_normalization_52", "class_name": "BatchNormalization", "config": {"name": "batch_normalization_52", "trainable": true, "axis": 3, "momentum": 0.99, "epsilon": 0.001, "center": true, "scale": false, "beta_initializer": {"class_name": "Zeros", "config": {}}, "gamma_initializer": {"class_name": "Ones", "config": {}}, "moving_mean_initializer": {"class_name": "Zeros", "config": {}}, "moving_variance_initializer": {"class_name": "Ones", "config": {}}, "beta_regularizer": null, "gamma_regularizer": null, "beta_constraint": null, "gamma_constraint": null}, "inbound_nodes": [[["conv2d_52", 0, 0, {}]]]}, {"name": "batch_normalization_57", "class_name": "BatchNormalization", "config": {"name": "batch_normalization_57", "trainable": true, "axis": 3, "momentum": 0.99, "epsilon": 0.001, "center": true, "scale": false, "beta_initializer": {"class_name": "Zeros", "config": {}}, "gamma_initializer": {"class_name": "Ones", "config": {}}, "moving_mean_initializer": {"class_name": "Zeros", "config": {}}, "moving_variance_initializer": {"class_name": "Ones", "config": {}}, "beta_regularizer": null, "gamma_regularizer": null, "beta_constraint": null, "gamma_constraint": null}, "inbound_nodes": [[["conv2d_57", 0, 0, {}]]]}, {"name": "activation_52", "class_name": "Activation", "config": {"name": "activation_52", "trainable": true, "activation": "relu"}, "inbound_nodes": [[["batch_normalization_52", 0, 0, {}]]]}, {"name": "activation_57", "class_name": "Activation", "config": {"name": "activation_57", "trainable": true, "activation": "relu"}, "inbound_nodes": [[["batch_normalization_57", 0, 0, {}]]]}, {"name": "conv2d_53", "class_name": "Conv2D", "config": {"name": "conv2d_53", "trainable": true, "filters": 160, "kernel_size": [1, 7], "strides": [1, 1], "padding": "same", "data_format": "channels_last", "dilation_rate": [1, 1], "activation": "linear", "use_bias": false, "kernel_initializer": {"class_name": "VarianceScaling", "config": {"scale": 1.0, "mode": "fan_avg", "distribution": "uniform", "seed": null}}, "bias_initializer": {"class_name": "Zeros", "config": {}}, "kernel_regularizer": null, "bias_regularizer": null, "activity_regularizer": null, "kernel_constraint": null, "bias_constraint": null}, "inbound_nodes": [[["activation_52", 0, 0, {}]]]}, {"name": "conv2d_58", "class_name": "Conv2D", "config": {"name": "conv2d_58", "trainable": true, "filters": 160, "kernel_size": [7, 1], "strides": [1, 1], "padding": "same", "data_format": "channels_last", "dilation_rate": [1, 1], "activation": "linear", "use_bias": false, "kernel_initializer": {"class_name": "VarianceScaling", "config": {"scale": 1.0, "mode": "fan_avg", "distribution": "uniform", "seed": null}}, "bias_initializer": {"class_name": "Zeros", "config": {}}, "kernel_regularizer": null, "bias_regularizer": null, "activity_regularizer": null, "kernel_constraint": null, "bias_constraint": null}, "inbound_nodes": [[["activation_57", 0, 0, {}]]]}, {"name": "batch_normalization_53", "class_name": "BatchNormalization", "config": {"name": "batch_normalization_53", "trainable": true, "axis": 3, "momentum": 0.99, "epsilon": 0.001, "center": true, "scale": false, "beta_initializer": {"class_name": "Zeros", "config": {}}, "gamma_initializer": {"class_name": "Ones", "config": {}}, "moving_mean_initializer": {"class_name": "Zeros", "config": {}}, "moving_variance_initializer": {"class_name": "Ones", "config": {}}, "beta_regularizer": null, "gamma_regularizer": null, "beta_constraint": null, "gamma_constraint": null}, "inbound_nodes": [[["conv2d_53", 0, 0, {}]]]}, {"name": "batch_normalization_58", "class_name": "BatchNormalization", "config": {"name": "batch_normalization_58", "trainable": true, "axis": 3, "momentum": 0.99, "epsilon": 0.001, "center": true, "scale": false, "beta_initializer": {"class_name": "Zeros", "config": {}}, "gamma_initializer": {"class_name": "Ones", "config": {}}, "moving_mean_initializer": {"class_name": "Zeros", "config": {}}, "moving_variance_initializer": {"class_name": "Ones", "config": {}}, "beta_regularizer": null, "gamma_regularizer": null, "beta_constraint": null, "gamma_constraint": null}, "inbound_nodes": [[["conv2d_58", 0, 0, {}]]]}, {"name": "activation_53", "class_name": "Activation", "config": {"name": "activation_53", "trainable": true, "activation": "relu"}, "inbound_nodes": [[["batch_normalization_53", 0, 0, {}]]]}, {"name": "activation_58", "class_name": "Activation", "config": {"name": "activation_58", "trainable": true, "activation": "relu"}, "inbound_nodes": [[["batch_normalization_58", 0, 0, {}]]]}, {"name": "average_pooling2d_6", "class_name": "AveragePooling2D", "config": {"name": "average_pooling2d_6", "trainable": true, "pool_size": [3, 3], "padding": "same", "strides": [1, 1], "data_format": "channels_last"}, "inbound_nodes": [[["mixed5", 0, 0, {}]]]}, {"name": "conv2d_51", "class_name": "Conv2D", "config": {"name": "conv2d_51", "trainable": true, "filters": 192, "kernel_size": [1, 1], "strides": [1, 1], "padding": "same", "data_format": "channels_last", "dilation_rate": [1, 1], "activation": "linear", "use_bias": false, "kernel_initializer": {"class_name": "VarianceScaling", "config": {"scale": 1.0, "mode": "fan_avg", "distribution": "uniform", "seed": null}}, "bias_initializer": {"class_name": "Zeros", "config": {}}, "kernel_regularizer": null, "bias_regularizer": null, "activity_regularizer": null, "kernel_constraint": null, "bias_constraint": null}, "inbound_nodes": [[["mixed5", 0, 0, {}]]]}, {"name": "conv2d_54", "class_name": "Conv2D", "config": {"name": "conv2d_54", "trainable": true, "filters": 192, "kernel_size": [7, 1], "strides": [1, 1], "padding": "same", "data_format": "channels_last", "dilation_rate": [1, 1], "activation": "linear", "use_bias": false, "kernel_initializer": {"class_name": "VarianceScaling", "config": {"scale": 1.0, "mode": "fan_avg", "distribution": "uniform", "seed": null}}, "bias_initializer": {"class_name": "Zeros", "config": {}}, "kernel_regularizer": null, "bias_regularizer": null, "activity_regularizer": null, "kernel_constraint": null, "bias_constraint": null}, "inbound_nodes": [[["activation_53", 0, 0, {}]]]}, {"name": "conv2d_59", "class_name": "Conv2D", "config": {"name": "conv2d_59", "trainable": true, "filters": 192, "kernel_size": [1, 7], "strides": [1, 1], "padding": "same", "data_format": "channels_last", "dilation_rate": [1, 1], "activation": "linear", "use_bias": false, "kernel_initializer": {"class_name": "VarianceScaling", "config": {"scale": 1.0, "mode": "fan_avg", "distribution": "uniform", "seed": null}}, "bias_initializer": {"class_name": "Zeros", "config": {}}, "kernel_regularizer": null, "bias_regularizer": null, "activity_regularizer": null, "kernel_constraint": null, "bias_constraint": null}, "inbound_nodes": [[["activation_58", 0, 0, {}]]]}, {"name": "conv2d_60", "class_name": "Conv2D", "config": {"name": "conv2d_60", "trainable": true, "filters": 192, "kernel_size": [1, 1], "strides": [1, 1], "padding": "same", "data_format": "channels_last", "dilation_rate": [1, 1], "activation": "linear", "use_bias": false, "kernel_initializer": {"class_name": "VarianceScaling", "config": {"scale": 1.0, "mode": "fan_avg", "distribution": "uniform", "seed": null}}, "bias_initializer": {"class_name": "Zeros", "config": {}}, "kernel_regularizer": null, "bias_regularizer": null, "activity_regularizer": null, "kernel_constraint": null, "bias_constraint": null}, "inbound_nodes": [[["average_pooling2d_6", 0, 0, {}]]]}, {"name": "batch_normalization_51", "class_name": "BatchNormalization", "config": {"name": "batch_normalization_51", "trainable": true, "axis": 3, "momentum": 0.99, "epsilon": 0.001, "center": true, "scale": false, "beta_initializer": {"class_name": "Zeros", "config": {}}, "gamma_initializer": {"class_name": "Ones", "config": {}}, "moving_mean_initializer": {"class_name": "Zeros", "config": {}}, "moving_variance_initializer": {"class_name": "Ones", "config": {}}, "beta_regularizer": null, "gamma_regularizer": null, "beta_constraint": null, "gamma_constraint": null}, "inbound_nodes": [[["conv2d_51", 0, 0, {}]]]}, {"name": "batch_normalization_54", "class_name": "BatchNormalization", "config": {"name": "batch_normalization_54", "trainable": true, "axis": 3, "momentum": 0.99, "epsilon": 0.001, "center": true, "scale": false, "beta_initializer": {"class_name": "Zeros", "config": {}}, "gamma_initializer": {"class_name": "Ones", "config": {}}, "moving_mean_initializer": {"class_name": "Zeros", "config": {}}, "moving_variance_initializer": {"class_name": "Ones", "config": {}}, "beta_regularizer": null, "gamma_regularizer": null, "beta_constraint": null, "gamma_constraint": null}, "inbound_nodes": [[["conv2d_54", 0, 0, {}]]]}, {"name": "batch_normalization_59", "class_name": "BatchNormalization", "config": {"name": "batch_normalization_59", "trainable": true, "axis": 3, "momentum": 0.99, "epsilon": 0.001, "center": true, "scale": false, "beta_initializer": {"class_name": "Zeros", "config": {}}, "gamma_initializer": {"class_name": "Ones", "config": {}}, "moving_mean_initializer": {"class_name": "Zeros", "config": {}}, "moving_variance_initializer": {"class_name": "Ones", "config": {}}, "beta_regularizer": null, "gamma_regularizer": null, "beta_constraint": null, "gamma_constraint": null}, "inbound_nodes": [[["conv2d_59", 0, 0, {}]]]}, {"name": "batch_normalization_60", "class_name": "BatchNormalization", "config": {"name": "batch_normalization_60", "trainable": true, "axis": 3, "momentum": 0.99, "epsilon": 0.001, "center": true, "scale": false, "beta_initializer": {"class_name": "Zeros", "config": {}}, "gamma_initializer": {"class_name": "Ones", "config": {}}, "moving_mean_initializer": {"class_name": "Zeros", "config": {}}, "moving_variance_initializer": {"class_name": "Ones", "config": {}}, "beta_regularizer": null, "gamma_regularizer": null, "beta_constraint": null, "gamma_constraint": null}, "inbound_nodes": [[["conv2d_60", 0, 0, {}]]]}, {"name": "activation_51", "class_name": "Activation", "config": {"name": "activation_51", "trainable": true, "activation": "relu"}, "inbound_nodes": [[["batch_normalization_51", 0, 0, {}]]]}, {"name": "activation_54", "class_name": "Activation", "config": {"name": "activation_54", "trainable": true, "activation": "relu"}, "inbound_nodes": [[["batch_normalization_54", 0, 0, {}]]]}, {"name": "activation_59", "class_name": "Activation", "config": {"name": "activation_59", "trainable": true, "activation": "relu"}, "inbound_nodes": [[["batch_normalization_59", 0, 0, {}]]]}, {"name": "activation_60", "class_name": "Activation", "config": {"name": "activation_60", "trainable": true, "activation": "relu"}, "inbound_nodes": [[["batch_normalization_60", 0, 0, {}]]]}, {"name": "mixed6", "class_name": "Concatenate", "config": {"name": "mixed6", "trainable": true, "axis": 3}, "inbound_nodes": [[["activation_51", 0, 0, {}], ["activation_54", 0, 0, {}], ["activation_59", 0, 0, {}], ["activation_60", 0, 0, {}]]]}, {"name": "conv2d_65", "class_name": "Conv2D", "config": {"name": "conv2d_65", "trainable": true, "filters": 192, "kernel_size": [1, 1], "strides": [1, 1], "padding": "same", "data_format": "channels_last", "dilation_rate": [1, 1], "activation": "linear", "use_bias": false, "kernel_initializer": {"class_name": "VarianceScaling", "config": {"scale": 1.0, "mode": "fan_avg", "distribution": "uniform", "seed": null}}, "bias_initializer": {"class_name": "Zeros", "config": {}}, "kernel_regularizer": null, "bias_regularizer": null, "activity_regularizer": null, "kernel_constraint": null, "bias_constraint": null}, "inbound_nodes": [[["mixed6", 0, 0, {}]]]}, {"name": "batch_normalization_65", "class_name": "BatchNormalization", "config": {"name": "batch_normalization_65", "trainable": true, "axis": 3, "momentum": 0.99, "epsilon": 0.001, "center": true, "scale": false, "beta_initializer": {"class_name": "Zeros", "config": {}}, "gamma_initializer": {"class_name": "Ones", "config": {}}, "moving_mean_initializer": {"class_name": "Zeros", "config": {}}, "moving_variance_initializer": {"class_name": "Ones", "config": {}}, "beta_regularizer": null, "gamma_regularizer": null, "beta_constraint": null, "gamma_constraint": null}, "inbound_nodes": [[["conv2d_65", 0, 0, {}]]]}, {"name": "activation_65", "class_name": "Activation", "config": {"name": "activation_65", "trainable": true, "activation": "relu"}, "inbound_nodes": [[["batch_normalization_65", 0, 0, {}]]]}, {"name": "conv2d_66", "class_name": "Conv2D", "config": {"name": "conv2d_66", "trainable": true, "filters": 192, "kernel_size": [7, 1], "strides": [1, 1], "padding": "same", "data_format": "channels_last", "dilation_rate": [1, 1], "activation": "linear", "use_bias": false, "kernel_initializer": {"class_name": "VarianceScaling", "config": {"scale": 1.0, "mode": "fan_avg", "distribution": "uniform", "seed": null}}, "bias_initializer": {"class_name": "Zeros", "config": {}}, "kernel_regularizer": null, "bias_regularizer": null, "activity_regularizer": null, "kernel_constraint": null, "bias_constraint": null}, "inbound_nodes": [[["activation_65", 0, 0, {}]]]}, {"name": "batch_normalization_66", "class_name": "BatchNormalization", "config": {"name": "batch_normalization_66", "trainable": true, "axis": 3, "momentum": 0.99, "epsilon": 0.001, "center": true, "scale": false, "beta_initializer": {"class_name": "Zeros", "config": {}}, "gamma_initializer": {"class_name": "Ones", "config": {}}, "moving_mean_initializer": {"class_name": "Zeros", "config": {}}, "moving_variance_initializer": {"class_name": "Ones", "config": {}}, "beta_regularizer": null, "gamma_regularizer": null, "beta_constraint": null, "gamma_constraint": null}, "inbound_nodes": [[["conv2d_66", 0, 0, {}]]]}, {"name": "activation_66", "class_name": "Activation", "config": {"name": "activation_66", "trainable": true, "activation": "relu"}, "inbound_nodes": [[["batch_normalization_66", 0, 0, {}]]]}, {"name": "conv2d_62", "class_name": "Conv2D", "config": {"name": "conv2d_62", "trainable": true, "filters": 192, "kernel_size": [1, 1], "strides": [1, 1], "padding": "same", "data_format": "channels_last", "dilation_rate": [1, 1], "activation": "linear", "use_bias": false, "kernel_initializer": {"class_name": "VarianceScaling", "config": {"scale": 1.0, "mode": "fan_avg", "distribution": "uniform", "seed": null}}, "bias_initializer": {"class_name": "Zeros", "config": {}}, "kernel_regularizer": null, "bias_regularizer": null, "activity_regularizer": null, "kernel_constraint": null, "bias_constraint": null}, "inbound_nodes": [[["mixed6", 0, 0, {}]]]}, {"name": "conv2d_67", "class_name": "Conv2D", "config": {"name": "conv2d_67", "trainable": true, "filters": 192, "kernel_size": [1, 7], "strides": [1, 1], "padding": "same", "data_format": "channels_last", "dilation_rate": [1, 1], "activation": "linear", "use_bias": false, "kernel_initializer": {"class_name": "VarianceScaling", "config": {"scale": 1.0, "mode": "fan_avg", "distribution": "uniform", "seed": null}}, "bias_initializer": {"class_name": "Zeros", "config": {}}, "kernel_regularizer": null, "bias_regularizer": null, "activity_regularizer": null, "kernel_constraint": null, "bias_constraint": null}, "inbound_nodes": [[["activation_66", 0, 0, {}]]]}, {"name": "batch_normalization_62", "class_name": "BatchNormalization", "config": {"name": "batch_normalization_62", "trainable": true, "axis": 3, "momentum": 0.99, "epsilon": 0.001, "center": true, "scale": false, "beta_initializer": {"class_name": "Zeros", "config": {}}, "gamma_initializer": {"class_name": "Ones", "config": {}}, "moving_mean_initializer": {"class_name": "Zeros", "config": {}}, "moving_variance_initializer": {"class_name": "Ones", "config": {}}, "beta_regularizer": null, "gamma_regularizer": null, "beta_constraint": null, "gamma_constraint": null}, "inbound_nodes": [[["conv2d_62", 0, 0, {}]]]}, {"name": "batch_normalization_67", "class_name": "BatchNormalization", "config": {"name": "batch_normalization_67", "trainable": true, "axis": 3, "momentum": 0.99, "epsilon": 0.001, "center": true, "scale": false, "beta_initializer": {"class_name": "Zeros", "config": {}}, "gamma_initializer": {"class_name": "Ones", "config": {}}, "moving_mean_initializer": {"class_name": "Zeros", "config": {}}, "moving_variance_initializer": {"class_name": "Ones", "config": {}}, "beta_regularizer": null, "gamma_regularizer": null, "beta_constraint": null, "gamma_constraint": null}, "inbound_nodes": [[["conv2d_67", 0, 0, {}]]]}, {"name": "activation_62", "class_name": "Activation", "config": {"name": "activation_62", "trainable": true, "activation": "relu"}, "inbound_nodes": [[["batch_normalization_62", 0, 0, {}]]]}, {"name": "activation_67", "class_name": "Activation", "config": {"name": "activation_67", "trainable": true, "activation": "relu"}, "inbound_nodes": [[["batch_normalization_67", 0, 0, {}]]]}, {"name": "conv2d_63", "class_name": "Conv2D", "config": {"name": "conv2d_63", "trainable": true, "filters": 192, "kernel_size": [1, 7], "strides": [1, 1], "padding": "same", "data_format": "channels_last", "dilation_rate": [1, 1], "activation": "linear", "use_bias": false, "kernel_initializer": {"class_name": "VarianceScaling", "config": {"scale": 1.0, "mode": "fan_avg", "distribution": "uniform", "seed": null}}, "bias_initializer": {"class_name": "Zeros", "config": {}}, "kernel_regularizer": null, "bias_regularizer": null, "activity_regularizer": null, "kernel_constraint": null, "bias_constraint": null}, "inbound_nodes": [[["activation_62", 0, 0, {}]]]}, {"name": "conv2d_68", "class_name": "Conv2D", "config": {"name": "conv2d_68", "trainable": true, "filters": 192, "kernel_size": [7, 1], "strides": [1, 1], "padding": "same", "data_format": "channels_last", "dilation_rate": [1, 1], "activation": "linear", "use_bias": false, "kernel_initializer": {"class_name": "VarianceScaling", "config": {"scale": 1.0, "mode": "fan_avg", "distribution": "uniform", "seed": null}}, "bias_initializer": {"class_name": "Zeros", "config": {}}, "kernel_regularizer": null, "bias_regularizer": null, "activity_regularizer": null, "kernel_constraint": null, "bias_constraint": null}, "inbound_nodes": [[["activation_67", 0, 0, {}]]]}, {"name": "batch_normalization_63", "class_name": "BatchNormalization", "config": {"name": "batch_normalization_63", "trainable": true, "axis": 3, "momentum": 0.99, "epsilon": 0.001, "center": true, "scale": false, "beta_initializer": {"class_name": "Zeros", "config": {}}, "gamma_initializer": {"class_name": "Ones", "config": {}}, "moving_mean_initializer": {"class_name": "Zeros", "config": {}}, "moving_variance_initializer": {"class_name": "Ones", "config": {}}, "beta_regularizer": null, "gamma_regularizer": null, "beta_constraint": null, "gamma_constraint": null}, "inbound_nodes": [[["conv2d_63", 0, 0, {}]]]}, {"name": "batch_normalization_68", "class_name": "BatchNormalization", "config": {"name": "batch_normalization_68", "trainable": true, "axis": 3, "momentum": 0.99, "epsilon": 0.001, "center": true, "scale": false, "beta_initializer": {"class_name": "Zeros", "config": {}}, "gamma_initializer": {"class_name": "Ones", "config": {}}, "moving_mean_initializer": {"class_name": "Zeros", "config": {}}, "moving_variance_initializer": {"class_name": "Ones", "config": {}}, "beta_regularizer": null, "gamma_regularizer": null, "beta_constraint": null, "gamma_constraint": null}, "inbound_nodes": [[["conv2d_68", 0, 0, {}]]]}, {"name": "activation_63", "class_name": "Activation", "config": {"name": "activation_63", "trainable": true, "activation": "relu"}, "inbound_nodes": [[["batch_normalization_63", 0, 0, {}]]]}, {"name": "activation_68", "class_name": "Activation", "config": {"name": "activation_68", "trainable": true, "activation": "relu"}, "inbound_nodes": [[["batch_normalization_68", 0, 0, {}]]]}, {"name": "average_pooling2d_7", "class_name": "AveragePooling2D", "config": {"name": "average_pooling2d_7", "trainable": true, "pool_size": [3, 3], "padding": "same", "strides": [1, 1], "data_format": "channels_last"}, "inbound_nodes": [[["mixed6", 0, 0, {}]]]}, {"name": "conv2d_61", "class_name": "Conv2D", "config": {"name": "conv2d_61", "trainable": true, "filters": 192, "kernel_size": [1, 1], "strides": [1, 1], "padding": "same", "data_format": "channels_last", "dilation_rate": [1, 1], "activation": "linear", "use_bias": false, "kernel_initializer": {"class_name": "VarianceScaling", "config": {"scale": 1.0, "mode": "fan_avg", "distribution": "uniform", "seed": null}}, "bias_initializer": {"class_name": "Zeros", "config": {}}, "kernel_regularizer": null, "bias_regularizer": null, "activity_regularizer": null, "kernel_constraint": null, "bias_constraint": null}, "inbound_nodes": [[["mixed6", 0, 0, {}]]]}, {"name": "conv2d_64", "class_name": "Conv2D", "config": {"name": "conv2d_64", "trainable": true, "filters": 192, "kernel_size": [7, 1], "strides": [1, 1], "padding": "same", "data_format": "channels_last", "dilation_rate": [1, 1], "activation": "linear", "use_bias": false, "kernel_initializer": {"class_name": "VarianceScaling", "config": {"scale": 1.0, "mode": "fan_avg", "distribution": "uniform", "seed": null}}, "bias_initializer": {"class_name": "Zeros", "config": {}}, "kernel_regularizer": null, "bias_regularizer": null, "activity_regularizer": null, "kernel_constraint": null, "bias_constraint": null}, "inbound_nodes": [[["activation_63", 0, 0, {}]]]}, {"name": "conv2d_69", "class_name": "Conv2D", "config": {"name": "conv2d_69", "trainable": true, "filters": 192, "kernel_size": [1, 7], "strides": [1, 1], "padding": "same", "data_format": "channels_last", "dilation_rate": [1, 1], "activation": "linear", "use_bias": false, "kernel_initializer": {"class_name": "VarianceScaling", "config": {"scale": 1.0, "mode": "fan_avg", "distribution": "uniform", "seed": null}}, "bias_initializer": {"class_name": "Zeros", "config": {}}, "kernel_regularizer": null, "bias_regularizer": null, "activity_regularizer": null, "kernel_constraint": null, "bias_constraint": null}, "inbound_nodes": [[["activation_68", 0, 0, {}]]]}, {"name": "conv2d_70", "class_name": "Conv2D", "config": {"name": "conv2d_70", "trainable": true, "filters": 192, "kernel_size": [1, 1], "strides": [1, 1], "padding": "same", "data_format": "channels_last", "dilation_rate": [1, 1], "activation": "linear", "use_bias": false, "kernel_initializer": {"class_name": "VarianceScaling", "config": {"scale": 1.0, "mode": "fan_avg", "distribution": "uniform", "seed": null}}, "bias_initializer": {"class_name": "Zeros", "config": {}}, "kernel_regularizer": null, "bias_regularizer": null, "activity_regularizer": null, "kernel_constraint": null, "bias_constraint": null}, "inbound_nodes": [[["average_pooling2d_7", 0, 0, {}]]]}, {"name": "batch_normalization_61", "class_name": "BatchNormalization", "config": {"name": "batch_normalization_61", "trainable": true, "axis": 3, "momentum": 0.99, "epsilon": 0.001, "center": true, "scale": false, "beta_initializer": {"class_name": "Zeros", "config": {}}, "gamma_initializer": {"class_name": "Ones", "config": {}}, "moving_mean_initializer": {"class_name": "Zeros", "config": {}}, "moving_variance_initializer": {"class_name": "Ones", "config": {}}, "beta_regularizer": null, "gamma_regularizer": null, "beta_constraint": null, "gamma_constraint": null}, "inbound_nodes": [[["conv2d_61", 0, 0, {}]]]}, {"name": "batch_normalization_64", "class_name": "BatchNormalization", "config": {"name": "batch_normalization_64", "trainable": true, "axis": 3, "momentum": 0.99, "epsilon": 0.001, "center": true, "scale": false, "beta_initializer": {"class_name": "Zeros", "config": {}}, "gamma_initializer": {"class_name": "Ones", "config": {}}, "moving_mean_initializer": {"class_name": "Zeros", "config": {}}, "moving_variance_initializer": {"class_name": "Ones", "config": {}}, "beta_regularizer": null, "gamma_regularizer": null, "beta_constraint": null, "gamma_constraint": null}, "inbound_nodes": [[["conv2d_64", 0, 0, {}]]]}, {"name": "batch_normalization_69", "class_name": "BatchNormalization", "config": {"name": "batch_normalization_69", "trainable": true, "axis": 3, "momentum": 0.99, "epsilon": 0.001, "center": true, "scale": false, "beta_initializer": {"class_name": "Zeros", "config": {}}, "gamma_initializer": {"class_name": "Ones", "config": {}}, "moving_mean_initializer": {"class_name": "Zeros", "config": {}}, "moving_variance_initializer": {"class_name": "Ones", "config": {}}, "beta_regularizer": null, "gamma_regularizer": null, "beta_constraint": null, "gamma_constraint": null}, "inbound_nodes": [[["conv2d_69", 0, 0, {}]]]}, {"name": "batch_normalization_70", "class_name": "BatchNormalization", "config": {"name": "batch_normalization_70", "trainable": true, "axis": 3, "momentum": 0.99, "epsilon": 0.001, "center": true, "scale": false, "beta_initializer": {"class_name": "Zeros", "config": {}}, "gamma_initializer": {"class_name": "Ones", "config": {}}, "moving_mean_initializer": {"class_name": "Zeros", "config": {}}, "moving_variance_initializer": {"class_name": "Ones", "config": {}}, "beta_regularizer": null, "gamma_regularizer": null, "beta_constraint": null, "gamma_constraint": null}, "inbound_nodes": [[["conv2d_70", 0, 0, {}]]]}, {"name": "activation_61", "class_name": "Activation", "config": {"name": "activation_61", "trainable": true, "activation": "relu"}, "inbound_nodes": [[["batch_normalization_61", 0, 0, {}]]]}, {"name": "activation_64", "class_name": "Activation", "config": {"name": "activation_64", "trainable": true, "activation": "relu"}, "inbound_nodes": [[["batch_normalization_64", 0, 0, {}]]]}, {"name": "activation_69", "class_name": "Activation", "config": {"name": "activation_69", "trainable": true, "activation": "relu"}, "inbound_nodes": [[["batch_normalization_69", 0, 0, {}]]]}, {"name": "activation_70", "class_name": "Activation", "config": {"name": "activation_70", "trainable": true, "activation": "relu"}, "inbound_nodes": [[["batch_normalization_70", 0, 0, {}]]]}, {"name": "mixed7", "class_name": "Concatenate", "config": {"name": "mixed7", "trainable": true, "axis": 3}, "inbound_nodes": [[["activation_61", 0, 0, {}], ["activation_64", 0, 0, {}], ["activation_69", 0, 0, {}], ["activation_70", 0, 0, {}]]]}, {"name": "conv2d_73", "class_name": "Conv2D", "config": {"name": "conv2d_73", "trainable": true, "filters": 192, "kernel_size": [1, 1], "strides": [1, 1], "padding": "same", "data_format": "channels_last", "dilation_rate": [1, 1], "activation": "linear", "use_bias": false, "kernel_initializer": {"class_name": "VarianceScaling", "config": {"scale": 1.0, "mode": "fan_avg", "distribution": "uniform", "seed": null}}, "bias_initializer": {"class_name": "Zeros", "config": {}}, "kernel_regularizer": null, "bias_regularizer": null, "activity_regularizer": null, "kernel_constraint": null, "bias_constraint": null}, "inbound_nodes": [[["mixed7", 0, 0, {}]]]}, {"name": "batch_normalization_73", "class_name": "BatchNormalization", "config": {"name": "batch_normalization_73", "trainable": true, "axis": 3, "momentum": 0.99, "epsilon": 0.001, "center": true, "scale": false, "beta_initializer": {"class_name": "Zeros", "config": {}}, "gamma_initializer": {"class_name": "Ones", "config": {}}, "moving_mean_initializer": {"class_name": "Zeros", "config": {}}, "moving_variance_initializer": {"class_name": "Ones", "config": {}}, "beta_regularizer": null, "gamma_regularizer": null, "beta_constraint": null, "gamma_constraint": null}, "inbound_nodes": [[["conv2d_73", 0, 0, {}]]]}, {"name": "activation_73", "class_name": "Activation", "config": {"name": "activation_73", "trainable": true, "activation": "relu"}, "inbound_nodes": [[["batch_normalization_73", 0, 0, {}]]]}, {"name": "conv2d_74", "class_name": "Conv2D", "config": {"name": "conv2d_74", "trainable": true, "filters": 192, "kernel_size": [1, 7], "strides": [1, 1], "padding": "same", "data_format": "channels_last", "dilation_rate": [1, 1], "activation": "linear", "use_bias": false, "kernel_initializer": {"class_name": "VarianceScaling", "config": {"scale": 1.0, "mode": "fan_avg", "distribution": "uniform", "seed": null}}, "bias_initializer": {"class_name": "Zeros", "config": {}}, "kernel_regularizer": null, "bias_regularizer": null, "activity_regularizer": null, "kernel_constraint": null, "bias_constraint": null}, "inbound_nodes": [[["activation_73", 0, 0, {}]]]}, {"name": "batch_normalization_74", "class_name": "BatchNormalization", "config": {"name": "batch_normalization_74", "trainable": true, "axis": 3, "momentum": 0.99, "epsilon": 0.001, "center": true, "scale": false, "beta_initializer": {"class_name": "Zeros", "config": {}}, "gamma_initializer": {"class_name": "Ones", "config": {}}, "moving_mean_initializer": {"class_name": "Zeros", "config": {}}, "moving_variance_initializer": {"class_name": "Ones", "config": {}}, "beta_regularizer": null, "gamma_regularizer": null, "beta_constraint": null, "gamma_constraint": null}, "inbound_nodes": [[["conv2d_74", 0, 0, {}]]]}, {"name": "activation_74", "class_name": "Activation", "config": {"name": "activation_74", "trainable": true, "activation": "relu"}, "inbound_nodes": [[["batch_normalization_74", 0, 0, {}]]]}, {"name": "conv2d_71", "class_name": "Conv2D", "config": {"name": "conv2d_71", "trainable": true, "filters": 192, "kernel_size": [1, 1], "strides": [1, 1], "padding": "same", "data_format": "channels_last", "dilation_rate": [1, 1], "activation": "linear", "use_bias": false, "kernel_initializer": {"class_name": "VarianceScaling", "config": {"scale": 1.0, "mode": "fan_avg", "distribution": "uniform", "seed": null}}, "bias_initializer": {"class_name": "Zeros", "config": {}}, "kernel_regularizer": null, "bias_regularizer": null, "activity_regularizer": null, "kernel_constraint": null, "bias_constraint": null}, "inbound_nodes": [[["mixed7", 0, 0, {}]]]}, {"name": "conv2d_75", "class_name": "Conv2D", "config": {"name": "conv2d_75", "trainable": true, "filters": 192, "kernel_size": [7, 1], "strides": [1, 1], "padding": "same", "data_format": "channels_last", "dilation_rate": [1, 1], "activation": "linear", "use_bias": false, "kernel_initializer": {"class_name": "VarianceScaling", "config": {"scale": 1.0, "mode": "fan_avg", "distribution": "uniform", "seed": null}}, "bias_initializer": {"class_name": "Zeros", "config": {}}, "kernel_regularizer": null, "bias_regularizer": null, "activity_regularizer": null, "kernel_constraint": null, "bias_constraint": null}, "inbound_nodes": [[["activation_74", 0, 0, {}]]]}, {"name": "batch_normalization_71", "class_name": "BatchNormalization", "config": {"name": "batch_normalization_71", "trainable": true, "axis": 3, "momentum": 0.99, "epsilon": 0.001, "center": true, "scale": false, "beta_initializer": {"class_name": "Zeros", "config": {}}, "gamma_initializer": {"class_name": "Ones", "config": {}}, "moving_mean_initializer": {"class_name": "Zeros", "config": {}}, "moving_variance_initializer": {"class_name": "Ones", "config": {}}, "beta_regularizer": null, "gamma_regularizer": null, "beta_constraint": null, "gamma_constraint": null}, "inbound_nodes": [[["conv2d_71", 0, 0, {}]]]}, {"name": "batch_normalization_75", "class_name": "BatchNormalization", "config": {"name": "batch_normalization_75", "trainable": true, "axis": 3, "momentum": 0.99, "epsilon": 0.001, "center": true, "scale": false, "beta_initializer": {"class_name": "Zeros", "config": {}}, "gamma_initializer": {"class_name": "Ones", "config": {}}, "moving_mean_initializer": {"class_name": "Zeros", "config": {}}, "moving_variance_initializer": {"class_name": "Ones", "config": {}}, "beta_regularizer": null, "gamma_regularizer": null, "beta_constraint": null, "gamma_constraint": null}, "inbound_nodes": [[["conv2d_75", 0, 0, {}]]]}, {"name": "activation_71", "class_name": "Activation", "config": {"name": "activation_71", "trainable": true, "activation": "relu"}, "inbound_nodes": [[["batch_normalization_71", 0, 0, {}]]]}, {"name": "activation_75", "class_name": "Activation", "config": {"name": "activation_75", "trainable": true, "activation": "relu"}, "inbound_nodes": [[["batch_normalization_75", 0, 0, {}]]]}, {"name": "conv2d_72", "class_name": "Conv2D", "config": {"name": "conv2d_72", "trainable": true, "filters": 320, "kernel_size": [3, 3], "strides": [2, 2], "padding": "valid", "data_format": "channels_last", "dilation_rate": [1, 1], "activation": "linear", "use_bias": false, "kernel_initializer": {"class_name": "VarianceScaling", "config": {"scale": 1.0, "mode": "fan_avg", "distribution": "uniform", "seed": null}}, "bias_initializer": {"class_name": "Zeros", "config": {}}, "kernel_regularizer": null, "bias_regularizer": null, "activity_regularizer": null, "kernel_constraint": null, "bias_constraint": null}, "inbound_nodes": [[["activation_71", 0, 0, {}]]]}, {"name": "conv2d_76", "class_name": "Conv2D", "config": {"name": "conv2d_76", "trainable": true, "filters": 192, "kernel_size": [3, 3], "strides": [2, 2], "padding": "valid", "data_format": "channels_last", "dilation_rate": [1, 1], "activation": "linear", "use_bias": false, "kernel_initializer": {"class_name": "VarianceScaling", "config": {"scale": 1.0, "mode": "fan_avg", "distribution": "uniform", "seed": null}}, "bias_initializer": {"class_name": "Zeros", "config": {}}, "kernel_regularizer": null, "bias_regularizer": null, "activity_regularizer": null, "kernel_constraint": null, "bias_constraint": null}, "inbound_nodes": [[["activation_75", 0, 0, {}]]]}, {"name": "batch_normalization_72", "class_name": "BatchNormalization", "config": {"name": "batch_normalization_72", "trainable": true, "axis": 3, "momentum": 0.99, "epsilon": 0.001, "center": true, "scale": false, "beta_initializer": {"class_name": "Zeros", "config": {}}, "gamma_initializer": {"class_name": "Ones", "config": {}}, "moving_mean_initializer": {"class_name": "Zeros", "config": {}}, "moving_variance_initializer": {"class_name": "Ones", "config": {}}, "beta_regularizer": null, "gamma_regularizer": null, "beta_constraint": null, "gamma_constraint": null}, "inbound_nodes": [[["conv2d_72", 0, 0, {}]]]}, {"name": "batch_normalization_76", "class_name": "BatchNormalization", "config": {"name": "batch_normalization_76", "trainable": true, "axis": 3, "momentum": 0.99, "epsilon": 0.001, "center": true, "scale": false, "beta_initializer": {"class_name": "Zeros", "config": {}}, "gamma_initializer": {"class_name": "Ones", "config": {}}, "moving_mean_initializer": {"class_name": "Zeros", "config": {}}, "moving_variance_initializer": {"class_name": "Ones", "config": {}}, "beta_regularizer": null, "gamma_regularizer": null, "beta_constraint": null, "gamma_constraint": null}, "inbound_nodes": [[["conv2d_76", 0, 0, {}]]]}, {"name": "activation_72", "class_name": "Activation", "config": {"name": "activation_72", "trainable": true, "activation": "relu"}, "inbound_nodes": [[["batch_normalization_72", 0, 0, {}]]]}, {"name": "activation_76", "class_name": "Activation", "config": {"name": "activation_76", "trainable": true, "activation": "relu"}, "inbound_nodes": [[["batch_normalization_76", 0, 0, {}]]]}, {"name": "max_pooling2d_4", "class_name": "MaxPooling2D", "config": {"name": "max_pooling2d_4", "trainable": true, "pool_size": [3, 3], "padding": "valid", "strides": [2, 2], "data_format": "channels_last"}, "inbound_nodes": [[["mixed7", 0, 0, {}]]]}, {"name": "mixed8", "class_name": "Concatenate", "config": {"name": "mixed8", "trainable": true, "axis": 3}, "inbound_nodes": [[["activation_72", 0, 0, {}], ["activation_76", 0, 0, {}], ["max_pooling2d_4", 0, 0, {}]]]}, {"name": "conv2d_81", "class_name": "Conv2D", "config": {"name": "conv2d_81", "trainable": true, "filters": 448, "kernel_size": [1, 1], "strides": [1, 1], "padding": "same", "data_format": "channels_last", "dilation_rate": [1, 1], "activation": "linear", "use_bias": false, "kernel_initializer": {"class_name": "VarianceScaling", "config": {"scale": 1.0, "mode": "fan_avg", "distribution": "uniform", "seed": null}}, "bias_initializer": {"class_name": "Zeros", "config": {}}, "kernel_regularizer": null, "bias_regularizer": null, "activity_regularizer": null, "kernel_constraint": null, "bias_constraint": null}, "inbound_nodes": [[["mixed8", 0, 0, {}]]]}, {"name": "batch_normalization_81", "class_name": "BatchNormalization", "config": {"name": "batch_normalization_81", "trainable": true, "axis": 3, "momentum": 0.99, "epsilon": 0.001, "center": true, "scale": false, "beta_initializer": {"class_name": "Zeros", "config": {}}, "gamma_initializer": {"class_name": "Ones", "config": {}}, "moving_mean_initializer": {"class_name": "Zeros", "config": {}}, "moving_variance_initializer": {"class_name": "Ones", "config": {}}, "beta_regularizer": null, "gamma_regularizer": null, "beta_constraint": null, "gamma_constraint": null}, "inbound_nodes": [[["conv2d_81", 0, 0, {}]]]}, {"name": "activation_81", "class_name": "Activation", "config": {"name": "activation_81", "trainable": true, "activation": "relu"}, "inbound_nodes": [[["batch_normalization_81", 0, 0, {}]]]}, {"name": "conv2d_78", "class_name": "Conv2D", "config": {"name": "conv2d_78", "trainable": true, "filters": 384, "kernel_size": [1, 1], "strides": [1, 1], "padding": "same", "data_format": "channels_last", "dilation_rate": [1, 1], "activation": "linear", "use_bias": false, "kernel_initializer": {"class_name": "VarianceScaling", "config": {"scale": 1.0, "mode": "fan_avg", "distribution": "uniform", "seed": null}}, "bias_initializer": {"class_name": "Zeros", "config": {}}, "kernel_regularizer": null, "bias_regularizer": null, "activity_regularizer": null, "kernel_constraint": null, "bias_constraint": null}, "inbound_nodes": [[["mixed8", 0, 0, {}]]]}, {"name": "conv2d_82", "class_name": "Conv2D", "config": {"name": "conv2d_82", "trainable": true, "filters": 384, "kernel_size": [3, 3], "strides": [1, 1], "padding": "same", "data_format": "channels_last", "dilation_rate": [1, 1], "activation": "linear", "use_bias": false, "kernel_initializer": {"class_name": "VarianceScaling", "config": {"scale": 1.0, "mode": "fan_avg", "distribution": "uniform", "seed": null}}, "bias_initializer": {"class_name": "Zeros", "config": {}}, "kernel_regularizer": null, "bias_regularizer": null, "activity_regularizer": null, "kernel_constraint": null, "bias_constraint": null}, "inbound_nodes": [[["activation_81", 0, 0, {}]]]}, {"name": "batch_normalization_78", "class_name": "BatchNormalization", "config": {"name": "batch_normalization_78", "trainable": true, "axis": 3, "momentum": 0.99, "epsilon": 0.001, "center": true, "scale": false, "beta_initializer": {"class_name": "Zeros", "config": {}}, "gamma_initializer": {"class_name": "Ones", "config": {}}, "moving_mean_initializer": {"class_name": "Zeros", "config": {}}, "moving_variance_initializer": {"class_name": "Ones", "config": {}}, "beta_regularizer": null, "gamma_regularizer": null, "beta_constraint": null, "gamma_constraint": null}, "inbound_nodes": [[["conv2d_78", 0, 0, {}]]]}, {"name": "batch_normalization_82", "class_name": "BatchNormalization", "config": {"name": "batch_normalization_82", "trainable": true, "axis": 3, "momentum": 0.99, "epsilon": 0.001, "center": true, "scale": false, "beta_initializer": {"class_name": "Zeros", "config": {}}, "gamma_initializer": {"class_name": "Ones", "config": {}}, "moving_mean_initializer": {"class_name": "Zeros", "config": {}}, "moving_variance_initializer": {"class_name": "Ones", "config": {}}, "beta_regularizer": null, "gamma_regularizer": null, "beta_constraint": null, "gamma_constraint": null}, "inbound_nodes": [[["conv2d_82", 0, 0, {}]]]}, {"name": "activation_78", "class_name": "Activation", "config": {"name": "activation_78", "trainable": true, "activation": "relu"}, "inbound_nodes": [[["batch_normalization_78", 0, 0, {}]]]}, {"name": "activation_82", "class_name": "Activation", "config": {"name": "activation_82", "trainable": true, "activation": "relu"}, "inbound_nodes": [[["batch_normalization_82", 0, 0, {}]]]}, {"name": "conv2d_79", "class_name": "Conv2D", "config": {"name": "conv2d_79", "trainable": true, "filters": 384, "kernel_size": [1, 3], "strides": [1, 1], "padding": "same", "data_format": "channels_last", "dilation_rate": [1, 1], "activation": "linear", "use_bias": false, "kernel_initializer": {"class_name": "VarianceScaling", "config": {"scale": 1.0, "mode": "fan_avg", "distribution": "uniform", "seed": null}}, "bias_initializer": {"class_name": "Zeros", "config": {}}, "kernel_regularizer": null, "bias_regularizer": null, "activity_regularizer": null, "kernel_constraint": null, "bias_constraint": null}, "inbound_nodes": [[["activation_78", 0, 0, {}]]]}, {"name": "conv2d_80", "class_name": "Conv2D", "config": {"name": "conv2d_80", "trainable": true, "filters": 384, "kernel_size": [3, 1], "strides": [1, 1], "padding": "same", "data_format": "channels_last", "dilation_rate": [1, 1], "activation": "linear", "use_bias": false, "kernel_initializer": {"class_name": "VarianceScaling", "config": {"scale": 1.0, "mode": "fan_avg", "distribution": "uniform", "seed": null}}, "bias_initializer": {"class_name": "Zeros", "config": {}}, "kernel_regularizer": null, "bias_regularizer": null, "activity_regularizer": null, "kernel_constraint": null, "bias_constraint": null}, "inbound_nodes": [[["activation_78", 0, 0, {}]]]}, {"name": "conv2d_83", "class_name": "Conv2D", "config": {"name": "conv2d_83", "trainable": true, "filters": 384, "kernel_size": [1, 3], "strides": [1, 1], "padding": "same", "data_format": "channels_last", "dilation_rate": [1, 1], "activation": "linear", "use_bias": false, "kernel_initializer": {"class_name": "VarianceScaling", "config": {"scale": 1.0, "mode": "fan_avg", "distribution": "uniform", "seed": null}}, "bias_initializer": {"class_name": "Zeros", "config": {}}, "kernel_regularizer": null, "bias_regularizer": null, "activity_regularizer": null, "kernel_constraint": null, "bias_constraint": null}, "inbound_nodes": [[["activation_82", 0, 0, {}]]]}, {"name": "conv2d_84", "class_name": "Conv2D", "config": {"name": "conv2d_84", "trainable": true, "filters": 384, "kernel_size": [3, 1], "strides": [1, 1], "padding": "same", "data_format": "channels_last", "dilation_rate": [1, 1], "activation": "linear", "use_bias": false, "kernel_initializer": {"class_name": "VarianceScaling", "config": {"scale": 1.0, "mode": "fan_avg", "distribution": "uniform", "seed": null}}, "bias_initializer": {"class_name": "Zeros", "config": {}}, "kernel_regularizer": null, "bias_regularizer": null, "activity_regularizer": null, "kernel_constraint": null, "bias_constraint": null}, "inbound_nodes": [[["activation_82", 0, 0, {}]]]}, {"name": "average_pooling2d_8", "class_name": "AveragePooling2D", "config": {"name": "average_pooling2d_8", "trainable": true, "pool_size": [3, 3], "padding": "same", "strides": [1, 1], "data_format": "channels_last"}, "inbound_nodes": [[["mixed8", 0, 0, {}]]]}, {"name": "conv2d_77", "class_name": "Conv2D", "config": {"name": "conv2d_77", "trainable": true, "filters": 320, "kernel_size": [1, 1], "strides": [1, 1], "padding": "same", "data_format": "channels_last", "dilation_rate": [1, 1], "activation": "linear", "use_bias": false, "kernel_initializer": {"class_name": "VarianceScaling", "config": {"scale": 1.0, "mode": "fan_avg", "distribution": "uniform", "seed": null}}, "bias_initializer": {"class_name": "Zeros", "config": {}}, "kernel_regularizer": null, "bias_regularizer": null, "activity_regularizer": null, "kernel_constraint": null, "bias_constraint": null}, "inbound_nodes": [[["mixed8", 0, 0, {}]]]}, {"name": "batch_normalization_79", "class_name": "BatchNormalization", "config": {"name": "batch_normalization_79", "trainable": true, "axis": 3, "momentum": 0.99, "epsilon": 0.001, "center": true, "scale": false, "beta_initializer": {"class_name": "Zeros", "config": {}}, "gamma_initializer": {"class_name": "Ones", "config": {}}, "moving_mean_initializer": {"class_name": "Zeros", "config": {}}, "moving_variance_initializer": {"class_name": "Ones", "config": {}}, "beta_regularizer": null, "gamma_regularizer": null, "beta_constraint": null, "gamma_constraint": null}, "inbound_nodes": [[["conv2d_79", 0, 0, {}]]]}, {"name": "batch_normalization_80", "class_name": "BatchNormalization", "config": {"name": "batch_normalization_80", "trainable": true, "axis": 3, "momentum": 0.99, "epsilon": 0.001, "center": true, "scale": false, "beta_initializer": {"class_name": "Zeros", "config": {}}, "gamma_initializer": {"class_name": "Ones", "config": {}}, "moving_mean_initializer": {"class_name": "Zeros", "config": {}}, "moving_variance_initializer": {"class_name": "Ones", "config": {}}, "beta_regularizer": null, "gamma_regularizer": null, "beta_constraint": null, "gamma_constraint": null}, "inbound_nodes": [[["conv2d_80", 0, 0, {}]]]}, {"name": "batch_normalization_83", "class_name": "BatchNormalization", "config": {"name": "batch_normalization_83", "trainable": true, "axis": 3, "momentum": 0.99, "epsilon": 0.001, "center": true, "scale": false, "beta_initializer": {"class_name": "Zeros", "config": {}}, "gamma_initializer": {"class_name": "Ones", "config": {}}, "moving_mean_initializer": {"class_name": "Zeros", "config": {}}, "moving_variance_initializer": {"class_name": "Ones", "config": {}}, "beta_regularizer": null, "gamma_regularizer": null, "beta_constraint": null, "gamma_constraint": null}, "inbound_nodes": [[["conv2d_83", 0, 0, {}]]]}, {"name": "batch_normalization_84", "class_name": "BatchNormalization", "config": {"name": "batch_normalization_84", "trainable": true, "axis": 3, "momentum": 0.99, "epsilon": 0.001, "center": true, "scale": false, "beta_initializer": {"class_name": "Zeros", "config": {}}, "gamma_initializer": {"class_name": "Ones", "config": {}}, "moving_mean_initializer": {"class_name": "Zeros", "config": {}}, "moving_variance_initializer": {"class_name": "Ones", "config": {}}, "beta_regularizer": null, "gamma_regularizer": null, "beta_constraint": null, "gamma_constraint": null}, "inbound_nodes": [[["conv2d_84", 0, 0, {}]]]}, {"name": "conv2d_85", "class_name": "Conv2D", "config": {"name": "conv2d_85", "trainable": true, "filters": 192, "kernel_size": [1, 1], "strides": [1, 1], "padding": "same", "data_format": "channels_last", "dilation_rate": [1, 1], "activation": "linear", "use_bias": false, "kernel_initializer": {"class_name": "VarianceScaling", "config": {"scale": 1.0, "mode": "fan_avg", "distribution": "uniform", "seed": null}}, "bias_initializer": {"class_name": "Zeros", "config": {}}, "kernel_regularizer": null, "bias_regularizer": null, "activity_regularizer": null, "kernel_constraint": null, "bias_constraint": null}, "inbound_nodes": [[["average_pooling2d_8", 0, 0, {}]]]}, {"name": "batch_normalization_77", "class_name": "BatchNormalization", "config": {"name": "batch_normalization_77", "trainable": true, "axis": 3, "momentum": 0.99, "epsilon": 0.001, "center": true, "scale": false, "beta_initializer": {"class_name": "Zeros", "config": {}}, "gamma_initializer": {"class_name": "Ones", "config": {}}, "moving_mean_initializer": {"class_name": "Zeros", "config": {}}, "moving_variance_initializer": {"class_name": "Ones", "config": {}}, "beta_regularizer": null, "gamma_regularizer": null, "beta_constraint": null, "gamma_constraint": null}, "inbound_nodes": [[["conv2d_77", 0, 0, {}]]]}, {"name": "activation_79", "class_name": "Activation", "config": {"name": "activation_79", "trainable": true, "activation": "relu"}, "inbound_nodes": [[["batch_normalization_79", 0, 0, {}]]]}, {"name": "activation_80", "class_name": "Activation", "config": {"name": "activation_80", "trainable": true, "activation": "relu"}, "inbound_nodes": [[["batch_normalization_80", 0, 0, {}]]]}, {"name": "activation_83", "class_name": "Activation", "config": {"name": "activation_83", "trainable": true, "activation": "relu"}, "inbound_nodes": [[["batch_normalization_83", 0, 0, {}]]]}, {"name": "activation_84", "class_name": "Activation", "config": {"name": "activation_84", "trainable": true, "activation": "relu"}, "inbound_nodes": [[["batch_normalization_84", 0, 0, {}]]]}, {"name": "batch_normalization_85", "class_name": "BatchNormalization", "config": {"name": "batch_normalization_85", "trainable": true, "axis": 3, "momentum": 0.99, "epsilon": 0.001, "center": true, "scale": false, "beta_initializer": {"class_name": "Zeros", "config": {}}, "gamma_initializer": {"class_name": "Ones", "config": {}}, "moving_mean_initializer": {"class_name": "Zeros", "config": {}}, "moving_variance_initializer": {"class_name": "Ones", "config": {}}, "beta_regularizer": null, "gamma_regularizer": null, "beta_constraint": null, "gamma_constraint": null}, "inbound_nodes": [[["conv2d_85", 0, 0, {}]]]}, {"name": "activation_77", "class_name": "Activation", "config": {"name": "activation_77", "trainable": true, "activation": "relu"}, "inbound_nodes": [[["batch_normalization_77", 0, 0, {}]]]}, {"name": "mixed9_0", "class_name": "Concatenate", "config": {"name": "mixed9_0", "trainable": true, "axis": 3}, "inbound_nodes": [[["activation_79", 0, 0, {}], ["activation_80", 0, 0, {}]]]}, {"name": "concatenate_1", "class_name": "Concatenate", "config": {"name": "concatenate_1", "trainable": true, "axis": 3}, "inbound_nodes": [[["activation_83", 0, 0, {}], ["activation_84", 0, 0, {}]]]}, {"name": "activation_85", "class_name": "Activation", "config": {"name": "activation_85", "trainable": true, "activation": "relu"}, "inbound_nodes": [[["batch_normalization_85", 0, 0, {}]]]}, {"name": "mixed9", "class_name": "Concatenate", "config": {"name": "mixed9", "trainable": true, "axis": 3}, "inbound_nodes": [[["activation_77", 0, 0, {}], ["mixed9_0", 0, 0, {}], ["concatenate_1", 0, 0, {}], ["activation_85", 0, 0, {}]]]}, {"name": "conv2d_90", "class_name": "Conv2D", "config": {"name": "conv2d_90", "trainable": true, "filters": 448, "kernel_size": [1, 1], "strides": [1, 1], "padding": "same", "data_format": "channels_last", "dilation_rate": [1, 1], "activation": "linear", "use_bias": false, "kernel_initializer": {"class_name": "VarianceScaling", "config": {"scale": 1.0, "mode": "fan_avg", "distribution": "uniform", "seed": null}}, "bias_initializer": {"class_name": "Zeros", "config": {}}, "kernel_regularizer": null, "bias_regularizer": null, "activity_regularizer": null, "kernel_constraint": null, "bias_constraint": null}, "inbound_nodes": [[["mixed9", 0, 0, {}]]]}, {"name": "batch_normalization_90", "class_name": "BatchNormalization", "config": {"name": "batch_normalization_90", "trainable": true, "axis": 3, "momentum": 0.99, "epsilon": 0.001, "center": true, "scale": false, "beta_initializer": {"class_name": "Zeros", "config": {}}, "gamma_initializer": {"class_name": "Ones", "config": {}}, "moving_mean_initializer": {"class_name": "Zeros", "config": {}}, "moving_variance_initializer": {"class_name": "Ones", "config": {}}, "beta_regularizer": null, "gamma_regularizer": null, "beta_constraint": null, "gamma_constraint": null}, "inbound_nodes": [[["conv2d_90", 0, 0, {}]]]}, {"name": "activation_90", "class_name": "Activation", "config": {"name": "activation_90", "trainable": true, "activation": "relu"}, "inbound_nodes": [[["batch_normalization_90", 0, 0, {}]]]}, {"name": "conv2d_87", "class_name": "Conv2D", "config": {"name": "conv2d_87", "trainable": true, "filters": 384, "kernel_size": [1, 1], "strides": [1, 1], "padding": "same", "data_format": "channels_last", "dilation_rate": [1, 1], "activation": "linear", "use_bias": false, "kernel_initializer": {"class_name": "VarianceScaling", "config": {"scale": 1.0, "mode": "fan_avg", "distribution": "uniform", "seed": null}}, "bias_initializer": {"class_name": "Zeros", "config": {}}, "kernel_regularizer": null, "bias_regularizer": null, "activity_regularizer": null, "kernel_constraint": null, "bias_constraint": null}, "inbound_nodes": [[["mixed9", 0, 0, {}]]]}, {"name": "conv2d_91", "class_name": "Conv2D", "config": {"name": "conv2d_91", "trainable": true, "filters": 384, "kernel_size": [3, 3], "strides": [1, 1], "padding": "same", "data_format": "channels_last", "dilation_rate": [1, 1], "activation": "linear", "use_bias": false, "kernel_initializer": {"class_name": "VarianceScaling", "config": {"scale": 1.0, "mode": "fan_avg", "distribution": "uniform", "seed": null}}, "bias_initializer": {"class_name": "Zeros", "config": {}}, "kernel_regularizer": null, "bias_regularizer": null, "activity_regularizer": null, "kernel_constraint": null, "bias_constraint": null}, "inbound_nodes": [[["activation_90", 0, 0, {}]]]}, {"name": "batch_normalization_87", "class_name": "BatchNormalization", "config": {"name": "batch_normalization_87", "trainable": true, "axis": 3, "momentum": 0.99, "epsilon": 0.001, "center": true, "scale": false, "beta_initializer": {"class_name": "Zeros", "config": {}}, "gamma_initializer": {"class_name": "Ones", "config": {}}, "moving_mean_initializer": {"class_name": "Zeros", "config": {}}, "moving_variance_initializer": {"class_name": "Ones", "config": {}}, "beta_regularizer": null, "gamma_regularizer": null, "beta_constraint": null, "gamma_constraint": null}, "inbound_nodes": [[["conv2d_87", 0, 0, {}]]]}, {"name": "batch_normalization_91", "class_name": "BatchNormalization", "config": {"name": "batch_normalization_91", "trainable": true, "axis": 3, "momentum": 0.99, "epsilon": 0.001, "center": true, "scale": false, "beta_initializer": {"class_name": "Zeros", "config": {}}, "gamma_initializer": {"class_name": "Ones", "config": {}}, "moving_mean_initializer": {"class_name": "Zeros", "config": {}}, "moving_variance_initializer": {"class_name": "Ones", "config": {}}, "beta_regularizer": null, "gamma_regularizer": null, "beta_constraint": null, "gamma_constraint": null}, "inbound_nodes": [[["conv2d_91", 0, 0, {}]]]}, {"name": "activation_87", "class_name": "Activation", "config": {"name": "activation_87", "trainable": true, "activation": "relu"}, "inbound_nodes": [[["batch_normalization_87", 0, 0, {}]]]}, {"name": "activation_91", "class_name": "Activation", "config": {"name": "activation_91", "trainable": true, "activation": "relu"}, "inbound_nodes": [[["batch_normalization_91", 0, 0, {}]]]}, {"name": "conv2d_88", "class_name": "Conv2D", "config": {"name": "conv2d_88", "trainable": true, "filters": 384, "kernel_size": [1, 3], "strides": [1, 1], "padding": "same", "data_format": "channels_last", "dilation_rate": [1, 1], "activation": "linear", "use_bias": false, "kernel_initializer": {"class_name": "VarianceScaling", "config": {"scale": 1.0, "mode": "fan_avg", "distribution": "uniform", "seed": null}}, "bias_initializer": {"class_name": "Zeros", "config": {}}, "kernel_regularizer": null, "bias_regularizer": null, "activity_regularizer": null, "kernel_constraint": null, "bias_constraint": null}, "inbound_nodes": [[["activation_87", 0, 0, {}]]]}, {"name": "conv2d_89", "class_name": "Conv2D", "config": {"name": "conv2d_89", "trainable": true, "filters": 384, "kernel_size": [3, 1], "strides": [1, 1], "padding": "same", "data_format": "channels_last", "dilation_rate": [1, 1], "activation": "linear", "use_bias": false, "kernel_initializer": {"class_name": "VarianceScaling", "config": {"scale": 1.0, "mode": "fan_avg", "distribution": "uniform", "seed": null}}, "bias_initializer": {"class_name": "Zeros", "config": {}}, "kernel_regularizer": null, "bias_regularizer": null, "activity_regularizer": null, "kernel_constraint": null, "bias_constraint": null}, "inbound_nodes": [[["activation_87", 0, 0, {}]]]}, {"name": "conv2d_92", "class_name": "Conv2D", "config": {"name": "conv2d_92", "trainable": true, "filters": 384, "kernel_size": [1, 3], "strides": [1, 1], "padding": "same", "data_format": "channels_last", "dilation_rate": [1, 1], "activation": "linear", "use_bias": false, "kernel_initializer": {"class_name": "VarianceScaling", "config": {"scale": 1.0, "mode": "fan_avg", "distribution": "uniform", "seed": null}}, "bias_initializer": {"class_name": "Zeros", "config": {}}, "kernel_regularizer": null, "bias_regularizer": null, "activity_regularizer": null, "kernel_constraint": null, "bias_constraint": null}, "inbound_nodes": [[["activation_91", 0, 0, {}]]]}, {"name": "conv2d_93", "class_name": "Conv2D", "config": {"name": "conv2d_93", "trainable": true, "filters": 384, "kernel_size": [3, 1], "strides": [1, 1], "padding": "same", "data_format": "channels_last", "dilation_rate": [1, 1], "activation": "linear", "use_bias": false, "kernel_initializer": {"class_name": "VarianceScaling", "config": {"scale": 1.0, "mode": "fan_avg", "distribution": "uniform", "seed": null}}, "bias_initializer": {"class_name": "Zeros", "config": {}}, "kernel_regularizer": null, "bias_regularizer": null, "activity_regularizer": null, "kernel_constraint": null, "bias_constraint": null}, "inbound_nodes": [[["activation_91", 0, 0, {}]]]}, {"name": "average_pooling2d_9", "class_name": "AveragePooling2D", "config": {"name": "average_pooling2d_9", "trainable": true, "pool_size": [3, 3], "padding": "same", "strides": [1, 1], "data_format": "channels_last"}, "inbound_nodes": [[["mixed9", 0, 0, {}]]]}, {"name": "conv2d_86", "class_name": "Conv2D", "config": {"name": "conv2d_86", "trainable": true, "filters": 320, "kernel_size": [1, 1], "strides": [1, 1], "padding": "same", "data_format": "channels_last", "dilation_rate": [1, 1], "activation": "linear", "use_bias": false, "kernel_initializer": {"class_name": "VarianceScaling", "config": {"scale": 1.0, "mode": "fan_avg", "distribution": "uniform", "seed": null}}, "bias_initializer": {"class_name": "Zeros", "config": {}}, "kernel_regularizer": null, "bias_regularizer": null, "activity_regularizer": null, "kernel_constraint": null, "bias_constraint": null}, "inbound_nodes": [[["mixed9", 0, 0, {}]]]}, {"name": "batch_normalization_88", "class_name": "BatchNormalization", "config": {"name": "batch_normalization_88", "trainable": true, "axis": 3, "momentum": 0.99, "epsilon": 0.001, "center": true, "scale": false, "beta_initializer": {"class_name": "Zeros", "config": {}}, "gamma_initializer": {"class_name": "Ones", "config": {}}, "moving_mean_initializer": {"class_name": "Zeros", "config": {}}, "moving_variance_initializer": {"class_name": "Ones", "config": {}}, "beta_regularizer": null, "gamma_regularizer": null, "beta_constraint": null, "gamma_constraint": null}, "inbound_nodes": [[["conv2d_88", 0, 0, {}]]]}, {"name": "batch_normalization_89", "class_name": "BatchNormalization", "config": {"name": "batch_normalization_89", "trainable": true, "axis": 3, "momentum": 0.99, "epsilon": 0.001, "center": true, "scale": false, "beta_initializer": {"class_name": "Zeros", "config": {}}, "gamma_initializer": {"class_name": "Ones", "config": {}}, "moving_mean_initializer": {"class_name": "Zeros", "config": {}}, "moving_variance_initializer": {"class_name": "Ones", "config": {}}, "beta_regularizer": null, "gamma_regularizer": null, "beta_constraint": null, "gamma_constraint": null}, "inbound_nodes": [[["conv2d_89", 0, 0, {}]]]}, {"name": "batch_normalization_92", "class_name": "BatchNormalization", "config": {"name": "batch_normalization_92", "trainable": true, "axis": 3, "momentum": 0.99, "epsilon": 0.001, "center": true, "scale": false, "beta_initializer": {"class_name": "Zeros", "config": {}}, "gamma_initializer": {"class_name": "Ones", "config": {}}, "moving_mean_initializer": {"class_name": "Zeros", "config": {}}, "moving_variance_initializer": {"class_name": "Ones", "config": {}}, "beta_regularizer": null, "gamma_regularizer": null, "beta_constraint": null, "gamma_constraint": null}, "inbound_nodes": [[["conv2d_92", 0, 0, {}]]]}, {"name": "batch_normalization_93", "class_name": "BatchNormalization", "config": {"name": "batch_normalization_93", "trainable": true, "axis": 3, "momentum": 0.99, "epsilon": 0.001, "center": true, "scale": false, "beta_initializer": {"class_name": "Zeros", "config": {}}, "gamma_initializer": {"class_name": "Ones", "config": {}}, "moving_mean_initializer": {"class_name": "Zeros", "config": {}}, "moving_variance_initializer": {"class_name": "Ones", "config": {}}, "beta_regularizer": null, "gamma_regularizer": null, "beta_constraint": null, "gamma_constraint": null}, "inbound_nodes": [[["conv2d_93", 0, 0, {}]]]}, {"name": "conv2d_94", "class_name": "Conv2D", "config": {"name": "conv2d_94", "trainable": true, "filters": 192, "kernel_size": [1, 1], "strides": [1, 1], "padding": "same", "data_format": "channels_last", "dilation_rate": [1, 1], "activation": "linear", "use_bias": false, "kernel_initializer": {"class_name": "VarianceScaling", "config": {"scale": 1.0, "mode": "fan_avg", "distribution": "uniform", "seed": null}}, "bias_initializer": {"class_name": "Zeros", "config": {}}, "kernel_regularizer": null, "bias_regularizer": null, "activity_regularizer": null, "kernel_constraint": null, "bias_constraint": null}, "inbound_nodes": [[["average_pooling2d_9", 0, 0, {}]]]}, {"name": "batch_normalization_86", "class_name": "BatchNormalization", "config": {"name": "batch_normalization_86", "trainable": true, "axis": 3, "momentum": 0.99, "epsilon": 0.001, "center": true, "scale": false, "beta_initializer": {"class_name": "Zeros", "config": {}}, "gamma_initializer": {"class_name": "Ones", "config": {}}, "moving_mean_initializer": {"class_name": "Zeros", "config": {}}, "moving_variance_initializer": {"class_name": "Ones", "config": {}}, "beta_regularizer": null, "gamma_regularizer": null, "beta_constraint": null, "gamma_constraint": null}, "inbound_nodes": [[["conv2d_86", 0, 0, {}]]]}, {"name": "activation_88", "class_name": "Activation", "config": {"name": "activation_88", "trainable": true, "activation": "relu"}, "inbound_nodes": [[["batch_normalization_88", 0, 0, {}]]]}, {"name": "activation_89", "class_name": "Activation", "config": {"name": "activation_89", "trainable": true, "activation": "relu"}, "inbound_nodes": [[["batch_normalization_89", 0, 0, {}]]]}, {"name": "activation_92", "class_name": "Activation", "config": {"name": "activation_92", "trainable": true, "activation": "relu"}, "inbound_nodes": [[["batch_normalization_92", 0, 0, {}]]]}, {"name": "activation_93", "class_name": "Activation", "config": {"name": "activation_93", "trainable": true, "activation": "relu"}, "inbound_nodes": [[["batch_normalization_93", 0, 0, {}]]]}, {"name": "batch_normalization_94", "class_name": "BatchNormalization", "config": {"name": "batch_normalization_94", "trainable": true, "axis": 3, "momentum": 0.99, "epsilon": 0.001, "center": true, "scale": false, "beta_initializer": {"class_name": "Zeros", "config": {}}, "gamma_initializer": {"class_name": "Ones", "config": {}}, "moving_mean_initializer": {"class_name": "Zeros", "config": {}}, "moving_variance_initializer": {"class_name": "Ones", "config": {}}, "beta_regularizer": null, "gamma_regularizer": null, "beta_constraint": null, "gamma_constraint": null}, "inbound_nodes": [[["conv2d_94", 0, 0, {}]]]}, {"name": "activation_86", "class_name": "Activation", "config": {"name": "activation_86", "trainable": true, "activation": "relu"}, "inbound_nodes": [[["batch_normalization_86", 0, 0, {}]]]}, {"name": "mixed9_1", "class_name": "Concatenate", "config": {"name": "mixed9_1", "trainable": true, "axis": 3}, "inbound_nodes": [[["activation_88", 0, 0, {}], ["activation_89", 0, 0, {}]]]}, {"name": "concatenate_2", "class_name": "Concatenate", "config": {"name": "concatenate_2", "trainable": true, "axis": 3}, "inbound_nodes": [[["activation_92", 0, 0, {}], ["activation_93", 0, 0, {}]]]}, {"name": "activation_94", "class_name": "Activation", "config": {"name": "activation_94", "trainable": true, "activation": "relu"}, "inbound_nodes": [[["batch_normalization_94", 0, 0, {}]]]}, {"name": "mixed10", "class_name": "Concatenate", "config": {"name": "mixed10", "trainable": true, "axis": 3}, "inbound_nodes": [[["activation_86", 0, 0, {}], ["mixed9_1", 0, 0, {}], ["concatenate_2", 0, 0, {}], ["activation_94", 0, 0, {}]]]}, {"name": "average_pooling2d_10", "class_name": "AveragePooling2D", "config": {"name": "average_pooling2d_10", "trainable": true, "pool_size": [8, 8], "padding": "valid", "strides": [8, 8], "data_format": "channels_last"}, "inbound_nodes": [[["mixed10", 0, 0, {}]]]}, {"name": "flatten_1", "class_name": "Flatten", "config": {"name": "flatten_1", "trainable": true, "data_format": "channels_last"}, "inbound_nodes": [[["average_pooling2d_10", 0, 0, {}]]]}, {"name": "dense_1", "class_name": "Dense", "config": {"name": "dense_1", "trainable": true, "units": 256, "activation": "relu", "use_bias": true, "kernel_initializer": {"class_name": "VarianceScaling", "config": {"scale": 2.0, "mode": "fan_in", "distribution": "normal", "seed": null}}, "bias_initializer": {"class_name": "Zeros", "config": {}}, "kernel_regularizer": {"class_name": "L1L2", "config": {"l1": 0.0, "l2": 0.0005000000237487257}}, "bias_regularizer": null, "activity_regularizer": null, "kernel_constraint": null, "bias_constraint": null}, "inbound_nodes": [[["flatten_1", 0, 0, {}]]]}, {"name": "dropout_2", "class_name": "Dropout", "config": {"name": "dropout_2", "trainable": true, "rate": 0.5, "noise_shape": null, "seed": null}, "inbound_nodes": [[["dense_1", 0, 0, {}]]]}, {"name": "dense_2", "class_name": "Dense", "config": {"name": "dense_2", "trainable": true, "units": 128, "activation": "relu", "use_bias": true, "kernel_initializer": {"class_name": "VarianceScaling", "config": {"scale": 2.0, "mode": "fan_in", "distribution": "normal", "seed": null}}, "bias_initializer": {"class_name": "Zeros", "config": {}}, "kernel_regularizer": null, "bias_regularizer": null, "activity_regularizer": null, "kernel_constraint": null, "bias_constraint": null}, "inbound_nodes": [[["dropout_2", 0, 0, {}]]]}, {"name": "dropout_3", "class_name": "Dropout", "config": {"name": "dropout_3", "trainable": true, "rate": 0.25, "noise_shape": null, "seed": null}, "inbound_nodes": [[["dense_2", 0, 0, {}]]]}, {"name": "dense_3", "class_name": "Dense", "config": {"name": "dense_3", "trainable": true, "units": 5, "activation": "softmax", "use_bias": true, "kernel_initializer": {"class_name": "VarianceScaling", "config": {"scale": 1.0, "mode": "fan_avg", "distribution": "uniform", "seed": null}}, "bias_initializer": {"class_name": "Zeros", "config": {}}, "kernel_regularizer": null, "bias_regularizer": null, "activity_regularizer": null, "kernel_constraint": null, "bias_constraint": null}, "inbound_nodes": [[["dropout_3", 0, 0, {}]]]}], "input_layers": [["input_1", 0, 0]], "output_layers": [["dense_3", 0, 0]]}}, "training_config": {"optimizer_config": {"class_name": "SGD", "config": {"lr": 8.999999749903509e-07, "momentum": 0.8999999761581421, "decay": 0.0, "nesterov": false}}, "loss": "categorical_crossentropy", "metrics": ["accuracy"], "sample_weight_mode": null, "loss_weights": null}}, "weightsManifest": [{"paths": ["group1-shard1of6", "group1-shard2of6", "group1-shard3of6", "group1-shard4of6", "group1-shard5of6", "group1-shard6of6"], "weights": [{"name": "batch_normalization_1/beta", "shape": [32], "dtype": "float32", "quantization": {"min": -1.4470329237919228, "scale": 0.022262044981414198, "dtype": "uint8"}}, {"name": "batch_normalization_1/moving_mean", "shape": [32], "dtype": "float32", "quantization": {"min": -1.3392340445051008, "scale": 0.009048878679088518, "dtype": "uint8"}}, {"name": "batch_normalization_1/moving_variance", "shape": [32], "dtype": "float32", "quantization": {"min": 0.0029792252462357283, "scale": 0.002011585912174162, "dtype": "uint8"}}, {"name": "batch_normalization_10/beta", "shape": [96], "dtype": "float32", "quantization": {"min": -1.3942089782041662, "scale": 0.013152914888718548, "dtype": "uint8"}}, {"name": "batch_normalization_10/moving_mean", "shape": [96], "dtype": "float32", "quantization": {"min": -3.4377058178770774, "scale": 0.022322765051149853, "dtype": "uint8"}}, {"name": "batch_normalization_10/moving_variance", "shape": [96], "dtype": "float32", "quantization": {"min": 0.32849419116973877, "scale": 0.0067040401346543255, "dtype": "uint8"}}, {"name": "batch_normalization_11/beta", "shape": [96], "dtype": "float32", "quantization": {"min": -1.516452667759914, "scale": 0.019195603389366, "dtype": "uint8"}}, {"name": "batch_normalization_11/moving_mean", "shape": [96], "dtype": "float32", "quantization": {"min": -2.7463201915516575, "scale": 0.01830880127701105, "dtype": "uint8"}}, {"name": "batch_normalization_11/moving_variance", "shape": [96], "dtype": "float32", "quantization": {"min": 0.2191103845834732, "scale": 0.01466470086107067, "dtype": "uint8"}}, {"name": "batch_normalization_12/beta", "shape": [32], "dtype": "float32", "quantization": {"min": -1.301803892734004, "scale": 0.006319436372495165, "dtype": "uint8"}}, {"name": "batch_normalization_12/moving_mean", "shape": [32], "dtype": "float32", "quantization": {"min": -4.4007081592784205, "scale": 0.034114016738592406, "dtype": "uint8"}}, {"name": "batch_normalization_12/moving_variance", "shape": [32], "dtype": "float32", "quantization": {"min": 0.16819331049919128, "scale": 0.005921194716995838, "dtype": "uint8"}}, {"name": "batch_normalization_13/beta", "shape": [64], "dtype": "float32", "quantization": {"min": -0.4739857888689228, "scale": 0.016928063888175814, "dtype": "uint8"}}, {"name": "batch_normalization_13/moving_mean", "shape": [64], "dtype": "float32", "quantization": {"min": -3.5917917167439177, "scale": 0.04128496226142434, "dtype": "uint8"}}, {"name": "batch_normalization_13/moving_variance", "shape": [64], "dtype": "float32", "quantization": {"min": 0.4459476172924042, "scale": 0.023625042976117602, "dtype": "uint8"}}, {"name": "batch_normalization_14/beta", "shape": [48], "dtype": "float32", "quantization": {"min": -1.0772361334632425, "scale": 0.00979305575875675, "dtype": "uint8"}}, {"name": "batch_normalization_14/moving_mean", "shape": [48], "dtype": "float32", "quantization": {"min": -3.953980264476701, "scale": 0.03350830732607374, "dtype": "uint8"}}, {"name": "batch_normalization_14/moving_variance", "shape": [48], "dtype": "float32", "quantization": {"min": 0.24940407276153564, "scale": 0.0058701262754552504, "dtype": "uint8"}}, {"name": "batch_normalization_15/beta", "shape": [64], "dtype": "float32", "quantization": {"min": -1.35126254418317, "scale": 0.01571235516492058, "dtype": "uint8"}}, {"name": "batch_normalization_15/moving_mean", "shape": [64], "dtype": "float32", "quantization": {"min": -4.0795912321876076, "scale": 0.020920980677885167, "dtype": "uint8"}}, {"name": "batch_normalization_15/moving_variance", "shape": [64], "dtype": "float32", "quantization": {"min": 0.49905598163604736, "scale": 0.01223441152011647, "dtype": "uint8"}}, {"name": "batch_normalization_16/beta", "shape": [64], "dtype": "float32", "quantization": {"min": -1.1064918892056335, "scale": 0.01286618475820504, "dtype": "uint8"}}, {"name": "batch_normalization_16/moving_mean", "shape": [64], "dtype": "float32", "quantization": {"min": -3.809274101257324, "scale": 0.03527105649312337, "dtype": "uint8"}}, {"name": "batch_normalization_16/moving_variance", "shape": [64], "dtype": "float32", "quantization": {"min": 0.19940871000289917, "scale": 0.009950414592144536, "dtype": "uint8"}}, {"name": "batch_normalization_17/beta", "shape": [96], "dtype": "float32", "quantization": {"min": -2.0270998253541834, "scale": 0.014376594506058039, "dtype": "uint8"}}, {"name": "batch_normalization_17/moving_mean", "shape": [96], "dtype": "float32", "quantization": {"min": -3.1735796909706266, "scale": 0.018031702789605832, "dtype": "uint8"}}, {"name": "batch_normalization_17/moving_variance", "shape": [96], "dtype": "float32", "quantization": {"min": 0.2549457848072052, "scale": 0.008325207350300807, "dtype": "uint8"}}, {"name": "batch_normalization_18/beta", "shape": [96], "dtype": "float32", "quantization": {"min": -2.1231734135571645, "scale": 0.016458708632226083, "dtype": "uint8"}}, {"name": "batch_normalization_18/moving_mean", "shape": [96], "dtype": "float32", "quantization": {"min": -1.3713552848965516, "scale": 0.009657431583778532, "dtype": "uint8"}}, {"name": "batch_normalization_18/moving_variance", "shape": [96], "dtype": "float32", "quantization": {"min": 0.1513037383556366, "scale": 0.0068373657909094115, "dtype": "uint8"}}, {"name": "batch_normalization_19/beta", "shape": [64], "dtype": "float32", "quantization": {"min": -1.4365768666360892, "scale": 0.006776305974698534, "dtype": "uint8"}}, {"name": "batch_normalization_19/moving_mean", "shape": [64], "dtype": "float32", "quantization": {"min": -2.476449997284833, "scale": 0.015673734160030588, "dtype": "uint8"}}, {"name": "batch_normalization_19/moving_variance", "shape": [64], "dtype": "float32", "quantization": {"min": 0.09515814483165741, "scale": 0.0020481755336125692, "dtype": "uint8"}}, {"name": "batch_normalization_2/beta", "shape": [32], "dtype": "float32", "quantization": {"min": -3.4433995106640984, "scale": 0.02125555253496357, "dtype": "uint8"}}, {"name": "batch_normalization_2/moving_mean", "shape": [32], "dtype": "float32", "quantization": {"min": -5.612242926803289, "scale": 0.04526002360325233, "dtype": "uint8"}}, {"name": "batch_normalization_2/moving_variance", "shape": [32], "dtype": "float32", "quantization": {"min": 1.6788238754359384e-14, "scale": 0.036660007402008594, "dtype": "uint8"}}, {"name": "batch_normalization_20/beta", "shape": [64], "dtype": "float32", "quantization": {"min": -0.8893205343508253, "scale": 0.02021183032615512, "dtype": "uint8"}}, {"name": "batch_normalization_20/moving_mean", "shape": [64], "dtype": "float32", "quantization": {"min": -3.9672318907345043, "scale": 0.026625717387479896, "dtype": "uint8"}}, {"name": "batch_normalization_20/moving_variance", "shape": [64], "dtype": "float32", "quantization": {"min": 0.420120507478714, "scale": 0.012815360345092475, "dtype": "uint8"}}, {"name": "batch_normalization_21/beta", "shape": [48], "dtype": "float32", "quantization": {"min": -0.9888528188069662, "scale": 0.007270976608874751, "dtype": "uint8"}}, {"name": "batch_normalization_21/moving_mean", "shape": [48], "dtype": "float32", "quantization": {"min": -2.3340306749530866, "scale": 0.017954082115023744, "dtype": "uint8"}}, {"name": "batch_normalization_21/moving_variance", "shape": [48], "dtype": "float32", "quantization": {"min": 0.28571629524230957, "scale": 0.0053000637129241345, "dtype": "uint8"}}, {"name": "batch_normalization_22/beta", "shape": [64], "dtype": "float32", "quantization": {"min": -1.415032872031717, "scale": 0.016453870605019964, "dtype": "uint8"}}, {"name": "batch_normalization_22/moving_mean", "shape": [64], "dtype": "float32", "quantization": {"min": -2.3663464188575745, "scale": 0.011214911937713623, "dtype": "uint8"}}, {"name": "batch_normalization_22/moving_variance", "shape": [64], "dtype": "float32", "quantization": {"min": 0.8183495402336121, "scale": 0.01016303815093695, "dtype": "uint8"}}, {"name": "batch_normalization_23/beta", "shape": [64], "dtype": "float32", "quantization": {"min": -0.8289626280466715, "scale": 0.012190626883039287, "dtype": "uint8"}}, {"name": "batch_normalization_23/moving_mean", "shape": [64], "dtype": "float32", "quantization": {"min": -3.606444087682986, "scale": 0.03370508493161669, "dtype": "uint8"}}, {"name": "batch_normalization_23/moving_variance", "shape": [64], "dtype": "float32", "quantization": {"min": 0.28999996185302734, "scale": 0.007630550160127527, "dtype": "uint8"}}, {"name": "batch_normalization_24/beta", "shape": [96], "dtype": "float32", "quantization": {"min": -1.7479860670426313, "scale": 0.011972507308511173, "dtype": "uint8"}}, {"name": "batch_normalization_24/moving_mean", "shape": [96], "dtype": "float32", "quantization": {"min": -1.6063279857822492, "scale": 0.009504899324155321, "dtype": "uint8"}}, {"name": "batch_normalization_24/moving_variance", "shape": [96], "dtype": "float32", "quantization": {"min": 0.24551624059677124, "scale": 0.013059020743650548, "dtype": "uint8"}}, {"name": "batch_normalization_25/beta", "shape": [96], "dtype": "float32", "quantization": {"min": -1.283474132126453, "scale": 0.009368424322090898, "dtype": "uint8"}}, {"name": "batch_normalization_25/moving_mean", "shape": [96], "dtype": "float32", "quantization": {"min": -1.5872352920326533, "scale": 0.007117647049473781, "dtype": "uint8"}}, {"name": "batch_normalization_25/moving_variance", "shape": [96], "dtype": "float32", "quantization": {"min": 0.39823248982429504, "scale": 0.004755370172799802, "dtype": "uint8"}}, {"name": "batch_normalization_26/beta", "shape": [64], "dtype": "float32", "quantization": {"min": -1.5112898941425716, "scale": 0.0061685301801737615, "dtype": "uint8"}}, {"name": "batch_normalization_26/moving_mean", "shape": [64], "dtype": "float32", "quantization": {"min": -2.16122173982508, "scale": 0.01637289196837182, "dtype": "uint8"}}, {"name": "batch_normalization_26/moving_variance", "shape": [64], "dtype": "float32", "quantization": {"min": 0.11441070586442947, "scale": 0.004070372412017747, "dtype": "uint8"}}, {"name": "batch_normalization_27/beta", "shape": [384], "dtype": "float32", "quantization": {"min": -1.3188155637067907, "scale": 0.007579399791418338, "dtype": "uint8"}}, {"name": "batch_normalization_27/moving_mean", "shape": [384], "dtype": "float32", "quantization": {"min": -5.909318789313821, "scale": 0.03517451660305846, "dtype": "uint8"}}, {"name": "batch_normalization_27/moving_variance", "shape": [384], "dtype": "float32", "quantization": {"min": 0.2954988181591034, "scale": 0.006337425404903936, "dtype": "uint8"}}, {"name": "batch_normalization_28/beta", "shape": [64], "dtype": "float32", "quantization": {"min": -1.0164603177238913, "scale": 0.006515771267460842, "dtype": "uint8"}}, {"name": "batch_normalization_28/moving_mean", "shape": [64], "dtype": "float32", "quantization": {"min": -2.281826620943406, "scale": 0.015522630074444939, "dtype": "uint8"}}, {"name": "batch_normalization_28/moving_variance", "shape": [64], "dtype": "float32", "quantization": {"min": 0.1750023365020752, "scale": 0.002921118923262054, "dtype": "uint8"}}, {"name": "batch_normalization_29/beta", "shape": [96], "dtype": "float32", "quantization": {"min": -1.9762367010116577, "scale": 0.005986429195778043, "dtype": "uint8"}}, {"name": "batch_normalization_29/moving_mean", "shape": [96], "dtype": "float32", "quantization": {"min": -1.1413830504697913, "scale": 0.009058595638649136, "dtype": "uint8"}}, {"name": "batch_normalization_29/moving_variance", "shape": [96], "dtype": "float32", "quantization": {"min": 0.20233316719532013, "scale": 0.002113556335954105, "dtype": "uint8"}}, {"name": "batch_normalization_3/beta", "shape": [64], "dtype": "float32", "quantization": {"min": -2.6871745165656593, "scale": 0.02020431967342601, "dtype": "uint8"}}, {"name": "batch_normalization_3/moving_mean", "shape": [64], "dtype": "float32", "quantization": {"min": -5.694581502091651, "scale": 0.028190997535107183, "dtype": "uint8"}}, {"name": "batch_normalization_3/moving_variance", "shape": [64], "dtype": "float32", "quantization": {"min": 0.14262264966964722, "scale": 0.019136658135582418, "dtype": "uint8"}}, {"name": "batch_normalization_30/beta", "shape": [96], "dtype": "float32", "quantization": {"min": -0.6150621568455416, "scale": 0.007410387431873995, "dtype": "uint8"}}, {"name": "batch_normalization_30/moving_mean", "shape": [96], "dtype": "float32", "quantization": {"min": -0.5138443261969323, "scale": 0.003593316966412114, "dtype": "uint8"}}, {"name": "batch_normalization_30/moving_variance", "shape": [96], "dtype": "float32", "quantization": {"min": 0.09833530336618423, "scale": 0.0014371293140392678, "dtype": "uint8"}}, {"name": "batch_normalization_31/beta", "shape": [192], "dtype": "float32", "quantization": {"min": -1.0016017801621382, "scale": 0.016693363002702303, "dtype": "uint8"}}, {"name": "batch_normalization_31/moving_mean", "shape": [192], "dtype": "float32", "quantization": {"min": -2.9536140198801077, "scale": 0.02786428320641611, "dtype": "uint8"}}, {"name": "batch_normalization_31/moving_variance", "shape": [192], "dtype": "float32", "quantization": {"min": 0.3321317434310913, "scale": 0.025618675175835104, "dtype": "uint8"}}, {"name": "batch_normalization_32/beta", "shape": [128], "dtype": "float32", "quantization": {"min": -1.482565550593769, "scale": 0.006832099311492023, "dtype": "uint8"}}, {"name": "batch_normalization_32/moving_mean", "shape": [128], "dtype": "float32", "quantization": {"min": -2.2532974004745485, "scale": 0.014727433990029728, "dtype": "uint8"}}, {"name": "batch_normalization_32/moving_variance", "shape": [128], "dtype": "float32", "quantization": {"min": 0.3239896297454834, "scale": 0.0061596725501266185, "dtype": "uint8"}}, {"name": "batch_normalization_33/beta", "shape": [128], "dtype": "float32", "quantization": {"min": -1.2625880390990014, "scale": 0.008306500257230273, "dtype": "uint8"}}, {"name": "batch_normalization_33/moving_mean", "shape": [128], "dtype": "float32", "quantization": {"min": -1.495534519588246, "scale": 0.00826262165518368, "dtype": "uint8"}}, {"name": "batch_normalization_33/moving_variance", "shape": [128], "dtype": "float32", "quantization": {"min": 0.2597413659095764, "scale": 0.003397520149455351, "dtype": "uint8"}}, {"name": "batch_normalization_34/beta", "shape": [192], "dtype": "float32", "quantization": {"min": -1.500122459262025, "scale": 0.008523423063988778, "dtype": "uint8"}}, {"name": "batch_normalization_34/moving_mean", "shape": [192], "dtype": "float32", "quantization": {"min": -2.1041239532769898, "scale": 0.012233278798122032, "dtype": "uint8"}}, {"name": "batch_normalization_34/moving_variance", "shape": [192], "dtype": "float32", "quantization": {"min": 0.16395790874958038, "scale": 0.0040355992667815265, "dtype": "uint8"}}, {"name": "batch_normalization_35/beta", "shape": [128], "dtype": "float32", "quantization": {"min": -1.0832286638372086, "scale": 0.012171108582440545, "dtype": "uint8"}}, {"name": "batch_normalization_35/moving_mean", "shape": [128], "dtype": "float32", "quantization": {"min": -2.395103445240095, "scale": 0.023253431507185392, "dtype": "uint8"}}, {"name": "batch_normalization_35/moving_variance", "shape": [128], "dtype": "float32", "quantization": {"min": 0.16777288913726807, "scale": 0.019797573370092057, "dtype": "uint8"}}, {"name": "batch_normalization_36/beta", "shape": [128], "dtype": "float32", "quantization": {"min": -1.8138037962072036, "scale": 0.013143505769617416, "dtype": "uint8"}}, {"name": "batch_normalization_36/moving_mean", "shape": [128], "dtype": "float32", "quantization": {"min": -1.310854683670343, "scale": 0.01057140873927696, "dtype": "uint8"}}, {"name": "batch_normalization_36/moving_variance", "shape": [128], "dtype": "float32", "quantization": {"min": 0.1670084297657013, "scale": 0.006697891623366113, "dtype": "uint8"}}, {"name": "batch_normalization_37/beta", "shape": [128], "dtype": "float32", "quantization": {"min": -1.9430689110475428, "scale": 0.011776175218469956, "dtype": "uint8"}}, {"name": "batch_normalization_37/moving_mean", "shape": [128], "dtype": "float32", "quantization": {"min": -1.7351032495498657, "scale": 0.010206489703234504, "dtype": "uint8"}}, {"name": "batch_normalization_37/moving_variance", "shape": [128], "dtype": "float32", "quantization": {"min": 0.19027358293533325, "scale": 0.005742954974081002, "dtype": "uint8"}}, {"name": "batch_normalization_38/beta", "shape": [128], "dtype": "float32", "quantization": {"min": -1.3741615199575237, "scale": 0.009222560536627676, "dtype": "uint8"}}, {"name": "batch_normalization_38/moving_mean", "shape": [128], "dtype": "float32", "quantization": {"min": -1.8390505080129587, "scale": 0.011941886415668563, "dtype": "uint8"}}, {"name": "batch_normalization_38/moving_variance", "shape": [128], "dtype": "float32", "quantization": {"min": 0.14841628074645996, "scale": 0.004146125737358542, "dtype": "uint8"}}, {"name": "batch_normalization_39/beta", "shape": [192], "dtype": "float32", "quantization": {"min": -1.787621801039752, "scale": 0.00907422234030331, "dtype": "uint8"}}, {"name": "batch_normalization_39/moving_mean", "shape": [192], "dtype": "float32", "quantization": {"min": -3.0378903204319525, "scale": 0.014397584457023471, "dtype": "uint8"}}, {"name": "batch_normalization_39/moving_variance", "shape": [192], "dtype": "float32", "quantization": {"min": 0.13926127552986145, "scale": 0.010081140550912596, "dtype": "uint8"}}, {"name": "batch_normalization_4/beta", "shape": [80], "dtype": "float32", "quantization": {"min": -1.619629228816313, "scale": 0.021595056384217506, "dtype": "uint8"}}, {"name": "batch_normalization_4/moving_mean", "shape": [80], "dtype": "float32", "quantization": {"min": -7.642285971548042, "scale": 0.048676980710497086, "dtype": "uint8"}}, {"name": "batch_normalization_4/moving_variance", "shape": [80], "dtype": "float32", "quantization": {"min": 0.1652865707874298, "scale": 0.027933618017271452, "dtype": "uint8"}}, {"name": "batch_normalization_40/beta", "shape": [192], "dtype": "float32", "quantization": {"min": -1.2992442846298218, "scale": 0.00419156878602271, "dtype": "uint8"}}, {"name": "batch_normalization_40/moving_mean", "shape": [192], "dtype": "float32", "quantization": {"min": -2.384939792109471, "scale": 0.017035284229353364, "dtype": "uint8"}}, {"name": "batch_normalization_40/moving_variance", "shape": [192], "dtype": "float32", "quantization": {"min": 0.06725674867630005, "scale": 0.002992297387590595, "dtype": "uint8"}}, {"name": "batch_normalization_41/beta", "shape": [192], "dtype": "float32", "quantization": {"min": -0.8896247265385646, "scale": 0.013900386352165072, "dtype": "uint8"}}, {"name": "batch_normalization_41/moving_mean", "shape": [192], "dtype": "float32", "quantization": {"min": -1.1002823920810925, "scale": 0.007588154428145465, "dtype": "uint8"}}, {"name": "batch_normalization_41/moving_variance", "shape": [192], "dtype": "float32", "quantization": {"min": 0.22883667051792145, "scale": 0.0062419147468080706, "dtype": "uint8"}}, {"name": "batch_normalization_42/beta", "shape": [160], "dtype": "float32", "quantization": {"min": -1.4175063925630906, "scale": 0.00800851069244684, "dtype": "uint8"}}, {"name": "batch_normalization_42/moving_mean", "shape": [160], "dtype": "float32", "quantization": {"min": -1.06603368918101, "scale": 0.006922296682993571, "dtype": "uint8"}}, {"name": "batch_normalization_42/moving_variance", "shape": [160], "dtype": "float32", "quantization": {"min": 0.16725388169288635, "scale": 0.007173216927285288, "dtype": "uint8"}}, {"name": "batch_normalization_43/beta", "shape": [160], "dtype": "float32", "quantization": {"min": -1.2026210822311103, "scale": 0.006756298214781518, "dtype": "uint8"}}, {"name": "batch_normalization_43/moving_mean", "shape": [160], "dtype": "float32", "quantization": {"min": -1.1263628791360294, "scale": 0.00879970999325023, "dtype": "uint8"}}, {"name": "batch_normalization_43/moving_variance", "shape": [160], "dtype": "float32", "quantization": {"min": 0.1858157068490982, "scale": 0.0035367338680753523, "dtype": "uint8"}}, {"name": "batch_normalization_44/beta", "shape": [192], "dtype": "float32", "quantization": {"min": -1.6851831992467243, "scale": 0.007625263345007803, "dtype": "uint8"}}, {"name": "batch_normalization_44/moving_mean", "shape": [192], "dtype": "float32", "quantization": {"min": -1.3855730304531024, "scale": 0.009968151298223758, "dtype": "uint8"}}, {"name": "batch_normalization_44/moving_variance", "shape": [192], "dtype": "float32", "quantization": {"min": 0.23984774947166443, "scale": 0.004611740509668986, "dtype": "uint8"}}, {"name": "batch_normalization_45/beta", "shape": [160], "dtype": "float32", "quantization": {"min": -1.198061533535228, "scale": 0.009740337671018114, "dtype": "uint8"}}, {"name": "batch_normalization_45/moving_mean", "shape": [160], "dtype": "float32", "quantization": {"min": -1.954274336496989, "scale": 0.022991462782317517, "dtype": "uint8"}}, {"name": "batch_normalization_45/moving_variance", "shape": [160], "dtype": "float32", "quantization": {"min": 0.12165232747793198, "scale": 0.004625043360625997, "dtype": "uint8"}}, {"name": "batch_normalization_46/beta", "shape": [160], "dtype": "float32", "quantization": {"min": -1.2301660285276526, "scale": 0.01079093007480397, "dtype": "uint8"}}, {"name": "batch_normalization_46/moving_mean", "shape": [160], "dtype": "float32", "quantization": {"min": -1.2148393953547758, "scale": 0.008098929302365172, "dtype": "uint8"}}, {"name": "batch_normalization_46/moving_variance", "shape": [160], "dtype": "float32", "quantization": {"min": 0.0945582166314125, "scale": 0.009077410692093418, "dtype": "uint8"}}, {"name": "batch_normalization_47/beta", "shape": [160], "dtype": "float32", "quantization": {"min": -1.4696354982899684, "scale": 0.009481519343806248, "dtype": "uint8"}}, {"name": "batch_normalization_47/moving_mean", "shape": [160], "dtype": "float32", "quantization": {"min": -1.1994350405300365, "scale": 0.007014240003099629, "dtype": "uint8"}}, {"name": "batch_normalization_47/moving_variance", "shape": [160], "dtype": "float32", "quantization": {"min": 0.11140790581703186, "scale": 0.005514528120265288, "dtype": "uint8"}}, {"name": "batch_normalization_48/beta", "shape": [160], "dtype": "float32", "quantization": {"min": -1.5309041387894575, "scale": 0.010206027591929717, "dtype": "uint8"}}, {"name": "batch_normalization_48/moving_mean", "shape": [160], "dtype": "float32", "quantization": {"min": -1.9451826843560909, "scale": 0.012311282812380323, "dtype": "uint8"}}, {"name": "batch_normalization_48/moving_variance", "shape": [160], "dtype": "float32", "quantization": {"min": 0.10514998435974121, "scale": 0.005894911055471383, "dtype": "uint8"}}, {"name": "batch_normalization_49/beta", "shape": [192], "dtype": "float32", "quantization": {"min": -2.14061705271403, "scale": 0.010442034403483073, "dtype": "uint8"}}, {"name": "batch_normalization_49/moving_mean", "shape": [192], "dtype": "float32", "quantization": {"min": -2.2268771409988406, "scale": 0.014554752555547976, "dtype": "uint8"}}, {"name": "batch_normalization_49/moving_variance", "shape": [192], "dtype": "float32", "quantization": {"min": 0.11649957299232483, "scale": 0.012523744971144434, "dtype": "uint8"}}, {"name": "batch_normalization_5/beta", "shape": [192], "dtype": "float32", "quantization": {"min": -1.2072101817411534, "scale": 0.01676680807973824, "dtype": "uint8"}}, {"name": "batch_normalization_5/moving_mean", "shape": [192], "dtype": "float32", "quantization": {"min": -12.276217052983302, "scale": 0.11804054858637791, "dtype": "uint8"}}, {"name": "batch_normalization_5/moving_variance", "shape": [192], "dtype": "float32", "quantization": {"min": 0.5460559725761414, "scale": 0.024879303399254295, "dtype": "uint8"}}, {"name": "batch_normalization_50/beta", "shape": [192], "dtype": "float32", "quantization": {"min": -1.4464423656463623, "scale": 0.00563175964954437, "dtype": "uint8"}}, {"name": "batch_normalization_50/moving_mean", "shape": [192], "dtype": "float32", "quantization": {"min": -0.8957669398363899, "scale": 0.0060524793232188505, "dtype": "uint8"}}, {"name": "batch_normalization_50/moving_variance", "shape": [192], "dtype": "float32", "quantization": {"min": 0.07341840118169785, "scale": 0.0036757070936408696, "dtype": "uint8"}}, {"name": "batch_normalization_51/beta", "shape": [192], "dtype": "float32", "quantization": {"min": -1.0999449000639074, "scale": 0.008942641463934206, "dtype": "uint8"}}, {"name": "batch_normalization_51/moving_mean", "shape": [192], "dtype": "float32", "quantization": {"min": -2.029522571142982, "scale": 0.011090287274005366, "dtype": "uint8"}}, {"name": "batch_normalization_51/moving_variance", "shape": [192], "dtype": "float32", "quantization": {"min": 0.3355939984321594, "scale": 0.006160175800323487, "dtype": "uint8"}}, {"name": "batch_normalization_52/beta", "shape": [160], "dtype": "float32", "quantization": {"min": -1.524581991223728, "scale": 0.007699909046584485, "dtype": "uint8"}}, {"name": "batch_normalization_52/moving_mean", "shape": [160], "dtype": "float32", "quantization": {"min": -2.118796606624828, "scale": 0.013582029529646331, "dtype": "uint8"}}, {"name": "batch_normalization_52/moving_variance", "shape": [160], "dtype": "float32", "quantization": {"min": 0.23068301379680634, "scale": 0.006010897311509824, "dtype": "uint8"}}, {"name": "batch_normalization_53/beta", "shape": [160], "dtype": "float32", "quantization": {"min": -1.376077589334226, "scale": 0.007954205718694948, "dtype": "uint8"}}, {"name": "batch_normalization_53/moving_mean", "shape": [160], "dtype": "float32", "quantization": {"min": -1.1059657826143152, "scale": 0.006912286141339471, "dtype": "uint8"}}, {"name": "batch_normalization_53/moving_variance", "shape": [160], "dtype": "float32", "quantization": {"min": 0.23038174211978912, "scale": 0.0036060267219356463, "dtype": "uint8"}}, {"name": "batch_normalization_54/beta", "shape": [192], "dtype": "float32", "quantization": {"min": -1.395288348197937, "scale": 0.005394561647200117, "dtype": "uint8"}}, {"name": "batch_normalization_54/moving_mean", "shape": [192], "dtype": "float32", "quantization": {"min": -1.3039465614393644, "scale": 0.009118507422652898, "dtype": "uint8"}}, {"name": "batch_normalization_54/moving_variance", "shape": [192], "dtype": "float32", "quantization": {"min": 0.21060386300086975, "scale": 0.0029812921495998607, "dtype": "uint8"}}, {"name": "batch_normalization_55/beta", "shape": [160], "dtype": "float32", "quantization": {"min": -1.5728507976905972, "scale": 0.007748033486160578, "dtype": "uint8"}}, {"name": "batch_normalization_55/moving_mean", "shape": [160], "dtype": "float32", "quantization": {"min": -1.1225942415349623, "scale": 0.00870228094213149, "dtype": "uint8"}}, {"name": "batch_normalization_55/moving_variance", "shape": [160], "dtype": "float32", "quantization": {"min": 0.149143785238266, "scale": 0.0036947704997717166, "dtype": "uint8"}}, {"name": "batch_normalization_56/beta", "shape": [160], "dtype": "float32", "quantization": {"min": -1.4110212517719645, "scale": 0.007882800289228852, "dtype": "uint8"}}, {"name": "batch_normalization_56/moving_mean", "shape": [160], "dtype": "float32", "quantization": {"min": -1.3976049315695669, "scale": 0.010508307756162157, "dtype": "uint8"}}, {"name": "batch_normalization_56/moving_variance", "shape": [160], "dtype": "float32", "quantization": {"min": 0.16969893872737885, "scale": 0.005670124467681436, "dtype": "uint8"}}, {"name": "batch_normalization_57/beta", "shape": [160], "dtype": "float32", "quantization": {"min": -2.037970177566304, "scale": 0.008938465691080281, "dtype": "uint8"}}, {"name": "batch_normalization_57/moving_mean", "shape": [160], "dtype": "float32", "quantization": {"min": -2.0804866949717207, "scale": 0.012238157029245415, "dtype": "uint8"}}, {"name": "batch_normalization_57/moving_variance", "shape": [160], "dtype": "float32", "quantization": {"min": 0.3031127452850342, "scale": 0.009343819524727615, "dtype": "uint8"}}, {"name": "batch_normalization_58/beta", "shape": [160], "dtype": "float32", "quantization": {"min": -1.1626297235488892, "scale": 0.008018136024475098, "dtype": "uint8"}}, {"name": "batch_normalization_58/moving_mean", "shape": [160], "dtype": "float32", "quantization": {"min": -1.1574389139811199, "scale": 0.00890337626139323, "dtype": "uint8"}}, {"name": "batch_normalization_58/moving_variance", "shape": [160], "dtype": "float32", "quantization": {"min": 0.20891253650188446, "scale": 0.008950928437943552, "dtype": "uint8"}}, {"name": "batch_normalization_59/beta", "shape": [192], "dtype": "float32", "quantization": {"min": -1.5612965036841, "scale": 0.008578552218044506, "dtype": "uint8"}}, {"name": "batch_normalization_59/moving_mean", "shape": [192], "dtype": "float32", "quantization": {"min": -2.9308635936063876, "scale": 0.01526491455003327, "dtype": "uint8"}}, {"name": "batch_normalization_59/moving_variance", "shape": [192], "dtype": "float32", "quantization": {"min": 0.35770270228385925, "scale": 0.015598084061753515, "dtype": "uint8"}}, {"name": "batch_normalization_6/beta", "shape": [64], "dtype": "float32", "quantization": {"min": -0.4988247050958522, "scale": 0.018474989077624154, "dtype": "uint8"}}, {"name": "batch_normalization_6/moving_mean", "shape": [64], "dtype": "float32", "quantization": {"min": -4.639463159149768, "scale": 0.0473414608076507, "dtype": "uint8"}}, {"name": "batch_normalization_6/moving_variance", "shape": [64], "dtype": "float32", "quantization": {"min": 0.5386254787445068, "scale": 0.025258790745454677, "dtype": "uint8"}}, {"name": "batch_normalization_60/beta", "shape": [192], "dtype": "float32", "quantization": {"min": -1.5135674476623535, "scale": 0.0047089920324437755, "dtype": "uint8"}}, {"name": "batch_normalization_60/moving_mean", "shape": [192], "dtype": "float32", "quantization": {"min": -1.219797550346337, "scale": 0.006386374609143126, "dtype": "uint8"}}, {"name": "batch_normalization_60/moving_variance", "shape": [192], "dtype": "float32", "quantization": {"min": 0.13531571626663208, "scale": 0.002973755434447644, "dtype": "uint8"}}, {"name": "batch_normalization_61/beta", "shape": [192], "dtype": "float32", "quantization": {"min": -1.5758512195418863, "scale": 0.006677335676024942, "dtype": "uint8"}}, {"name": "batch_normalization_61/moving_mean", "shape": [192], "dtype": "float32", "quantization": {"min": -1.3910136437883565, "scale": 0.008040541293574314, "dtype": "uint8"}}, {"name": "batch_normalization_61/moving_variance", "shape": [192], "dtype": "float32", "quantization": {"min": 0.27678921818733215, "scale": 0.005867989741119684, "dtype": "uint8"}}, {"name": "batch_normalization_62/beta", "shape": [192], "dtype": "float32", "quantization": {"min": -1.7731781005859375, "scale": 0.005797953932893042, "dtype": "uint8"}}, {"name": "batch_normalization_62/moving_mean", "shape": [192], "dtype": "float32", "quantization": {"min": -1.1186937569403181, "scale": 0.006180628491382973, "dtype": "uint8"}}, {"name": "batch_normalization_62/moving_variance", "shape": [192], "dtype": "float32", "quantization": {"min": 0.2029876708984375, "scale": 0.003584029627781288, "dtype": "uint8"}}, {"name": "batch_normalization_63/beta", "shape": [192], "dtype": "float32", "quantization": {"min": -1.1662906955270207, "scale": 0.007199325281030991, "dtype": "uint8"}}, {"name": "batch_normalization_63/moving_mean", "shape": [192], "dtype": "float32", "quantization": {"min": -0.5863659428615197, "scale": 0.005235410204120711, "dtype": "uint8"}}, {"name": "batch_normalization_63/moving_variance", "shape": [192], "dtype": "float32", "quantization": {"min": 0.09435708075761795, "scale": 0.0028266684389581867, "dtype": "uint8"}}, {"name": "batch_normalization_64/beta", "shape": [192], "dtype": "float32", "quantization": {"min": -2.0544645720837162, "scale": 0.018343433679318896, "dtype": "uint8"}}, {"name": "batch_normalization_64/moving_mean", "shape": [192], "dtype": "float32", "quantization": {"min": -2.3606223686068666, "scale": 0.011803111843034333, "dtype": "uint8"}}, {"name": "batch_normalization_64/moving_variance", "shape": [192], "dtype": "float32", "quantization": {"min": 0.24856248497962952, "scale": 0.017925596587798173, "dtype": "uint8"}}, {"name": "batch_normalization_65/beta", "shape": [192], "dtype": "float32", "quantization": {"min": -1.5397444839571037, "scale": 0.007474487786199533, "dtype": "uint8"}}, {"name": "batch_normalization_65/moving_mean", "shape": [192], "dtype": "float32", "quantization": {"min": -1.0257711017833036, "scale": 0.007770993195328058, "dtype": "uint8"}}, {"name": "batch_normalization_65/moving_variance", "shape": [192], "dtype": "float32", "quantization": {"min": 0.18295010924339294, "scale": 0.002770194937201107, "dtype": "uint8"}}, {"name": "batch_normalization_66/beta", "shape": [192], "dtype": "float32", "quantization": {"min": -1.5399934053421023, "scale": 0.009058784737306484, "dtype": "uint8"}}, {"name": "batch_normalization_66/moving_mean", "shape": [192], "dtype": "float32", "quantization": {"min": -1.2256995402130426, "scale": 0.007959087923461316, "dtype": "uint8"}}, {"name": "batch_normalization_66/moving_variance", "shape": [192], "dtype": "float32", "quantization": {"min": 0.2300872653722763, "scale": 0.004644319648836173, "dtype": "uint8"}}, {"name": "batch_normalization_67/beta", "shape": [192], "dtype": "float32", "quantization": {"min": -1.5030710697174072, "scale": 0.005584524601113562, "dtype": "uint8"}}, {"name": "batch_normalization_67/moving_mean", "shape": [192], "dtype": "float32", "quantization": {"min": -1.4341935107520982, "scale": 0.0067971256433748736, "dtype": "uint8"}}, {"name": "batch_normalization_67/moving_variance", "shape": [192], "dtype": "float32", "quantization": {"min": 0.13089387118816376, "scale": 0.0026349552121816898, "dtype": "uint8"}}, {"name": "batch_normalization_68/beta", "shape": [192], "dtype": "float32", "quantization": {"min": -1.1063206609557656, "scale": 0.005853548470665427, "dtype": "uint8"}}, {"name": "batch_normalization_68/moving_mean", "shape": [192], "dtype": "float32", "quantization": {"min": -1.067355478511137, "scale": 0.010165290271534639, "dtype": "uint8"}}, {"name": "batch_normalization_68/moving_variance", "shape": [192], "dtype": "float32", "quantization": {"min": 0.15702544152736664, "scale": 0.0025017112493515015, "dtype": "uint8"}}, {"name": "batch_normalization_69/beta", "shape": [192], "dtype": "float32", "quantization": {"min": -2.2159725623972277, "scale": 0.012958903873667998, "dtype": "uint8"}}, {"name": "batch_normalization_69/moving_mean", "shape": [192], "dtype": "float32", "quantization": {"min": -2.008986711502075, "scale": 0.006804025056315404, "dtype": "uint8"}}, {"name": "batch_normalization_69/moving_variance", "shape": [192], "dtype": "float32", "quantization": {"min": 0.3119298219680786, "scale": 0.012169442924798704, "dtype": "uint8"}}, {"name": "batch_normalization_7/beta", "shape": [48], "dtype": "float32", "quantization": {"min": -0.6259138478952295, "scale": 0.009629443813772762, "dtype": "uint8"}}, {"name": "batch_normalization_7/moving_mean", "shape": [48], "dtype": "float32", "quantization": {"min": -2.1740409458384793, "scale": 0.019945329778334672, "dtype": "uint8"}}, {"name": "batch_normalization_7/moving_variance", "shape": [48], "dtype": "float32", "quantization": {"min": 0.3680301010608673, "scale": 0.014270223238888909, "dtype": "uint8"}}, {"name": "batch_normalization_70/beta", "shape": [192], "dtype": "float32", "quantization": {"min": -1.865909457206726, "scale": 0.004504433332705031, "dtype": "uint8"}}, {"name": "batch_normalization_70/moving_mean", "shape": [192], "dtype": "float32", "quantization": {"min": -1.1317527546602135, "scale": 0.0050524676547330965, "dtype": "uint8"}}, {"name": "batch_normalization_70/moving_variance", "shape": [192], "dtype": "float32", "quantization": {"min": 0.11138727515935898, "scale": 0.0026711427990128013, "dtype": "uint8"}}, {"name": "batch_normalization_71/beta", "shape": [192], "dtype": "float32", "quantization": {"min": -1.6039793491363525, "scale": 0.005784372196478003, "dtype": "uint8"}}, {"name": "batch_normalization_71/moving_mean", "shape": [192], "dtype": "float32", "quantization": {"min": -0.47732780867931884, "scale": 0.004920905244116689, "dtype": "uint8"}}, {"name": "batch_normalization_71/moving_variance", "shape": [192], "dtype": "float32", "quantization": {"min": 0.037272851914167404, "scale": 0.0005219906714617037, "dtype": "uint8"}}, {"name": "batch_normalization_72/beta", "shape": [320], "dtype": "float32", "quantization": {"min": -1.540266954197603, "scale": 0.009223155414356905, "dtype": "uint8"}}, {"name": "batch_normalization_72/moving_mean", "shape": [320], "dtype": "float32", "quantization": {"min": -2.0190852207296035, "scale": 0.010461581454557532, "dtype": "uint8"}}, {"name": "batch_normalization_72/moving_variance", "shape": [320], "dtype": "float32", "quantization": {"min": 0.06347450613975525, "scale": 0.003608025172177483, "dtype": "uint8"}}, {"name": "batch_normalization_73/beta", "shape": [192], "dtype": "float32", "quantization": {"min": -0.985390640707577, "scale": 0.012633213342404833, "dtype": "uint8"}}, {"name": "batch_normalization_73/moving_mean", "shape": [192], "dtype": "float32", "quantization": {"min": -0.9022618592954149, "scale": 0.010491416968551336, "dtype": "uint8"}}, {"name": "batch_normalization_73/moving_variance", "shape": [192], "dtype": "float32", "quantization": {"min": 0.03170640394091606, "scale": 0.0026475690889592265, "dtype": "uint8"}}, {"name": "batch_normalization_74/beta", "shape": [192], "dtype": "float32", "quantization": {"min": -1.0769996951608096, "scale": 0.015608691234214633, "dtype": "uint8"}}, {"name": "batch_normalization_74/moving_mean", "shape": [192], "dtype": "float32", "quantization": {"min": -1.7473176166123034, "scale": 0.012570630335340312, "dtype": "uint8"}}, {"name": "batch_normalization_74/moving_variance", "shape": [192], "dtype": "float32", "quantization": {"min": 0.13737867772579193, "scale": 0.006850161330372679, "dtype": "uint8"}}, {"name": "batch_normalization_75/beta", "shape": [192], "dtype": "float32", "quantization": {"min": -1.4387849751640769, "scale": 0.007653111570021685, "dtype": "uint8"}}, {"name": "batch_normalization_75/moving_mean", "shape": [192], "dtype": "float32", "quantization": {"min": -2.253594519110287, "scale": 0.017469724954343308, "dtype": "uint8"}}, {"name": "batch_normalization_75/moving_variance", "shape": [192], "dtype": "float32", "quantization": {"min": 0.17224669456481934, "scale": 0.014315306906606637, "dtype": "uint8"}}, {"name": "batch_normalization_76/beta", "shape": [192], "dtype": "float32", "quantization": {"min": -1.6436317995482799, "scale": 0.012265908951852835, "dtype": "uint8"}}, {"name": "batch_normalization_76/moving_mean", "shape": [192], "dtype": "float32", "quantization": {"min": -1.6223250557394588, "scale": 0.009012916976330327, "dtype": "uint8"}}, {"name": "batch_normalization_76/moving_variance", "shape": [192], "dtype": "float32", "quantization": {"min": 0.10091816633939743, "scale": 0.024782416896492826, "dtype": "uint8"}}, {"name": "batch_normalization_77/beta", "shape": [320], "dtype": "float32", "quantization": {"min": -1.6236799055454778, "scale": 0.008776648138083664, "dtype": "uint8"}}, {"name": "batch_normalization_77/moving_mean", "shape": [320], "dtype": "float32", "quantization": {"min": -2.9638912789961873, "scale": 0.017033857925265444, "dtype": "uint8"}}, {"name": "batch_normalization_77/moving_variance", "shape": [320], "dtype": "float32", "quantization": {"min": 0.11361116915941238, "scale": 0.023207617945530834, "dtype": "uint8"}}, {"name": "batch_normalization_78/beta", "shape": [384], "dtype": "float32", "quantization": {"min": -1.4153826966005212, "scale": 0.008277091792985504, "dtype": "uint8"}}, {"name": "batch_normalization_78/moving_mean", "shape": [384], "dtype": "float32", "quantization": {"min": -0.9769486890119664, "scale": 0.00707933832617367, "dtype": "uint8"}}, {"name": "batch_normalization_78/moving_variance", "shape": [384], "dtype": "float32", "quantization": {"min": 0.19088256359100342, "scale": 0.0073945882273655315, "dtype": "uint8"}}, {"name": "batch_normalization_79/beta", "shape": [384], "dtype": "float32", "quantization": {"min": -2.0473411083221436, "scale": 0.004208615013197356, "dtype": "uint8"}}, {"name": "batch_normalization_79/moving_mean", "shape": [384], "dtype": "float32", "quantization": {"min": -0.7610570852663003, "scale": 0.0033089438489839144, "dtype": "uint8"}}, {"name": "batch_normalization_79/moving_variance", "shape": [384], "dtype": "float32", "quantization": {"min": 0.05480360612273216, "scale": 0.001661744786828172, "dtype": "uint8"}}, {"name": "batch_normalization_8/beta", "shape": [64], "dtype": "float32", "quantization": {"min": -1.2169222845750698, "scale": 0.021349513764474908, "dtype": "uint8"}}, {"name": "batch_normalization_8/moving_mean", "shape": [64], "dtype": "float32", "quantization": {"min": -7.352502991171444, "scale": 0.03551933812160118, "dtype": "uint8"}}, {"name": "batch_normalization_8/moving_variance", "shape": [64], "dtype": "float32", "quantization": {"min": 1.2515424489974976, "scale": 0.03510500449760287, "dtype": "uint8"}}, {"name": "batch_normalization_80/beta", "shape": [384], "dtype": "float32", "quantization": {"min": -1.7098569869995117, "scale": 0.003118572515599868, "dtype": "uint8"}}, {"name": "batch_normalization_80/moving_mean", "shape": [384], "dtype": "float32", "quantization": {"min": -0.7364731842980665, "scale": 0.003425456671153798, "dtype": "uint8"}}, {"name": "batch_normalization_80/moving_variance", "shape": [384], "dtype": "float32", "quantization": {"min": 0.06618082523345947, "scale": 0.0018710627275354721, "dtype": "uint8"}}, {"name": "batch_normalization_81/beta", "shape": [448], "dtype": "float32", "quantization": {"min": -1.869015963054171, "scale": 0.008693097502577539, "dtype": "uint8"}}, {"name": "batch_normalization_81/moving_mean", "shape": [448], "dtype": "float32", "quantization": {"min": -1.1766659362643372, "scale": 0.008286379832847445, "dtype": "uint8"}}, {"name": "batch_normalization_81/moving_variance", "shape": [448], "dtype": "float32", "quantization": {"min": 0.14993160963058472, "scale": 0.004515989387736601, "dtype": "uint8"}}, {"name": "batch_normalization_82/beta", "shape": [384], "dtype": "float32", "quantization": {"min": -1.3327109813690183, "scale": 0.008710529289993585, "dtype": "uint8"}}, {"name": "batch_normalization_82/moving_mean", "shape": [384], "dtype": "float32", "quantization": {"min": -1.1086185679716223, "scale": 0.008940472322351792, "dtype": "uint8"}}, {"name": "batch_normalization_82/moving_variance", "shape": [384], "dtype": "float32", "quantization": {"min": 0.21444351971149445, "scale": 0.011961153149604798, "dtype": "uint8"}}, {"name": "batch_normalization_83/beta", "shape": [384], "dtype": "float32", "quantization": {"min": -1.818679837619557, "scale": 0.015412540996775907, "dtype": "uint8"}}, {"name": "batch_normalization_83/moving_mean", "shape": [384], "dtype": "float32", "quantization": {"min": -2.0038957876317642, "scale": 0.012845485818152334, "dtype": "uint8"}}, {"name": "batch_normalization_83/moving_variance", "shape": [384], "dtype": "float32", "quantization": {"min": 0.07089755684137344, "scale": 0.02103717663124496, "dtype": "uint8"}}, {"name": "batch_normalization_84/beta", "shape": [384], "dtype": "float32", "quantization": {"min": -1.7786205541853812, "scale": 0.008158809881584317, "dtype": "uint8"}}, {"name": "batch_normalization_84/moving_mean", "shape": [384], "dtype": "float32", "quantization": {"min": -1.3955397058935726, "scale": 0.01722888525794534, "dtype": "uint8"}}, {"name": "batch_normalization_84/moving_variance", "shape": [384], "dtype": "float32", "quantization": {"min": 0.07342959940433502, "scale": 0.011137770613034566, "dtype": "uint8"}}, {"name": "batch_normalization_85/beta", "shape": [192], "dtype": "float32", "quantization": {"min": -1.178499460220337, "scale": 0.0028658638982211842, "dtype": "uint8"}}, {"name": "batch_normalization_85/moving_mean", "shape": [192], "dtype": "float32", "quantization": {"min": -1.690884064693077, "scale": 0.010186048582488415, "dtype": "uint8"}}, {"name": "batch_normalization_85/moving_variance", "shape": [192], "dtype": "float32", "quantization": {"min": 0.14086772501468658, "scale": 0.00910748775098838, "dtype": "uint8"}}, {"name": "batch_normalization_86/beta", "shape": [320], "dtype": "float32", "quantization": {"min": -0.5220519305736411, "scale": 0.0020882077222945643, "dtype": "uint8"}}, {"name": "batch_normalization_86/moving_mean", "shape": [320], "dtype": "float32", "quantization": {"min": -0.5231765800831365, "scale": 0.0036081143454009413, "dtype": "uint8"}}, {"name": "batch_normalization_86/moving_variance", "shape": [320], "dtype": "float32", "quantization": {"min": 0.11893065273761749, "scale": 0.005666278098143783, "dtype": "uint8"}}, {"name": "batch_normalization_87/beta", "shape": [384], "dtype": "float32", "quantization": {"min": -1.984124174889396, "scale": 0.008818329666175094, "dtype": "uint8"}}, {"name": "batch_normalization_87/moving_mean", "shape": [384], "dtype": "float32", "quantization": {"min": -0.5652224242687225, "scale": 0.0036942642109066832, "dtype": "uint8"}}, {"name": "batch_normalization_87/moving_variance", "shape": [384], "dtype": "float32", "quantization": {"min": 0.06085425242781639, "scale": 0.03796012239421115, "dtype": "uint8"}}, {"name": "batch_normalization_88/beta", "shape": [384], "dtype": "float32", "quantization": {"min": -0.3602467477321625, "scale": 0.001247984813708885, "dtype": "uint8"}}, {"name": "batch_normalization_88/moving_mean", "shape": [384], "dtype": "float32", "quantization": {"min": -0.0991711297455956, "scale": 0.0008549235322896172, "dtype": "uint8"}}, {"name": "batch_normalization_88/moving_variance", "shape": [384], "dtype": "float32", "quantization": {"min": 0.021573534235358238, "scale": 0.0022643732454846886, "dtype": "uint8"}}, {"name": "batch_normalization_89/beta", "shape": [384], "dtype": "float32", "quantization": {"min": -0.29050213098526, "scale": 0.0009703184897993125, "dtype": "uint8"}}, {"name": "batch_normalization_89/moving_mean", "shape": [384], "dtype": "float32", "quantization": {"min": -0.12789016552999907, "scale": 0.0010231213242399926, "dtype": "uint8"}}, {"name": "batch_normalization_89/moving_variance", "shape": [384], "dtype": "float32", "quantization": {"min": 0.01962556503713131, "scale": 0.002291068997161061, "dtype": "uint8"}}, {"name": "batch_normalization_9/beta", "shape": [64], "dtype": "float32", "quantization": {"min": -1.2553448396570541, "scale": 0.017435344995236864, "dtype": "uint8"}}, {"name": "batch_normalization_9/moving_mean", "shape": [64], "dtype": "float32", "quantization": {"min": -9.159099926668056, "scale": 0.05174632726931105, "dtype": "uint8"}}, {"name": "batch_normalization_9/moving_variance", "shape": [64], "dtype": "float32", "quantization": {"min": 0.36967048048973083, "scale": 0.022706968293470495, "dtype": "uint8"}}, {"name": "batch_normalization_90/beta", "shape": [448], "dtype": "float32", "quantization": {"min": -1.9150965461543963, "scale": 0.008825329705780628, "dtype": "uint8"}}, {"name": "batch_normalization_90/moving_mean", "shape": [448], "dtype": "float32", "quantization": {"min": -1.0748392633363313, "scale": 0.011080817147797229, "dtype": "uint8"}}, {"name": "batch_normalization_90/moving_variance", "shape": [448], "dtype": "float32", "quantization": {"min": 0.058019232004880905, "scale": 0.03696253692694739, "dtype": "uint8"}}, {"name": "batch_normalization_91/beta", "shape": [384], "dtype": "float32", "quantization": {"min": -1.4989316603716683, "scale": 0.016117544735179228, "dtype": "uint8"}}, {"name": "batch_normalization_91/moving_mean", "shape": [384], "dtype": "float32", "quantization": {"min": -1.0672029087356492, "scale": 0.0048954261868607764, "dtype": "uint8"}}, {"name": "batch_normalization_91/moving_variance", "shape": [384], "dtype": "float32", "quantization": {"min": 0.04761062562465668, "scale": 0.02329025134152057, "dtype": "uint8"}}, {"name": "batch_normalization_92/beta", "shape": [384], "dtype": "float32", "quantization": {"min": -0.4021552567680677, "scale": 0.0018197070441994014, "dtype": "uint8"}}, {"name": "batch_normalization_92/moving_mean", "shape": [384], "dtype": "float32", "quantization": {"min": -0.2961117188135783, "scale": 0.0027935067812601727, "dtype": "uint8"}}, {"name": "batch_normalization_92/moving_variance", "shape": [384], "dtype": "float32", "quantization": {"min": 0.3863965570926666, "scale": 0.02258765405299617, "dtype": "uint8"}}, {"name": "batch_normalization_93/beta", "shape": [384], "dtype": "float32", "quantization": {"min": -0.4592238664627075, "scale": 0.0011769139883564968, "dtype": "uint8"}}, {"name": "batch_normalization_93/moving_mean", "shape": [384], "dtype": "float32", "quantization": {"min": -0.29778090224546544, "scale": 0.0027572305763469023, "dtype": "uint8"}}, {"name": "batch_normalization_93/moving_variance", "shape": [384], "dtype": "float32", "quantization": {"min": 0.3583631217479706, "scale": 0.01633430754437166, "dtype": "uint8"}}, {"name": "batch_normalization_94/beta", "shape": [192], "dtype": "float32", "quantization": {"min": -0.314007496249442, "scale": 0.0017640870575811349, "dtype": "uint8"}}, {"name": "batch_normalization_94/moving_mean", "shape": [192], "dtype": "float32", "quantization": {"min": -0.7145729660987854, "scale": 0.004203370388816385, "dtype": "uint8"}}, {"name": "batch_normalization_94/moving_variance", "shape": [192], "dtype": "float32", "quantization": {"min": 0.11457707732915878, "scale": 0.008541139814199185, "dtype": "uint8"}}, {"name": "conv2d_1/kernel", "shape": [3, 3, 3, 32], "dtype": "float32", "quantization": {"min": -0.7515598654747009, "scale": 0.006423588593800863, "dtype": "uint8"}}, {"name": "conv2d_10/kernel", "shape": [3, 3, 64, 96], "dtype": "float32", "quantization": {"min": -0.5314577747793758, "scale": 0.004088136729072122, "dtype": "uint8"}}, {"name": "conv2d_11/kernel", "shape": [3, 3, 96, 96], "dtype": "float32", "quantization": {"min": -0.297173446299983, "scale": 0.0027015767845453, "dtype": "uint8"}}, {"name": "conv2d_12/kernel", "shape": [1, 1, 192, 32], "dtype": "float32", "quantization": {"min": -0.6043872510685641, "scale": 0.003874277250439513, "dtype": "uint8"}}, {"name": "conv2d_13/kernel", "shape": [1, 1, 256, 64], "dtype": "float32", "quantization": {"min": -0.6367825031280518, "scale": 0.005489504337310791, "dtype": "uint8"}}, {"name": "conv2d_14/kernel", "shape": [1, 1, 256, 48], "dtype": "float32", "quantization": {"min": -0.6980268389570946, "scale": 0.004256261213153016, "dtype": "uint8"}}, {"name": "conv2d_15/kernel", "shape": [5, 5, 48, 64], "dtype": "float32", "quantization": {"min": -0.37809036514338323, "scale": 0.0034062195057962454, "dtype": "uint8"}}, {"name": "conv2d_16/kernel", "shape": [1, 1, 256, 64], "dtype": "float32", "quantization": {"min": -0.38000125464271095, "scale": 0.002945746160021015, "dtype": "uint8"}}, {"name": "conv2d_17/kernel", "shape": [3, 3, 64, 96], "dtype": "float32", "quantization": {"min": -0.36159335772196455, "scale": 0.002658774689132092, "dtype": "uint8"}}, {"name": "conv2d_18/kernel", "shape": [3, 3, 96, 96], "dtype": "float32", "quantization": {"min": -0.322937131395527, "scale": 0.0025229463390275546, "dtype": "uint8"}}, {"name": "conv2d_19/kernel", "shape": [1, 1, 256, 64], "dtype": "float32", "quantization": {"min": -0.49620920665123885, "scale": 0.0037308962906108184, "dtype": "uint8"}}, {"name": "conv2d_2/kernel", "shape": [3, 3, 32, 32], "dtype": "float32", "quantization": {"min": -0.9963670036372017, "scale": 0.00784540947745828, "dtype": "uint8"}}, {"name": "conv2d_20/kernel", "shape": [1, 1, 288, 64], "dtype": "float32", "quantization": {"min": -0.9467216884388643, "scale": 0.005954224455590342, "dtype": "uint8"}}, {"name": "conv2d_21/kernel", "shape": [1, 1, 288, 48], "dtype": "float32", "quantization": {"min": -0.36753161491132247, "scale": 0.0028939497237112006, "dtype": "uint8"}}, {"name": "conv2d_22/kernel", "shape": [5, 5, 48, 64], "dtype": "float32", "quantization": {"min": -0.28142107234281655, "scale": 0.0023451756028568045, "dtype": "uint8"}}, {"name": "conv2d_23/kernel", "shape": [1, 1, 288, 64], "dtype": "float32", "quantization": {"min": -0.5600246597738827, "scale": 0.004912497015560374, "dtype": "uint8"}}, {"name": "conv2d_24/kernel", "shape": [3, 3, 64, 96], "dtype": "float32", "quantization": {"min": -0.40741646079456106, "scale": 0.0032334639745600084, "dtype": "uint8"}}, {"name": "conv2d_25/kernel", "shape": [3, 3, 96, 96], "dtype": "float32", "quantization": {"min": -0.2517923231218375, "scale": 0.0026786417353386973, "dtype": "uint8"}}, {"name": "conv2d_26/kernel", "shape": [1, 1, 288, 64], "dtype": "float32", "quantization": {"min": -0.40744167694858474, "scale": 0.00420042965926376, "dtype": "uint8"}}, {"name": "conv2d_27/kernel", "shape": [3, 3, 288, 384], "dtype": "float32", "quantization": {"min": -0.17904583583859837, "scale": 0.0023872778111813115, "dtype": "uint8"}}, {"name": "conv2d_28/kernel", "shape": [1, 1, 288, 64], "dtype": "float32", "quantization": {"min": -0.3550921758015951, "scale": 0.0030092557271321615, "dtype": "uint8"}}, {"name": "conv2d_29/kernel", "shape": [3, 3, 64, 96], "dtype": "float32", "quantization": {"min": -0.21044881904826443, "scale": 0.0021044881904826443, "dtype": "uint8"}}, {"name": "conv2d_3/kernel", "shape": [3, 3, 32, 64], "dtype": "float32", "quantization": {"min": -0.9826949535631666, "scale": 0.006920386996923708, "dtype": "uint8"}}, {"name": "conv2d_30/kernel", "shape": [3, 3, 96, 96], "dtype": "float32", "quantization": {"min": -0.142222724182933, "scale": 0.0013291843381582522, "dtype": "uint8"}}, {"name": "conv2d_31/kernel", "shape": [1, 1, 768, 192], "dtype": "float32", "quantization": {"min": -0.6299613606696035, "scale": 0.004736551583981981, "dtype": "uint8"}}, {"name": "conv2d_32/kernel", "shape": [1, 1, 768, 128], "dtype": "float32", "quantization": {"min": -0.28287766400505515, "scale": 0.0029466423333859913, "dtype": "uint8"}}, {"name": "conv2d_33/kernel", "shape": [1, 7, 128, 128], "dtype": "float32", "quantization": {"min": -0.37715829119962807, "scale": 0.003308406063154632, "dtype": "uint8"}}, {"name": "conv2d_34/kernel", "shape": [7, 1, 128, 192], "dtype": "float32", "quantization": {"min": -0.2915347753786573, "scale": 0.002602989065880869, "dtype": "uint8"}}, {"name": "conv2d_35/kernel", "shape": [1, 1, 768, 128], "dtype": "float32", "quantization": {"min": -0.5098388725636052, "scale": 0.0034217373997557396, "dtype": "uint8"}}, {"name": "conv2d_36/kernel", "shape": [7, 1, 128, 128], "dtype": "float32", "quantization": {"min": -0.29266455173492434, "scale": 0.002956207593282064, "dtype": "uint8"}}, {"name": "conv2d_37/kernel", "shape": [1, 7, 128, 128], "dtype": "float32", "quantization": {"min": -0.3063901633608575, "scale": 0.002664262290094413, "dtype": "uint8"}}, {"name": "conv2d_38/kernel", "shape": [7, 1, 128, 128], "dtype": "float32", "quantization": {"min": -0.2562146642628838, "scale": 0.002227953602285946, "dtype": "uint8"}}, {"name": "conv2d_39/kernel", "shape": [1, 7, 128, 192], "dtype": "float32", "quantization": {"min": -0.32483990402782664, "scale": 0.0024062215113172343, "dtype": "uint8"}}, {"name": "conv2d_4/kernel", "shape": [1, 1, 64, 80], "dtype": "float32", "quantization": {"min": -1.0175340128879922, "scale": 0.008771844938689587, "dtype": "uint8"}}, {"name": "conv2d_40/kernel", "shape": [1, 1, 768, 192], "dtype": "float32", "quantization": {"min": -0.5300707817077637, "scale": 0.003897579277262968, "dtype": "uint8"}}, {"name": "conv2d_41/kernel", "shape": [1, 1, 768, 192], "dtype": "float32", "quantization": {"min": -0.4742822464774637, "scale": 0.0037345058777753046, "dtype": "uint8"}}, {"name": "conv2d_42/kernel", "shape": [1, 1, 768, 160], "dtype": "float32", "quantization": {"min": -0.4733707100737329, "scale": 0.004080781983394249, "dtype": "uint8"}}, {"name": "conv2d_43/kernel", "shape": [1, 7, 160, 160], "dtype": "float32", "quantization": {"min": -0.31529887493918923, "scale": 0.0028405304048575606, "dtype": "uint8"}}, {"name": "conv2d_44/kernel", "shape": [7, 1, 160, 192], "dtype": "float32", "quantization": {"min": -0.2984846812837264, "scale": 0.0025955189676845777, "dtype": "uint8"}}, {"name": "conv2d_45/kernel", "shape": [1, 1, 768, 160], "dtype": "float32", "quantization": {"min": -0.756424422825084, "scale": 0.0054813363972832175, "dtype": "uint8"}}, {"name": "conv2d_46/kernel", "shape": [7, 1, 160, 160], "dtype": "float32", "quantization": {"min": -0.3355672222726485, "scale": 0.0028680959168602437, "dtype": "uint8"}}, {"name": "conv2d_47/kernel", "shape": [1, 7, 160, 160], "dtype": "float32", "quantization": {"min": -0.22706727812103197, "scale": 0.002122124094589084, "dtype": "uint8"}}, {"name": "conv2d_48/kernel", "shape": [7, 1, 160, 160], "dtype": "float32", "quantization": {"min": -0.2144267187983382, "scale": 0.002257123355771981, "dtype": "uint8"}}, {"name": "conv2d_49/kernel", "shape": [1, 7, 160, 192], "dtype": "float32", "quantization": {"min": -0.3024808161398944, "scale": 0.002585306120853798, "dtype": "uint8"}}, {"name": "conv2d_5/kernel", "shape": [3, 3, 80, 192], "dtype": "float32", "quantization": {"min": -0.5794109293058807, "scale": 0.005267372084598915, "dtype": "uint8"}}, {"name": "conv2d_50/kernel", "shape": [1, 1, 768, 192], "dtype": "float32", "quantization": {"min": -0.554896311900195, "scale": 0.0038006596705492807, "dtype": "uint8"}}, {"name": "conv2d_51/kernel", "shape": [1, 1, 768, 192], "dtype": "float32", "quantization": {"min": -1.2061398295795216, "scale": 0.006931838101031733, "dtype": "uint8"}}, {"name": "conv2d_52/kernel", "shape": [1, 1, 768, 160], "dtype": "float32", "quantization": {"min": -0.3730403196577932, "scale": 0.0028695409204445633, "dtype": "uint8"}}, {"name": "conv2d_53/kernel", "shape": [1, 7, 160, 160], "dtype": "float32", "quantization": {"min": -0.3463286845123067, "scale": 0.003011553778367884, "dtype": "uint8"}}, {"name": "conv2d_54/kernel", "shape": [7, 1, 160, 192], "dtype": "float32", "quantization": {"min": -0.37797666168680377, "scale": 0.0027589537349401736, "dtype": "uint8"}}, {"name": "conv2d_55/kernel", "shape": [1, 1, 768, 160], "dtype": "float32", "quantization": {"min": -0.4141439642391953, "scale": 0.004989686316134883, "dtype": "uint8"}}, {"name": "conv2d_56/kernel", "shape": [7, 1, 160, 160], "dtype": "float32", "quantization": {"min": -0.3559323572645, "scale": 0.0032357487024045456, "dtype": "uint8"}}, {"name": "conv2d_57/kernel", "shape": [1, 7, 160, 160], "dtype": "float32", "quantization": {"min": -0.2674277156007056, "scale": 0.0026742771560070563, "dtype": "uint8"}}, {"name": "conv2d_58/kernel", "shape": [7, 1, 160, 160], "dtype": "float32", "quantization": {"min": -0.5307076104715759, "scale": 0.0035617960434333952, "dtype": "uint8"}}, {"name": "conv2d_59/kernel", "shape": [1, 7, 160, 192], "dtype": "float32", "quantization": {"min": -0.4569946948219748, "scale": 0.0036854410872739904, "dtype": "uint8"}}, {"name": "conv2d_6/kernel", "shape": [1, 1, 192, 64], "dtype": "float32", "quantization": {"min": -0.670501438776652, "scale": 0.005634465872072706, "dtype": "uint8"}}, {"name": "conv2d_60/kernel", "shape": [1, 1, 768, 192], "dtype": "float32", "quantization": {"min": -0.7935055354062248, "scale": 0.004408364085590138, "dtype": "uint8"}}, {"name": "conv2d_61/kernel", "shape": [1, 1, 768, 192], "dtype": "float32", "quantization": {"min": -1.0109173382029812, "scale": 0.006053397234748391, "dtype": "uint8"}}, {"name": "conv2d_62/kernel", "shape": [1, 1, 768, 192], "dtype": "float32", "quantization": {"min": -0.41344635837218335, "scale": 0.004645464700811049, "dtype": "uint8"}}, {"name": "conv2d_63/kernel", "shape": [1, 7, 192, 192], "dtype": "float32", "quantization": {"min": -0.24348092184347264, "scale": 0.004508905960064308, "dtype": "uint8"}}, {"name": "conv2d_64/kernel", "shape": [7, 1, 192, 192], "dtype": "float32", "quantization": {"min": -0.4806287989896886, "scale": 0.004005239991580738, "dtype": "uint8"}}, {"name": "conv2d_65/kernel", "shape": [1, 1, 768, 192], "dtype": "float32", "quantization": {"min": -0.3917752130358827, "scale": 0.0030136554848914053, "dtype": "uint8"}}, {"name": "conv2d_66/kernel", "shape": [7, 1, 192, 192], "dtype": "float32", "quantization": {"min": -0.20425691803296406, "scale": 0.002172945936520894, "dtype": "uint8"}}, {"name": "conv2d_67/kernel", "shape": [1, 7, 192, 192], "dtype": "float32", "quantization": {"min": -0.22208931896032072, "scale": 0.0019312114692201802, "dtype": "uint8"}}, {"name": "conv2d_68/kernel", "shape": [7, 1, 192, 192], "dtype": "float32", "quantization": {"min": -0.1574226176037508, "scale": 0.0016063532408546, "dtype": "uint8"}}, {"name": "conv2d_69/kernel", "shape": [1, 7, 192, 192], "dtype": "float32", "quantization": {"min": -0.1563245475292206, "scale": 0.0015951484441757203, "dtype": "uint8"}}, {"name": "conv2d_7/kernel", "shape": [1, 1, 192, 48], "dtype": "float32", "quantization": {"min": -0.6889615984523997, "scale": 0.005467949194066664, "dtype": "uint8"}}, {"name": "conv2d_70/kernel", "shape": [1, 1, 768, 192], "dtype": "float32", "quantization": {"min": -0.5254201654125663, "scale": 0.003574286839541267, "dtype": "uint8"}}, {"name": "conv2d_71/kernel", "shape": [1, 1, 768, 192], "dtype": "float32", "quantization": {"min": -0.14087693007553326, "scale": 0.001394821089856765, "dtype": "uint8"}}, {"name": "conv2d_72/kernel", "shape": [3, 3, 192, 320], "dtype": "float32", "quantization": {"min": -0.1017690990485397, "scale": 0.0009785490293128818, "dtype": "uint8"}}, {"name": "conv2d_73/kernel", "shape": [1, 1, 768, 192], "dtype": "float32", "quantization": {"min": -0.27043156717337813, "scale": 0.0035120982749789367, "dtype": "uint8"}}, {"name": "conv2d_74/kernel", "shape": [1, 7, 192, 192], "dtype": "float32", "quantization": {"min": -0.1989350945341821, "scale": 0.0017762062011980543, "dtype": "uint8"}}, {"name": "conv2d_75/kernel", "shape": [7, 1, 192, 192], "dtype": "float32", "quantization": {"min": -0.21929225535953745, "scale": 0.0017828638647116866, "dtype": "uint8"}}, {"name": "conv2d_76/kernel", "shape": [3, 3, 192, 192], "dtype": "float32", "quantization": {"min": -0.31502492287579703, "scale": 0.003316051819745232, "dtype": "uint8"}}, {"name": "conv2d_77/kernel", "shape": [1, 1, 1280, 320], "dtype": "float32", "quantization": {"min": -0.2736586353358101, "scale": 0.0035084440427667956, "dtype": "uint8"}}, {"name": "conv2d_78/kernel", "shape": [1, 1, 1280, 384], "dtype": "float32", "quantization": {"min": -0.24273421998117484, "scale": 0.0021672698212604896, "dtype": "uint8"}}, {"name": "conv2d_79/kernel", "shape": [1, 3, 384, 384], "dtype": "float32", "quantization": {"min": -0.1003472120738497, "scale": 0.0010239511436107112, "dtype": "uint8"}}, {"name": "conv2d_8/kernel", "shape": [5, 5, 48, 64], "dtype": "float32", "quantization": {"min": -0.8959833215264714, "scale": 0.007859502820407644, "dtype": "uint8"}}, {"name": "conv2d_80/kernel", "shape": [3, 1, 384, 384], "dtype": "float32", "quantization": {"min": -0.12109428144553128, "scale": 0.0013307063895113328, "dtype": "uint8"}}, {"name": "conv2d_81/kernel", "shape": [1, 1, 1280, 448], "dtype": "float32", "quantization": {"min": -0.3801819539537617, "scale": 0.004271707347795075, "dtype": "uint8"}}, {"name": "conv2d_82/kernel", "shape": [3, 3, 448, 384], "dtype": "float32", "quantization": {"min": -0.23576255931573753, "scale": 0.0026195839923970838, "dtype": "uint8"}}, {"name": "conv2d_83/kernel", "shape": [1, 3, 384, 384], "dtype": "float32", "quantization": {"min": -1.244973014382755, "scale": 0.007454928229836857, "dtype": "uint8"}}, {"name": "conv2d_84/kernel", "shape": [3, 1, 384, 384], "dtype": "float32", "quantization": {"min": -0.25950103998184204, "scale": 0.003052953411551083, "dtype": "uint8"}}, {"name": "conv2d_85/kernel", "shape": [1, 1, 1280, 192], "dtype": "float32", "quantization": {"min": -0.29392333416377797, "scale": 0.0026479579654394413, "dtype": "uint8"}}, {"name": "conv2d_86/kernel", "shape": [1, 1, 2048, 320], "dtype": "float32", "quantization": {"min": -0.13341370236639882, "scale": 0.0018028878698162004, "dtype": "uint8"}}, {"name": "conv2d_87/kernel", "shape": [1, 1, 2048, 384], "dtype": "float32", "quantization": {"min": -0.7490756504675922, "scale": 0.004512503918479471, "dtype": "uint8"}}, {"name": "conv2d_88/kernel", "shape": [1, 3, 384, 384], "dtype": "float32", "quantization": {"min": -0.04267277524751775, "scale": 0.0009482838943892834, "dtype": "uint8"}}, {"name": "conv2d_89/kernel", "shape": [3, 1, 384, 384], "dtype": "float32", "quantization": {"min": -0.044487313663258275, "scale": 0.0009671155144186581, "dtype": "uint8"}}, {"name": "conv2d_9/kernel", "shape": [1, 1, 192, 64], "dtype": "float32", "quantization": {"min": -0.4946352222386528, "scale": 0.004191823917276719, "dtype": "uint8"}}, {"name": "conv2d_90/kernel", "shape": [1, 1, 2048, 448], "dtype": "float32", "quantization": {"min": -0.7601351137254753, "scale": 0.007836444471396652, "dtype": "uint8"}}, {"name": "conv2d_91/kernel", "shape": [3, 3, 448, 384], "dtype": "float32", "quantization": {"min": -0.31073258086746813, "scale": 0.0023902506220574472, "dtype": "uint8"}}, {"name": "conv2d_92/kernel", "shape": [1, 3, 384, 384], "dtype": "float32", "quantization": {"min": -0.09287645027917973, "scale": 0.000938145962415957, "dtype": "uint8"}}, {"name": "conv2d_93/kernel", "shape": [3, 1, 384, 384], "dtype": "float32", "quantization": {"min": -0.061754796522505144, "scale": 0.0007917281605449377, "dtype": "uint8"}}, {"name": "conv2d_94/kernel", "shape": [1, 1, 2048, 192], "dtype": "float32", "quantization": {"min": -0.31682243709470714, "scale": 0.002382123587178249, "dtype": "uint8"}}, {"name": "dense_1/kernel", "shape": [2048, 256], "dtype": "float32", "quantization": {"min": -0.0752635091251018, "scale": 0.0008456574059000202, "dtype": "uint8"}}, {"name": "dense_1/bias", "shape": [256], "dtype": "float32", "quantization": {"min": -0.4126813895562116, "scale": 0.0029904448518566057, "dtype": "uint8"}}, {"name": "dense_2/kernel", "shape": [256, 128], "dtype": "float32", "quantization": {"min": -0.41079130803837494, "scale": 0.003065606776405783, "dtype": "uint8"}}, {"name": "dense_2/bias", "shape": [128], "dtype": "float32", "quantization": {"min": -0.17716065984146268, "scale": 0.003221102906208412, "dtype": "uint8"}}, {"name": "dense_3/kernel", "shape": [128, 5], "dtype": "float32", "quantization": {"min": -0.692766010761261, "scale": 0.00461844007174174, "dtype": "uint8"}}, {"name": "dense_3/bias", "shape": [5], "dtype": "float32", "quantization": {"min": -0.5889016270637512, "scale": 0.00384903024224674, "dtype": "uint8"}}]}]} \ No newline at end of file +{ + "modelTopology": { + "keras_version": "2.2.4", + "backend": "tensorflow", + "model_config": { + "class_name": "Model", + "config": { + "name": "model_1", + "layers": [ + { + "name": "input_1", + "class_name": "InputLayer", + "config": { + "batch_input_shape": [null, 299, 299, 3], + "dtype": "float32", + "sparse": false, + "name": "input_1" + }, + "inbound_nodes": [] + }, + { + "name": "conv2d_1", + "class_name": "Conv2D", + "config": { + "name": "conv2d_1", + "trainable": false, + "filters": 32, + "kernel_size": [3, 3], + "strides": [2, 2], + "padding": "valid", + "data_format": "channels_last", + "dilation_rate": [1, 1], + "activation": "linear", + "use_bias": false, + "kernel_initializer": { + "class_name": "VarianceScaling", + "config": { + "scale": 1.0, + "mode": "fan_avg", + "distribution": "uniform", + "seed": null + } + }, + "bias_initializer": { "class_name": "Zeros", "config": {} }, + "kernel_regularizer": null, + "bias_regularizer": null, + "activity_regularizer": null, + "kernel_constraint": null, + "bias_constraint": null + }, + "inbound_nodes": [[["input_1", 0, 0, {}]]] + }, + { + "name": "batch_normalization_1", + "class_name": "BatchNormalization", + "config": { + "name": "batch_normalization_1", + "trainable": false, + "axis": 3, + "momentum": 0.99, + "epsilon": 0.001, + "center": true, + "scale": false, + "beta_initializer": { "class_name": "Zeros", "config": {} }, + "gamma_initializer": { "class_name": "Ones", "config": {} }, + "moving_mean_initializer": { + "class_name": "Zeros", + "config": {} + }, + "moving_variance_initializer": { + "class_name": "Ones", + "config": {} + }, + "beta_regularizer": null, + "gamma_regularizer": null, + "beta_constraint": null, + "gamma_constraint": null + }, + "inbound_nodes": [[["conv2d_1", 0, 0, {}]]] + }, + { + "name": "activation_1", + "class_name": "Activation", + "config": { + "name": "activation_1", + "trainable": false, + "activation": "relu" + }, + "inbound_nodes": [[["batch_normalization_1", 0, 0, {}]]] + }, + { + "name": "conv2d_2", + "class_name": "Conv2D", + "config": { + "name": "conv2d_2", + "trainable": false, + "filters": 32, + "kernel_size": [3, 3], + "strides": [1, 1], + "padding": "valid", + "data_format": "channels_last", + "dilation_rate": [1, 1], + "activation": "linear", + "use_bias": false, + "kernel_initializer": { + "class_name": "VarianceScaling", + "config": { + "scale": 1.0, + "mode": "fan_avg", + "distribution": "uniform", + "seed": null + } + }, + "bias_initializer": { "class_name": "Zeros", "config": {} }, + "kernel_regularizer": null, + "bias_regularizer": null, + "activity_regularizer": null, + "kernel_constraint": null, + "bias_constraint": null + }, + "inbound_nodes": [[["activation_1", 0, 0, {}]]] + }, + { + "name": "batch_normalization_2", + "class_name": "BatchNormalization", + "config": { + "name": "batch_normalization_2", + "trainable": false, + "axis": 3, + "momentum": 0.99, + "epsilon": 0.001, + "center": true, + "scale": false, + "beta_initializer": { "class_name": "Zeros", "config": {} }, + "gamma_initializer": { "class_name": "Ones", "config": {} }, + "moving_mean_initializer": { + "class_name": "Zeros", + "config": {} + }, + "moving_variance_initializer": { + "class_name": "Ones", + "config": {} + }, + "beta_regularizer": null, + "gamma_regularizer": null, + "beta_constraint": null, + "gamma_constraint": null + }, + "inbound_nodes": [[["conv2d_2", 0, 0, {}]]] + }, + { + "name": "activation_2", + "class_name": "Activation", + "config": { + "name": "activation_2", + "trainable": false, + "activation": "relu" + }, + "inbound_nodes": [[["batch_normalization_2", 0, 0, {}]]] + }, + { + "name": "conv2d_3", + "class_name": "Conv2D", + "config": { + "name": "conv2d_3", + "trainable": false, + "filters": 64, + "kernel_size": [3, 3], + "strides": [1, 1], + "padding": "same", + "data_format": "channels_last", + "dilation_rate": [1, 1], + "activation": "linear", + "use_bias": false, + "kernel_initializer": { + "class_name": "VarianceScaling", + "config": { + "scale": 1.0, + "mode": "fan_avg", + "distribution": "uniform", + "seed": null + } + }, + "bias_initializer": { "class_name": "Zeros", "config": {} }, + "kernel_regularizer": null, + "bias_regularizer": null, + "activity_regularizer": null, + "kernel_constraint": null, + "bias_constraint": null + }, + "inbound_nodes": [[["activation_2", 0, 0, {}]]] + }, + { + "name": "batch_normalization_3", + "class_name": "BatchNormalization", + "config": { + "name": "batch_normalization_3", + "trainable": false, + "axis": 3, + "momentum": 0.99, + "epsilon": 0.001, + "center": true, + "scale": false, + "beta_initializer": { "class_name": "Zeros", "config": {} }, + "gamma_initializer": { "class_name": "Ones", "config": {} }, + "moving_mean_initializer": { + "class_name": "Zeros", + "config": {} + }, + "moving_variance_initializer": { + "class_name": "Ones", + "config": {} + }, + "beta_regularizer": null, + "gamma_regularizer": null, + "beta_constraint": null, + "gamma_constraint": null + }, + "inbound_nodes": [[["conv2d_3", 0, 0, {}]]] + }, + { + "name": "activation_3", + "class_name": "Activation", + "config": { + "name": "activation_3", + "trainable": false, + "activation": "relu" + }, + "inbound_nodes": [[["batch_normalization_3", 0, 0, {}]]] + }, + { + "name": "max_pooling2d_1", + "class_name": "MaxPooling2D", + "config": { + "name": "max_pooling2d_1", + "trainable": false, + "pool_size": [3, 3], + "padding": "valid", + "strides": [2, 2], + "data_format": "channels_last" + }, + "inbound_nodes": [[["activation_3", 0, 0, {}]]] + }, + { + "name": "conv2d_4", + "class_name": "Conv2D", + "config": { + "name": "conv2d_4", + "trainable": false, + "filters": 80, + "kernel_size": [1, 1], + "strides": [1, 1], + "padding": "valid", + "data_format": "channels_last", + "dilation_rate": [1, 1], + "activation": "linear", + "use_bias": false, + "kernel_initializer": { + "class_name": "VarianceScaling", + "config": { + "scale": 1.0, + "mode": "fan_avg", + "distribution": "uniform", + "seed": null + } + }, + "bias_initializer": { "class_name": "Zeros", "config": {} }, + "kernel_regularizer": null, + "bias_regularizer": null, + "activity_regularizer": null, + "kernel_constraint": null, + "bias_constraint": null + }, + "inbound_nodes": [[["max_pooling2d_1", 0, 0, {}]]] + }, + { + "name": "batch_normalization_4", + "class_name": "BatchNormalization", + "config": { + "name": "batch_normalization_4", + "trainable": false, + "axis": 3, + "momentum": 0.99, + "epsilon": 0.001, + "center": true, + "scale": false, + "beta_initializer": { "class_name": "Zeros", "config": {} }, + "gamma_initializer": { "class_name": "Ones", "config": {} }, + "moving_mean_initializer": { + "class_name": "Zeros", + "config": {} + }, + "moving_variance_initializer": { + "class_name": "Ones", + "config": {} + }, + "beta_regularizer": null, + "gamma_regularizer": null, + "beta_constraint": null, + "gamma_constraint": null + }, + "inbound_nodes": [[["conv2d_4", 0, 0, {}]]] + }, + { + "name": "activation_4", + "class_name": "Activation", + "config": { + "name": "activation_4", + "trainable": false, + "activation": "relu" + }, + "inbound_nodes": [[["batch_normalization_4", 0, 0, {}]]] + }, + { + "name": "conv2d_5", + "class_name": "Conv2D", + "config": { + "name": "conv2d_5", + "trainable": false, + "filters": 192, + "kernel_size": [3, 3], + "strides": [1, 1], + "padding": "valid", + "data_format": "channels_last", + "dilation_rate": [1, 1], + "activation": "linear", + "use_bias": false, + "kernel_initializer": { + "class_name": "VarianceScaling", + "config": { + "scale": 1.0, + "mode": "fan_avg", + "distribution": "uniform", + "seed": null + } + }, + "bias_initializer": { "class_name": "Zeros", "config": {} }, + "kernel_regularizer": null, + "bias_regularizer": null, + "activity_regularizer": null, + "kernel_constraint": null, + "bias_constraint": null + }, + "inbound_nodes": [[["activation_4", 0, 0, {}]]] + }, + { + "name": "batch_normalization_5", + "class_name": "BatchNormalization", + "config": { + "name": "batch_normalization_5", + "trainable": false, + "axis": 3, + "momentum": 0.99, + "epsilon": 0.001, + "center": true, + "scale": false, + "beta_initializer": { "class_name": "Zeros", "config": {} }, + "gamma_initializer": { "class_name": "Ones", "config": {} }, + "moving_mean_initializer": { + "class_name": "Zeros", + "config": {} + }, + "moving_variance_initializer": { + "class_name": "Ones", + "config": {} + }, + "beta_regularizer": null, + "gamma_regularizer": null, + "beta_constraint": null, + "gamma_constraint": null + }, + "inbound_nodes": [[["conv2d_5", 0, 0, {}]]] + }, + { + "name": "activation_5", + "class_name": "Activation", + "config": { + "name": "activation_5", + "trainable": false, + "activation": "relu" + }, + "inbound_nodes": [[["batch_normalization_5", 0, 0, {}]]] + }, + { + "name": "max_pooling2d_2", + "class_name": "MaxPooling2D", + "config": { + "name": "max_pooling2d_2", + "trainable": false, + "pool_size": [3, 3], + "padding": "valid", + "strides": [2, 2], + "data_format": "channels_last" + }, + "inbound_nodes": [[["activation_5", 0, 0, {}]]] + }, + { + "name": "conv2d_9", + "class_name": "Conv2D", + "config": { + "name": "conv2d_9", + "trainable": false, + "filters": 64, + "kernel_size": [1, 1], + "strides": [1, 1], + "padding": "same", + "data_format": "channels_last", + "dilation_rate": [1, 1], + "activation": "linear", + "use_bias": false, + "kernel_initializer": { + "class_name": "VarianceScaling", + "config": { + "scale": 1.0, + "mode": "fan_avg", + "distribution": "uniform", + "seed": null + } + }, + "bias_initializer": { "class_name": "Zeros", "config": {} }, + "kernel_regularizer": null, + "bias_regularizer": null, + "activity_regularizer": null, + "kernel_constraint": null, + "bias_constraint": null + }, + "inbound_nodes": [[["max_pooling2d_2", 0, 0, {}]]] + }, + { + "name": "batch_normalization_9", + "class_name": "BatchNormalization", + "config": { + "name": "batch_normalization_9", + "trainable": false, + "axis": 3, + "momentum": 0.99, + "epsilon": 0.001, + "center": true, + "scale": false, + "beta_initializer": { "class_name": "Zeros", "config": {} }, + "gamma_initializer": { "class_name": "Ones", "config": {} }, + "moving_mean_initializer": { + "class_name": "Zeros", + "config": {} + }, + "moving_variance_initializer": { + "class_name": "Ones", + "config": {} + }, + "beta_regularizer": null, + "gamma_regularizer": null, + "beta_constraint": null, + "gamma_constraint": null + }, + "inbound_nodes": [[["conv2d_9", 0, 0, {}]]] + }, + { + "name": "activation_9", + "class_name": "Activation", + "config": { + "name": "activation_9", + "trainable": false, + "activation": "relu" + }, + "inbound_nodes": [[["batch_normalization_9", 0, 0, {}]]] + }, + { + "name": "conv2d_7", + "class_name": "Conv2D", + "config": { + "name": "conv2d_7", + "trainable": false, + "filters": 48, + "kernel_size": [1, 1], + "strides": [1, 1], + "padding": "same", + "data_format": "channels_last", + "dilation_rate": [1, 1], + "activation": "linear", + "use_bias": false, + "kernel_initializer": { + "class_name": "VarianceScaling", + "config": { + "scale": 1.0, + "mode": "fan_avg", + "distribution": "uniform", + "seed": null + } + }, + "bias_initializer": { "class_name": "Zeros", "config": {} }, + "kernel_regularizer": null, + "bias_regularizer": null, + "activity_regularizer": null, + "kernel_constraint": null, + "bias_constraint": null + }, + "inbound_nodes": [[["max_pooling2d_2", 0, 0, {}]]] + }, + { + "name": "conv2d_10", + "class_name": "Conv2D", + "config": { + "name": "conv2d_10", + "trainable": false, + "filters": 96, + "kernel_size": [3, 3], + "strides": [1, 1], + "padding": "same", + "data_format": "channels_last", + "dilation_rate": [1, 1], + "activation": "linear", + "use_bias": false, + "kernel_initializer": { + "class_name": "VarianceScaling", + "config": { + "scale": 1.0, + "mode": "fan_avg", + "distribution": "uniform", + "seed": null + } + }, + "bias_initializer": { "class_name": "Zeros", "config": {} }, + "kernel_regularizer": null, + "bias_regularizer": null, + "activity_regularizer": null, + "kernel_constraint": null, + "bias_constraint": null + }, + "inbound_nodes": [[["activation_9", 0, 0, {}]]] + }, + { + "name": "batch_normalization_7", + "class_name": "BatchNormalization", + "config": { + "name": "batch_normalization_7", + "trainable": false, + "axis": 3, + "momentum": 0.99, + "epsilon": 0.001, + "center": true, + "scale": false, + "beta_initializer": { "class_name": "Zeros", "config": {} }, + "gamma_initializer": { "class_name": "Ones", "config": {} }, + "moving_mean_initializer": { + "class_name": "Zeros", + "config": {} + }, + "moving_variance_initializer": { + "class_name": "Ones", + "config": {} + }, + "beta_regularizer": null, + "gamma_regularizer": null, + "beta_constraint": null, + "gamma_constraint": null + }, + "inbound_nodes": [[["conv2d_7", 0, 0, {}]]] + }, + { + "name": "batch_normalization_10", + "class_name": "BatchNormalization", + "config": { + "name": "batch_normalization_10", + "trainable": false, + "axis": 3, + "momentum": 0.99, + "epsilon": 0.001, + "center": true, + "scale": false, + "beta_initializer": { "class_name": "Zeros", "config": {} }, + "gamma_initializer": { "class_name": "Ones", "config": {} }, + "moving_mean_initializer": { + "class_name": "Zeros", + "config": {} + }, + "moving_variance_initializer": { + "class_name": "Ones", + "config": {} + }, + "beta_regularizer": null, + "gamma_regularizer": null, + "beta_constraint": null, + "gamma_constraint": null + }, + "inbound_nodes": [[["conv2d_10", 0, 0, {}]]] + }, + { + "name": "activation_7", + "class_name": "Activation", + "config": { + "name": "activation_7", + "trainable": false, + "activation": "relu" + }, + "inbound_nodes": [[["batch_normalization_7", 0, 0, {}]]] + }, + { + "name": "activation_10", + "class_name": "Activation", + "config": { + "name": "activation_10", + "trainable": false, + "activation": "relu" + }, + "inbound_nodes": [[["batch_normalization_10", 0, 0, {}]]] + }, + { + "name": "average_pooling2d_1", + "class_name": "AveragePooling2D", + "config": { + "name": "average_pooling2d_1", + "trainable": false, + "pool_size": [3, 3], + "padding": "same", + "strides": [1, 1], + "data_format": "channels_last" + }, + "inbound_nodes": [[["max_pooling2d_2", 0, 0, {}]]] + }, + { + "name": "conv2d_6", + "class_name": "Conv2D", + "config": { + "name": "conv2d_6", + "trainable": false, + "filters": 64, + "kernel_size": [1, 1], + "strides": [1, 1], + "padding": "same", + "data_format": "channels_last", + "dilation_rate": [1, 1], + "activation": "linear", + "use_bias": false, + "kernel_initializer": { + "class_name": "VarianceScaling", + "config": { + "scale": 1.0, + "mode": "fan_avg", + "distribution": "uniform", + "seed": null + } + }, + "bias_initializer": { "class_name": "Zeros", "config": {} }, + "kernel_regularizer": null, + "bias_regularizer": null, + "activity_regularizer": null, + "kernel_constraint": null, + "bias_constraint": null + }, + "inbound_nodes": [[["max_pooling2d_2", 0, 0, {}]]] + }, + { + "name": "conv2d_8", + "class_name": "Conv2D", + "config": { + "name": "conv2d_8", + "trainable": false, + "filters": 64, + "kernel_size": [5, 5], + "strides": [1, 1], + "padding": "same", + "data_format": "channels_last", + "dilation_rate": [1, 1], + "activation": "linear", + "use_bias": false, + "kernel_initializer": { + "class_name": "VarianceScaling", + "config": { + "scale": 1.0, + "mode": "fan_avg", + "distribution": "uniform", + "seed": null + } + }, + "bias_initializer": { "class_name": "Zeros", "config": {} }, + "kernel_regularizer": null, + "bias_regularizer": null, + "activity_regularizer": null, + "kernel_constraint": null, + "bias_constraint": null + }, + "inbound_nodes": [[["activation_7", 0, 0, {}]]] + }, + { + "name": "conv2d_11", + "class_name": "Conv2D", + "config": { + "name": "conv2d_11", + "trainable": false, + "filters": 96, + "kernel_size": [3, 3], + "strides": [1, 1], + "padding": "same", + "data_format": "channels_last", + "dilation_rate": [1, 1], + "activation": "linear", + "use_bias": false, + "kernel_initializer": { + "class_name": "VarianceScaling", + "config": { + "scale": 1.0, + "mode": "fan_avg", + "distribution": "uniform", + "seed": null + } + }, + "bias_initializer": { "class_name": "Zeros", "config": {} }, + "kernel_regularizer": null, + "bias_regularizer": null, + "activity_regularizer": null, + "kernel_constraint": null, + "bias_constraint": null + }, + "inbound_nodes": [[["activation_10", 0, 0, {}]]] + }, + { + "name": "conv2d_12", + "class_name": "Conv2D", + "config": { + "name": "conv2d_12", + "trainable": false, + "filters": 32, + "kernel_size": [1, 1], + "strides": [1, 1], + "padding": "same", + "data_format": "channels_last", + "dilation_rate": [1, 1], + "activation": "linear", + "use_bias": false, + "kernel_initializer": { + "class_name": "VarianceScaling", + "config": { + "scale": 1.0, + "mode": "fan_avg", + "distribution": "uniform", + "seed": null + } + }, + "bias_initializer": { "class_name": "Zeros", "config": {} }, + "kernel_regularizer": null, + "bias_regularizer": null, + "activity_regularizer": null, + "kernel_constraint": null, + "bias_constraint": null + }, + "inbound_nodes": [[["average_pooling2d_1", 0, 0, {}]]] + }, + { + "name": "batch_normalization_6", + "class_name": "BatchNormalization", + "config": { + "name": "batch_normalization_6", + "trainable": false, + "axis": 3, + "momentum": 0.99, + "epsilon": 0.001, + "center": true, + "scale": false, + "beta_initializer": { "class_name": "Zeros", "config": {} }, + "gamma_initializer": { "class_name": "Ones", "config": {} }, + "moving_mean_initializer": { + "class_name": "Zeros", + "config": {} + }, + "moving_variance_initializer": { + "class_name": "Ones", + "config": {} + }, + "beta_regularizer": null, + "gamma_regularizer": null, + "beta_constraint": null, + "gamma_constraint": null + }, + "inbound_nodes": [[["conv2d_6", 0, 0, {}]]] + }, + { + "name": "batch_normalization_8", + "class_name": "BatchNormalization", + "config": { + "name": "batch_normalization_8", + "trainable": false, + "axis": 3, + "momentum": 0.99, + "epsilon": 0.001, + "center": true, + "scale": false, + "beta_initializer": { "class_name": "Zeros", "config": {} }, + "gamma_initializer": { "class_name": "Ones", "config": {} }, + "moving_mean_initializer": { + "class_name": "Zeros", + "config": {} + }, + "moving_variance_initializer": { + "class_name": "Ones", + "config": {} + }, + "beta_regularizer": null, + "gamma_regularizer": null, + "beta_constraint": null, + "gamma_constraint": null + }, + "inbound_nodes": [[["conv2d_8", 0, 0, {}]]] + }, + { + "name": "batch_normalization_11", + "class_name": "BatchNormalization", + "config": { + "name": "batch_normalization_11", + "trainable": false, + "axis": 3, + "momentum": 0.99, + "epsilon": 0.001, + "center": true, + "scale": false, + "beta_initializer": { "class_name": "Zeros", "config": {} }, + "gamma_initializer": { "class_name": "Ones", "config": {} }, + "moving_mean_initializer": { + "class_name": "Zeros", + "config": {} + }, + "moving_variance_initializer": { + "class_name": "Ones", + "config": {} + }, + "beta_regularizer": null, + "gamma_regularizer": null, + "beta_constraint": null, + "gamma_constraint": null + }, + "inbound_nodes": [[["conv2d_11", 0, 0, {}]]] + }, + { + "name": "batch_normalization_12", + "class_name": "BatchNormalization", + "config": { + "name": "batch_normalization_12", + "trainable": false, + "axis": 3, + "momentum": 0.99, + "epsilon": 0.001, + "center": true, + "scale": false, + "beta_initializer": { "class_name": "Zeros", "config": {} }, + "gamma_initializer": { "class_name": "Ones", "config": {} }, + "moving_mean_initializer": { + "class_name": "Zeros", + "config": {} + }, + "moving_variance_initializer": { + "class_name": "Ones", + "config": {} + }, + "beta_regularizer": null, + "gamma_regularizer": null, + "beta_constraint": null, + "gamma_constraint": null + }, + "inbound_nodes": [[["conv2d_12", 0, 0, {}]]] + }, + { + "name": "activation_6", + "class_name": "Activation", + "config": { + "name": "activation_6", + "trainable": false, + "activation": "relu" + }, + "inbound_nodes": [[["batch_normalization_6", 0, 0, {}]]] + }, + { + "name": "activation_8", + "class_name": "Activation", + "config": { + "name": "activation_8", + "trainable": false, + "activation": "relu" + }, + "inbound_nodes": [[["batch_normalization_8", 0, 0, {}]]] + }, + { + "name": "activation_11", + "class_name": "Activation", + "config": { + "name": "activation_11", + "trainable": false, + "activation": "relu" + }, + "inbound_nodes": [[["batch_normalization_11", 0, 0, {}]]] + }, + { + "name": "activation_12", + "class_name": "Activation", + "config": { + "name": "activation_12", + "trainable": false, + "activation": "relu" + }, + "inbound_nodes": [[["batch_normalization_12", 0, 0, {}]]] + }, + { + "name": "mixed0", + "class_name": "Concatenate", + "config": { "name": "mixed0", "trainable": false, "axis": 3 }, + "inbound_nodes": [ + [ + ["activation_6", 0, 0, {}], + ["activation_8", 0, 0, {}], + ["activation_11", 0, 0, {}], + ["activation_12", 0, 0, {}] + ] + ] + }, + { + "name": "conv2d_16", + "class_name": "Conv2D", + "config": { + "name": "conv2d_16", + "trainable": false, + "filters": 64, + "kernel_size": [1, 1], + "strides": [1, 1], + "padding": "same", + "data_format": "channels_last", + "dilation_rate": [1, 1], + "activation": "linear", + "use_bias": false, + "kernel_initializer": { + "class_name": "VarianceScaling", + "config": { + "scale": 1.0, + "mode": "fan_avg", + "distribution": "uniform", + "seed": null + } + }, + "bias_initializer": { "class_name": "Zeros", "config": {} }, + "kernel_regularizer": null, + "bias_regularizer": null, + "activity_regularizer": null, + "kernel_constraint": null, + "bias_constraint": null + }, + "inbound_nodes": [[["mixed0", 0, 0, {}]]] + }, + { + "name": "batch_normalization_16", + "class_name": "BatchNormalization", + "config": { + "name": "batch_normalization_16", + "trainable": false, + "axis": 3, + "momentum": 0.99, + "epsilon": 0.001, + "center": true, + "scale": false, + "beta_initializer": { "class_name": "Zeros", "config": {} }, + "gamma_initializer": { "class_name": "Ones", "config": {} }, + "moving_mean_initializer": { + "class_name": "Zeros", + "config": {} + }, + "moving_variance_initializer": { + "class_name": "Ones", + "config": {} + }, + "beta_regularizer": null, + "gamma_regularizer": null, + "beta_constraint": null, + "gamma_constraint": null + }, + "inbound_nodes": [[["conv2d_16", 0, 0, {}]]] + }, + { + "name": "activation_16", + "class_name": "Activation", + "config": { + "name": "activation_16", + "trainable": false, + "activation": "relu" + }, + "inbound_nodes": [[["batch_normalization_16", 0, 0, {}]]] + }, + { + "name": "conv2d_14", + "class_name": "Conv2D", + "config": { + "name": "conv2d_14", + "trainable": false, + "filters": 48, + "kernel_size": [1, 1], + "strides": [1, 1], + "padding": "same", + "data_format": "channels_last", + "dilation_rate": [1, 1], + "activation": "linear", + "use_bias": false, + "kernel_initializer": { + "class_name": "VarianceScaling", + "config": { + "scale": 1.0, + "mode": "fan_avg", + "distribution": "uniform", + "seed": null + } + }, + "bias_initializer": { "class_name": "Zeros", "config": {} }, + "kernel_regularizer": null, + "bias_regularizer": null, + "activity_regularizer": null, + "kernel_constraint": null, + "bias_constraint": null + }, + "inbound_nodes": [[["mixed0", 0, 0, {}]]] + }, + { + "name": "conv2d_17", + "class_name": "Conv2D", + "config": { + "name": "conv2d_17", + "trainable": false, + "filters": 96, + "kernel_size": [3, 3], + "strides": [1, 1], + "padding": "same", + "data_format": "channels_last", + "dilation_rate": [1, 1], + "activation": "linear", + "use_bias": false, + "kernel_initializer": { + "class_name": "VarianceScaling", + "config": { + "scale": 1.0, + "mode": "fan_avg", + "distribution": "uniform", + "seed": null + } + }, + "bias_initializer": { "class_name": "Zeros", "config": {} }, + "kernel_regularizer": null, + "bias_regularizer": null, + "activity_regularizer": null, + "kernel_constraint": null, + "bias_constraint": null + }, + "inbound_nodes": [[["activation_16", 0, 0, {}]]] + }, + { + "name": "batch_normalization_14", + "class_name": "BatchNormalization", + "config": { + "name": "batch_normalization_14", + "trainable": false, + "axis": 3, + "momentum": 0.99, + "epsilon": 0.001, + "center": true, + "scale": false, + "beta_initializer": { "class_name": "Zeros", "config": {} }, + "gamma_initializer": { "class_name": "Ones", "config": {} }, + "moving_mean_initializer": { + "class_name": "Zeros", + "config": {} + }, + "moving_variance_initializer": { + "class_name": "Ones", + "config": {} + }, + "beta_regularizer": null, + "gamma_regularizer": null, + "beta_constraint": null, + "gamma_constraint": null + }, + "inbound_nodes": [[["conv2d_14", 0, 0, {}]]] + }, + { + "name": "batch_normalization_17", + "class_name": "BatchNormalization", + "config": { + "name": "batch_normalization_17", + "trainable": false, + "axis": 3, + "momentum": 0.99, + "epsilon": 0.001, + "center": true, + "scale": false, + "beta_initializer": { "class_name": "Zeros", "config": {} }, + "gamma_initializer": { "class_name": "Ones", "config": {} }, + "moving_mean_initializer": { + "class_name": "Zeros", + "config": {} + }, + "moving_variance_initializer": { + "class_name": "Ones", + "config": {} + }, + "beta_regularizer": null, + "gamma_regularizer": null, + "beta_constraint": null, + "gamma_constraint": null + }, + "inbound_nodes": [[["conv2d_17", 0, 0, {}]]] + }, + { + "name": "activation_14", + "class_name": "Activation", + "config": { + "name": "activation_14", + "trainable": false, + "activation": "relu" + }, + "inbound_nodes": [[["batch_normalization_14", 0, 0, {}]]] + }, + { + "name": "activation_17", + "class_name": "Activation", + "config": { + "name": "activation_17", + "trainable": false, + "activation": "relu" + }, + "inbound_nodes": [[["batch_normalization_17", 0, 0, {}]]] + }, + { + "name": "average_pooling2d_2", + "class_name": "AveragePooling2D", + "config": { + "name": "average_pooling2d_2", + "trainable": false, + "pool_size": [3, 3], + "padding": "same", + "strides": [1, 1], + "data_format": "channels_last" + }, + "inbound_nodes": [[["mixed0", 0, 0, {}]]] + }, + { + "name": "conv2d_13", + "class_name": "Conv2D", + "config": { + "name": "conv2d_13", + "trainable": false, + "filters": 64, + "kernel_size": [1, 1], + "strides": [1, 1], + "padding": "same", + "data_format": "channels_last", + "dilation_rate": [1, 1], + "activation": "linear", + "use_bias": false, + "kernel_initializer": { + "class_name": "VarianceScaling", + "config": { + "scale": 1.0, + "mode": "fan_avg", + "distribution": "uniform", + "seed": null + } + }, + "bias_initializer": { "class_name": "Zeros", "config": {} }, + "kernel_regularizer": null, + "bias_regularizer": null, + "activity_regularizer": null, + "kernel_constraint": null, + "bias_constraint": null + }, + "inbound_nodes": [[["mixed0", 0, 0, {}]]] + }, + { + "name": "conv2d_15", + "class_name": "Conv2D", + "config": { + "name": "conv2d_15", + "trainable": false, + "filters": 64, + "kernel_size": [5, 5], + "strides": [1, 1], + "padding": "same", + "data_format": "channels_last", + "dilation_rate": [1, 1], + "activation": "linear", + "use_bias": false, + "kernel_initializer": { + "class_name": "VarianceScaling", + "config": { + "scale": 1.0, + "mode": "fan_avg", + "distribution": "uniform", + "seed": null + } + }, + "bias_initializer": { "class_name": "Zeros", "config": {} }, + "kernel_regularizer": null, + "bias_regularizer": null, + "activity_regularizer": null, + "kernel_constraint": null, + "bias_constraint": null + }, + "inbound_nodes": [[["activation_14", 0, 0, {}]]] + }, + { + "name": "conv2d_18", + "class_name": "Conv2D", + "config": { + "name": "conv2d_18", + "trainable": false, + "filters": 96, + "kernel_size": [3, 3], + "strides": [1, 1], + "padding": "same", + "data_format": "channels_last", + "dilation_rate": [1, 1], + "activation": "linear", + "use_bias": false, + "kernel_initializer": { + "class_name": "VarianceScaling", + "config": { + "scale": 1.0, + "mode": "fan_avg", + "distribution": "uniform", + "seed": null + } + }, + "bias_initializer": { "class_name": "Zeros", "config": {} }, + "kernel_regularizer": null, + "bias_regularizer": null, + "activity_regularizer": null, + "kernel_constraint": null, + "bias_constraint": null + }, + "inbound_nodes": [[["activation_17", 0, 0, {}]]] + }, + { + "name": "conv2d_19", + "class_name": "Conv2D", + "config": { + "name": "conv2d_19", + "trainable": false, + "filters": 64, + "kernel_size": [1, 1], + "strides": [1, 1], + "padding": "same", + "data_format": "channels_last", + "dilation_rate": [1, 1], + "activation": "linear", + "use_bias": false, + "kernel_initializer": { + "class_name": "VarianceScaling", + "config": { + "scale": 1.0, + "mode": "fan_avg", + "distribution": "uniform", + "seed": null + } + }, + "bias_initializer": { "class_name": "Zeros", "config": {} }, + "kernel_regularizer": null, + "bias_regularizer": null, + "activity_regularizer": null, + "kernel_constraint": null, + "bias_constraint": null + }, + "inbound_nodes": [[["average_pooling2d_2", 0, 0, {}]]] + }, + { + "name": "batch_normalization_13", + "class_name": "BatchNormalization", + "config": { + "name": "batch_normalization_13", + "trainable": false, + "axis": 3, + "momentum": 0.99, + "epsilon": 0.001, + "center": true, + "scale": false, + "beta_initializer": { "class_name": "Zeros", "config": {} }, + "gamma_initializer": { "class_name": "Ones", "config": {} }, + "moving_mean_initializer": { + "class_name": "Zeros", + "config": {} + }, + "moving_variance_initializer": { + "class_name": "Ones", + "config": {} + }, + "beta_regularizer": null, + "gamma_regularizer": null, + "beta_constraint": null, + "gamma_constraint": null + }, + "inbound_nodes": [[["conv2d_13", 0, 0, {}]]] + }, + { + "name": "batch_normalization_15", + "class_name": "BatchNormalization", + "config": { + "name": "batch_normalization_15", + "trainable": false, + "axis": 3, + "momentum": 0.99, + "epsilon": 0.001, + "center": true, + "scale": false, + "beta_initializer": { "class_name": "Zeros", "config": {} }, + "gamma_initializer": { "class_name": "Ones", "config": {} }, + "moving_mean_initializer": { + "class_name": "Zeros", + "config": {} + }, + "moving_variance_initializer": { + "class_name": "Ones", + "config": {} + }, + "beta_regularizer": null, + "gamma_regularizer": null, + "beta_constraint": null, + "gamma_constraint": null + }, + "inbound_nodes": [[["conv2d_15", 0, 0, {}]]] + }, + { + "name": "batch_normalization_18", + "class_name": "BatchNormalization", + "config": { + "name": "batch_normalization_18", + "trainable": false, + "axis": 3, + "momentum": 0.99, + "epsilon": 0.001, + "center": true, + "scale": false, + "beta_initializer": { "class_name": "Zeros", "config": {} }, + "gamma_initializer": { "class_name": "Ones", "config": {} }, + "moving_mean_initializer": { + "class_name": "Zeros", + "config": {} + }, + "moving_variance_initializer": { + "class_name": "Ones", + "config": {} + }, + "beta_regularizer": null, + "gamma_regularizer": null, + "beta_constraint": null, + "gamma_constraint": null + }, + "inbound_nodes": [[["conv2d_18", 0, 0, {}]]] + }, + { + "name": "batch_normalization_19", + "class_name": "BatchNormalization", + "config": { + "name": "batch_normalization_19", + "trainable": false, + "axis": 3, + "momentum": 0.99, + "epsilon": 0.001, + "center": true, + "scale": false, + "beta_initializer": { "class_name": "Zeros", "config": {} }, + "gamma_initializer": { "class_name": "Ones", "config": {} }, + "moving_mean_initializer": { + "class_name": "Zeros", + "config": {} + }, + "moving_variance_initializer": { + "class_name": "Ones", + "config": {} + }, + "beta_regularizer": null, + "gamma_regularizer": null, + "beta_constraint": null, + "gamma_constraint": null + }, + "inbound_nodes": [[["conv2d_19", 0, 0, {}]]] + }, + { + "name": "activation_13", + "class_name": "Activation", + "config": { + "name": "activation_13", + "trainable": false, + "activation": "relu" + }, + "inbound_nodes": [[["batch_normalization_13", 0, 0, {}]]] + }, + { + "name": "activation_15", + "class_name": "Activation", + "config": { + "name": "activation_15", + "trainable": false, + "activation": "relu" + }, + "inbound_nodes": [[["batch_normalization_15", 0, 0, {}]]] + }, + { + "name": "activation_18", + "class_name": "Activation", + "config": { + "name": "activation_18", + "trainable": false, + "activation": "relu" + }, + "inbound_nodes": [[["batch_normalization_18", 0, 0, {}]]] + }, + { + "name": "activation_19", + "class_name": "Activation", + "config": { + "name": "activation_19", + "trainable": false, + "activation": "relu" + }, + "inbound_nodes": [[["batch_normalization_19", 0, 0, {}]]] + }, + { + "name": "mixed1", + "class_name": "Concatenate", + "config": { "name": "mixed1", "trainable": false, "axis": 3 }, + "inbound_nodes": [ + [ + ["activation_13", 0, 0, {}], + ["activation_15", 0, 0, {}], + ["activation_18", 0, 0, {}], + ["activation_19", 0, 0, {}] + ] + ] + }, + { + "name": "conv2d_23", + "class_name": "Conv2D", + "config": { + "name": "conv2d_23", + "trainable": false, + "filters": 64, + "kernel_size": [1, 1], + "strides": [1, 1], + "padding": "same", + "data_format": "channels_last", + "dilation_rate": [1, 1], + "activation": "linear", + "use_bias": false, + "kernel_initializer": { + "class_name": "VarianceScaling", + "config": { + "scale": 1.0, + "mode": "fan_avg", + "distribution": "uniform", + "seed": null + } + }, + "bias_initializer": { "class_name": "Zeros", "config": {} }, + "kernel_regularizer": null, + "bias_regularizer": null, + "activity_regularizer": null, + "kernel_constraint": null, + "bias_constraint": null + }, + "inbound_nodes": [[["mixed1", 0, 0, {}]]] + }, + { + "name": "batch_normalization_23", + "class_name": "BatchNormalization", + "config": { + "name": "batch_normalization_23", + "trainable": false, + "axis": 3, + "momentum": 0.99, + "epsilon": 0.001, + "center": true, + "scale": false, + "beta_initializer": { "class_name": "Zeros", "config": {} }, + "gamma_initializer": { "class_name": "Ones", "config": {} }, + "moving_mean_initializer": { + "class_name": "Zeros", + "config": {} + }, + "moving_variance_initializer": { + "class_name": "Ones", + "config": {} + }, + "beta_regularizer": null, + "gamma_regularizer": null, + "beta_constraint": null, + "gamma_constraint": null + }, + "inbound_nodes": [[["conv2d_23", 0, 0, {}]]] + }, + { + "name": "activation_23", + "class_name": "Activation", + "config": { + "name": "activation_23", + "trainable": false, + "activation": "relu" + }, + "inbound_nodes": [[["batch_normalization_23", 0, 0, {}]]] + }, + { + "name": "conv2d_21", + "class_name": "Conv2D", + "config": { + "name": "conv2d_21", + "trainable": false, + "filters": 48, + "kernel_size": [1, 1], + "strides": [1, 1], + "padding": "same", + "data_format": "channels_last", + "dilation_rate": [1, 1], + "activation": "linear", + "use_bias": false, + "kernel_initializer": { + "class_name": "VarianceScaling", + "config": { + "scale": 1.0, + "mode": "fan_avg", + "distribution": "uniform", + "seed": null + } + }, + "bias_initializer": { "class_name": "Zeros", "config": {} }, + "kernel_regularizer": null, + "bias_regularizer": null, + "activity_regularizer": null, + "kernel_constraint": null, + "bias_constraint": null + }, + "inbound_nodes": [[["mixed1", 0, 0, {}]]] + }, + { + "name": "conv2d_24", + "class_name": "Conv2D", + "config": { + "name": "conv2d_24", + "trainable": false, + "filters": 96, + "kernel_size": [3, 3], + "strides": [1, 1], + "padding": "same", + "data_format": "channels_last", + "dilation_rate": [1, 1], + "activation": "linear", + "use_bias": false, + "kernel_initializer": { + "class_name": "VarianceScaling", + "config": { + "scale": 1.0, + "mode": "fan_avg", + "distribution": "uniform", + "seed": null + } + }, + "bias_initializer": { "class_name": "Zeros", "config": {} }, + "kernel_regularizer": null, + "bias_regularizer": null, + "activity_regularizer": null, + "kernel_constraint": null, + "bias_constraint": null + }, + "inbound_nodes": [[["activation_23", 0, 0, {}]]] + }, + { + "name": "batch_normalization_21", + "class_name": "BatchNormalization", + "config": { + "name": "batch_normalization_21", + "trainable": false, + "axis": 3, + "momentum": 0.99, + "epsilon": 0.001, + "center": true, + "scale": false, + "beta_initializer": { "class_name": "Zeros", "config": {} }, + "gamma_initializer": { "class_name": "Ones", "config": {} }, + "moving_mean_initializer": { + "class_name": "Zeros", + "config": {} + }, + "moving_variance_initializer": { + "class_name": "Ones", + "config": {} + }, + "beta_regularizer": null, + "gamma_regularizer": null, + "beta_constraint": null, + "gamma_constraint": null + }, + "inbound_nodes": [[["conv2d_21", 0, 0, {}]]] + }, + { + "name": "batch_normalization_24", + "class_name": "BatchNormalization", + "config": { + "name": "batch_normalization_24", + "trainable": false, + "axis": 3, + "momentum": 0.99, + "epsilon": 0.001, + "center": true, + "scale": false, + "beta_initializer": { "class_name": "Zeros", "config": {} }, + "gamma_initializer": { "class_name": "Ones", "config": {} }, + "moving_mean_initializer": { + "class_name": "Zeros", + "config": {} + }, + "moving_variance_initializer": { + "class_name": "Ones", + "config": {} + }, + "beta_regularizer": null, + "gamma_regularizer": null, + "beta_constraint": null, + "gamma_constraint": null + }, + "inbound_nodes": [[["conv2d_24", 0, 0, {}]]] + }, + { + "name": "activation_21", + "class_name": "Activation", + "config": { + "name": "activation_21", + "trainable": false, + "activation": "relu" + }, + "inbound_nodes": [[["batch_normalization_21", 0, 0, {}]]] + }, + { + "name": "activation_24", + "class_name": "Activation", + "config": { + "name": "activation_24", + "trainable": false, + "activation": "relu" + }, + "inbound_nodes": [[["batch_normalization_24", 0, 0, {}]]] + }, + { + "name": "average_pooling2d_3", + "class_name": "AveragePooling2D", + "config": { + "name": "average_pooling2d_3", + "trainable": false, + "pool_size": [3, 3], + "padding": "same", + "strides": [1, 1], + "data_format": "channels_last" + }, + "inbound_nodes": [[["mixed1", 0, 0, {}]]] + }, + { + "name": "conv2d_20", + "class_name": "Conv2D", + "config": { + "name": "conv2d_20", + "trainable": false, + "filters": 64, + "kernel_size": [1, 1], + "strides": [1, 1], + "padding": "same", + "data_format": "channels_last", + "dilation_rate": [1, 1], + "activation": "linear", + "use_bias": false, + "kernel_initializer": { + "class_name": "VarianceScaling", + "config": { + "scale": 1.0, + "mode": "fan_avg", + "distribution": "uniform", + "seed": null + } + }, + "bias_initializer": { "class_name": "Zeros", "config": {} }, + "kernel_regularizer": null, + "bias_regularizer": null, + "activity_regularizer": null, + "kernel_constraint": null, + "bias_constraint": null + }, + "inbound_nodes": [[["mixed1", 0, 0, {}]]] + }, + { + "name": "conv2d_22", + "class_name": "Conv2D", + "config": { + "name": "conv2d_22", + "trainable": false, + "filters": 64, + "kernel_size": [5, 5], + "strides": [1, 1], + "padding": "same", + "data_format": "channels_last", + "dilation_rate": [1, 1], + "activation": "linear", + "use_bias": false, + "kernel_initializer": { + "class_name": "VarianceScaling", + "config": { + "scale": 1.0, + "mode": "fan_avg", + "distribution": "uniform", + "seed": null + } + }, + "bias_initializer": { "class_name": "Zeros", "config": {} }, + "kernel_regularizer": null, + "bias_regularizer": null, + "activity_regularizer": null, + "kernel_constraint": null, + "bias_constraint": null + }, + "inbound_nodes": [[["activation_21", 0, 0, {}]]] + }, + { + "name": "conv2d_25", + "class_name": "Conv2D", + "config": { + "name": "conv2d_25", + "trainable": false, + "filters": 96, + "kernel_size": [3, 3], + "strides": [1, 1], + "padding": "same", + "data_format": "channels_last", + "dilation_rate": [1, 1], + "activation": "linear", + "use_bias": false, + "kernel_initializer": { + "class_name": "VarianceScaling", + "config": { + "scale": 1.0, + "mode": "fan_avg", + "distribution": "uniform", + "seed": null + } + }, + "bias_initializer": { "class_name": "Zeros", "config": {} }, + "kernel_regularizer": null, + "bias_regularizer": null, + "activity_regularizer": null, + "kernel_constraint": null, + "bias_constraint": null + }, + "inbound_nodes": [[["activation_24", 0, 0, {}]]] + }, + { + "name": "conv2d_26", + "class_name": "Conv2D", + "config": { + "name": "conv2d_26", + "trainable": false, + "filters": 64, + "kernel_size": [1, 1], + "strides": [1, 1], + "padding": "same", + "data_format": "channels_last", + "dilation_rate": [1, 1], + "activation": "linear", + "use_bias": false, + "kernel_initializer": { + "class_name": "VarianceScaling", + "config": { + "scale": 1.0, + "mode": "fan_avg", + "distribution": "uniform", + "seed": null + } + }, + "bias_initializer": { "class_name": "Zeros", "config": {} }, + "kernel_regularizer": null, + "bias_regularizer": null, + "activity_regularizer": null, + "kernel_constraint": null, + "bias_constraint": null + }, + "inbound_nodes": [[["average_pooling2d_3", 0, 0, {}]]] + }, + { + "name": "batch_normalization_20", + "class_name": "BatchNormalization", + "config": { + "name": "batch_normalization_20", + "trainable": false, + "axis": 3, + "momentum": 0.99, + "epsilon": 0.001, + "center": true, + "scale": false, + "beta_initializer": { "class_name": "Zeros", "config": {} }, + "gamma_initializer": { "class_name": "Ones", "config": {} }, + "moving_mean_initializer": { + "class_name": "Zeros", + "config": {} + }, + "moving_variance_initializer": { + "class_name": "Ones", + "config": {} + }, + "beta_regularizer": null, + "gamma_regularizer": null, + "beta_constraint": null, + "gamma_constraint": null + }, + "inbound_nodes": [[["conv2d_20", 0, 0, {}]]] + }, + { + "name": "batch_normalization_22", + "class_name": "BatchNormalization", + "config": { + "name": "batch_normalization_22", + "trainable": false, + "axis": 3, + "momentum": 0.99, + "epsilon": 0.001, + "center": true, + "scale": false, + "beta_initializer": { "class_name": "Zeros", "config": {} }, + "gamma_initializer": { "class_name": "Ones", "config": {} }, + "moving_mean_initializer": { + "class_name": "Zeros", + "config": {} + }, + "moving_variance_initializer": { + "class_name": "Ones", + "config": {} + }, + "beta_regularizer": null, + "gamma_regularizer": null, + "beta_constraint": null, + "gamma_constraint": null + }, + "inbound_nodes": [[["conv2d_22", 0, 0, {}]]] + }, + { + "name": "batch_normalization_25", + "class_name": "BatchNormalization", + "config": { + "name": "batch_normalization_25", + "trainable": false, + "axis": 3, + "momentum": 0.99, + "epsilon": 0.001, + "center": true, + "scale": false, + "beta_initializer": { "class_name": "Zeros", "config": {} }, + "gamma_initializer": { "class_name": "Ones", "config": {} }, + "moving_mean_initializer": { + "class_name": "Zeros", + "config": {} + }, + "moving_variance_initializer": { + "class_name": "Ones", + "config": {} + }, + "beta_regularizer": null, + "gamma_regularizer": null, + "beta_constraint": null, + "gamma_constraint": null + }, + "inbound_nodes": [[["conv2d_25", 0, 0, {}]]] + }, + { + "name": "batch_normalization_26", + "class_name": "BatchNormalization", + "config": { + "name": "batch_normalization_26", + "trainable": false, + "axis": 3, + "momentum": 0.99, + "epsilon": 0.001, + "center": true, + "scale": false, + "beta_initializer": { "class_name": "Zeros", "config": {} }, + "gamma_initializer": { "class_name": "Ones", "config": {} }, + "moving_mean_initializer": { + "class_name": "Zeros", + "config": {} + }, + "moving_variance_initializer": { + "class_name": "Ones", + "config": {} + }, + "beta_regularizer": null, + "gamma_regularizer": null, + "beta_constraint": null, + "gamma_constraint": null + }, + "inbound_nodes": [[["conv2d_26", 0, 0, {}]]] + }, + { + "name": "activation_20", + "class_name": "Activation", + "config": { + "name": "activation_20", + "trainable": false, + "activation": "relu" + }, + "inbound_nodes": [[["batch_normalization_20", 0, 0, {}]]] + }, + { + "name": "activation_22", + "class_name": "Activation", + "config": { + "name": "activation_22", + "trainable": false, + "activation": "relu" + }, + "inbound_nodes": [[["batch_normalization_22", 0, 0, {}]]] + }, + { + "name": "activation_25", + "class_name": "Activation", + "config": { + "name": "activation_25", + "trainable": false, + "activation": "relu" + }, + "inbound_nodes": [[["batch_normalization_25", 0, 0, {}]]] + }, + { + "name": "activation_26", + "class_name": "Activation", + "config": { + "name": "activation_26", + "trainable": false, + "activation": "relu" + }, + "inbound_nodes": [[["batch_normalization_26", 0, 0, {}]]] + }, + { + "name": "mixed2", + "class_name": "Concatenate", + "config": { "name": "mixed2", "trainable": false, "axis": 3 }, + "inbound_nodes": [ + [ + ["activation_20", 0, 0, {}], + ["activation_22", 0, 0, {}], + ["activation_25", 0, 0, {}], + ["activation_26", 0, 0, {}] + ] + ] + }, + { + "name": "conv2d_28", + "class_name": "Conv2D", + "config": { + "name": "conv2d_28", + "trainable": false, + "filters": 64, + "kernel_size": [1, 1], + "strides": [1, 1], + "padding": "same", + "data_format": "channels_last", + "dilation_rate": [1, 1], + "activation": "linear", + "use_bias": false, + "kernel_initializer": { + "class_name": "VarianceScaling", + "config": { + "scale": 1.0, + "mode": "fan_avg", + "distribution": "uniform", + "seed": null + } + }, + "bias_initializer": { "class_name": "Zeros", "config": {} }, + "kernel_regularizer": null, + "bias_regularizer": null, + "activity_regularizer": null, + "kernel_constraint": null, + "bias_constraint": null + }, + "inbound_nodes": [[["mixed2", 0, 0, {}]]] + }, + { + "name": "batch_normalization_28", + "class_name": "BatchNormalization", + "config": { + "name": "batch_normalization_28", + "trainable": false, + "axis": 3, + "momentum": 0.99, + "epsilon": 0.001, + "center": true, + "scale": false, + "beta_initializer": { "class_name": "Zeros", "config": {} }, + "gamma_initializer": { "class_name": "Ones", "config": {} }, + "moving_mean_initializer": { + "class_name": "Zeros", + "config": {} + }, + "moving_variance_initializer": { + "class_name": "Ones", + "config": {} + }, + "beta_regularizer": null, + "gamma_regularizer": null, + "beta_constraint": null, + "gamma_constraint": null + }, + "inbound_nodes": [[["conv2d_28", 0, 0, {}]]] + }, + { + "name": "activation_28", + "class_name": "Activation", + "config": { + "name": "activation_28", + "trainable": false, + "activation": "relu" + }, + "inbound_nodes": [[["batch_normalization_28", 0, 0, {}]]] + }, + { + "name": "conv2d_29", + "class_name": "Conv2D", + "config": { + "name": "conv2d_29", + "trainable": false, + "filters": 96, + "kernel_size": [3, 3], + "strides": [1, 1], + "padding": "same", + "data_format": "channels_last", + "dilation_rate": [1, 1], + "activation": "linear", + "use_bias": false, + "kernel_initializer": { + "class_name": "VarianceScaling", + "config": { + "scale": 1.0, + "mode": "fan_avg", + "distribution": "uniform", + "seed": null + } + }, + "bias_initializer": { "class_name": "Zeros", "config": {} }, + "kernel_regularizer": null, + "bias_regularizer": null, + "activity_regularizer": null, + "kernel_constraint": null, + "bias_constraint": null + }, + "inbound_nodes": [[["activation_28", 0, 0, {}]]] + }, + { + "name": "batch_normalization_29", + "class_name": "BatchNormalization", + "config": { + "name": "batch_normalization_29", + "trainable": false, + "axis": 3, + "momentum": 0.99, + "epsilon": 0.001, + "center": true, + "scale": false, + "beta_initializer": { "class_name": "Zeros", "config": {} }, + "gamma_initializer": { "class_name": "Ones", "config": {} }, + "moving_mean_initializer": { + "class_name": "Zeros", + "config": {} + }, + "moving_variance_initializer": { + "class_name": "Ones", + "config": {} + }, + "beta_regularizer": null, + "gamma_regularizer": null, + "beta_constraint": null, + "gamma_constraint": null + }, + "inbound_nodes": [[["conv2d_29", 0, 0, {}]]] + }, + { + "name": "activation_29", + "class_name": "Activation", + "config": { + "name": "activation_29", + "trainable": false, + "activation": "relu" + }, + "inbound_nodes": [[["batch_normalization_29", 0, 0, {}]]] + }, + { + "name": "conv2d_27", + "class_name": "Conv2D", + "config": { + "name": "conv2d_27", + "trainable": false, + "filters": 384, + "kernel_size": [3, 3], + "strides": [2, 2], + "padding": "valid", + "data_format": "channels_last", + "dilation_rate": [1, 1], + "activation": "linear", + "use_bias": false, + "kernel_initializer": { + "class_name": "VarianceScaling", + "config": { + "scale": 1.0, + "mode": "fan_avg", + "distribution": "uniform", + "seed": null + } + }, + "bias_initializer": { "class_name": "Zeros", "config": {} }, + "kernel_regularizer": null, + "bias_regularizer": null, + "activity_regularizer": null, + "kernel_constraint": null, + "bias_constraint": null + }, + "inbound_nodes": [[["mixed2", 0, 0, {}]]] + }, + { + "name": "conv2d_30", + "class_name": "Conv2D", + "config": { + "name": "conv2d_30", + "trainable": false, + "filters": 96, + "kernel_size": [3, 3], + "strides": [2, 2], + "padding": "valid", + "data_format": "channels_last", + "dilation_rate": [1, 1], + "activation": "linear", + "use_bias": false, + "kernel_initializer": { + "class_name": "VarianceScaling", + "config": { + "scale": 1.0, + "mode": "fan_avg", + "distribution": "uniform", + "seed": null + } + }, + "bias_initializer": { "class_name": "Zeros", "config": {} }, + "kernel_regularizer": null, + "bias_regularizer": null, + "activity_regularizer": null, + "kernel_constraint": null, + "bias_constraint": null + }, + "inbound_nodes": [[["activation_29", 0, 0, {}]]] + }, + { + "name": "batch_normalization_27", + "class_name": "BatchNormalization", + "config": { + "name": "batch_normalization_27", + "trainable": false, + "axis": 3, + "momentum": 0.99, + "epsilon": 0.001, + "center": true, + "scale": false, + "beta_initializer": { "class_name": "Zeros", "config": {} }, + "gamma_initializer": { "class_name": "Ones", "config": {} }, + "moving_mean_initializer": { + "class_name": "Zeros", + "config": {} + }, + "moving_variance_initializer": { + "class_name": "Ones", + "config": {} + }, + "beta_regularizer": null, + "gamma_regularizer": null, + "beta_constraint": null, + "gamma_constraint": null + }, + "inbound_nodes": [[["conv2d_27", 0, 0, {}]]] + }, + { + "name": "batch_normalization_30", + "class_name": "BatchNormalization", + "config": { + "name": "batch_normalization_30", + "trainable": false, + "axis": 3, + "momentum": 0.99, + "epsilon": 0.001, + "center": true, + "scale": false, + "beta_initializer": { "class_name": "Zeros", "config": {} }, + "gamma_initializer": { "class_name": "Ones", "config": {} }, + "moving_mean_initializer": { + "class_name": "Zeros", + "config": {} + }, + "moving_variance_initializer": { + "class_name": "Ones", + "config": {} + }, + "beta_regularizer": null, + "gamma_regularizer": null, + "beta_constraint": null, + "gamma_constraint": null + }, + "inbound_nodes": [[["conv2d_30", 0, 0, {}]]] + }, + { + "name": "activation_27", + "class_name": "Activation", + "config": { + "name": "activation_27", + "trainable": false, + "activation": "relu" + }, + "inbound_nodes": [[["batch_normalization_27", 0, 0, {}]]] + }, + { + "name": "activation_30", + "class_name": "Activation", + "config": { + "name": "activation_30", + "trainable": false, + "activation": "relu" + }, + "inbound_nodes": [[["batch_normalization_30", 0, 0, {}]]] + }, + { + "name": "max_pooling2d_3", + "class_name": "MaxPooling2D", + "config": { + "name": "max_pooling2d_3", + "trainable": false, + "pool_size": [3, 3], + "padding": "valid", + "strides": [2, 2], + "data_format": "channels_last" + }, + "inbound_nodes": [[["mixed2", 0, 0, {}]]] + }, + { + "name": "mixed3", + "class_name": "Concatenate", + "config": { "name": "mixed3", "trainable": false, "axis": 3 }, + "inbound_nodes": [ + [ + ["activation_27", 0, 0, {}], + ["activation_30", 0, 0, {}], + ["max_pooling2d_3", 0, 0, {}] + ] + ] + }, + { + "name": "conv2d_35", + "class_name": "Conv2D", + "config": { + "name": "conv2d_35", + "trainable": false, + "filters": 128, + "kernel_size": [1, 1], + "strides": [1, 1], + "padding": "same", + "data_format": "channels_last", + "dilation_rate": [1, 1], + "activation": "linear", + "use_bias": false, + "kernel_initializer": { + "class_name": "VarianceScaling", + "config": { + "scale": 1.0, + "mode": "fan_avg", + "distribution": "uniform", + "seed": null + } + }, + "bias_initializer": { "class_name": "Zeros", "config": {} }, + "kernel_regularizer": null, + "bias_regularizer": null, + "activity_regularizer": null, + "kernel_constraint": null, + "bias_constraint": null + }, + "inbound_nodes": [[["mixed3", 0, 0, {}]]] + }, + { + "name": "batch_normalization_35", + "class_name": "BatchNormalization", + "config": { + "name": "batch_normalization_35", + "trainable": false, + "axis": 3, + "momentum": 0.99, + "epsilon": 0.001, + "center": true, + "scale": false, + "beta_initializer": { "class_name": "Zeros", "config": {} }, + "gamma_initializer": { "class_name": "Ones", "config": {} }, + "moving_mean_initializer": { + "class_name": "Zeros", + "config": {} + }, + "moving_variance_initializer": { + "class_name": "Ones", + "config": {} + }, + "beta_regularizer": null, + "gamma_regularizer": null, + "beta_constraint": null, + "gamma_constraint": null + }, + "inbound_nodes": [[["conv2d_35", 0, 0, {}]]] + }, + { + "name": "activation_35", + "class_name": "Activation", + "config": { + "name": "activation_35", + "trainable": false, + "activation": "relu" + }, + "inbound_nodes": [[["batch_normalization_35", 0, 0, {}]]] + }, + { + "name": "conv2d_36", + "class_name": "Conv2D", + "config": { + "name": "conv2d_36", + "trainable": false, + "filters": 128, + "kernel_size": [7, 1], + "strides": [1, 1], + "padding": "same", + "data_format": "channels_last", + "dilation_rate": [1, 1], + "activation": "linear", + "use_bias": false, + "kernel_initializer": { + "class_name": "VarianceScaling", + "config": { + "scale": 1.0, + "mode": "fan_avg", + "distribution": "uniform", + "seed": null + } + }, + "bias_initializer": { "class_name": "Zeros", "config": {} }, + "kernel_regularizer": null, + "bias_regularizer": null, + "activity_regularizer": null, + "kernel_constraint": null, + "bias_constraint": null + }, + "inbound_nodes": [[["activation_35", 0, 0, {}]]] + }, + { + "name": "batch_normalization_36", + "class_name": "BatchNormalization", + "config": { + "name": "batch_normalization_36", + "trainable": false, + "axis": 3, + "momentum": 0.99, + "epsilon": 0.001, + "center": true, + "scale": false, + "beta_initializer": { "class_name": "Zeros", "config": {} }, + "gamma_initializer": { "class_name": "Ones", "config": {} }, + "moving_mean_initializer": { + "class_name": "Zeros", + "config": {} + }, + "moving_variance_initializer": { + "class_name": "Ones", + "config": {} + }, + "beta_regularizer": null, + "gamma_regularizer": null, + "beta_constraint": null, + "gamma_constraint": null + }, + "inbound_nodes": [[["conv2d_36", 0, 0, {}]]] + }, + { + "name": "activation_36", + "class_name": "Activation", + "config": { + "name": "activation_36", + "trainable": false, + "activation": "relu" + }, + "inbound_nodes": [[["batch_normalization_36", 0, 0, {}]]] + }, + { + "name": "conv2d_32", + "class_name": "Conv2D", + "config": { + "name": "conv2d_32", + "trainable": false, + "filters": 128, + "kernel_size": [1, 1], + "strides": [1, 1], + "padding": "same", + "data_format": "channels_last", + "dilation_rate": [1, 1], + "activation": "linear", + "use_bias": false, + "kernel_initializer": { + "class_name": "VarianceScaling", + "config": { + "scale": 1.0, + "mode": "fan_avg", + "distribution": "uniform", + "seed": null + } + }, + "bias_initializer": { "class_name": "Zeros", "config": {} }, + "kernel_regularizer": null, + "bias_regularizer": null, + "activity_regularizer": null, + "kernel_constraint": null, + "bias_constraint": null + }, + "inbound_nodes": [[["mixed3", 0, 0, {}]]] + }, + { + "name": "conv2d_37", + "class_name": "Conv2D", + "config": { + "name": "conv2d_37", + "trainable": false, + "filters": 128, + "kernel_size": [1, 7], + "strides": [1, 1], + "padding": "same", + "data_format": "channels_last", + "dilation_rate": [1, 1], + "activation": "linear", + "use_bias": false, + "kernel_initializer": { + "class_name": "VarianceScaling", + "config": { + "scale": 1.0, + "mode": "fan_avg", + "distribution": "uniform", + "seed": null + } + }, + "bias_initializer": { "class_name": "Zeros", "config": {} }, + "kernel_regularizer": null, + "bias_regularizer": null, + "activity_regularizer": null, + "kernel_constraint": null, + "bias_constraint": null + }, + "inbound_nodes": [[["activation_36", 0, 0, {}]]] + }, + { + "name": "batch_normalization_32", + "class_name": "BatchNormalization", + "config": { + "name": "batch_normalization_32", + "trainable": false, + "axis": 3, + "momentum": 0.99, + "epsilon": 0.001, + "center": true, + "scale": false, + "beta_initializer": { "class_name": "Zeros", "config": {} }, + "gamma_initializer": { "class_name": "Ones", "config": {} }, + "moving_mean_initializer": { + "class_name": "Zeros", + "config": {} + }, + "moving_variance_initializer": { + "class_name": "Ones", + "config": {} + }, + "beta_regularizer": null, + "gamma_regularizer": null, + "beta_constraint": null, + "gamma_constraint": null + }, + "inbound_nodes": [[["conv2d_32", 0, 0, {}]]] + }, + { + "name": "batch_normalization_37", + "class_name": "BatchNormalization", + "config": { + "name": "batch_normalization_37", + "trainable": false, + "axis": 3, + "momentum": 0.99, + "epsilon": 0.001, + "center": true, + "scale": false, + "beta_initializer": { "class_name": "Zeros", "config": {} }, + "gamma_initializer": { "class_name": "Ones", "config": {} }, + "moving_mean_initializer": { + "class_name": "Zeros", + "config": {} + }, + "moving_variance_initializer": { + "class_name": "Ones", + "config": {} + }, + "beta_regularizer": null, + "gamma_regularizer": null, + "beta_constraint": null, + "gamma_constraint": null + }, + "inbound_nodes": [[["conv2d_37", 0, 0, {}]]] + }, + { + "name": "activation_32", + "class_name": "Activation", + "config": { + "name": "activation_32", + "trainable": false, + "activation": "relu" + }, + "inbound_nodes": [[["batch_normalization_32", 0, 0, {}]]] + }, + { + "name": "activation_37", + "class_name": "Activation", + "config": { + "name": "activation_37", + "trainable": false, + "activation": "relu" + }, + "inbound_nodes": [[["batch_normalization_37", 0, 0, {}]]] + }, + { + "name": "conv2d_33", + "class_name": "Conv2D", + "config": { + "name": "conv2d_33", + "trainable": false, + "filters": 128, + "kernel_size": [1, 7], + "strides": [1, 1], + "padding": "same", + "data_format": "channels_last", + "dilation_rate": [1, 1], + "activation": "linear", + "use_bias": false, + "kernel_initializer": { + "class_name": "VarianceScaling", + "config": { + "scale": 1.0, + "mode": "fan_avg", + "distribution": "uniform", + "seed": null + } + }, + "bias_initializer": { "class_name": "Zeros", "config": {} }, + "kernel_regularizer": null, + "bias_regularizer": null, + "activity_regularizer": null, + "kernel_constraint": null, + "bias_constraint": null + }, + "inbound_nodes": [[["activation_32", 0, 0, {}]]] + }, + { + "name": "conv2d_38", + "class_name": "Conv2D", + "config": { + "name": "conv2d_38", + "trainable": false, + "filters": 128, + "kernel_size": [7, 1], + "strides": [1, 1], + "padding": "same", + "data_format": "channels_last", + "dilation_rate": [1, 1], + "activation": "linear", + "use_bias": false, + "kernel_initializer": { + "class_name": "VarianceScaling", + "config": { + "scale": 1.0, + "mode": "fan_avg", + "distribution": "uniform", + "seed": null + } + }, + "bias_initializer": { "class_name": "Zeros", "config": {} }, + "kernel_regularizer": null, + "bias_regularizer": null, + "activity_regularizer": null, + "kernel_constraint": null, + "bias_constraint": null + }, + "inbound_nodes": [[["activation_37", 0, 0, {}]]] + }, + { + "name": "batch_normalization_33", + "class_name": "BatchNormalization", + "config": { + "name": "batch_normalization_33", + "trainable": false, + "axis": 3, + "momentum": 0.99, + "epsilon": 0.001, + "center": true, + "scale": false, + "beta_initializer": { "class_name": "Zeros", "config": {} }, + "gamma_initializer": { "class_name": "Ones", "config": {} }, + "moving_mean_initializer": { + "class_name": "Zeros", + "config": {} + }, + "moving_variance_initializer": { + "class_name": "Ones", + "config": {} + }, + "beta_regularizer": null, + "gamma_regularizer": null, + "beta_constraint": null, + "gamma_constraint": null + }, + "inbound_nodes": [[["conv2d_33", 0, 0, {}]]] + }, + { + "name": "batch_normalization_38", + "class_name": "BatchNormalization", + "config": { + "name": "batch_normalization_38", + "trainable": false, + "axis": 3, + "momentum": 0.99, + "epsilon": 0.001, + "center": true, + "scale": false, + "beta_initializer": { "class_name": "Zeros", "config": {} }, + "gamma_initializer": { "class_name": "Ones", "config": {} }, + "moving_mean_initializer": { + "class_name": "Zeros", + "config": {} + }, + "moving_variance_initializer": { + "class_name": "Ones", + "config": {} + }, + "beta_regularizer": null, + "gamma_regularizer": null, + "beta_constraint": null, + "gamma_constraint": null + }, + "inbound_nodes": [[["conv2d_38", 0, 0, {}]]] + }, + { + "name": "activation_33", + "class_name": "Activation", + "config": { + "name": "activation_33", + "trainable": false, + "activation": "relu" + }, + "inbound_nodes": [[["batch_normalization_33", 0, 0, {}]]] + }, + { + "name": "activation_38", + "class_name": "Activation", + "config": { + "name": "activation_38", + "trainable": false, + "activation": "relu" + }, + "inbound_nodes": [[["batch_normalization_38", 0, 0, {}]]] + }, + { + "name": "average_pooling2d_4", + "class_name": "AveragePooling2D", + "config": { + "name": "average_pooling2d_4", + "trainable": false, + "pool_size": [3, 3], + "padding": "same", + "strides": [1, 1], + "data_format": "channels_last" + }, + "inbound_nodes": [[["mixed3", 0, 0, {}]]] + }, + { + "name": "conv2d_31", + "class_name": "Conv2D", + "config": { + "name": "conv2d_31", + "trainable": false, + "filters": 192, + "kernel_size": [1, 1], + "strides": [1, 1], + "padding": "same", + "data_format": "channels_last", + "dilation_rate": [1, 1], + "activation": "linear", + "use_bias": false, + "kernel_initializer": { + "class_name": "VarianceScaling", + "config": { + "scale": 1.0, + "mode": "fan_avg", + "distribution": "uniform", + "seed": null + } + }, + "bias_initializer": { "class_name": "Zeros", "config": {} }, + "kernel_regularizer": null, + "bias_regularizer": null, + "activity_regularizer": null, + "kernel_constraint": null, + "bias_constraint": null + }, + "inbound_nodes": [[["mixed3", 0, 0, {}]]] + }, + { + "name": "conv2d_34", + "class_name": "Conv2D", + "config": { + "name": "conv2d_34", + "trainable": false, + "filters": 192, + "kernel_size": [7, 1], + "strides": [1, 1], + "padding": "same", + "data_format": "channels_last", + "dilation_rate": [1, 1], + "activation": "linear", + "use_bias": false, + "kernel_initializer": { + "class_name": "VarianceScaling", + "config": { + "scale": 1.0, + "mode": "fan_avg", + "distribution": "uniform", + "seed": null + } + }, + "bias_initializer": { "class_name": "Zeros", "config": {} }, + "kernel_regularizer": null, + "bias_regularizer": null, + "activity_regularizer": null, + "kernel_constraint": null, + "bias_constraint": null + }, + "inbound_nodes": [[["activation_33", 0, 0, {}]]] + }, + { + "name": "conv2d_39", + "class_name": "Conv2D", + "config": { + "name": "conv2d_39", + "trainable": false, + "filters": 192, + "kernel_size": [1, 7], + "strides": [1, 1], + "padding": "same", + "data_format": "channels_last", + "dilation_rate": [1, 1], + "activation": "linear", + "use_bias": false, + "kernel_initializer": { + "class_name": "VarianceScaling", + "config": { + "scale": 1.0, + "mode": "fan_avg", + "distribution": "uniform", + "seed": null + } + }, + "bias_initializer": { "class_name": "Zeros", "config": {} }, + "kernel_regularizer": null, + "bias_regularizer": null, + "activity_regularizer": null, + "kernel_constraint": null, + "bias_constraint": null + }, + "inbound_nodes": [[["activation_38", 0, 0, {}]]] + }, + { + "name": "conv2d_40", + "class_name": "Conv2D", + "config": { + "name": "conv2d_40", + "trainable": false, + "filters": 192, + "kernel_size": [1, 1], + "strides": [1, 1], + "padding": "same", + "data_format": "channels_last", + "dilation_rate": [1, 1], + "activation": "linear", + "use_bias": false, + "kernel_initializer": { + "class_name": "VarianceScaling", + "config": { + "scale": 1.0, + "mode": "fan_avg", + "distribution": "uniform", + "seed": null + } + }, + "bias_initializer": { "class_name": "Zeros", "config": {} }, + "kernel_regularizer": null, + "bias_regularizer": null, + "activity_regularizer": null, + "kernel_constraint": null, + "bias_constraint": null + }, + "inbound_nodes": [[["average_pooling2d_4", 0, 0, {}]]] + }, + { + "name": "batch_normalization_31", + "class_name": "BatchNormalization", + "config": { + "name": "batch_normalization_31", + "trainable": false, + "axis": 3, + "momentum": 0.99, + "epsilon": 0.001, + "center": true, + "scale": false, + "beta_initializer": { "class_name": "Zeros", "config": {} }, + "gamma_initializer": { "class_name": "Ones", "config": {} }, + "moving_mean_initializer": { + "class_name": "Zeros", + "config": {} + }, + "moving_variance_initializer": { + "class_name": "Ones", + "config": {} + }, + "beta_regularizer": null, + "gamma_regularizer": null, + "beta_constraint": null, + "gamma_constraint": null + }, + "inbound_nodes": [[["conv2d_31", 0, 0, {}]]] + }, + { + "name": "batch_normalization_34", + "class_name": "BatchNormalization", + "config": { + "name": "batch_normalization_34", + "trainable": false, + "axis": 3, + "momentum": 0.99, + "epsilon": 0.001, + "center": true, + "scale": false, + "beta_initializer": { "class_name": "Zeros", "config": {} }, + "gamma_initializer": { "class_name": "Ones", "config": {} }, + "moving_mean_initializer": { + "class_name": "Zeros", + "config": {} + }, + "moving_variance_initializer": { + "class_name": "Ones", + "config": {} + }, + "beta_regularizer": null, + "gamma_regularizer": null, + "beta_constraint": null, + "gamma_constraint": null + }, + "inbound_nodes": [[["conv2d_34", 0, 0, {}]]] + }, + { + "name": "batch_normalization_39", + "class_name": "BatchNormalization", + "config": { + "name": "batch_normalization_39", + "trainable": false, + "axis": 3, + "momentum": 0.99, + "epsilon": 0.001, + "center": true, + "scale": false, + "beta_initializer": { "class_name": "Zeros", "config": {} }, + "gamma_initializer": { "class_name": "Ones", "config": {} }, + "moving_mean_initializer": { + "class_name": "Zeros", + "config": {} + }, + "moving_variance_initializer": { + "class_name": "Ones", + "config": {} + }, + "beta_regularizer": null, + "gamma_regularizer": null, + "beta_constraint": null, + "gamma_constraint": null + }, + "inbound_nodes": [[["conv2d_39", 0, 0, {}]]] + }, + { + "name": "batch_normalization_40", + "class_name": "BatchNormalization", + "config": { + "name": "batch_normalization_40", + "trainable": false, + "axis": 3, + "momentum": 0.99, + "epsilon": 0.001, + "center": true, + "scale": false, + "beta_initializer": { "class_name": "Zeros", "config": {} }, + "gamma_initializer": { "class_name": "Ones", "config": {} }, + "moving_mean_initializer": { + "class_name": "Zeros", + "config": {} + }, + "moving_variance_initializer": { + "class_name": "Ones", + "config": {} + }, + "beta_regularizer": null, + "gamma_regularizer": null, + "beta_constraint": null, + "gamma_constraint": null + }, + "inbound_nodes": [[["conv2d_40", 0, 0, {}]]] + }, + { + "name": "activation_31", + "class_name": "Activation", + "config": { + "name": "activation_31", + "trainable": false, + "activation": "relu" + }, + "inbound_nodes": [[["batch_normalization_31", 0, 0, {}]]] + }, + { + "name": "activation_34", + "class_name": "Activation", + "config": { + "name": "activation_34", + "trainable": false, + "activation": "relu" + }, + "inbound_nodes": [[["batch_normalization_34", 0, 0, {}]]] + }, + { + "name": "activation_39", + "class_name": "Activation", + "config": { + "name": "activation_39", + "trainable": false, + "activation": "relu" + }, + "inbound_nodes": [[["batch_normalization_39", 0, 0, {}]]] + }, + { + "name": "activation_40", + "class_name": "Activation", + "config": { + "name": "activation_40", + "trainable": false, + "activation": "relu" + }, + "inbound_nodes": [[["batch_normalization_40", 0, 0, {}]]] + }, + { + "name": "mixed4", + "class_name": "Concatenate", + "config": { "name": "mixed4", "trainable": false, "axis": 3 }, + "inbound_nodes": [ + [ + ["activation_31", 0, 0, {}], + ["activation_34", 0, 0, {}], + ["activation_39", 0, 0, {}], + ["activation_40", 0, 0, {}] + ] + ] + }, + { + "name": "conv2d_45", + "class_name": "Conv2D", + "config": { + "name": "conv2d_45", + "trainable": false, + "filters": 160, + "kernel_size": [1, 1], + "strides": [1, 1], + "padding": "same", + "data_format": "channels_last", + "dilation_rate": [1, 1], + "activation": "linear", + "use_bias": false, + "kernel_initializer": { + "class_name": "VarianceScaling", + "config": { + "scale": 1.0, + "mode": "fan_avg", + "distribution": "uniform", + "seed": null + } + }, + "bias_initializer": { "class_name": "Zeros", "config": {} }, + "kernel_regularizer": null, + "bias_regularizer": null, + "activity_regularizer": null, + "kernel_constraint": null, + "bias_constraint": null + }, + "inbound_nodes": [[["mixed4", 0, 0, {}]]] + }, + { + "name": "batch_normalization_45", + "class_name": "BatchNormalization", + "config": { + "name": "batch_normalization_45", + "trainable": false, + "axis": 3, + "momentum": 0.99, + "epsilon": 0.001, + "center": true, + "scale": false, + "beta_initializer": { "class_name": "Zeros", "config": {} }, + "gamma_initializer": { "class_name": "Ones", "config": {} }, + "moving_mean_initializer": { + "class_name": "Zeros", + "config": {} + }, + "moving_variance_initializer": { + "class_name": "Ones", + "config": {} + }, + "beta_regularizer": null, + "gamma_regularizer": null, + "beta_constraint": null, + "gamma_constraint": null + }, + "inbound_nodes": [[["conv2d_45", 0, 0, {}]]] + }, + { + "name": "activation_45", + "class_name": "Activation", + "config": { + "name": "activation_45", + "trainable": false, + "activation": "relu" + }, + "inbound_nodes": [[["batch_normalization_45", 0, 0, {}]]] + }, + { + "name": "conv2d_46", + "class_name": "Conv2D", + "config": { + "name": "conv2d_46", + "trainable": false, + "filters": 160, + "kernel_size": [7, 1], + "strides": [1, 1], + "padding": "same", + "data_format": "channels_last", + "dilation_rate": [1, 1], + "activation": "linear", + "use_bias": false, + "kernel_initializer": { + "class_name": "VarianceScaling", + "config": { + "scale": 1.0, + "mode": "fan_avg", + "distribution": "uniform", + "seed": null + } + }, + "bias_initializer": { "class_name": "Zeros", "config": {} }, + "kernel_regularizer": null, + "bias_regularizer": null, + "activity_regularizer": null, + "kernel_constraint": null, + "bias_constraint": null + }, + "inbound_nodes": [[["activation_45", 0, 0, {}]]] + }, + { + "name": "batch_normalization_46", + "class_name": "BatchNormalization", + "config": { + "name": "batch_normalization_46", + "trainable": false, + "axis": 3, + "momentum": 0.99, + "epsilon": 0.001, + "center": true, + "scale": false, + "beta_initializer": { "class_name": "Zeros", "config": {} }, + "gamma_initializer": { "class_name": "Ones", "config": {} }, + "moving_mean_initializer": { + "class_name": "Zeros", + "config": {} + }, + "moving_variance_initializer": { + "class_name": "Ones", + "config": {} + }, + "beta_regularizer": null, + "gamma_regularizer": null, + "beta_constraint": null, + "gamma_constraint": null + }, + "inbound_nodes": [[["conv2d_46", 0, 0, {}]]] + }, + { + "name": "activation_46", + "class_name": "Activation", + "config": { + "name": "activation_46", + "trainable": false, + "activation": "relu" + }, + "inbound_nodes": [[["batch_normalization_46", 0, 0, {}]]] + }, + { + "name": "conv2d_42", + "class_name": "Conv2D", + "config": { + "name": "conv2d_42", + "trainable": false, + "filters": 160, + "kernel_size": [1, 1], + "strides": [1, 1], + "padding": "same", + "data_format": "channels_last", + "dilation_rate": [1, 1], + "activation": "linear", + "use_bias": false, + "kernel_initializer": { + "class_name": "VarianceScaling", + "config": { + "scale": 1.0, + "mode": "fan_avg", + "distribution": "uniform", + "seed": null + } + }, + "bias_initializer": { "class_name": "Zeros", "config": {} }, + "kernel_regularizer": null, + "bias_regularizer": null, + "activity_regularizer": null, + "kernel_constraint": null, + "bias_constraint": null + }, + "inbound_nodes": [[["mixed4", 0, 0, {}]]] + }, + { + "name": "conv2d_47", + "class_name": "Conv2D", + "config": { + "name": "conv2d_47", + "trainable": false, + "filters": 160, + "kernel_size": [1, 7], + "strides": [1, 1], + "padding": "same", + "data_format": "channels_last", + "dilation_rate": [1, 1], + "activation": "linear", + "use_bias": false, + "kernel_initializer": { + "class_name": "VarianceScaling", + "config": { + "scale": 1.0, + "mode": "fan_avg", + "distribution": "uniform", + "seed": null + } + }, + "bias_initializer": { "class_name": "Zeros", "config": {} }, + "kernel_regularizer": null, + "bias_regularizer": null, + "activity_regularizer": null, + "kernel_constraint": null, + "bias_constraint": null + }, + "inbound_nodes": [[["activation_46", 0, 0, {}]]] + }, + { + "name": "batch_normalization_42", + "class_name": "BatchNormalization", + "config": { + "name": "batch_normalization_42", + "trainable": false, + "axis": 3, + "momentum": 0.99, + "epsilon": 0.001, + "center": true, + "scale": false, + "beta_initializer": { "class_name": "Zeros", "config": {} }, + "gamma_initializer": { "class_name": "Ones", "config": {} }, + "moving_mean_initializer": { + "class_name": "Zeros", + "config": {} + }, + "moving_variance_initializer": { + "class_name": "Ones", + "config": {} + }, + "beta_regularizer": null, + "gamma_regularizer": null, + "beta_constraint": null, + "gamma_constraint": null + }, + "inbound_nodes": [[["conv2d_42", 0, 0, {}]]] + }, + { + "name": "batch_normalization_47", + "class_name": "BatchNormalization", + "config": { + "name": "batch_normalization_47", + "trainable": false, + "axis": 3, + "momentum": 0.99, + "epsilon": 0.001, + "center": true, + "scale": false, + "beta_initializer": { "class_name": "Zeros", "config": {} }, + "gamma_initializer": { "class_name": "Ones", "config": {} }, + "moving_mean_initializer": { + "class_name": "Zeros", + "config": {} + }, + "moving_variance_initializer": { + "class_name": "Ones", + "config": {} + }, + "beta_regularizer": null, + "gamma_regularizer": null, + "beta_constraint": null, + "gamma_constraint": null + }, + "inbound_nodes": [[["conv2d_47", 0, 0, {}]]] + }, + { + "name": "activation_42", + "class_name": "Activation", + "config": { + "name": "activation_42", + "trainable": false, + "activation": "relu" + }, + "inbound_nodes": [[["batch_normalization_42", 0, 0, {}]]] + }, + { + "name": "activation_47", + "class_name": "Activation", + "config": { + "name": "activation_47", + "trainable": false, + "activation": "relu" + }, + "inbound_nodes": [[["batch_normalization_47", 0, 0, {}]]] + }, + { + "name": "conv2d_43", + "class_name": "Conv2D", + "config": { + "name": "conv2d_43", + "trainable": false, + "filters": 160, + "kernel_size": [1, 7], + "strides": [1, 1], + "padding": "same", + "data_format": "channels_last", + "dilation_rate": [1, 1], + "activation": "linear", + "use_bias": false, + "kernel_initializer": { + "class_name": "VarianceScaling", + "config": { + "scale": 1.0, + "mode": "fan_avg", + "distribution": "uniform", + "seed": null + } + }, + "bias_initializer": { "class_name": "Zeros", "config": {} }, + "kernel_regularizer": null, + "bias_regularizer": null, + "activity_regularizer": null, + "kernel_constraint": null, + "bias_constraint": null + }, + "inbound_nodes": [[["activation_42", 0, 0, {}]]] + }, + { + "name": "conv2d_48", + "class_name": "Conv2D", + "config": { + "name": "conv2d_48", + "trainable": false, + "filters": 160, + "kernel_size": [7, 1], + "strides": [1, 1], + "padding": "same", + "data_format": "channels_last", + "dilation_rate": [1, 1], + "activation": "linear", + "use_bias": false, + "kernel_initializer": { + "class_name": "VarianceScaling", + "config": { + "scale": 1.0, + "mode": "fan_avg", + "distribution": "uniform", + "seed": null + } + }, + "bias_initializer": { "class_name": "Zeros", "config": {} }, + "kernel_regularizer": null, + "bias_regularizer": null, + "activity_regularizer": null, + "kernel_constraint": null, + "bias_constraint": null + }, + "inbound_nodes": [[["activation_47", 0, 0, {}]]] + }, + { + "name": "batch_normalization_43", + "class_name": "BatchNormalization", + "config": { + "name": "batch_normalization_43", + "trainable": false, + "axis": 3, + "momentum": 0.99, + "epsilon": 0.001, + "center": true, + "scale": false, + "beta_initializer": { "class_name": "Zeros", "config": {} }, + "gamma_initializer": { "class_name": "Ones", "config": {} }, + "moving_mean_initializer": { + "class_name": "Zeros", + "config": {} + }, + "moving_variance_initializer": { + "class_name": "Ones", + "config": {} + }, + "beta_regularizer": null, + "gamma_regularizer": null, + "beta_constraint": null, + "gamma_constraint": null + }, + "inbound_nodes": [[["conv2d_43", 0, 0, {}]]] + }, + { + "name": "batch_normalization_48", + "class_name": "BatchNormalization", + "config": { + "name": "batch_normalization_48", + "trainable": false, + "axis": 3, + "momentum": 0.99, + "epsilon": 0.001, + "center": true, + "scale": false, + "beta_initializer": { "class_name": "Zeros", "config": {} }, + "gamma_initializer": { "class_name": "Ones", "config": {} }, + "moving_mean_initializer": { + "class_name": "Zeros", + "config": {} + }, + "moving_variance_initializer": { + "class_name": "Ones", + "config": {} + }, + "beta_regularizer": null, + "gamma_regularizer": null, + "beta_constraint": null, + "gamma_constraint": null + }, + "inbound_nodes": [[["conv2d_48", 0, 0, {}]]] + }, + { + "name": "activation_43", + "class_name": "Activation", + "config": { + "name": "activation_43", + "trainable": false, + "activation": "relu" + }, + "inbound_nodes": [[["batch_normalization_43", 0, 0, {}]]] + }, + { + "name": "activation_48", + "class_name": "Activation", + "config": { + "name": "activation_48", + "trainable": false, + "activation": "relu" + }, + "inbound_nodes": [[["batch_normalization_48", 0, 0, {}]]] + }, + { + "name": "average_pooling2d_5", + "class_name": "AveragePooling2D", + "config": { + "name": "average_pooling2d_5", + "trainable": false, + "pool_size": [3, 3], + "padding": "same", + "strides": [1, 1], + "data_format": "channels_last" + }, + "inbound_nodes": [[["mixed4", 0, 0, {}]]] + }, + { + "name": "conv2d_41", + "class_name": "Conv2D", + "config": { + "name": "conv2d_41", + "trainable": false, + "filters": 192, + "kernel_size": [1, 1], + "strides": [1, 1], + "padding": "same", + "data_format": "channels_last", + "dilation_rate": [1, 1], + "activation": "linear", + "use_bias": false, + "kernel_initializer": { + "class_name": "VarianceScaling", + "config": { + "scale": 1.0, + "mode": "fan_avg", + "distribution": "uniform", + "seed": null + } + }, + "bias_initializer": { "class_name": "Zeros", "config": {} }, + "kernel_regularizer": null, + "bias_regularizer": null, + "activity_regularizer": null, + "kernel_constraint": null, + "bias_constraint": null + }, + "inbound_nodes": [[["mixed4", 0, 0, {}]]] + }, + { + "name": "conv2d_44", + "class_name": "Conv2D", + "config": { + "name": "conv2d_44", + "trainable": false, + "filters": 192, + "kernel_size": [7, 1], + "strides": [1, 1], + "padding": "same", + "data_format": "channels_last", + "dilation_rate": [1, 1], + "activation": "linear", + "use_bias": false, + "kernel_initializer": { + "class_name": "VarianceScaling", + "config": { + "scale": 1.0, + "mode": "fan_avg", + "distribution": "uniform", + "seed": null + } + }, + "bias_initializer": { "class_name": "Zeros", "config": {} }, + "kernel_regularizer": null, + "bias_regularizer": null, + "activity_regularizer": null, + "kernel_constraint": null, + "bias_constraint": null + }, + "inbound_nodes": [[["activation_43", 0, 0, {}]]] + }, + { + "name": "conv2d_49", + "class_name": "Conv2D", + "config": { + "name": "conv2d_49", + "trainable": false, + "filters": 192, + "kernel_size": [1, 7], + "strides": [1, 1], + "padding": "same", + "data_format": "channels_last", + "dilation_rate": [1, 1], + "activation": "linear", + "use_bias": false, + "kernel_initializer": { + "class_name": "VarianceScaling", + "config": { + "scale": 1.0, + "mode": "fan_avg", + "distribution": "uniform", + "seed": null + } + }, + "bias_initializer": { "class_name": "Zeros", "config": {} }, + "kernel_regularizer": null, + "bias_regularizer": null, + "activity_regularizer": null, + "kernel_constraint": null, + "bias_constraint": null + }, + "inbound_nodes": [[["activation_48", 0, 0, {}]]] + }, + { + "name": "conv2d_50", + "class_name": "Conv2D", + "config": { + "name": "conv2d_50", + "trainable": false, + "filters": 192, + "kernel_size": [1, 1], + "strides": [1, 1], + "padding": "same", + "data_format": "channels_last", + "dilation_rate": [1, 1], + "activation": "linear", + "use_bias": false, + "kernel_initializer": { + "class_name": "VarianceScaling", + "config": { + "scale": 1.0, + "mode": "fan_avg", + "distribution": "uniform", + "seed": null + } + }, + "bias_initializer": { "class_name": "Zeros", "config": {} }, + "kernel_regularizer": null, + "bias_regularizer": null, + "activity_regularizer": null, + "kernel_constraint": null, + "bias_constraint": null + }, + "inbound_nodes": [[["average_pooling2d_5", 0, 0, {}]]] + }, + { + "name": "batch_normalization_41", + "class_name": "BatchNormalization", + "config": { + "name": "batch_normalization_41", + "trainable": false, + "axis": 3, + "momentum": 0.99, + "epsilon": 0.001, + "center": true, + "scale": false, + "beta_initializer": { "class_name": "Zeros", "config": {} }, + "gamma_initializer": { "class_name": "Ones", "config": {} }, + "moving_mean_initializer": { + "class_name": "Zeros", + "config": {} + }, + "moving_variance_initializer": { + "class_name": "Ones", + "config": {} + }, + "beta_regularizer": null, + "gamma_regularizer": null, + "beta_constraint": null, + "gamma_constraint": null + }, + "inbound_nodes": [[["conv2d_41", 0, 0, {}]]] + }, + { + "name": "batch_normalization_44", + "class_name": "BatchNormalization", + "config": { + "name": "batch_normalization_44", + "trainable": false, + "axis": 3, + "momentum": 0.99, + "epsilon": 0.001, + "center": true, + "scale": false, + "beta_initializer": { "class_name": "Zeros", "config": {} }, + "gamma_initializer": { "class_name": "Ones", "config": {} }, + "moving_mean_initializer": { + "class_name": "Zeros", + "config": {} + }, + "moving_variance_initializer": { + "class_name": "Ones", + "config": {} + }, + "beta_regularizer": null, + "gamma_regularizer": null, + "beta_constraint": null, + "gamma_constraint": null + }, + "inbound_nodes": [[["conv2d_44", 0, 0, {}]]] + }, + { + "name": "batch_normalization_49", + "class_name": "BatchNormalization", + "config": { + "name": "batch_normalization_49", + "trainable": false, + "axis": 3, + "momentum": 0.99, + "epsilon": 0.001, + "center": true, + "scale": false, + "beta_initializer": { "class_name": "Zeros", "config": {} }, + "gamma_initializer": { "class_name": "Ones", "config": {} }, + "moving_mean_initializer": { + "class_name": "Zeros", + "config": {} + }, + "moving_variance_initializer": { + "class_name": "Ones", + "config": {} + }, + "beta_regularizer": null, + "gamma_regularizer": null, + "beta_constraint": null, + "gamma_constraint": null + }, + "inbound_nodes": [[["conv2d_49", 0, 0, {}]]] + }, + { + "name": "batch_normalization_50", + "class_name": "BatchNormalization", + "config": { + "name": "batch_normalization_50", + "trainable": false, + "axis": 3, + "momentum": 0.99, + "epsilon": 0.001, + "center": true, + "scale": false, + "beta_initializer": { "class_name": "Zeros", "config": {} }, + "gamma_initializer": { "class_name": "Ones", "config": {} }, + "moving_mean_initializer": { + "class_name": "Zeros", + "config": {} + }, + "moving_variance_initializer": { + "class_name": "Ones", + "config": {} + }, + "beta_regularizer": null, + "gamma_regularizer": null, + "beta_constraint": null, + "gamma_constraint": null + }, + "inbound_nodes": [[["conv2d_50", 0, 0, {}]]] + }, + { + "name": "activation_41", + "class_name": "Activation", + "config": { + "name": "activation_41", + "trainable": false, + "activation": "relu" + }, + "inbound_nodes": [[["batch_normalization_41", 0, 0, {}]]] + }, + { + "name": "activation_44", + "class_name": "Activation", + "config": { + "name": "activation_44", + "trainable": false, + "activation": "relu" + }, + "inbound_nodes": [[["batch_normalization_44", 0, 0, {}]]] + }, + { + "name": "activation_49", + "class_name": "Activation", + "config": { + "name": "activation_49", + "trainable": false, + "activation": "relu" + }, + "inbound_nodes": [[["batch_normalization_49", 0, 0, {}]]] + }, + { + "name": "activation_50", + "class_name": "Activation", + "config": { + "name": "activation_50", + "trainable": false, + "activation": "relu" + }, + "inbound_nodes": [[["batch_normalization_50", 0, 0, {}]]] + }, + { + "name": "mixed5", + "class_name": "Concatenate", + "config": { "name": "mixed5", "trainable": false, "axis": 3 }, + "inbound_nodes": [ + [ + ["activation_41", 0, 0, {}], + ["activation_44", 0, 0, {}], + ["activation_49", 0, 0, {}], + ["activation_50", 0, 0, {}] + ] + ] + }, + { + "name": "conv2d_55", + "class_name": "Conv2D", + "config": { + "name": "conv2d_55", + "trainable": false, + "filters": 160, + "kernel_size": [1, 1], + "strides": [1, 1], + "padding": "same", + "data_format": "channels_last", + "dilation_rate": [1, 1], + "activation": "linear", + "use_bias": false, + "kernel_initializer": { + "class_name": "VarianceScaling", + "config": { + "scale": 1.0, + "mode": "fan_avg", + "distribution": "uniform", + "seed": null + } + }, + "bias_initializer": { "class_name": "Zeros", "config": {} }, + "kernel_regularizer": null, + "bias_regularizer": null, + "activity_regularizer": null, + "kernel_constraint": null, + "bias_constraint": null + }, + "inbound_nodes": [[["mixed5", 0, 0, {}]]] + }, + { + "name": "batch_normalization_55", + "class_name": "BatchNormalization", + "config": { + "name": "batch_normalization_55", + "trainable": false, + "axis": 3, + "momentum": 0.99, + "epsilon": 0.001, + "center": true, + "scale": false, + "beta_initializer": { "class_name": "Zeros", "config": {} }, + "gamma_initializer": { "class_name": "Ones", "config": {} }, + "moving_mean_initializer": { + "class_name": "Zeros", + "config": {} + }, + "moving_variance_initializer": { + "class_name": "Ones", + "config": {} + }, + "beta_regularizer": null, + "gamma_regularizer": null, + "beta_constraint": null, + "gamma_constraint": null + }, + "inbound_nodes": [[["conv2d_55", 0, 0, {}]]] + }, + { + "name": "activation_55", + "class_name": "Activation", + "config": { + "name": "activation_55", + "trainable": false, + "activation": "relu" + }, + "inbound_nodes": [[["batch_normalization_55", 0, 0, {}]]] + }, + { + "name": "conv2d_56", + "class_name": "Conv2D", + "config": { + "name": "conv2d_56", + "trainable": true, + "filters": 160, + "kernel_size": [7, 1], + "strides": [1, 1], + "padding": "same", + "data_format": "channels_last", + "dilation_rate": [1, 1], + "activation": "linear", + "use_bias": false, + "kernel_initializer": { + "class_name": "VarianceScaling", + "config": { + "scale": 1.0, + "mode": "fan_avg", + "distribution": "uniform", + "seed": null + } + }, + "bias_initializer": { "class_name": "Zeros", "config": {} }, + "kernel_regularizer": null, + "bias_regularizer": null, + "activity_regularizer": null, + "kernel_constraint": null, + "bias_constraint": null + }, + "inbound_nodes": [[["activation_55", 0, 0, {}]]] + }, + { + "name": "batch_normalization_56", + "class_name": "BatchNormalization", + "config": { + "name": "batch_normalization_56", + "trainable": true, + "axis": 3, + "momentum": 0.99, + "epsilon": 0.001, + "center": true, + "scale": false, + "beta_initializer": { "class_name": "Zeros", "config": {} }, + "gamma_initializer": { "class_name": "Ones", "config": {} }, + "moving_mean_initializer": { + "class_name": "Zeros", + "config": {} + }, + "moving_variance_initializer": { + "class_name": "Ones", + "config": {} + }, + "beta_regularizer": null, + "gamma_regularizer": null, + "beta_constraint": null, + "gamma_constraint": null + }, + "inbound_nodes": [[["conv2d_56", 0, 0, {}]]] + }, + { + "name": "activation_56", + "class_name": "Activation", + "config": { + "name": "activation_56", + "trainable": true, + "activation": "relu" + }, + "inbound_nodes": [[["batch_normalization_56", 0, 0, {}]]] + }, + { + "name": "conv2d_52", + "class_name": "Conv2D", + "config": { + "name": "conv2d_52", + "trainable": true, + "filters": 160, + "kernel_size": [1, 1], + "strides": [1, 1], + "padding": "same", + "data_format": "channels_last", + "dilation_rate": [1, 1], + "activation": "linear", + "use_bias": false, + "kernel_initializer": { + "class_name": "VarianceScaling", + "config": { + "scale": 1.0, + "mode": "fan_avg", + "distribution": "uniform", + "seed": null + } + }, + "bias_initializer": { "class_name": "Zeros", "config": {} }, + "kernel_regularizer": null, + "bias_regularizer": null, + "activity_regularizer": null, + "kernel_constraint": null, + "bias_constraint": null + }, + "inbound_nodes": [[["mixed5", 0, 0, {}]]] + }, + { + "name": "conv2d_57", + "class_name": "Conv2D", + "config": { + "name": "conv2d_57", + "trainable": true, + "filters": 160, + "kernel_size": [1, 7], + "strides": [1, 1], + "padding": "same", + "data_format": "channels_last", + "dilation_rate": [1, 1], + "activation": "linear", + "use_bias": false, + "kernel_initializer": { + "class_name": "VarianceScaling", + "config": { + "scale": 1.0, + "mode": "fan_avg", + "distribution": "uniform", + "seed": null + } + }, + "bias_initializer": { "class_name": "Zeros", "config": {} }, + "kernel_regularizer": null, + "bias_regularizer": null, + "activity_regularizer": null, + "kernel_constraint": null, + "bias_constraint": null + }, + "inbound_nodes": [[["activation_56", 0, 0, {}]]] + }, + { + "name": "batch_normalization_52", + "class_name": "BatchNormalization", + "config": { + "name": "batch_normalization_52", + "trainable": true, + "axis": 3, + "momentum": 0.99, + "epsilon": 0.001, + "center": true, + "scale": false, + "beta_initializer": { "class_name": "Zeros", "config": {} }, + "gamma_initializer": { "class_name": "Ones", "config": {} }, + "moving_mean_initializer": { + "class_name": "Zeros", + "config": {} + }, + "moving_variance_initializer": { + "class_name": "Ones", + "config": {} + }, + "beta_regularizer": null, + "gamma_regularizer": null, + "beta_constraint": null, + "gamma_constraint": null + }, + "inbound_nodes": [[["conv2d_52", 0, 0, {}]]] + }, + { + "name": "batch_normalization_57", + "class_name": "BatchNormalization", + "config": { + "name": "batch_normalization_57", + "trainable": true, + "axis": 3, + "momentum": 0.99, + "epsilon": 0.001, + "center": true, + "scale": false, + "beta_initializer": { "class_name": "Zeros", "config": {} }, + "gamma_initializer": { "class_name": "Ones", "config": {} }, + "moving_mean_initializer": { + "class_name": "Zeros", + "config": {} + }, + "moving_variance_initializer": { + "class_name": "Ones", + "config": {} + }, + "beta_regularizer": null, + "gamma_regularizer": null, + "beta_constraint": null, + "gamma_constraint": null + }, + "inbound_nodes": [[["conv2d_57", 0, 0, {}]]] + }, + { + "name": "activation_52", + "class_name": "Activation", + "config": { + "name": "activation_52", + "trainable": true, + "activation": "relu" + }, + "inbound_nodes": [[["batch_normalization_52", 0, 0, {}]]] + }, + { + "name": "activation_57", + "class_name": "Activation", + "config": { + "name": "activation_57", + "trainable": true, + "activation": "relu" + }, + "inbound_nodes": [[["batch_normalization_57", 0, 0, {}]]] + }, + { + "name": "conv2d_53", + "class_name": "Conv2D", + "config": { + "name": "conv2d_53", + "trainable": true, + "filters": 160, + "kernel_size": [1, 7], + "strides": [1, 1], + "padding": "same", + "data_format": "channels_last", + "dilation_rate": [1, 1], + "activation": "linear", + "use_bias": false, + "kernel_initializer": { + "class_name": "VarianceScaling", + "config": { + "scale": 1.0, + "mode": "fan_avg", + "distribution": "uniform", + "seed": null + } + }, + "bias_initializer": { "class_name": "Zeros", "config": {} }, + "kernel_regularizer": null, + "bias_regularizer": null, + "activity_regularizer": null, + "kernel_constraint": null, + "bias_constraint": null + }, + "inbound_nodes": [[["activation_52", 0, 0, {}]]] + }, + { + "name": "conv2d_58", + "class_name": "Conv2D", + "config": { + "name": "conv2d_58", + "trainable": true, + "filters": 160, + "kernel_size": [7, 1], + "strides": [1, 1], + "padding": "same", + "data_format": "channels_last", + "dilation_rate": [1, 1], + "activation": "linear", + "use_bias": false, + "kernel_initializer": { + "class_name": "VarianceScaling", + "config": { + "scale": 1.0, + "mode": "fan_avg", + "distribution": "uniform", + "seed": null + } + }, + "bias_initializer": { "class_name": "Zeros", "config": {} }, + "kernel_regularizer": null, + "bias_regularizer": null, + "activity_regularizer": null, + "kernel_constraint": null, + "bias_constraint": null + }, + "inbound_nodes": [[["activation_57", 0, 0, {}]]] + }, + { + "name": "batch_normalization_53", + "class_name": "BatchNormalization", + "config": { + "name": "batch_normalization_53", + "trainable": true, + "axis": 3, + "momentum": 0.99, + "epsilon": 0.001, + "center": true, + "scale": false, + "beta_initializer": { "class_name": "Zeros", "config": {} }, + "gamma_initializer": { "class_name": "Ones", "config": {} }, + "moving_mean_initializer": { + "class_name": "Zeros", + "config": {} + }, + "moving_variance_initializer": { + "class_name": "Ones", + "config": {} + }, + "beta_regularizer": null, + "gamma_regularizer": null, + "beta_constraint": null, + "gamma_constraint": null + }, + "inbound_nodes": [[["conv2d_53", 0, 0, {}]]] + }, + { + "name": "batch_normalization_58", + "class_name": "BatchNormalization", + "config": { + "name": "batch_normalization_58", + "trainable": true, + "axis": 3, + "momentum": 0.99, + "epsilon": 0.001, + "center": true, + "scale": false, + "beta_initializer": { "class_name": "Zeros", "config": {} }, + "gamma_initializer": { "class_name": "Ones", "config": {} }, + "moving_mean_initializer": { + "class_name": "Zeros", + "config": {} + }, + "moving_variance_initializer": { + "class_name": "Ones", + "config": {} + }, + "beta_regularizer": null, + "gamma_regularizer": null, + "beta_constraint": null, + "gamma_constraint": null + }, + "inbound_nodes": [[["conv2d_58", 0, 0, {}]]] + }, + { + "name": "activation_53", + "class_name": "Activation", + "config": { + "name": "activation_53", + "trainable": true, + "activation": "relu" + }, + "inbound_nodes": [[["batch_normalization_53", 0, 0, {}]]] + }, + { + "name": "activation_58", + "class_name": "Activation", + "config": { + "name": "activation_58", + "trainable": true, + "activation": "relu" + }, + "inbound_nodes": [[["batch_normalization_58", 0, 0, {}]]] + }, + { + "name": "average_pooling2d_6", + "class_name": "AveragePooling2D", + "config": { + "name": "average_pooling2d_6", + "trainable": true, + "pool_size": [3, 3], + "padding": "same", + "strides": [1, 1], + "data_format": "channels_last" + }, + "inbound_nodes": [[["mixed5", 0, 0, {}]]] + }, + { + "name": "conv2d_51", + "class_name": "Conv2D", + "config": { + "name": "conv2d_51", + "trainable": true, + "filters": 192, + "kernel_size": [1, 1], + "strides": [1, 1], + "padding": "same", + "data_format": "channels_last", + "dilation_rate": [1, 1], + "activation": "linear", + "use_bias": false, + "kernel_initializer": { + "class_name": "VarianceScaling", + "config": { + "scale": 1.0, + "mode": "fan_avg", + "distribution": "uniform", + "seed": null + } + }, + "bias_initializer": { "class_name": "Zeros", "config": {} }, + "kernel_regularizer": null, + "bias_regularizer": null, + "activity_regularizer": null, + "kernel_constraint": null, + "bias_constraint": null + }, + "inbound_nodes": [[["mixed5", 0, 0, {}]]] + }, + { + "name": "conv2d_54", + "class_name": "Conv2D", + "config": { + "name": "conv2d_54", + "trainable": true, + "filters": 192, + "kernel_size": [7, 1], + "strides": [1, 1], + "padding": "same", + "data_format": "channels_last", + "dilation_rate": [1, 1], + "activation": "linear", + "use_bias": false, + "kernel_initializer": { + "class_name": "VarianceScaling", + "config": { + "scale": 1.0, + "mode": "fan_avg", + "distribution": "uniform", + "seed": null + } + }, + "bias_initializer": { "class_name": "Zeros", "config": {} }, + "kernel_regularizer": null, + "bias_regularizer": null, + "activity_regularizer": null, + "kernel_constraint": null, + "bias_constraint": null + }, + "inbound_nodes": [[["activation_53", 0, 0, {}]]] + }, + { + "name": "conv2d_59", + "class_name": "Conv2D", + "config": { + "name": "conv2d_59", + "trainable": true, + "filters": 192, + "kernel_size": [1, 7], + "strides": [1, 1], + "padding": "same", + "data_format": "channels_last", + "dilation_rate": [1, 1], + "activation": "linear", + "use_bias": false, + "kernel_initializer": { + "class_name": "VarianceScaling", + "config": { + "scale": 1.0, + "mode": "fan_avg", + "distribution": "uniform", + "seed": null + } + }, + "bias_initializer": { "class_name": "Zeros", "config": {} }, + "kernel_regularizer": null, + "bias_regularizer": null, + "activity_regularizer": null, + "kernel_constraint": null, + "bias_constraint": null + }, + "inbound_nodes": [[["activation_58", 0, 0, {}]]] + }, + { + "name": "conv2d_60", + "class_name": "Conv2D", + "config": { + "name": "conv2d_60", + "trainable": true, + "filters": 192, + "kernel_size": [1, 1], + "strides": [1, 1], + "padding": "same", + "data_format": "channels_last", + "dilation_rate": [1, 1], + "activation": "linear", + "use_bias": false, + "kernel_initializer": { + "class_name": "VarianceScaling", + "config": { + "scale": 1.0, + "mode": "fan_avg", + "distribution": "uniform", + "seed": null + } + }, + "bias_initializer": { "class_name": "Zeros", "config": {} }, + "kernel_regularizer": null, + "bias_regularizer": null, + "activity_regularizer": null, + "kernel_constraint": null, + "bias_constraint": null + }, + "inbound_nodes": [[["average_pooling2d_6", 0, 0, {}]]] + }, + { + "name": "batch_normalization_51", + "class_name": "BatchNormalization", + "config": { + "name": "batch_normalization_51", + "trainable": true, + "axis": 3, + "momentum": 0.99, + "epsilon": 0.001, + "center": true, + "scale": false, + "beta_initializer": { "class_name": "Zeros", "config": {} }, + "gamma_initializer": { "class_name": "Ones", "config": {} }, + "moving_mean_initializer": { + "class_name": "Zeros", + "config": {} + }, + "moving_variance_initializer": { + "class_name": "Ones", + "config": {} + }, + "beta_regularizer": null, + "gamma_regularizer": null, + "beta_constraint": null, + "gamma_constraint": null + }, + "inbound_nodes": [[["conv2d_51", 0, 0, {}]]] + }, + { + "name": "batch_normalization_54", + "class_name": "BatchNormalization", + "config": { + "name": "batch_normalization_54", + "trainable": true, + "axis": 3, + "momentum": 0.99, + "epsilon": 0.001, + "center": true, + "scale": false, + "beta_initializer": { "class_name": "Zeros", "config": {} }, + "gamma_initializer": { "class_name": "Ones", "config": {} }, + "moving_mean_initializer": { + "class_name": "Zeros", + "config": {} + }, + "moving_variance_initializer": { + "class_name": "Ones", + "config": {} + }, + "beta_regularizer": null, + "gamma_regularizer": null, + "beta_constraint": null, + "gamma_constraint": null + }, + "inbound_nodes": [[["conv2d_54", 0, 0, {}]]] + }, + { + "name": "batch_normalization_59", + "class_name": "BatchNormalization", + "config": { + "name": "batch_normalization_59", + "trainable": true, + "axis": 3, + "momentum": 0.99, + "epsilon": 0.001, + "center": true, + "scale": false, + "beta_initializer": { "class_name": "Zeros", "config": {} }, + "gamma_initializer": { "class_name": "Ones", "config": {} }, + "moving_mean_initializer": { + "class_name": "Zeros", + "config": {} + }, + "moving_variance_initializer": { + "class_name": "Ones", + "config": {} + }, + "beta_regularizer": null, + "gamma_regularizer": null, + "beta_constraint": null, + "gamma_constraint": null + }, + "inbound_nodes": [[["conv2d_59", 0, 0, {}]]] + }, + { + "name": "batch_normalization_60", + "class_name": "BatchNormalization", + "config": { + "name": "batch_normalization_60", + "trainable": true, + "axis": 3, + "momentum": 0.99, + "epsilon": 0.001, + "center": true, + "scale": false, + "beta_initializer": { "class_name": "Zeros", "config": {} }, + "gamma_initializer": { "class_name": "Ones", "config": {} }, + "moving_mean_initializer": { + "class_name": "Zeros", + "config": {} + }, + "moving_variance_initializer": { + "class_name": "Ones", + "config": {} + }, + "beta_regularizer": null, + "gamma_regularizer": null, + "beta_constraint": null, + "gamma_constraint": null + }, + "inbound_nodes": [[["conv2d_60", 0, 0, {}]]] + }, + { + "name": "activation_51", + "class_name": "Activation", + "config": { + "name": "activation_51", + "trainable": true, + "activation": "relu" + }, + "inbound_nodes": [[["batch_normalization_51", 0, 0, {}]]] + }, + { + "name": "activation_54", + "class_name": "Activation", + "config": { + "name": "activation_54", + "trainable": true, + "activation": "relu" + }, + "inbound_nodes": [[["batch_normalization_54", 0, 0, {}]]] + }, + { + "name": "activation_59", + "class_name": "Activation", + "config": { + "name": "activation_59", + "trainable": true, + "activation": "relu" + }, + "inbound_nodes": [[["batch_normalization_59", 0, 0, {}]]] + }, + { + "name": "activation_60", + "class_name": "Activation", + "config": { + "name": "activation_60", + "trainable": true, + "activation": "relu" + }, + "inbound_nodes": [[["batch_normalization_60", 0, 0, {}]]] + }, + { + "name": "mixed6", + "class_name": "Concatenate", + "config": { "name": "mixed6", "trainable": true, "axis": 3 }, + "inbound_nodes": [ + [ + ["activation_51", 0, 0, {}], + ["activation_54", 0, 0, {}], + ["activation_59", 0, 0, {}], + ["activation_60", 0, 0, {}] + ] + ] + }, + { + "name": "conv2d_65", + "class_name": "Conv2D", + "config": { + "name": "conv2d_65", + "trainable": true, + "filters": 192, + "kernel_size": [1, 1], + "strides": [1, 1], + "padding": "same", + "data_format": "channels_last", + "dilation_rate": [1, 1], + "activation": "linear", + "use_bias": false, + "kernel_initializer": { + "class_name": "VarianceScaling", + "config": { + "scale": 1.0, + "mode": "fan_avg", + "distribution": "uniform", + "seed": null + } + }, + "bias_initializer": { "class_name": "Zeros", "config": {} }, + "kernel_regularizer": null, + "bias_regularizer": null, + "activity_regularizer": null, + "kernel_constraint": null, + "bias_constraint": null + }, + "inbound_nodes": [[["mixed6", 0, 0, {}]]] + }, + { + "name": "batch_normalization_65", + "class_name": "BatchNormalization", + "config": { + "name": "batch_normalization_65", + "trainable": true, + "axis": 3, + "momentum": 0.99, + "epsilon": 0.001, + "center": true, + "scale": false, + "beta_initializer": { "class_name": "Zeros", "config": {} }, + "gamma_initializer": { "class_name": "Ones", "config": {} }, + "moving_mean_initializer": { + "class_name": "Zeros", + "config": {} + }, + "moving_variance_initializer": { + "class_name": "Ones", + "config": {} + }, + "beta_regularizer": null, + "gamma_regularizer": null, + "beta_constraint": null, + "gamma_constraint": null + }, + "inbound_nodes": [[["conv2d_65", 0, 0, {}]]] + }, + { + "name": "activation_65", + "class_name": "Activation", + "config": { + "name": "activation_65", + "trainable": true, + "activation": "relu" + }, + "inbound_nodes": [[["batch_normalization_65", 0, 0, {}]]] + }, + { + "name": "conv2d_66", + "class_name": "Conv2D", + "config": { + "name": "conv2d_66", + "trainable": true, + "filters": 192, + "kernel_size": [7, 1], + "strides": [1, 1], + "padding": "same", + "data_format": "channels_last", + "dilation_rate": [1, 1], + "activation": "linear", + "use_bias": false, + "kernel_initializer": { + "class_name": "VarianceScaling", + "config": { + "scale": 1.0, + "mode": "fan_avg", + "distribution": "uniform", + "seed": null + } + }, + "bias_initializer": { "class_name": "Zeros", "config": {} }, + "kernel_regularizer": null, + "bias_regularizer": null, + "activity_regularizer": null, + "kernel_constraint": null, + "bias_constraint": null + }, + "inbound_nodes": [[["activation_65", 0, 0, {}]]] + }, + { + "name": "batch_normalization_66", + "class_name": "BatchNormalization", + "config": { + "name": "batch_normalization_66", + "trainable": true, + "axis": 3, + "momentum": 0.99, + "epsilon": 0.001, + "center": true, + "scale": false, + "beta_initializer": { "class_name": "Zeros", "config": {} }, + "gamma_initializer": { "class_name": "Ones", "config": {} }, + "moving_mean_initializer": { + "class_name": "Zeros", + "config": {} + }, + "moving_variance_initializer": { + "class_name": "Ones", + "config": {} + }, + "beta_regularizer": null, + "gamma_regularizer": null, + "beta_constraint": null, + "gamma_constraint": null + }, + "inbound_nodes": [[["conv2d_66", 0, 0, {}]]] + }, + { + "name": "activation_66", + "class_name": "Activation", + "config": { + "name": "activation_66", + "trainable": true, + "activation": "relu" + }, + "inbound_nodes": [[["batch_normalization_66", 0, 0, {}]]] + }, + { + "name": "conv2d_62", + "class_name": "Conv2D", + "config": { + "name": "conv2d_62", + "trainable": true, + "filters": 192, + "kernel_size": [1, 1], + "strides": [1, 1], + "padding": "same", + "data_format": "channels_last", + "dilation_rate": [1, 1], + "activation": "linear", + "use_bias": false, + "kernel_initializer": { + "class_name": "VarianceScaling", + "config": { + "scale": 1.0, + "mode": "fan_avg", + "distribution": "uniform", + "seed": null + } + }, + "bias_initializer": { "class_name": "Zeros", "config": {} }, + "kernel_regularizer": null, + "bias_regularizer": null, + "activity_regularizer": null, + "kernel_constraint": null, + "bias_constraint": null + }, + "inbound_nodes": [[["mixed6", 0, 0, {}]]] + }, + { + "name": "conv2d_67", + "class_name": "Conv2D", + "config": { + "name": "conv2d_67", + "trainable": true, + "filters": 192, + "kernel_size": [1, 7], + "strides": [1, 1], + "padding": "same", + "data_format": "channels_last", + "dilation_rate": [1, 1], + "activation": "linear", + "use_bias": false, + "kernel_initializer": { + "class_name": "VarianceScaling", + "config": { + "scale": 1.0, + "mode": "fan_avg", + "distribution": "uniform", + "seed": null + } + }, + "bias_initializer": { "class_name": "Zeros", "config": {} }, + "kernel_regularizer": null, + "bias_regularizer": null, + "activity_regularizer": null, + "kernel_constraint": null, + "bias_constraint": null + }, + "inbound_nodes": [[["activation_66", 0, 0, {}]]] + }, + { + "name": "batch_normalization_62", + "class_name": "BatchNormalization", + "config": { + "name": "batch_normalization_62", + "trainable": true, + "axis": 3, + "momentum": 0.99, + "epsilon": 0.001, + "center": true, + "scale": false, + "beta_initializer": { "class_name": "Zeros", "config": {} }, + "gamma_initializer": { "class_name": "Ones", "config": {} }, + "moving_mean_initializer": { + "class_name": "Zeros", + "config": {} + }, + "moving_variance_initializer": { + "class_name": "Ones", + "config": {} + }, + "beta_regularizer": null, + "gamma_regularizer": null, + "beta_constraint": null, + "gamma_constraint": null + }, + "inbound_nodes": [[["conv2d_62", 0, 0, {}]]] + }, + { + "name": "batch_normalization_67", + "class_name": "BatchNormalization", + "config": { + "name": "batch_normalization_67", + "trainable": true, + "axis": 3, + "momentum": 0.99, + "epsilon": 0.001, + "center": true, + "scale": false, + "beta_initializer": { "class_name": "Zeros", "config": {} }, + "gamma_initializer": { "class_name": "Ones", "config": {} }, + "moving_mean_initializer": { + "class_name": "Zeros", + "config": {} + }, + "moving_variance_initializer": { + "class_name": "Ones", + "config": {} + }, + "beta_regularizer": null, + "gamma_regularizer": null, + "beta_constraint": null, + "gamma_constraint": null + }, + "inbound_nodes": [[["conv2d_67", 0, 0, {}]]] + }, + { + "name": "activation_62", + "class_name": "Activation", + "config": { + "name": "activation_62", + "trainable": true, + "activation": "relu" + }, + "inbound_nodes": [[["batch_normalization_62", 0, 0, {}]]] + }, + { + "name": "activation_67", + "class_name": "Activation", + "config": { + "name": "activation_67", + "trainable": true, + "activation": "relu" + }, + "inbound_nodes": [[["batch_normalization_67", 0, 0, {}]]] + }, + { + "name": "conv2d_63", + "class_name": "Conv2D", + "config": { + "name": "conv2d_63", + "trainable": true, + "filters": 192, + "kernel_size": [1, 7], + "strides": [1, 1], + "padding": "same", + "data_format": "channels_last", + "dilation_rate": [1, 1], + "activation": "linear", + "use_bias": false, + "kernel_initializer": { + "class_name": "VarianceScaling", + "config": { + "scale": 1.0, + "mode": "fan_avg", + "distribution": "uniform", + "seed": null + } + }, + "bias_initializer": { "class_name": "Zeros", "config": {} }, + "kernel_regularizer": null, + "bias_regularizer": null, + "activity_regularizer": null, + "kernel_constraint": null, + "bias_constraint": null + }, + "inbound_nodes": [[["activation_62", 0, 0, {}]]] + }, + { + "name": "conv2d_68", + "class_name": "Conv2D", + "config": { + "name": "conv2d_68", + "trainable": true, + "filters": 192, + "kernel_size": [7, 1], + "strides": [1, 1], + "padding": "same", + "data_format": "channels_last", + "dilation_rate": [1, 1], + "activation": "linear", + "use_bias": false, + "kernel_initializer": { + "class_name": "VarianceScaling", + "config": { + "scale": 1.0, + "mode": "fan_avg", + "distribution": "uniform", + "seed": null + } + }, + "bias_initializer": { "class_name": "Zeros", "config": {} }, + "kernel_regularizer": null, + "bias_regularizer": null, + "activity_regularizer": null, + "kernel_constraint": null, + "bias_constraint": null + }, + "inbound_nodes": [[["activation_67", 0, 0, {}]]] + }, + { + "name": "batch_normalization_63", + "class_name": "BatchNormalization", + "config": { + "name": "batch_normalization_63", + "trainable": true, + "axis": 3, + "momentum": 0.99, + "epsilon": 0.001, + "center": true, + "scale": false, + "beta_initializer": { "class_name": "Zeros", "config": {} }, + "gamma_initializer": { "class_name": "Ones", "config": {} }, + "moving_mean_initializer": { + "class_name": "Zeros", + "config": {} + }, + "moving_variance_initializer": { + "class_name": "Ones", + "config": {} + }, + "beta_regularizer": null, + "gamma_regularizer": null, + "beta_constraint": null, + "gamma_constraint": null + }, + "inbound_nodes": [[["conv2d_63", 0, 0, {}]]] + }, + { + "name": "batch_normalization_68", + "class_name": "BatchNormalization", + "config": { + "name": "batch_normalization_68", + "trainable": true, + "axis": 3, + "momentum": 0.99, + "epsilon": 0.001, + "center": true, + "scale": false, + "beta_initializer": { "class_name": "Zeros", "config": {} }, + "gamma_initializer": { "class_name": "Ones", "config": {} }, + "moving_mean_initializer": { + "class_name": "Zeros", + "config": {} + }, + "moving_variance_initializer": { + "class_name": "Ones", + "config": {} + }, + "beta_regularizer": null, + "gamma_regularizer": null, + "beta_constraint": null, + "gamma_constraint": null + }, + "inbound_nodes": [[["conv2d_68", 0, 0, {}]]] + }, + { + "name": "activation_63", + "class_name": "Activation", + "config": { + "name": "activation_63", + "trainable": true, + "activation": "relu" + }, + "inbound_nodes": [[["batch_normalization_63", 0, 0, {}]]] + }, + { + "name": "activation_68", + "class_name": "Activation", + "config": { + "name": "activation_68", + "trainable": true, + "activation": "relu" + }, + "inbound_nodes": [[["batch_normalization_68", 0, 0, {}]]] + }, + { + "name": "average_pooling2d_7", + "class_name": "AveragePooling2D", + "config": { + "name": "average_pooling2d_7", + "trainable": true, + "pool_size": [3, 3], + "padding": "same", + "strides": [1, 1], + "data_format": "channels_last" + }, + "inbound_nodes": [[["mixed6", 0, 0, {}]]] + }, + { + "name": "conv2d_61", + "class_name": "Conv2D", + "config": { + "name": "conv2d_61", + "trainable": true, + "filters": 192, + "kernel_size": [1, 1], + "strides": [1, 1], + "padding": "same", + "data_format": "channels_last", + "dilation_rate": [1, 1], + "activation": "linear", + "use_bias": false, + "kernel_initializer": { + "class_name": "VarianceScaling", + "config": { + "scale": 1.0, + "mode": "fan_avg", + "distribution": "uniform", + "seed": null + } + }, + "bias_initializer": { "class_name": "Zeros", "config": {} }, + "kernel_regularizer": null, + "bias_regularizer": null, + "activity_regularizer": null, + "kernel_constraint": null, + "bias_constraint": null + }, + "inbound_nodes": [[["mixed6", 0, 0, {}]]] + }, + { + "name": "conv2d_64", + "class_name": "Conv2D", + "config": { + "name": "conv2d_64", + "trainable": true, + "filters": 192, + "kernel_size": [7, 1], + "strides": [1, 1], + "padding": "same", + "data_format": "channels_last", + "dilation_rate": [1, 1], + "activation": "linear", + "use_bias": false, + "kernel_initializer": { + "class_name": "VarianceScaling", + "config": { + "scale": 1.0, + "mode": "fan_avg", + "distribution": "uniform", + "seed": null + } + }, + "bias_initializer": { "class_name": "Zeros", "config": {} }, + "kernel_regularizer": null, + "bias_regularizer": null, + "activity_regularizer": null, + "kernel_constraint": null, + "bias_constraint": null + }, + "inbound_nodes": [[["activation_63", 0, 0, {}]]] + }, + { + "name": "conv2d_69", + "class_name": "Conv2D", + "config": { + "name": "conv2d_69", + "trainable": true, + "filters": 192, + "kernel_size": [1, 7], + "strides": [1, 1], + "padding": "same", + "data_format": "channels_last", + "dilation_rate": [1, 1], + "activation": "linear", + "use_bias": false, + "kernel_initializer": { + "class_name": "VarianceScaling", + "config": { + "scale": 1.0, + "mode": "fan_avg", + "distribution": "uniform", + "seed": null + } + }, + "bias_initializer": { "class_name": "Zeros", "config": {} }, + "kernel_regularizer": null, + "bias_regularizer": null, + "activity_regularizer": null, + "kernel_constraint": null, + "bias_constraint": null + }, + "inbound_nodes": [[["activation_68", 0, 0, {}]]] + }, + { + "name": "conv2d_70", + "class_name": "Conv2D", + "config": { + "name": "conv2d_70", + "trainable": true, + "filters": 192, + "kernel_size": [1, 1], + "strides": [1, 1], + "padding": "same", + "data_format": "channels_last", + "dilation_rate": [1, 1], + "activation": "linear", + "use_bias": false, + "kernel_initializer": { + "class_name": "VarianceScaling", + "config": { + "scale": 1.0, + "mode": "fan_avg", + "distribution": "uniform", + "seed": null + } + }, + "bias_initializer": { "class_name": "Zeros", "config": {} }, + "kernel_regularizer": null, + "bias_regularizer": null, + "activity_regularizer": null, + "kernel_constraint": null, + "bias_constraint": null + }, + "inbound_nodes": [[["average_pooling2d_7", 0, 0, {}]]] + }, + { + "name": "batch_normalization_61", + "class_name": "BatchNormalization", + "config": { + "name": "batch_normalization_61", + "trainable": true, + "axis": 3, + "momentum": 0.99, + "epsilon": 0.001, + "center": true, + "scale": false, + "beta_initializer": { "class_name": "Zeros", "config": {} }, + "gamma_initializer": { "class_name": "Ones", "config": {} }, + "moving_mean_initializer": { + "class_name": "Zeros", + "config": {} + }, + "moving_variance_initializer": { + "class_name": "Ones", + "config": {} + }, + "beta_regularizer": null, + "gamma_regularizer": null, + "beta_constraint": null, + "gamma_constraint": null + }, + "inbound_nodes": [[["conv2d_61", 0, 0, {}]]] + }, + { + "name": "batch_normalization_64", + "class_name": "BatchNormalization", + "config": { + "name": "batch_normalization_64", + "trainable": true, + "axis": 3, + "momentum": 0.99, + "epsilon": 0.001, + "center": true, + "scale": false, + "beta_initializer": { "class_name": "Zeros", "config": {} }, + "gamma_initializer": { "class_name": "Ones", "config": {} }, + "moving_mean_initializer": { + "class_name": "Zeros", + "config": {} + }, + "moving_variance_initializer": { + "class_name": "Ones", + "config": {} + }, + "beta_regularizer": null, + "gamma_regularizer": null, + "beta_constraint": null, + "gamma_constraint": null + }, + "inbound_nodes": [[["conv2d_64", 0, 0, {}]]] + }, + { + "name": "batch_normalization_69", + "class_name": "BatchNormalization", + "config": { + "name": "batch_normalization_69", + "trainable": true, + "axis": 3, + "momentum": 0.99, + "epsilon": 0.001, + "center": true, + "scale": false, + "beta_initializer": { "class_name": "Zeros", "config": {} }, + "gamma_initializer": { "class_name": "Ones", "config": {} }, + "moving_mean_initializer": { + "class_name": "Zeros", + "config": {} + }, + "moving_variance_initializer": { + "class_name": "Ones", + "config": {} + }, + "beta_regularizer": null, + "gamma_regularizer": null, + "beta_constraint": null, + "gamma_constraint": null + }, + "inbound_nodes": [[["conv2d_69", 0, 0, {}]]] + }, + { + "name": "batch_normalization_70", + "class_name": "BatchNormalization", + "config": { + "name": "batch_normalization_70", + "trainable": true, + "axis": 3, + "momentum": 0.99, + "epsilon": 0.001, + "center": true, + "scale": false, + "beta_initializer": { "class_name": "Zeros", "config": {} }, + "gamma_initializer": { "class_name": "Ones", "config": {} }, + "moving_mean_initializer": { + "class_name": "Zeros", + "config": {} + }, + "moving_variance_initializer": { + "class_name": "Ones", + "config": {} + }, + "beta_regularizer": null, + "gamma_regularizer": null, + "beta_constraint": null, + "gamma_constraint": null + }, + "inbound_nodes": [[["conv2d_70", 0, 0, {}]]] + }, + { + "name": "activation_61", + "class_name": "Activation", + "config": { + "name": "activation_61", + "trainable": true, + "activation": "relu" + }, + "inbound_nodes": [[["batch_normalization_61", 0, 0, {}]]] + }, + { + "name": "activation_64", + "class_name": "Activation", + "config": { + "name": "activation_64", + "trainable": true, + "activation": "relu" + }, + "inbound_nodes": [[["batch_normalization_64", 0, 0, {}]]] + }, + { + "name": "activation_69", + "class_name": "Activation", + "config": { + "name": "activation_69", + "trainable": true, + "activation": "relu" + }, + "inbound_nodes": [[["batch_normalization_69", 0, 0, {}]]] + }, + { + "name": "activation_70", + "class_name": "Activation", + "config": { + "name": "activation_70", + "trainable": true, + "activation": "relu" + }, + "inbound_nodes": [[["batch_normalization_70", 0, 0, {}]]] + }, + { + "name": "mixed7", + "class_name": "Concatenate", + "config": { "name": "mixed7", "trainable": true, "axis": 3 }, + "inbound_nodes": [ + [ + ["activation_61", 0, 0, {}], + ["activation_64", 0, 0, {}], + ["activation_69", 0, 0, {}], + ["activation_70", 0, 0, {}] + ] + ] + }, + { + "name": "conv2d_73", + "class_name": "Conv2D", + "config": { + "name": "conv2d_73", + "trainable": true, + "filters": 192, + "kernel_size": [1, 1], + "strides": [1, 1], + "padding": "same", + "data_format": "channels_last", + "dilation_rate": [1, 1], + "activation": "linear", + "use_bias": false, + "kernel_initializer": { + "class_name": "VarianceScaling", + "config": { + "scale": 1.0, + "mode": "fan_avg", + "distribution": "uniform", + "seed": null + } + }, + "bias_initializer": { "class_name": "Zeros", "config": {} }, + "kernel_regularizer": null, + "bias_regularizer": null, + "activity_regularizer": null, + "kernel_constraint": null, + "bias_constraint": null + }, + "inbound_nodes": [[["mixed7", 0, 0, {}]]] + }, + { + "name": "batch_normalization_73", + "class_name": "BatchNormalization", + "config": { + "name": "batch_normalization_73", + "trainable": true, + "axis": 3, + "momentum": 0.99, + "epsilon": 0.001, + "center": true, + "scale": false, + "beta_initializer": { "class_name": "Zeros", "config": {} }, + "gamma_initializer": { "class_name": "Ones", "config": {} }, + "moving_mean_initializer": { + "class_name": "Zeros", + "config": {} + }, + "moving_variance_initializer": { + "class_name": "Ones", + "config": {} + }, + "beta_regularizer": null, + "gamma_regularizer": null, + "beta_constraint": null, + "gamma_constraint": null + }, + "inbound_nodes": [[["conv2d_73", 0, 0, {}]]] + }, + { + "name": "activation_73", + "class_name": "Activation", + "config": { + "name": "activation_73", + "trainable": true, + "activation": "relu" + }, + "inbound_nodes": [[["batch_normalization_73", 0, 0, {}]]] + }, + { + "name": "conv2d_74", + "class_name": "Conv2D", + "config": { + "name": "conv2d_74", + "trainable": true, + "filters": 192, + "kernel_size": [1, 7], + "strides": [1, 1], + "padding": "same", + "data_format": "channels_last", + "dilation_rate": [1, 1], + "activation": "linear", + "use_bias": false, + "kernel_initializer": { + "class_name": "VarianceScaling", + "config": { + "scale": 1.0, + "mode": "fan_avg", + "distribution": "uniform", + "seed": null + } + }, + "bias_initializer": { "class_name": "Zeros", "config": {} }, + "kernel_regularizer": null, + "bias_regularizer": null, + "activity_regularizer": null, + "kernel_constraint": null, + "bias_constraint": null + }, + "inbound_nodes": [[["activation_73", 0, 0, {}]]] + }, + { + "name": "batch_normalization_74", + "class_name": "BatchNormalization", + "config": { + "name": "batch_normalization_74", + "trainable": true, + "axis": 3, + "momentum": 0.99, + "epsilon": 0.001, + "center": true, + "scale": false, + "beta_initializer": { "class_name": "Zeros", "config": {} }, + "gamma_initializer": { "class_name": "Ones", "config": {} }, + "moving_mean_initializer": { + "class_name": "Zeros", + "config": {} + }, + "moving_variance_initializer": { + "class_name": "Ones", + "config": {} + }, + "beta_regularizer": null, + "gamma_regularizer": null, + "beta_constraint": null, + "gamma_constraint": null + }, + "inbound_nodes": [[["conv2d_74", 0, 0, {}]]] + }, + { + "name": "activation_74", + "class_name": "Activation", + "config": { + "name": "activation_74", + "trainable": true, + "activation": "relu" + }, + "inbound_nodes": [[["batch_normalization_74", 0, 0, {}]]] + }, + { + "name": "conv2d_71", + "class_name": "Conv2D", + "config": { + "name": "conv2d_71", + "trainable": true, + "filters": 192, + "kernel_size": [1, 1], + "strides": [1, 1], + "padding": "same", + "data_format": "channels_last", + "dilation_rate": [1, 1], + "activation": "linear", + "use_bias": false, + "kernel_initializer": { + "class_name": "VarianceScaling", + "config": { + "scale": 1.0, + "mode": "fan_avg", + "distribution": "uniform", + "seed": null + } + }, + "bias_initializer": { "class_name": "Zeros", "config": {} }, + "kernel_regularizer": null, + "bias_regularizer": null, + "activity_regularizer": null, + "kernel_constraint": null, + "bias_constraint": null + }, + "inbound_nodes": [[["mixed7", 0, 0, {}]]] + }, + { + "name": "conv2d_75", + "class_name": "Conv2D", + "config": { + "name": "conv2d_75", + "trainable": true, + "filters": 192, + "kernel_size": [7, 1], + "strides": [1, 1], + "padding": "same", + "data_format": "channels_last", + "dilation_rate": [1, 1], + "activation": "linear", + "use_bias": false, + "kernel_initializer": { + "class_name": "VarianceScaling", + "config": { + "scale": 1.0, + "mode": "fan_avg", + "distribution": "uniform", + "seed": null + } + }, + "bias_initializer": { "class_name": "Zeros", "config": {} }, + "kernel_regularizer": null, + "bias_regularizer": null, + "activity_regularizer": null, + "kernel_constraint": null, + "bias_constraint": null + }, + "inbound_nodes": [[["activation_74", 0, 0, {}]]] + }, + { + "name": "batch_normalization_71", + "class_name": "BatchNormalization", + "config": { + "name": "batch_normalization_71", + "trainable": true, + "axis": 3, + "momentum": 0.99, + "epsilon": 0.001, + "center": true, + "scale": false, + "beta_initializer": { "class_name": "Zeros", "config": {} }, + "gamma_initializer": { "class_name": "Ones", "config": {} }, + "moving_mean_initializer": { + "class_name": "Zeros", + "config": {} + }, + "moving_variance_initializer": { + "class_name": "Ones", + "config": {} + }, + "beta_regularizer": null, + "gamma_regularizer": null, + "beta_constraint": null, + "gamma_constraint": null + }, + "inbound_nodes": [[["conv2d_71", 0, 0, {}]]] + }, + { + "name": "batch_normalization_75", + "class_name": "BatchNormalization", + "config": { + "name": "batch_normalization_75", + "trainable": true, + "axis": 3, + "momentum": 0.99, + "epsilon": 0.001, + "center": true, + "scale": false, + "beta_initializer": { "class_name": "Zeros", "config": {} }, + "gamma_initializer": { "class_name": "Ones", "config": {} }, + "moving_mean_initializer": { + "class_name": "Zeros", + "config": {} + }, + "moving_variance_initializer": { + "class_name": "Ones", + "config": {} + }, + "beta_regularizer": null, + "gamma_regularizer": null, + "beta_constraint": null, + "gamma_constraint": null + }, + "inbound_nodes": [[["conv2d_75", 0, 0, {}]]] + }, + { + "name": "activation_71", + "class_name": "Activation", + "config": { + "name": "activation_71", + "trainable": true, + "activation": "relu" + }, + "inbound_nodes": [[["batch_normalization_71", 0, 0, {}]]] + }, + { + "name": "activation_75", + "class_name": "Activation", + "config": { + "name": "activation_75", + "trainable": true, + "activation": "relu" + }, + "inbound_nodes": [[["batch_normalization_75", 0, 0, {}]]] + }, + { + "name": "conv2d_72", + "class_name": "Conv2D", + "config": { + "name": "conv2d_72", + "trainable": true, + "filters": 320, + "kernel_size": [3, 3], + "strides": [2, 2], + "padding": "valid", + "data_format": "channels_last", + "dilation_rate": [1, 1], + "activation": "linear", + "use_bias": false, + "kernel_initializer": { + "class_name": "VarianceScaling", + "config": { + "scale": 1.0, + "mode": "fan_avg", + "distribution": "uniform", + "seed": null + } + }, + "bias_initializer": { "class_name": "Zeros", "config": {} }, + "kernel_regularizer": null, + "bias_regularizer": null, + "activity_regularizer": null, + "kernel_constraint": null, + "bias_constraint": null + }, + "inbound_nodes": [[["activation_71", 0, 0, {}]]] + }, + { + "name": "conv2d_76", + "class_name": "Conv2D", + "config": { + "name": "conv2d_76", + "trainable": true, + "filters": 192, + "kernel_size": [3, 3], + "strides": [2, 2], + "padding": "valid", + "data_format": "channels_last", + "dilation_rate": [1, 1], + "activation": "linear", + "use_bias": false, + "kernel_initializer": { + "class_name": "VarianceScaling", + "config": { + "scale": 1.0, + "mode": "fan_avg", + "distribution": "uniform", + "seed": null + } + }, + "bias_initializer": { "class_name": "Zeros", "config": {} }, + "kernel_regularizer": null, + "bias_regularizer": null, + "activity_regularizer": null, + "kernel_constraint": null, + "bias_constraint": null + }, + "inbound_nodes": [[["activation_75", 0, 0, {}]]] + }, + { + "name": "batch_normalization_72", + "class_name": "BatchNormalization", + "config": { + "name": "batch_normalization_72", + "trainable": true, + "axis": 3, + "momentum": 0.99, + "epsilon": 0.001, + "center": true, + "scale": false, + "beta_initializer": { "class_name": "Zeros", "config": {} }, + "gamma_initializer": { "class_name": "Ones", "config": {} }, + "moving_mean_initializer": { + "class_name": "Zeros", + "config": {} + }, + "moving_variance_initializer": { + "class_name": "Ones", + "config": {} + }, + "beta_regularizer": null, + "gamma_regularizer": null, + "beta_constraint": null, + "gamma_constraint": null + }, + "inbound_nodes": [[["conv2d_72", 0, 0, {}]]] + }, + { + "name": "batch_normalization_76", + "class_name": "BatchNormalization", + "config": { + "name": "batch_normalization_76", + "trainable": true, + "axis": 3, + "momentum": 0.99, + "epsilon": 0.001, + "center": true, + "scale": false, + "beta_initializer": { "class_name": "Zeros", "config": {} }, + "gamma_initializer": { "class_name": "Ones", "config": {} }, + "moving_mean_initializer": { + "class_name": "Zeros", + "config": {} + }, + "moving_variance_initializer": { + "class_name": "Ones", + "config": {} + }, + "beta_regularizer": null, + "gamma_regularizer": null, + "beta_constraint": null, + "gamma_constraint": null + }, + "inbound_nodes": [[["conv2d_76", 0, 0, {}]]] + }, + { + "name": "activation_72", + "class_name": "Activation", + "config": { + "name": "activation_72", + "trainable": true, + "activation": "relu" + }, + "inbound_nodes": [[["batch_normalization_72", 0, 0, {}]]] + }, + { + "name": "activation_76", + "class_name": "Activation", + "config": { + "name": "activation_76", + "trainable": true, + "activation": "relu" + }, + "inbound_nodes": [[["batch_normalization_76", 0, 0, {}]]] + }, + { + "name": "max_pooling2d_4", + "class_name": "MaxPooling2D", + "config": { + "name": "max_pooling2d_4", + "trainable": true, + "pool_size": [3, 3], + "padding": "valid", + "strides": [2, 2], + "data_format": "channels_last" + }, + "inbound_nodes": [[["mixed7", 0, 0, {}]]] + }, + { + "name": "mixed8", + "class_name": "Concatenate", + "config": { "name": "mixed8", "trainable": true, "axis": 3 }, + "inbound_nodes": [ + [ + ["activation_72", 0, 0, {}], + ["activation_76", 0, 0, {}], + ["max_pooling2d_4", 0, 0, {}] + ] + ] + }, + { + "name": "conv2d_81", + "class_name": "Conv2D", + "config": { + "name": "conv2d_81", + "trainable": true, + "filters": 448, + "kernel_size": [1, 1], + "strides": [1, 1], + "padding": "same", + "data_format": "channels_last", + "dilation_rate": [1, 1], + "activation": "linear", + "use_bias": false, + "kernel_initializer": { + "class_name": "VarianceScaling", + "config": { + "scale": 1.0, + "mode": "fan_avg", + "distribution": "uniform", + "seed": null + } + }, + "bias_initializer": { "class_name": "Zeros", "config": {} }, + "kernel_regularizer": null, + "bias_regularizer": null, + "activity_regularizer": null, + "kernel_constraint": null, + "bias_constraint": null + }, + "inbound_nodes": [[["mixed8", 0, 0, {}]]] + }, + { + "name": "batch_normalization_81", + "class_name": "BatchNormalization", + "config": { + "name": "batch_normalization_81", + "trainable": true, + "axis": 3, + "momentum": 0.99, + "epsilon": 0.001, + "center": true, + "scale": false, + "beta_initializer": { "class_name": "Zeros", "config": {} }, + "gamma_initializer": { "class_name": "Ones", "config": {} }, + "moving_mean_initializer": { + "class_name": "Zeros", + "config": {} + }, + "moving_variance_initializer": { + "class_name": "Ones", + "config": {} + }, + "beta_regularizer": null, + "gamma_regularizer": null, + "beta_constraint": null, + "gamma_constraint": null + }, + "inbound_nodes": [[["conv2d_81", 0, 0, {}]]] + }, + { + "name": "activation_81", + "class_name": "Activation", + "config": { + "name": "activation_81", + "trainable": true, + "activation": "relu" + }, + "inbound_nodes": [[["batch_normalization_81", 0, 0, {}]]] + }, + { + "name": "conv2d_78", + "class_name": "Conv2D", + "config": { + "name": "conv2d_78", + "trainable": true, + "filters": 384, + "kernel_size": [1, 1], + "strides": [1, 1], + "padding": "same", + "data_format": "channels_last", + "dilation_rate": [1, 1], + "activation": "linear", + "use_bias": false, + "kernel_initializer": { + "class_name": "VarianceScaling", + "config": { + "scale": 1.0, + "mode": "fan_avg", + "distribution": "uniform", + "seed": null + } + }, + "bias_initializer": { "class_name": "Zeros", "config": {} }, + "kernel_regularizer": null, + "bias_regularizer": null, + "activity_regularizer": null, + "kernel_constraint": null, + "bias_constraint": null + }, + "inbound_nodes": [[["mixed8", 0, 0, {}]]] + }, + { + "name": "conv2d_82", + "class_name": "Conv2D", + "config": { + "name": "conv2d_82", + "trainable": true, + "filters": 384, + "kernel_size": [3, 3], + "strides": [1, 1], + "padding": "same", + "data_format": "channels_last", + "dilation_rate": [1, 1], + "activation": "linear", + "use_bias": false, + "kernel_initializer": { + "class_name": "VarianceScaling", + "config": { + "scale": 1.0, + "mode": "fan_avg", + "distribution": "uniform", + "seed": null + } + }, + "bias_initializer": { "class_name": "Zeros", "config": {} }, + "kernel_regularizer": null, + "bias_regularizer": null, + "activity_regularizer": null, + "kernel_constraint": null, + "bias_constraint": null + }, + "inbound_nodes": [[["activation_81", 0, 0, {}]]] + }, + { + "name": "batch_normalization_78", + "class_name": "BatchNormalization", + "config": { + "name": "batch_normalization_78", + "trainable": true, + "axis": 3, + "momentum": 0.99, + "epsilon": 0.001, + "center": true, + "scale": false, + "beta_initializer": { "class_name": "Zeros", "config": {} }, + "gamma_initializer": { "class_name": "Ones", "config": {} }, + "moving_mean_initializer": { + "class_name": "Zeros", + "config": {} + }, + "moving_variance_initializer": { + "class_name": "Ones", + "config": {} + }, + "beta_regularizer": null, + "gamma_regularizer": null, + "beta_constraint": null, + "gamma_constraint": null + }, + "inbound_nodes": [[["conv2d_78", 0, 0, {}]]] + }, + { + "name": "batch_normalization_82", + "class_name": "BatchNormalization", + "config": { + "name": "batch_normalization_82", + "trainable": true, + "axis": 3, + "momentum": 0.99, + "epsilon": 0.001, + "center": true, + "scale": false, + "beta_initializer": { "class_name": "Zeros", "config": {} }, + "gamma_initializer": { "class_name": "Ones", "config": {} }, + "moving_mean_initializer": { + "class_name": "Zeros", + "config": {} + }, + "moving_variance_initializer": { + "class_name": "Ones", + "config": {} + }, + "beta_regularizer": null, + "gamma_regularizer": null, + "beta_constraint": null, + "gamma_constraint": null + }, + "inbound_nodes": [[["conv2d_82", 0, 0, {}]]] + }, + { + "name": "activation_78", + "class_name": "Activation", + "config": { + "name": "activation_78", + "trainable": true, + "activation": "relu" + }, + "inbound_nodes": [[["batch_normalization_78", 0, 0, {}]]] + }, + { + "name": "activation_82", + "class_name": "Activation", + "config": { + "name": "activation_82", + "trainable": true, + "activation": "relu" + }, + "inbound_nodes": [[["batch_normalization_82", 0, 0, {}]]] + }, + { + "name": "conv2d_79", + "class_name": "Conv2D", + "config": { + "name": "conv2d_79", + "trainable": true, + "filters": 384, + "kernel_size": [1, 3], + "strides": [1, 1], + "padding": "same", + "data_format": "channels_last", + "dilation_rate": [1, 1], + "activation": "linear", + "use_bias": false, + "kernel_initializer": { + "class_name": "VarianceScaling", + "config": { + "scale": 1.0, + "mode": "fan_avg", + "distribution": "uniform", + "seed": null + } + }, + "bias_initializer": { "class_name": "Zeros", "config": {} }, + "kernel_regularizer": null, + "bias_regularizer": null, + "activity_regularizer": null, + "kernel_constraint": null, + "bias_constraint": null + }, + "inbound_nodes": [[["activation_78", 0, 0, {}]]] + }, + { + "name": "conv2d_80", + "class_name": "Conv2D", + "config": { + "name": "conv2d_80", + "trainable": true, + "filters": 384, + "kernel_size": [3, 1], + "strides": [1, 1], + "padding": "same", + "data_format": "channels_last", + "dilation_rate": [1, 1], + "activation": "linear", + "use_bias": false, + "kernel_initializer": { + "class_name": "VarianceScaling", + "config": { + "scale": 1.0, + "mode": "fan_avg", + "distribution": "uniform", + "seed": null + } + }, + "bias_initializer": { "class_name": "Zeros", "config": {} }, + "kernel_regularizer": null, + "bias_regularizer": null, + "activity_regularizer": null, + "kernel_constraint": null, + "bias_constraint": null + }, + "inbound_nodes": [[["activation_78", 0, 0, {}]]] + }, + { + "name": "conv2d_83", + "class_name": "Conv2D", + "config": { + "name": "conv2d_83", + "trainable": true, + "filters": 384, + "kernel_size": [1, 3], + "strides": [1, 1], + "padding": "same", + "data_format": "channels_last", + "dilation_rate": [1, 1], + "activation": "linear", + "use_bias": false, + "kernel_initializer": { + "class_name": "VarianceScaling", + "config": { + "scale": 1.0, + "mode": "fan_avg", + "distribution": "uniform", + "seed": null + } + }, + "bias_initializer": { "class_name": "Zeros", "config": {} }, + "kernel_regularizer": null, + "bias_regularizer": null, + "activity_regularizer": null, + "kernel_constraint": null, + "bias_constraint": null + }, + "inbound_nodes": [[["activation_82", 0, 0, {}]]] + }, + { + "name": "conv2d_84", + "class_name": "Conv2D", + "config": { + "name": "conv2d_84", + "trainable": true, + "filters": 384, + "kernel_size": [3, 1], + "strides": [1, 1], + "padding": "same", + "data_format": "channels_last", + "dilation_rate": [1, 1], + "activation": "linear", + "use_bias": false, + "kernel_initializer": { + "class_name": "VarianceScaling", + "config": { + "scale": 1.0, + "mode": "fan_avg", + "distribution": "uniform", + "seed": null + } + }, + "bias_initializer": { "class_name": "Zeros", "config": {} }, + "kernel_regularizer": null, + "bias_regularizer": null, + "activity_regularizer": null, + "kernel_constraint": null, + "bias_constraint": null + }, + "inbound_nodes": [[["activation_82", 0, 0, {}]]] + }, + { + "name": "average_pooling2d_8", + "class_name": "AveragePooling2D", + "config": { + "name": "average_pooling2d_8", + "trainable": true, + "pool_size": [3, 3], + "padding": "same", + "strides": [1, 1], + "data_format": "channels_last" + }, + "inbound_nodes": [[["mixed8", 0, 0, {}]]] + }, + { + "name": "conv2d_77", + "class_name": "Conv2D", + "config": { + "name": "conv2d_77", + "trainable": true, + "filters": 320, + "kernel_size": [1, 1], + "strides": [1, 1], + "padding": "same", + "data_format": "channels_last", + "dilation_rate": [1, 1], + "activation": "linear", + "use_bias": false, + "kernel_initializer": { + "class_name": "VarianceScaling", + "config": { + "scale": 1.0, + "mode": "fan_avg", + "distribution": "uniform", + "seed": null + } + }, + "bias_initializer": { "class_name": "Zeros", "config": {} }, + "kernel_regularizer": null, + "bias_regularizer": null, + "activity_regularizer": null, + "kernel_constraint": null, + "bias_constraint": null + }, + "inbound_nodes": [[["mixed8", 0, 0, {}]]] + }, + { + "name": "batch_normalization_79", + "class_name": "BatchNormalization", + "config": { + "name": "batch_normalization_79", + "trainable": true, + "axis": 3, + "momentum": 0.99, + "epsilon": 0.001, + "center": true, + "scale": false, + "beta_initializer": { "class_name": "Zeros", "config": {} }, + "gamma_initializer": { "class_name": "Ones", "config": {} }, + "moving_mean_initializer": { + "class_name": "Zeros", + "config": {} + }, + "moving_variance_initializer": { + "class_name": "Ones", + "config": {} + }, + "beta_regularizer": null, + "gamma_regularizer": null, + "beta_constraint": null, + "gamma_constraint": null + }, + "inbound_nodes": [[["conv2d_79", 0, 0, {}]]] + }, + { + "name": "batch_normalization_80", + "class_name": "BatchNormalization", + "config": { + "name": "batch_normalization_80", + "trainable": true, + "axis": 3, + "momentum": 0.99, + "epsilon": 0.001, + "center": true, + "scale": false, + "beta_initializer": { "class_name": "Zeros", "config": {} }, + "gamma_initializer": { "class_name": "Ones", "config": {} }, + "moving_mean_initializer": { + "class_name": "Zeros", + "config": {} + }, + "moving_variance_initializer": { + "class_name": "Ones", + "config": {} + }, + "beta_regularizer": null, + "gamma_regularizer": null, + "beta_constraint": null, + "gamma_constraint": null + }, + "inbound_nodes": [[["conv2d_80", 0, 0, {}]]] + }, + { + "name": "batch_normalization_83", + "class_name": "BatchNormalization", + "config": { + "name": "batch_normalization_83", + "trainable": true, + "axis": 3, + "momentum": 0.99, + "epsilon": 0.001, + "center": true, + "scale": false, + "beta_initializer": { "class_name": "Zeros", "config": {} }, + "gamma_initializer": { "class_name": "Ones", "config": {} }, + "moving_mean_initializer": { + "class_name": "Zeros", + "config": {} + }, + "moving_variance_initializer": { + "class_name": "Ones", + "config": {} + }, + "beta_regularizer": null, + "gamma_regularizer": null, + "beta_constraint": null, + "gamma_constraint": null + }, + "inbound_nodes": [[["conv2d_83", 0, 0, {}]]] + }, + { + "name": "batch_normalization_84", + "class_name": "BatchNormalization", + "config": { + "name": "batch_normalization_84", + "trainable": true, + "axis": 3, + "momentum": 0.99, + "epsilon": 0.001, + "center": true, + "scale": false, + "beta_initializer": { "class_name": "Zeros", "config": {} }, + "gamma_initializer": { "class_name": "Ones", "config": {} }, + "moving_mean_initializer": { + "class_name": "Zeros", + "config": {} + }, + "moving_variance_initializer": { + "class_name": "Ones", + "config": {} + }, + "beta_regularizer": null, + "gamma_regularizer": null, + "beta_constraint": null, + "gamma_constraint": null + }, + "inbound_nodes": [[["conv2d_84", 0, 0, {}]]] + }, + { + "name": "conv2d_85", + "class_name": "Conv2D", + "config": { + "name": "conv2d_85", + "trainable": true, + "filters": 192, + "kernel_size": [1, 1], + "strides": [1, 1], + "padding": "same", + "data_format": "channels_last", + "dilation_rate": [1, 1], + "activation": "linear", + "use_bias": false, + "kernel_initializer": { + "class_name": "VarianceScaling", + "config": { + "scale": 1.0, + "mode": "fan_avg", + "distribution": "uniform", + "seed": null + } + }, + "bias_initializer": { "class_name": "Zeros", "config": {} }, + "kernel_regularizer": null, + "bias_regularizer": null, + "activity_regularizer": null, + "kernel_constraint": null, + "bias_constraint": null + }, + "inbound_nodes": [[["average_pooling2d_8", 0, 0, {}]]] + }, + { + "name": "batch_normalization_77", + "class_name": "BatchNormalization", + "config": { + "name": "batch_normalization_77", + "trainable": true, + "axis": 3, + "momentum": 0.99, + "epsilon": 0.001, + "center": true, + "scale": false, + "beta_initializer": { "class_name": "Zeros", "config": {} }, + "gamma_initializer": { "class_name": "Ones", "config": {} }, + "moving_mean_initializer": { + "class_name": "Zeros", + "config": {} + }, + "moving_variance_initializer": { + "class_name": "Ones", + "config": {} + }, + "beta_regularizer": null, + "gamma_regularizer": null, + "beta_constraint": null, + "gamma_constraint": null + }, + "inbound_nodes": [[["conv2d_77", 0, 0, {}]]] + }, + { + "name": "activation_79", + "class_name": "Activation", + "config": { + "name": "activation_79", + "trainable": true, + "activation": "relu" + }, + "inbound_nodes": [[["batch_normalization_79", 0, 0, {}]]] + }, + { + "name": "activation_80", + "class_name": "Activation", + "config": { + "name": "activation_80", + "trainable": true, + "activation": "relu" + }, + "inbound_nodes": [[["batch_normalization_80", 0, 0, {}]]] + }, + { + "name": "activation_83", + "class_name": "Activation", + "config": { + "name": "activation_83", + "trainable": true, + "activation": "relu" + }, + "inbound_nodes": [[["batch_normalization_83", 0, 0, {}]]] + }, + { + "name": "activation_84", + "class_name": "Activation", + "config": { + "name": "activation_84", + "trainable": true, + "activation": "relu" + }, + "inbound_nodes": [[["batch_normalization_84", 0, 0, {}]]] + }, + { + "name": "batch_normalization_85", + "class_name": "BatchNormalization", + "config": { + "name": "batch_normalization_85", + "trainable": true, + "axis": 3, + "momentum": 0.99, + "epsilon": 0.001, + "center": true, + "scale": false, + "beta_initializer": { "class_name": "Zeros", "config": {} }, + "gamma_initializer": { "class_name": "Ones", "config": {} }, + "moving_mean_initializer": { + "class_name": "Zeros", + "config": {} + }, + "moving_variance_initializer": { + "class_name": "Ones", + "config": {} + }, + "beta_regularizer": null, + "gamma_regularizer": null, + "beta_constraint": null, + "gamma_constraint": null + }, + "inbound_nodes": [[["conv2d_85", 0, 0, {}]]] + }, + { + "name": "activation_77", + "class_name": "Activation", + "config": { + "name": "activation_77", + "trainable": true, + "activation": "relu" + }, + "inbound_nodes": [[["batch_normalization_77", 0, 0, {}]]] + }, + { + "name": "mixed9_0", + "class_name": "Concatenate", + "config": { "name": "mixed9_0", "trainable": true, "axis": 3 }, + "inbound_nodes": [ + [["activation_79", 0, 0, {}], ["activation_80", 0, 0, {}]] + ] + }, + { + "name": "concatenate_1", + "class_name": "Concatenate", + "config": { "name": "concatenate_1", "trainable": true, "axis": 3 }, + "inbound_nodes": [ + [["activation_83", 0, 0, {}], ["activation_84", 0, 0, {}]] + ] + }, + { + "name": "activation_85", + "class_name": "Activation", + "config": { + "name": "activation_85", + "trainable": true, + "activation": "relu" + }, + "inbound_nodes": [[["batch_normalization_85", 0, 0, {}]]] + }, + { + "name": "mixed9", + "class_name": "Concatenate", + "config": { "name": "mixed9", "trainable": true, "axis": 3 }, + "inbound_nodes": [ + [ + ["activation_77", 0, 0, {}], + ["mixed9_0", 0, 0, {}], + ["concatenate_1", 0, 0, {}], + ["activation_85", 0, 0, {}] + ] + ] + }, + { + "name": "conv2d_90", + "class_name": "Conv2D", + "config": { + "name": "conv2d_90", + "trainable": true, + "filters": 448, + "kernel_size": [1, 1], + "strides": [1, 1], + "padding": "same", + "data_format": "channels_last", + "dilation_rate": [1, 1], + "activation": "linear", + "use_bias": false, + "kernel_initializer": { + "class_name": "VarianceScaling", + "config": { + "scale": 1.0, + "mode": "fan_avg", + "distribution": "uniform", + "seed": null + } + }, + "bias_initializer": { "class_name": "Zeros", "config": {} }, + "kernel_regularizer": null, + "bias_regularizer": null, + "activity_regularizer": null, + "kernel_constraint": null, + "bias_constraint": null + }, + "inbound_nodes": [[["mixed9", 0, 0, {}]]] + }, + { + "name": "batch_normalization_90", + "class_name": "BatchNormalization", + "config": { + "name": "batch_normalization_90", + "trainable": true, + "axis": 3, + "momentum": 0.99, + "epsilon": 0.001, + "center": true, + "scale": false, + "beta_initializer": { "class_name": "Zeros", "config": {} }, + "gamma_initializer": { "class_name": "Ones", "config": {} }, + "moving_mean_initializer": { + "class_name": "Zeros", + "config": {} + }, + "moving_variance_initializer": { + "class_name": "Ones", + "config": {} + }, + "beta_regularizer": null, + "gamma_regularizer": null, + "beta_constraint": null, + "gamma_constraint": null + }, + "inbound_nodes": [[["conv2d_90", 0, 0, {}]]] + }, + { + "name": "activation_90", + "class_name": "Activation", + "config": { + "name": "activation_90", + "trainable": true, + "activation": "relu" + }, + "inbound_nodes": [[["batch_normalization_90", 0, 0, {}]]] + }, + { + "name": "conv2d_87", + "class_name": "Conv2D", + "config": { + "name": "conv2d_87", + "trainable": true, + "filters": 384, + "kernel_size": [1, 1], + "strides": [1, 1], + "padding": "same", + "data_format": "channels_last", + "dilation_rate": [1, 1], + "activation": "linear", + "use_bias": false, + "kernel_initializer": { + "class_name": "VarianceScaling", + "config": { + "scale": 1.0, + "mode": "fan_avg", + "distribution": "uniform", + "seed": null + } + }, + "bias_initializer": { "class_name": "Zeros", "config": {} }, + "kernel_regularizer": null, + "bias_regularizer": null, + "activity_regularizer": null, + "kernel_constraint": null, + "bias_constraint": null + }, + "inbound_nodes": [[["mixed9", 0, 0, {}]]] + }, + { + "name": "conv2d_91", + "class_name": "Conv2D", + "config": { + "name": "conv2d_91", + "trainable": true, + "filters": 384, + "kernel_size": [3, 3], + "strides": [1, 1], + "padding": "same", + "data_format": "channels_last", + "dilation_rate": [1, 1], + "activation": "linear", + "use_bias": false, + "kernel_initializer": { + "class_name": "VarianceScaling", + "config": { + "scale": 1.0, + "mode": "fan_avg", + "distribution": "uniform", + "seed": null + } + }, + "bias_initializer": { "class_name": "Zeros", "config": {} }, + "kernel_regularizer": null, + "bias_regularizer": null, + "activity_regularizer": null, + "kernel_constraint": null, + "bias_constraint": null + }, + "inbound_nodes": [[["activation_90", 0, 0, {}]]] + }, + { + "name": "batch_normalization_87", + "class_name": "BatchNormalization", + "config": { + "name": "batch_normalization_87", + "trainable": true, + "axis": 3, + "momentum": 0.99, + "epsilon": 0.001, + "center": true, + "scale": false, + "beta_initializer": { "class_name": "Zeros", "config": {} }, + "gamma_initializer": { "class_name": "Ones", "config": {} }, + "moving_mean_initializer": { + "class_name": "Zeros", + "config": {} + }, + "moving_variance_initializer": { + "class_name": "Ones", + "config": {} + }, + "beta_regularizer": null, + "gamma_regularizer": null, + "beta_constraint": null, + "gamma_constraint": null + }, + "inbound_nodes": [[["conv2d_87", 0, 0, {}]]] + }, + { + "name": "batch_normalization_91", + "class_name": "BatchNormalization", + "config": { + "name": "batch_normalization_91", + "trainable": true, + "axis": 3, + "momentum": 0.99, + "epsilon": 0.001, + "center": true, + "scale": false, + "beta_initializer": { "class_name": "Zeros", "config": {} }, + "gamma_initializer": { "class_name": "Ones", "config": {} }, + "moving_mean_initializer": { + "class_name": "Zeros", + "config": {} + }, + "moving_variance_initializer": { + "class_name": "Ones", + "config": {} + }, + "beta_regularizer": null, + "gamma_regularizer": null, + "beta_constraint": null, + "gamma_constraint": null + }, + "inbound_nodes": [[["conv2d_91", 0, 0, {}]]] + }, + { + "name": "activation_87", + "class_name": "Activation", + "config": { + "name": "activation_87", + "trainable": true, + "activation": "relu" + }, + "inbound_nodes": [[["batch_normalization_87", 0, 0, {}]]] + }, + { + "name": "activation_91", + "class_name": "Activation", + "config": { + "name": "activation_91", + "trainable": true, + "activation": "relu" + }, + "inbound_nodes": [[["batch_normalization_91", 0, 0, {}]]] + }, + { + "name": "conv2d_88", + "class_name": "Conv2D", + "config": { + "name": "conv2d_88", + "trainable": true, + "filters": 384, + "kernel_size": [1, 3], + "strides": [1, 1], + "padding": "same", + "data_format": "channels_last", + "dilation_rate": [1, 1], + "activation": "linear", + "use_bias": false, + "kernel_initializer": { + "class_name": "VarianceScaling", + "config": { + "scale": 1.0, + "mode": "fan_avg", + "distribution": "uniform", + "seed": null + } + }, + "bias_initializer": { "class_name": "Zeros", "config": {} }, + "kernel_regularizer": null, + "bias_regularizer": null, + "activity_regularizer": null, + "kernel_constraint": null, + "bias_constraint": null + }, + "inbound_nodes": [[["activation_87", 0, 0, {}]]] + }, + { + "name": "conv2d_89", + "class_name": "Conv2D", + "config": { + "name": "conv2d_89", + "trainable": true, + "filters": 384, + "kernel_size": [3, 1], + "strides": [1, 1], + "padding": "same", + "data_format": "channels_last", + "dilation_rate": [1, 1], + "activation": "linear", + "use_bias": false, + "kernel_initializer": { + "class_name": "VarianceScaling", + "config": { + "scale": 1.0, + "mode": "fan_avg", + "distribution": "uniform", + "seed": null + } + }, + "bias_initializer": { "class_name": "Zeros", "config": {} }, + "kernel_regularizer": null, + "bias_regularizer": null, + "activity_regularizer": null, + "kernel_constraint": null, + "bias_constraint": null + }, + "inbound_nodes": [[["activation_87", 0, 0, {}]]] + }, + { + "name": "conv2d_92", + "class_name": "Conv2D", + "config": { + "name": "conv2d_92", + "trainable": true, + "filters": 384, + "kernel_size": [1, 3], + "strides": [1, 1], + "padding": "same", + "data_format": "channels_last", + "dilation_rate": [1, 1], + "activation": "linear", + "use_bias": false, + "kernel_initializer": { + "class_name": "VarianceScaling", + "config": { + "scale": 1.0, + "mode": "fan_avg", + "distribution": "uniform", + "seed": null + } + }, + "bias_initializer": { "class_name": "Zeros", "config": {} }, + "kernel_regularizer": null, + "bias_regularizer": null, + "activity_regularizer": null, + "kernel_constraint": null, + "bias_constraint": null + }, + "inbound_nodes": [[["activation_91", 0, 0, {}]]] + }, + { + "name": "conv2d_93", + "class_name": "Conv2D", + "config": { + "name": "conv2d_93", + "trainable": true, + "filters": 384, + "kernel_size": [3, 1], + "strides": [1, 1], + "padding": "same", + "data_format": "channels_last", + "dilation_rate": [1, 1], + "activation": "linear", + "use_bias": false, + "kernel_initializer": { + "class_name": "VarianceScaling", + "config": { + "scale": 1.0, + "mode": "fan_avg", + "distribution": "uniform", + "seed": null + } + }, + "bias_initializer": { "class_name": "Zeros", "config": {} }, + "kernel_regularizer": null, + "bias_regularizer": null, + "activity_regularizer": null, + "kernel_constraint": null, + "bias_constraint": null + }, + "inbound_nodes": [[["activation_91", 0, 0, {}]]] + }, + { + "name": "average_pooling2d_9", + "class_name": "AveragePooling2D", + "config": { + "name": "average_pooling2d_9", + "trainable": true, + "pool_size": [3, 3], + "padding": "same", + "strides": [1, 1], + "data_format": "channels_last" + }, + "inbound_nodes": [[["mixed9", 0, 0, {}]]] + }, + { + "name": "conv2d_86", + "class_name": "Conv2D", + "config": { + "name": "conv2d_86", + "trainable": true, + "filters": 320, + "kernel_size": [1, 1], + "strides": [1, 1], + "padding": "same", + "data_format": "channels_last", + "dilation_rate": [1, 1], + "activation": "linear", + "use_bias": false, + "kernel_initializer": { + "class_name": "VarianceScaling", + "config": { + "scale": 1.0, + "mode": "fan_avg", + "distribution": "uniform", + "seed": null + } + }, + "bias_initializer": { "class_name": "Zeros", "config": {} }, + "kernel_regularizer": null, + "bias_regularizer": null, + "activity_regularizer": null, + "kernel_constraint": null, + "bias_constraint": null + }, + "inbound_nodes": [[["mixed9", 0, 0, {}]]] + }, + { + "name": "batch_normalization_88", + "class_name": "BatchNormalization", + "config": { + "name": "batch_normalization_88", + "trainable": true, + "axis": 3, + "momentum": 0.99, + "epsilon": 0.001, + "center": true, + "scale": false, + "beta_initializer": { "class_name": "Zeros", "config": {} }, + "gamma_initializer": { "class_name": "Ones", "config": {} }, + "moving_mean_initializer": { + "class_name": "Zeros", + "config": {} + }, + "moving_variance_initializer": { + "class_name": "Ones", + "config": {} + }, + "beta_regularizer": null, + "gamma_regularizer": null, + "beta_constraint": null, + "gamma_constraint": null + }, + "inbound_nodes": [[["conv2d_88", 0, 0, {}]]] + }, + { + "name": "batch_normalization_89", + "class_name": "BatchNormalization", + "config": { + "name": "batch_normalization_89", + "trainable": true, + "axis": 3, + "momentum": 0.99, + "epsilon": 0.001, + "center": true, + "scale": false, + "beta_initializer": { "class_name": "Zeros", "config": {} }, + "gamma_initializer": { "class_name": "Ones", "config": {} }, + "moving_mean_initializer": { + "class_name": "Zeros", + "config": {} + }, + "moving_variance_initializer": { + "class_name": "Ones", + "config": {} + }, + "beta_regularizer": null, + "gamma_regularizer": null, + "beta_constraint": null, + "gamma_constraint": null + }, + "inbound_nodes": [[["conv2d_89", 0, 0, {}]]] + }, + { + "name": "batch_normalization_92", + "class_name": "BatchNormalization", + "config": { + "name": "batch_normalization_92", + "trainable": true, + "axis": 3, + "momentum": 0.99, + "epsilon": 0.001, + "center": true, + "scale": false, + "beta_initializer": { "class_name": "Zeros", "config": {} }, + "gamma_initializer": { "class_name": "Ones", "config": {} }, + "moving_mean_initializer": { + "class_name": "Zeros", + "config": {} + }, + "moving_variance_initializer": { + "class_name": "Ones", + "config": {} + }, + "beta_regularizer": null, + "gamma_regularizer": null, + "beta_constraint": null, + "gamma_constraint": null + }, + "inbound_nodes": [[["conv2d_92", 0, 0, {}]]] + }, + { + "name": "batch_normalization_93", + "class_name": "BatchNormalization", + "config": { + "name": "batch_normalization_93", + "trainable": true, + "axis": 3, + "momentum": 0.99, + "epsilon": 0.001, + "center": true, + "scale": false, + "beta_initializer": { "class_name": "Zeros", "config": {} }, + "gamma_initializer": { "class_name": "Ones", "config": {} }, + "moving_mean_initializer": { + "class_name": "Zeros", + "config": {} + }, + "moving_variance_initializer": { + "class_name": "Ones", + "config": {} + }, + "beta_regularizer": null, + "gamma_regularizer": null, + "beta_constraint": null, + "gamma_constraint": null + }, + "inbound_nodes": [[["conv2d_93", 0, 0, {}]]] + }, + { + "name": "conv2d_94", + "class_name": "Conv2D", + "config": { + "name": "conv2d_94", + "trainable": true, + "filters": 192, + "kernel_size": [1, 1], + "strides": [1, 1], + "padding": "same", + "data_format": "channels_last", + "dilation_rate": [1, 1], + "activation": "linear", + "use_bias": false, + "kernel_initializer": { + "class_name": "VarianceScaling", + "config": { + "scale": 1.0, + "mode": "fan_avg", + "distribution": "uniform", + "seed": null + } + }, + "bias_initializer": { "class_name": "Zeros", "config": {} }, + "kernel_regularizer": null, + "bias_regularizer": null, + "activity_regularizer": null, + "kernel_constraint": null, + "bias_constraint": null + }, + "inbound_nodes": [[["average_pooling2d_9", 0, 0, {}]]] + }, + { + "name": "batch_normalization_86", + "class_name": "BatchNormalization", + "config": { + "name": "batch_normalization_86", + "trainable": true, + "axis": 3, + "momentum": 0.99, + "epsilon": 0.001, + "center": true, + "scale": false, + "beta_initializer": { "class_name": "Zeros", "config": {} }, + "gamma_initializer": { "class_name": "Ones", "config": {} }, + "moving_mean_initializer": { + "class_name": "Zeros", + "config": {} + }, + "moving_variance_initializer": { + "class_name": "Ones", + "config": {} + }, + "beta_regularizer": null, + "gamma_regularizer": null, + "beta_constraint": null, + "gamma_constraint": null + }, + "inbound_nodes": [[["conv2d_86", 0, 0, {}]]] + }, + { + "name": "activation_88", + "class_name": "Activation", + "config": { + "name": "activation_88", + "trainable": true, + "activation": "relu" + }, + "inbound_nodes": [[["batch_normalization_88", 0, 0, {}]]] + }, + { + "name": "activation_89", + "class_name": "Activation", + "config": { + "name": "activation_89", + "trainable": true, + "activation": "relu" + }, + "inbound_nodes": [[["batch_normalization_89", 0, 0, {}]]] + }, + { + "name": "activation_92", + "class_name": "Activation", + "config": { + "name": "activation_92", + "trainable": true, + "activation": "relu" + }, + "inbound_nodes": [[["batch_normalization_92", 0, 0, {}]]] + }, + { + "name": "activation_93", + "class_name": "Activation", + "config": { + "name": "activation_93", + "trainable": true, + "activation": "relu" + }, + "inbound_nodes": [[["batch_normalization_93", 0, 0, {}]]] + }, + { + "name": "batch_normalization_94", + "class_name": "BatchNormalization", + "config": { + "name": "batch_normalization_94", + "trainable": true, + "axis": 3, + "momentum": 0.99, + "epsilon": 0.001, + "center": true, + "scale": false, + "beta_initializer": { "class_name": "Zeros", "config": {} }, + "gamma_initializer": { "class_name": "Ones", "config": {} }, + "moving_mean_initializer": { + "class_name": "Zeros", + "config": {} + }, + "moving_variance_initializer": { + "class_name": "Ones", + "config": {} + }, + "beta_regularizer": null, + "gamma_regularizer": null, + "beta_constraint": null, + "gamma_constraint": null + }, + "inbound_nodes": [[["conv2d_94", 0, 0, {}]]] + }, + { + "name": "activation_86", + "class_name": "Activation", + "config": { + "name": "activation_86", + "trainable": true, + "activation": "relu" + }, + "inbound_nodes": [[["batch_normalization_86", 0, 0, {}]]] + }, + { + "name": "mixed9_1", + "class_name": "Concatenate", + "config": { "name": "mixed9_1", "trainable": true, "axis": 3 }, + "inbound_nodes": [ + [["activation_88", 0, 0, {}], ["activation_89", 0, 0, {}]] + ] + }, + { + "name": "concatenate_2", + "class_name": "Concatenate", + "config": { "name": "concatenate_2", "trainable": true, "axis": 3 }, + "inbound_nodes": [ + [["activation_92", 0, 0, {}], ["activation_93", 0, 0, {}]] + ] + }, + { + "name": "activation_94", + "class_name": "Activation", + "config": { + "name": "activation_94", + "trainable": true, + "activation": "relu" + }, + "inbound_nodes": [[["batch_normalization_94", 0, 0, {}]]] + }, + { + "name": "mixed10", + "class_name": "Concatenate", + "config": { "name": "mixed10", "trainable": true, "axis": 3 }, + "inbound_nodes": [ + [ + ["activation_86", 0, 0, {}], + ["mixed9_1", 0, 0, {}], + ["concatenate_2", 0, 0, {}], + ["activation_94", 0, 0, {}] + ] + ] + }, + { + "name": "average_pooling2d_10", + "class_name": "AveragePooling2D", + "config": { + "name": "average_pooling2d_10", + "trainable": true, + "pool_size": [8, 8], + "padding": "valid", + "strides": [8, 8], + "data_format": "channels_last" + }, + "inbound_nodes": [[["mixed10", 0, 0, {}]]] + }, + { + "name": "flatten_1", + "class_name": "Flatten", + "config": { + "name": "flatten_1", + "trainable": true, + "data_format": "channels_last" + }, + "inbound_nodes": [[["average_pooling2d_10", 0, 0, {}]]] + }, + { + "name": "dense_1", + "class_name": "Dense", + "config": { + "name": "dense_1", + "trainable": true, + "units": 256, + "activation": "relu", + "use_bias": true, + "kernel_initializer": { + "class_name": "VarianceScaling", + "config": { + "scale": 2.0, + "mode": "fan_in", + "distribution": "normal", + "seed": null + } + }, + "bias_initializer": { "class_name": "Zeros", "config": {} }, + "kernel_regularizer": { + "class_name": "L1L2", + "config": { "l1": 0.0, "l2": 0.0005000000237487257 } + }, + "bias_regularizer": null, + "activity_regularizer": null, + "kernel_constraint": null, + "bias_constraint": null + }, + "inbound_nodes": [[["flatten_1", 0, 0, {}]]] + }, + { + "name": "dropout_2", + "class_name": "Dropout", + "config": { + "name": "dropout_2", + "trainable": true, + "rate": 0.5, + "noise_shape": null, + "seed": null + }, + "inbound_nodes": [[["dense_1", 0, 0, {}]]] + }, + { + "name": "dense_2", + "class_name": "Dense", + "config": { + "name": "dense_2", + "trainable": true, + "units": 128, + "activation": "relu", + "use_bias": true, + "kernel_initializer": { + "class_name": "VarianceScaling", + "config": { + "scale": 2.0, + "mode": "fan_in", + "distribution": "normal", + "seed": null + } + }, + "bias_initializer": { "class_name": "Zeros", "config": {} }, + "kernel_regularizer": null, + "bias_regularizer": null, + "activity_regularizer": null, + "kernel_constraint": null, + "bias_constraint": null + }, + "inbound_nodes": [[["dropout_2", 0, 0, {}]]] + }, + { + "name": "dropout_3", + "class_name": "Dropout", + "config": { + "name": "dropout_3", + "trainable": true, + "rate": 0.25, + "noise_shape": null, + "seed": null + }, + "inbound_nodes": [[["dense_2", 0, 0, {}]]] + }, + { + "name": "dense_3", + "class_name": "Dense", + "config": { + "name": "dense_3", + "trainable": true, + "units": 5, + "activation": "softmax", + "use_bias": true, + "kernel_initializer": { + "class_name": "VarianceScaling", + "config": { + "scale": 1.0, + "mode": "fan_avg", + "distribution": "uniform", + "seed": null + } + }, + "bias_initializer": { "class_name": "Zeros", "config": {} }, + "kernel_regularizer": null, + "bias_regularizer": null, + "activity_regularizer": null, + "kernel_constraint": null, + "bias_constraint": null + }, + "inbound_nodes": [[["dropout_3", 0, 0, {}]]] + } + ], + "input_layers": [["input_1", 0, 0]], + "output_layers": [["dense_3", 0, 0]] + } + }, + "training_config": { + "optimizer_config": { + "class_name": "SGD", + "config": { + "lr": 8.999999749903509e-7, + "momentum": 0.8999999761581421, + "decay": 0.0, + "nesterov": false + } + }, + "loss": "categorical_crossentropy", + "metrics": ["accuracy"], + "sample_weight_mode": null, + "loss_weights": null + } + }, + "weightsManifest": [ + { + "paths": [ + "group1-shard1of6", + "group1-shard2of6", + "group1-shard3of6", + "group1-shard4of6", + "group1-shard5of6", + "group1-shard6of6" + ], + "weights": [ + { + "name": "batch_normalization_1/beta", + "shape": [32], + "dtype": "float32", + "quantization": { + "min": -1.4470329237919228, + "scale": 0.022262044981414198, + "dtype": "uint8" + } + }, + { + "name": "batch_normalization_1/moving_mean", + "shape": [32], + "dtype": "float32", + "quantization": { + "min": -1.3392340445051008, + "scale": 0.009048878679088518, + "dtype": "uint8" + } + }, + { + "name": "batch_normalization_1/moving_variance", + "shape": [32], + "dtype": "float32", + "quantization": { + "min": 0.0029792252462357283, + "scale": 0.002011585912174162, + "dtype": "uint8" + } + }, + { + "name": "batch_normalization_10/beta", + "shape": [96], + "dtype": "float32", + "quantization": { + "min": -1.3942089782041662, + "scale": 0.013152914888718548, + "dtype": "uint8" + } + }, + { + "name": "batch_normalization_10/moving_mean", + "shape": [96], + "dtype": "float32", + "quantization": { + "min": -3.4377058178770774, + "scale": 0.022322765051149853, + "dtype": "uint8" + } + }, + { + "name": "batch_normalization_10/moving_variance", + "shape": [96], + "dtype": "float32", + "quantization": { + "min": 0.32849419116973877, + "scale": 0.0067040401346543255, + "dtype": "uint8" + } + }, + { + "name": "batch_normalization_11/beta", + "shape": [96], + "dtype": "float32", + "quantization": { + "min": -1.516452667759914, + "scale": 0.019195603389366, + "dtype": "uint8" + } + }, + { + "name": "batch_normalization_11/moving_mean", + "shape": [96], + "dtype": "float32", + "quantization": { + "min": -2.7463201915516575, + "scale": 0.01830880127701105, + "dtype": "uint8" + } + }, + { + "name": "batch_normalization_11/moving_variance", + "shape": [96], + "dtype": "float32", + "quantization": { + "min": 0.2191103845834732, + "scale": 0.01466470086107067, + "dtype": "uint8" + } + }, + { + "name": "batch_normalization_12/beta", + "shape": [32], + "dtype": "float32", + "quantization": { + "min": -1.301803892734004, + "scale": 0.006319436372495165, + "dtype": "uint8" + } + }, + { + "name": "batch_normalization_12/moving_mean", + "shape": [32], + "dtype": "float32", + "quantization": { + "min": -4.4007081592784205, + "scale": 0.034114016738592406, + "dtype": "uint8" + } + }, + { + "name": "batch_normalization_12/moving_variance", + "shape": [32], + "dtype": "float32", + "quantization": { + "min": 0.16819331049919128, + "scale": 0.005921194716995838, + "dtype": "uint8" + } + }, + { + "name": "batch_normalization_13/beta", + "shape": [64], + "dtype": "float32", + "quantization": { + "min": -0.4739857888689228, + "scale": 0.016928063888175814, + "dtype": "uint8" + } + }, + { + "name": "batch_normalization_13/moving_mean", + "shape": [64], + "dtype": "float32", + "quantization": { + "min": -3.5917917167439177, + "scale": 0.04128496226142434, + "dtype": "uint8" + } + }, + { + "name": "batch_normalization_13/moving_variance", + "shape": [64], + "dtype": "float32", + "quantization": { + "min": 0.4459476172924042, + "scale": 0.023625042976117602, + "dtype": "uint8" + } + }, + { + "name": "batch_normalization_14/beta", + "shape": [48], + "dtype": "float32", + "quantization": { + "min": -1.0772361334632425, + "scale": 0.00979305575875675, + "dtype": "uint8" + } + }, + { + "name": "batch_normalization_14/moving_mean", + "shape": [48], + "dtype": "float32", + "quantization": { + "min": -3.953980264476701, + "scale": 0.03350830732607374, + "dtype": "uint8" + } + }, + { + "name": "batch_normalization_14/moving_variance", + "shape": [48], + "dtype": "float32", + "quantization": { + "min": 0.24940407276153564, + "scale": 0.0058701262754552504, + "dtype": "uint8" + } + }, + { + "name": "batch_normalization_15/beta", + "shape": [64], + "dtype": "float32", + "quantization": { + "min": -1.35126254418317, + "scale": 0.01571235516492058, + "dtype": "uint8" + } + }, + { + "name": "batch_normalization_15/moving_mean", + "shape": [64], + "dtype": "float32", + "quantization": { + "min": -4.0795912321876076, + "scale": 0.020920980677885167, + "dtype": "uint8" + } + }, + { + "name": "batch_normalization_15/moving_variance", + "shape": [64], + "dtype": "float32", + "quantization": { + "min": 0.49905598163604736, + "scale": 0.01223441152011647, + "dtype": "uint8" + } + }, + { + "name": "batch_normalization_16/beta", + "shape": [64], + "dtype": "float32", + "quantization": { + "min": -1.1064918892056335, + "scale": 0.01286618475820504, + "dtype": "uint8" + } + }, + { + "name": "batch_normalization_16/moving_mean", + "shape": [64], + "dtype": "float32", + "quantization": { + "min": -3.809274101257324, + "scale": 0.03527105649312337, + "dtype": "uint8" + } + }, + { + "name": "batch_normalization_16/moving_variance", + "shape": [64], + "dtype": "float32", + "quantization": { + "min": 0.19940871000289917, + "scale": 0.009950414592144536, + "dtype": "uint8" + } + }, + { + "name": "batch_normalization_17/beta", + "shape": [96], + "dtype": "float32", + "quantization": { + "min": -2.0270998253541834, + "scale": 0.014376594506058039, + "dtype": "uint8" + } + }, + { + "name": "batch_normalization_17/moving_mean", + "shape": [96], + "dtype": "float32", + "quantization": { + "min": -3.1735796909706266, + "scale": 0.018031702789605832, + "dtype": "uint8" + } + }, + { + "name": "batch_normalization_17/moving_variance", + "shape": [96], + "dtype": "float32", + "quantization": { + "min": 0.2549457848072052, + "scale": 0.008325207350300807, + "dtype": "uint8" + } + }, + { + "name": "batch_normalization_18/beta", + "shape": [96], + "dtype": "float32", + "quantization": { + "min": -2.1231734135571645, + "scale": 0.016458708632226083, + "dtype": "uint8" + } + }, + { + "name": "batch_normalization_18/moving_mean", + "shape": [96], + "dtype": "float32", + "quantization": { + "min": -1.3713552848965516, + "scale": 0.009657431583778532, + "dtype": "uint8" + } + }, + { + "name": "batch_normalization_18/moving_variance", + "shape": [96], + "dtype": "float32", + "quantization": { + "min": 0.1513037383556366, + "scale": 0.0068373657909094115, + "dtype": "uint8" + } + }, + { + "name": "batch_normalization_19/beta", + "shape": [64], + "dtype": "float32", + "quantization": { + "min": -1.4365768666360892, + "scale": 0.006776305974698534, + "dtype": "uint8" + } + }, + { + "name": "batch_normalization_19/moving_mean", + "shape": [64], + "dtype": "float32", + "quantization": { + "min": -2.476449997284833, + "scale": 0.015673734160030588, + "dtype": "uint8" + } + }, + { + "name": "batch_normalization_19/moving_variance", + "shape": [64], + "dtype": "float32", + "quantization": { + "min": 0.09515814483165741, + "scale": 0.0020481755336125692, + "dtype": "uint8" + } + }, + { + "name": "batch_normalization_2/beta", + "shape": [32], + "dtype": "float32", + "quantization": { + "min": -3.4433995106640984, + "scale": 0.02125555253496357, + "dtype": "uint8" + } + }, + { + "name": "batch_normalization_2/moving_mean", + "shape": [32], + "dtype": "float32", + "quantization": { + "min": -5.612242926803289, + "scale": 0.04526002360325233, + "dtype": "uint8" + } + }, + { + "name": "batch_normalization_2/moving_variance", + "shape": [32], + "dtype": "float32", + "quantization": { + "min": 1.6788238754359384e-14, + "scale": 0.036660007402008594, + "dtype": "uint8" + } + }, + { + "name": "batch_normalization_20/beta", + "shape": [64], + "dtype": "float32", + "quantization": { + "min": -0.8893205343508253, + "scale": 0.02021183032615512, + "dtype": "uint8" + } + }, + { + "name": "batch_normalization_20/moving_mean", + "shape": [64], + "dtype": "float32", + "quantization": { + "min": -3.9672318907345043, + "scale": 0.026625717387479896, + "dtype": "uint8" + } + }, + { + "name": "batch_normalization_20/moving_variance", + "shape": [64], + "dtype": "float32", + "quantization": { + "min": 0.420120507478714, + "scale": 0.012815360345092475, + "dtype": "uint8" + } + }, + { + "name": "batch_normalization_21/beta", + "shape": [48], + "dtype": "float32", + "quantization": { + "min": -0.9888528188069662, + "scale": 0.007270976608874751, + "dtype": "uint8" + } + }, + { + "name": "batch_normalization_21/moving_mean", + "shape": [48], + "dtype": "float32", + "quantization": { + "min": -2.3340306749530866, + "scale": 0.017954082115023744, + "dtype": "uint8" + } + }, + { + "name": "batch_normalization_21/moving_variance", + "shape": [48], + "dtype": "float32", + "quantization": { + "min": 0.28571629524230957, + "scale": 0.0053000637129241345, + "dtype": "uint8" + } + }, + { + "name": "batch_normalization_22/beta", + "shape": [64], + "dtype": "float32", + "quantization": { + "min": -1.415032872031717, + "scale": 0.016453870605019964, + "dtype": "uint8" + } + }, + { + "name": "batch_normalization_22/moving_mean", + "shape": [64], + "dtype": "float32", + "quantization": { + "min": -2.3663464188575745, + "scale": 0.011214911937713623, + "dtype": "uint8" + } + }, + { + "name": "batch_normalization_22/moving_variance", + "shape": [64], + "dtype": "float32", + "quantization": { + "min": 0.8183495402336121, + "scale": 0.01016303815093695, + "dtype": "uint8" + } + }, + { + "name": "batch_normalization_23/beta", + "shape": [64], + "dtype": "float32", + "quantization": { + "min": -0.8289626280466715, + "scale": 0.012190626883039287, + "dtype": "uint8" + } + }, + { + "name": "batch_normalization_23/moving_mean", + "shape": [64], + "dtype": "float32", + "quantization": { + "min": -3.606444087682986, + "scale": 0.03370508493161669, + "dtype": "uint8" + } + }, + { + "name": "batch_normalization_23/moving_variance", + "shape": [64], + "dtype": "float32", + "quantization": { + "min": 0.28999996185302734, + "scale": 0.007630550160127527, + "dtype": "uint8" + } + }, + { + "name": "batch_normalization_24/beta", + "shape": [96], + "dtype": "float32", + "quantization": { + "min": -1.7479860670426313, + "scale": 0.011972507308511173, + "dtype": "uint8" + } + }, + { + "name": "batch_normalization_24/moving_mean", + "shape": [96], + "dtype": "float32", + "quantization": { + "min": -1.6063279857822492, + "scale": 0.009504899324155321, + "dtype": "uint8" + } + }, + { + "name": "batch_normalization_24/moving_variance", + "shape": [96], + "dtype": "float32", + "quantization": { + "min": 0.24551624059677124, + "scale": 0.013059020743650548, + "dtype": "uint8" + } + }, + { + "name": "batch_normalization_25/beta", + "shape": [96], + "dtype": "float32", + "quantization": { + "min": -1.283474132126453, + "scale": 0.009368424322090898, + "dtype": "uint8" + } + }, + { + "name": "batch_normalization_25/moving_mean", + "shape": [96], + "dtype": "float32", + "quantization": { + "min": -1.5872352920326533, + "scale": 0.007117647049473781, + "dtype": "uint8" + } + }, + { + "name": "batch_normalization_25/moving_variance", + "shape": [96], + "dtype": "float32", + "quantization": { + "min": 0.39823248982429504, + "scale": 0.004755370172799802, + "dtype": "uint8" + } + }, + { + "name": "batch_normalization_26/beta", + "shape": [64], + "dtype": "float32", + "quantization": { + "min": -1.5112898941425716, + "scale": 0.0061685301801737615, + "dtype": "uint8" + } + }, + { + "name": "batch_normalization_26/moving_mean", + "shape": [64], + "dtype": "float32", + "quantization": { + "min": -2.16122173982508, + "scale": 0.01637289196837182, + "dtype": "uint8" + } + }, + { + "name": "batch_normalization_26/moving_variance", + "shape": [64], + "dtype": "float32", + "quantization": { + "min": 0.11441070586442947, + "scale": 0.004070372412017747, + "dtype": "uint8" + } + }, + { + "name": "batch_normalization_27/beta", + "shape": [384], + "dtype": "float32", + "quantization": { + "min": -1.3188155637067907, + "scale": 0.007579399791418338, + "dtype": "uint8" + } + }, + { + "name": "batch_normalization_27/moving_mean", + "shape": [384], + "dtype": "float32", + "quantization": { + "min": -5.909318789313821, + "scale": 0.03517451660305846, + "dtype": "uint8" + } + }, + { + "name": "batch_normalization_27/moving_variance", + "shape": [384], + "dtype": "float32", + "quantization": { + "min": 0.2954988181591034, + "scale": 0.006337425404903936, + "dtype": "uint8" + } + }, + { + "name": "batch_normalization_28/beta", + "shape": [64], + "dtype": "float32", + "quantization": { + "min": -1.0164603177238913, + "scale": 0.006515771267460842, + "dtype": "uint8" + } + }, + { + "name": "batch_normalization_28/moving_mean", + "shape": [64], + "dtype": "float32", + "quantization": { + "min": -2.281826620943406, + "scale": 0.015522630074444939, + "dtype": "uint8" + } + }, + { + "name": "batch_normalization_28/moving_variance", + "shape": [64], + "dtype": "float32", + "quantization": { + "min": 0.1750023365020752, + "scale": 0.002921118923262054, + "dtype": "uint8" + } + }, + { + "name": "batch_normalization_29/beta", + "shape": [96], + "dtype": "float32", + "quantization": { + "min": -1.9762367010116577, + "scale": 0.005986429195778043, + "dtype": "uint8" + } + }, + { + "name": "batch_normalization_29/moving_mean", + "shape": [96], + "dtype": "float32", + "quantization": { + "min": -1.1413830504697913, + "scale": 0.009058595638649136, + "dtype": "uint8" + } + }, + { + "name": "batch_normalization_29/moving_variance", + "shape": [96], + "dtype": "float32", + "quantization": { + "min": 0.20233316719532013, + "scale": 0.002113556335954105, + "dtype": "uint8" + } + }, + { + "name": "batch_normalization_3/beta", + "shape": [64], + "dtype": "float32", + "quantization": { + "min": -2.6871745165656593, + "scale": 0.02020431967342601, + "dtype": "uint8" + } + }, + { + "name": "batch_normalization_3/moving_mean", + "shape": [64], + "dtype": "float32", + "quantization": { + "min": -5.694581502091651, + "scale": 0.028190997535107183, + "dtype": "uint8" + } + }, + { + "name": "batch_normalization_3/moving_variance", + "shape": [64], + "dtype": "float32", + "quantization": { + "min": 0.14262264966964722, + "scale": 0.019136658135582418, + "dtype": "uint8" + } + }, + { + "name": "batch_normalization_30/beta", + "shape": [96], + "dtype": "float32", + "quantization": { + "min": -0.6150621568455416, + "scale": 0.007410387431873995, + "dtype": "uint8" + } + }, + { + "name": "batch_normalization_30/moving_mean", + "shape": [96], + "dtype": "float32", + "quantization": { + "min": -0.5138443261969323, + "scale": 0.003593316966412114, + "dtype": "uint8" + } + }, + { + "name": "batch_normalization_30/moving_variance", + "shape": [96], + "dtype": "float32", + "quantization": { + "min": 0.09833530336618423, + "scale": 0.0014371293140392678, + "dtype": "uint8" + } + }, + { + "name": "batch_normalization_31/beta", + "shape": [192], + "dtype": "float32", + "quantization": { + "min": -1.0016017801621382, + "scale": 0.016693363002702303, + "dtype": "uint8" + } + }, + { + "name": "batch_normalization_31/moving_mean", + "shape": [192], + "dtype": "float32", + "quantization": { + "min": -2.9536140198801077, + "scale": 0.02786428320641611, + "dtype": "uint8" + } + }, + { + "name": "batch_normalization_31/moving_variance", + "shape": [192], + "dtype": "float32", + "quantization": { + "min": 0.3321317434310913, + "scale": 0.025618675175835104, + "dtype": "uint8" + } + }, + { + "name": "batch_normalization_32/beta", + "shape": [128], + "dtype": "float32", + "quantization": { + "min": -1.482565550593769, + "scale": 0.006832099311492023, + "dtype": "uint8" + } + }, + { + "name": "batch_normalization_32/moving_mean", + "shape": [128], + "dtype": "float32", + "quantization": { + "min": -2.2532974004745485, + "scale": 0.014727433990029728, + "dtype": "uint8" + } + }, + { + "name": "batch_normalization_32/moving_variance", + "shape": [128], + "dtype": "float32", + "quantization": { + "min": 0.3239896297454834, + "scale": 0.0061596725501266185, + "dtype": "uint8" + } + }, + { + "name": "batch_normalization_33/beta", + "shape": [128], + "dtype": "float32", + "quantization": { + "min": -1.2625880390990014, + "scale": 0.008306500257230273, + "dtype": "uint8" + } + }, + { + "name": "batch_normalization_33/moving_mean", + "shape": [128], + "dtype": "float32", + "quantization": { + "min": -1.495534519588246, + "scale": 0.00826262165518368, + "dtype": "uint8" + } + }, + { + "name": "batch_normalization_33/moving_variance", + "shape": [128], + "dtype": "float32", + "quantization": { + "min": 0.2597413659095764, + "scale": 0.003397520149455351, + "dtype": "uint8" + } + }, + { + "name": "batch_normalization_34/beta", + "shape": [192], + "dtype": "float32", + "quantization": { + "min": -1.500122459262025, + "scale": 0.008523423063988778, + "dtype": "uint8" + } + }, + { + "name": "batch_normalization_34/moving_mean", + "shape": [192], + "dtype": "float32", + "quantization": { + "min": -2.1041239532769898, + "scale": 0.012233278798122032, + "dtype": "uint8" + } + }, + { + "name": "batch_normalization_34/moving_variance", + "shape": [192], + "dtype": "float32", + "quantization": { + "min": 0.16395790874958038, + "scale": 0.0040355992667815265, + "dtype": "uint8" + } + }, + { + "name": "batch_normalization_35/beta", + "shape": [128], + "dtype": "float32", + "quantization": { + "min": -1.0832286638372086, + "scale": 0.012171108582440545, + "dtype": "uint8" + } + }, + { + "name": "batch_normalization_35/moving_mean", + "shape": [128], + "dtype": "float32", + "quantization": { + "min": -2.395103445240095, + "scale": 0.023253431507185392, + "dtype": "uint8" + } + }, + { + "name": "batch_normalization_35/moving_variance", + "shape": [128], + "dtype": "float32", + "quantization": { + "min": 0.16777288913726807, + "scale": 0.019797573370092057, + "dtype": "uint8" + } + }, + { + "name": "batch_normalization_36/beta", + "shape": [128], + "dtype": "float32", + "quantization": { + "min": -1.8138037962072036, + "scale": 0.013143505769617416, + "dtype": "uint8" + } + }, + { + "name": "batch_normalization_36/moving_mean", + "shape": [128], + "dtype": "float32", + "quantization": { + "min": -1.310854683670343, + "scale": 0.01057140873927696, + "dtype": "uint8" + } + }, + { + "name": "batch_normalization_36/moving_variance", + "shape": [128], + "dtype": "float32", + "quantization": { + "min": 0.1670084297657013, + "scale": 0.006697891623366113, + "dtype": "uint8" + } + }, + { + "name": "batch_normalization_37/beta", + "shape": [128], + "dtype": "float32", + "quantization": { + "min": -1.9430689110475428, + "scale": 0.011776175218469956, + "dtype": "uint8" + } + }, + { + "name": "batch_normalization_37/moving_mean", + "shape": [128], + "dtype": "float32", + "quantization": { + "min": -1.7351032495498657, + "scale": 0.010206489703234504, + "dtype": "uint8" + } + }, + { + "name": "batch_normalization_37/moving_variance", + "shape": [128], + "dtype": "float32", + "quantization": { + "min": 0.19027358293533325, + "scale": 0.005742954974081002, + "dtype": "uint8" + } + }, + { + "name": "batch_normalization_38/beta", + "shape": [128], + "dtype": "float32", + "quantization": { + "min": -1.3741615199575237, + "scale": 0.009222560536627676, + "dtype": "uint8" + } + }, + { + "name": "batch_normalization_38/moving_mean", + "shape": [128], + "dtype": "float32", + "quantization": { + "min": -1.8390505080129587, + "scale": 0.011941886415668563, + "dtype": "uint8" + } + }, + { + "name": "batch_normalization_38/moving_variance", + "shape": [128], + "dtype": "float32", + "quantization": { + "min": 0.14841628074645996, + "scale": 0.004146125737358542, + "dtype": "uint8" + } + }, + { + "name": "batch_normalization_39/beta", + "shape": [192], + "dtype": "float32", + "quantization": { + "min": -1.787621801039752, + "scale": 0.00907422234030331, + "dtype": "uint8" + } + }, + { + "name": "batch_normalization_39/moving_mean", + "shape": [192], + "dtype": "float32", + "quantization": { + "min": -3.0378903204319525, + "scale": 0.014397584457023471, + "dtype": "uint8" + } + }, + { + "name": "batch_normalization_39/moving_variance", + "shape": [192], + "dtype": "float32", + "quantization": { + "min": 0.13926127552986145, + "scale": 0.010081140550912596, + "dtype": "uint8" + } + }, + { + "name": "batch_normalization_4/beta", + "shape": [80], + "dtype": "float32", + "quantization": { + "min": -1.619629228816313, + "scale": 0.021595056384217506, + "dtype": "uint8" + } + }, + { + "name": "batch_normalization_4/moving_mean", + "shape": [80], + "dtype": "float32", + "quantization": { + "min": -7.642285971548042, + "scale": 0.048676980710497086, + "dtype": "uint8" + } + }, + { + "name": "batch_normalization_4/moving_variance", + "shape": [80], + "dtype": "float32", + "quantization": { + "min": 0.1652865707874298, + "scale": 0.027933618017271452, + "dtype": "uint8" + } + }, + { + "name": "batch_normalization_40/beta", + "shape": [192], + "dtype": "float32", + "quantization": { + "min": -1.2992442846298218, + "scale": 0.00419156878602271, + "dtype": "uint8" + } + }, + { + "name": "batch_normalization_40/moving_mean", + "shape": [192], + "dtype": "float32", + "quantization": { + "min": -2.384939792109471, + "scale": 0.017035284229353364, + "dtype": "uint8" + } + }, + { + "name": "batch_normalization_40/moving_variance", + "shape": [192], + "dtype": "float32", + "quantization": { + "min": 0.06725674867630005, + "scale": 0.002992297387590595, + "dtype": "uint8" + } + }, + { + "name": "batch_normalization_41/beta", + "shape": [192], + "dtype": "float32", + "quantization": { + "min": -0.8896247265385646, + "scale": 0.013900386352165072, + "dtype": "uint8" + } + }, + { + "name": "batch_normalization_41/moving_mean", + "shape": [192], + "dtype": "float32", + "quantization": { + "min": -1.1002823920810925, + "scale": 0.007588154428145465, + "dtype": "uint8" + } + }, + { + "name": "batch_normalization_41/moving_variance", + "shape": [192], + "dtype": "float32", + "quantization": { + "min": 0.22883667051792145, + "scale": 0.0062419147468080706, + "dtype": "uint8" + } + }, + { + "name": "batch_normalization_42/beta", + "shape": [160], + "dtype": "float32", + "quantization": { + "min": -1.4175063925630906, + "scale": 0.00800851069244684, + "dtype": "uint8" + } + }, + { + "name": "batch_normalization_42/moving_mean", + "shape": [160], + "dtype": "float32", + "quantization": { + "min": -1.06603368918101, + "scale": 0.006922296682993571, + "dtype": "uint8" + } + }, + { + "name": "batch_normalization_42/moving_variance", + "shape": [160], + "dtype": "float32", + "quantization": { + "min": 0.16725388169288635, + "scale": 0.007173216927285288, + "dtype": "uint8" + } + }, + { + "name": "batch_normalization_43/beta", + "shape": [160], + "dtype": "float32", + "quantization": { + "min": -1.2026210822311103, + "scale": 0.006756298214781518, + "dtype": "uint8" + } + }, + { + "name": "batch_normalization_43/moving_mean", + "shape": [160], + "dtype": "float32", + "quantization": { + "min": -1.1263628791360294, + "scale": 0.00879970999325023, + "dtype": "uint8" + } + }, + { + "name": "batch_normalization_43/moving_variance", + "shape": [160], + "dtype": "float32", + "quantization": { + "min": 0.1858157068490982, + "scale": 0.0035367338680753523, + "dtype": "uint8" + } + }, + { + "name": "batch_normalization_44/beta", + "shape": [192], + "dtype": "float32", + "quantization": { + "min": -1.6851831992467243, + "scale": 0.007625263345007803, + "dtype": "uint8" + } + }, + { + "name": "batch_normalization_44/moving_mean", + "shape": [192], + "dtype": "float32", + "quantization": { + "min": -1.3855730304531024, + "scale": 0.009968151298223758, + "dtype": "uint8" + } + }, + { + "name": "batch_normalization_44/moving_variance", + "shape": [192], + "dtype": "float32", + "quantization": { + "min": 0.23984774947166443, + "scale": 0.004611740509668986, + "dtype": "uint8" + } + }, + { + "name": "batch_normalization_45/beta", + "shape": [160], + "dtype": "float32", + "quantization": { + "min": -1.198061533535228, + "scale": 0.009740337671018114, + "dtype": "uint8" + } + }, + { + "name": "batch_normalization_45/moving_mean", + "shape": [160], + "dtype": "float32", + "quantization": { + "min": -1.954274336496989, + "scale": 0.022991462782317517, + "dtype": "uint8" + } + }, + { + "name": "batch_normalization_45/moving_variance", + "shape": [160], + "dtype": "float32", + "quantization": { + "min": 0.12165232747793198, + "scale": 0.004625043360625997, + "dtype": "uint8" + } + }, + { + "name": "batch_normalization_46/beta", + "shape": [160], + "dtype": "float32", + "quantization": { + "min": -1.2301660285276526, + "scale": 0.01079093007480397, + "dtype": "uint8" + } + }, + { + "name": "batch_normalization_46/moving_mean", + "shape": [160], + "dtype": "float32", + "quantization": { + "min": -1.2148393953547758, + "scale": 0.008098929302365172, + "dtype": "uint8" + } + }, + { + "name": "batch_normalization_46/moving_variance", + "shape": [160], + "dtype": "float32", + "quantization": { + "min": 0.0945582166314125, + "scale": 0.009077410692093418, + "dtype": "uint8" + } + }, + { + "name": "batch_normalization_47/beta", + "shape": [160], + "dtype": "float32", + "quantization": { + "min": -1.4696354982899684, + "scale": 0.009481519343806248, + "dtype": "uint8" + } + }, + { + "name": "batch_normalization_47/moving_mean", + "shape": [160], + "dtype": "float32", + "quantization": { + "min": -1.1994350405300365, + "scale": 0.007014240003099629, + "dtype": "uint8" + } + }, + { + "name": "batch_normalization_47/moving_variance", + "shape": [160], + "dtype": "float32", + "quantization": { + "min": 0.11140790581703186, + "scale": 0.005514528120265288, + "dtype": "uint8" + } + }, + { + "name": "batch_normalization_48/beta", + "shape": [160], + "dtype": "float32", + "quantization": { + "min": -1.5309041387894575, + "scale": 0.010206027591929717, + "dtype": "uint8" + } + }, + { + "name": "batch_normalization_48/moving_mean", + "shape": [160], + "dtype": "float32", + "quantization": { + "min": -1.9451826843560909, + "scale": 0.012311282812380323, + "dtype": "uint8" + } + }, + { + "name": "batch_normalization_48/moving_variance", + "shape": [160], + "dtype": "float32", + "quantization": { + "min": 0.10514998435974121, + "scale": 0.005894911055471383, + "dtype": "uint8" + } + }, + { + "name": "batch_normalization_49/beta", + "shape": [192], + "dtype": "float32", + "quantization": { + "min": -2.14061705271403, + "scale": 0.010442034403483073, + "dtype": "uint8" + } + }, + { + "name": "batch_normalization_49/moving_mean", + "shape": [192], + "dtype": "float32", + "quantization": { + "min": -2.2268771409988406, + "scale": 0.014554752555547976, + "dtype": "uint8" + } + }, + { + "name": "batch_normalization_49/moving_variance", + "shape": [192], + "dtype": "float32", + "quantization": { + "min": 0.11649957299232483, + "scale": 0.012523744971144434, + "dtype": "uint8" + } + }, + { + "name": "batch_normalization_5/beta", + "shape": [192], + "dtype": "float32", + "quantization": { + "min": -1.2072101817411534, + "scale": 0.01676680807973824, + "dtype": "uint8" + } + }, + { + "name": "batch_normalization_5/moving_mean", + "shape": [192], + "dtype": "float32", + "quantization": { + "min": -12.276217052983302, + "scale": 0.11804054858637791, + "dtype": "uint8" + } + }, + { + "name": "batch_normalization_5/moving_variance", + "shape": [192], + "dtype": "float32", + "quantization": { + "min": 0.5460559725761414, + "scale": 0.024879303399254295, + "dtype": "uint8" + } + }, + { + "name": "batch_normalization_50/beta", + "shape": [192], + "dtype": "float32", + "quantization": { + "min": -1.4464423656463623, + "scale": 0.00563175964954437, + "dtype": "uint8" + } + }, + { + "name": "batch_normalization_50/moving_mean", + "shape": [192], + "dtype": "float32", + "quantization": { + "min": -0.8957669398363899, + "scale": 0.0060524793232188505, + "dtype": "uint8" + } + }, + { + "name": "batch_normalization_50/moving_variance", + "shape": [192], + "dtype": "float32", + "quantization": { + "min": 0.07341840118169785, + "scale": 0.0036757070936408696, + "dtype": "uint8" + } + }, + { + "name": "batch_normalization_51/beta", + "shape": [192], + "dtype": "float32", + "quantization": { + "min": -1.0999449000639074, + "scale": 0.008942641463934206, + "dtype": "uint8" + } + }, + { + "name": "batch_normalization_51/moving_mean", + "shape": [192], + "dtype": "float32", + "quantization": { + "min": -2.029522571142982, + "scale": 0.011090287274005366, + "dtype": "uint8" + } + }, + { + "name": "batch_normalization_51/moving_variance", + "shape": [192], + "dtype": "float32", + "quantization": { + "min": 0.3355939984321594, + "scale": 0.006160175800323487, + "dtype": "uint8" + } + }, + { + "name": "batch_normalization_52/beta", + "shape": [160], + "dtype": "float32", + "quantization": { + "min": -1.524581991223728, + "scale": 0.007699909046584485, + "dtype": "uint8" + } + }, + { + "name": "batch_normalization_52/moving_mean", + "shape": [160], + "dtype": "float32", + "quantization": { + "min": -2.118796606624828, + "scale": 0.013582029529646331, + "dtype": "uint8" + } + }, + { + "name": "batch_normalization_52/moving_variance", + "shape": [160], + "dtype": "float32", + "quantization": { + "min": 0.23068301379680634, + "scale": 0.006010897311509824, + "dtype": "uint8" + } + }, + { + "name": "batch_normalization_53/beta", + "shape": [160], + "dtype": "float32", + "quantization": { + "min": -1.376077589334226, + "scale": 0.007954205718694948, + "dtype": "uint8" + } + }, + { + "name": "batch_normalization_53/moving_mean", + "shape": [160], + "dtype": "float32", + "quantization": { + "min": -1.1059657826143152, + "scale": 0.006912286141339471, + "dtype": "uint8" + } + }, + { + "name": "batch_normalization_53/moving_variance", + "shape": [160], + "dtype": "float32", + "quantization": { + "min": 0.23038174211978912, + "scale": 0.0036060267219356463, + "dtype": "uint8" + } + }, + { + "name": "batch_normalization_54/beta", + "shape": [192], + "dtype": "float32", + "quantization": { + "min": -1.395288348197937, + "scale": 0.005394561647200117, + "dtype": "uint8" + } + }, + { + "name": "batch_normalization_54/moving_mean", + "shape": [192], + "dtype": "float32", + "quantization": { + "min": -1.3039465614393644, + "scale": 0.009118507422652898, + "dtype": "uint8" + } + }, + { + "name": "batch_normalization_54/moving_variance", + "shape": [192], + "dtype": "float32", + "quantization": { + "min": 0.21060386300086975, + "scale": 0.0029812921495998607, + "dtype": "uint8" + } + }, + { + "name": "batch_normalization_55/beta", + "shape": [160], + "dtype": "float32", + "quantization": { + "min": -1.5728507976905972, + "scale": 0.007748033486160578, + "dtype": "uint8" + } + }, + { + "name": "batch_normalization_55/moving_mean", + "shape": [160], + "dtype": "float32", + "quantization": { + "min": -1.1225942415349623, + "scale": 0.00870228094213149, + "dtype": "uint8" + } + }, + { + "name": "batch_normalization_55/moving_variance", + "shape": [160], + "dtype": "float32", + "quantization": { + "min": 0.149143785238266, + "scale": 0.0036947704997717166, + "dtype": "uint8" + } + }, + { + "name": "batch_normalization_56/beta", + "shape": [160], + "dtype": "float32", + "quantization": { + "min": -1.4110212517719645, + "scale": 0.007882800289228852, + "dtype": "uint8" + } + }, + { + "name": "batch_normalization_56/moving_mean", + "shape": [160], + "dtype": "float32", + "quantization": { + "min": -1.3976049315695669, + "scale": 0.010508307756162157, + "dtype": "uint8" + } + }, + { + "name": "batch_normalization_56/moving_variance", + "shape": [160], + "dtype": "float32", + "quantization": { + "min": 0.16969893872737885, + "scale": 0.005670124467681436, + "dtype": "uint8" + } + }, + { + "name": "batch_normalization_57/beta", + "shape": [160], + "dtype": "float32", + "quantization": { + "min": -2.037970177566304, + "scale": 0.008938465691080281, + "dtype": "uint8" + } + }, + { + "name": "batch_normalization_57/moving_mean", + "shape": [160], + "dtype": "float32", + "quantization": { + "min": -2.0804866949717207, + "scale": 0.012238157029245415, + "dtype": "uint8" + } + }, + { + "name": "batch_normalization_57/moving_variance", + "shape": [160], + "dtype": "float32", + "quantization": { + "min": 0.3031127452850342, + "scale": 0.009343819524727615, + "dtype": "uint8" + } + }, + { + "name": "batch_normalization_58/beta", + "shape": [160], + "dtype": "float32", + "quantization": { + "min": -1.1626297235488892, + "scale": 0.008018136024475098, + "dtype": "uint8" + } + }, + { + "name": "batch_normalization_58/moving_mean", + "shape": [160], + "dtype": "float32", + "quantization": { + "min": -1.1574389139811199, + "scale": 0.00890337626139323, + "dtype": "uint8" + } + }, + { + "name": "batch_normalization_58/moving_variance", + "shape": [160], + "dtype": "float32", + "quantization": { + "min": 0.20891253650188446, + "scale": 0.008950928437943552, + "dtype": "uint8" + } + }, + { + "name": "batch_normalization_59/beta", + "shape": [192], + "dtype": "float32", + "quantization": { + "min": -1.5612965036841, + "scale": 0.008578552218044506, + "dtype": "uint8" + } + }, + { + "name": "batch_normalization_59/moving_mean", + "shape": [192], + "dtype": "float32", + "quantization": { + "min": -2.9308635936063876, + "scale": 0.01526491455003327, + "dtype": "uint8" + } + }, + { + "name": "batch_normalization_59/moving_variance", + "shape": [192], + "dtype": "float32", + "quantization": { + "min": 0.35770270228385925, + "scale": 0.015598084061753515, + "dtype": "uint8" + } + }, + { + "name": "batch_normalization_6/beta", + "shape": [64], + "dtype": "float32", + "quantization": { + "min": -0.4988247050958522, + "scale": 0.018474989077624154, + "dtype": "uint8" + } + }, + { + "name": "batch_normalization_6/moving_mean", + "shape": [64], + "dtype": "float32", + "quantization": { + "min": -4.639463159149768, + "scale": 0.0473414608076507, + "dtype": "uint8" + } + }, + { + "name": "batch_normalization_6/moving_variance", + "shape": [64], + "dtype": "float32", + "quantization": { + "min": 0.5386254787445068, + "scale": 0.025258790745454677, + "dtype": "uint8" + } + }, + { + "name": "batch_normalization_60/beta", + "shape": [192], + "dtype": "float32", + "quantization": { + "min": -1.5135674476623535, + "scale": 0.0047089920324437755, + "dtype": "uint8" + } + }, + { + "name": "batch_normalization_60/moving_mean", + "shape": [192], + "dtype": "float32", + "quantization": { + "min": -1.219797550346337, + "scale": 0.006386374609143126, + "dtype": "uint8" + } + }, + { + "name": "batch_normalization_60/moving_variance", + "shape": [192], + "dtype": "float32", + "quantization": { + "min": 0.13531571626663208, + "scale": 0.002973755434447644, + "dtype": "uint8" + } + }, + { + "name": "batch_normalization_61/beta", + "shape": [192], + "dtype": "float32", + "quantization": { + "min": -1.5758512195418863, + "scale": 0.006677335676024942, + "dtype": "uint8" + } + }, + { + "name": "batch_normalization_61/moving_mean", + "shape": [192], + "dtype": "float32", + "quantization": { + "min": -1.3910136437883565, + "scale": 0.008040541293574314, + "dtype": "uint8" + } + }, + { + "name": "batch_normalization_61/moving_variance", + "shape": [192], + "dtype": "float32", + "quantization": { + "min": 0.27678921818733215, + "scale": 0.005867989741119684, + "dtype": "uint8" + } + }, + { + "name": "batch_normalization_62/beta", + "shape": [192], + "dtype": "float32", + "quantization": { + "min": -1.7731781005859375, + "scale": 0.005797953932893042, + "dtype": "uint8" + } + }, + { + "name": "batch_normalization_62/moving_mean", + "shape": [192], + "dtype": "float32", + "quantization": { + "min": -1.1186937569403181, + "scale": 0.006180628491382973, + "dtype": "uint8" + } + }, + { + "name": "batch_normalization_62/moving_variance", + "shape": [192], + "dtype": "float32", + "quantization": { + "min": 0.2029876708984375, + "scale": 0.003584029627781288, + "dtype": "uint8" + } + }, + { + "name": "batch_normalization_63/beta", + "shape": [192], + "dtype": "float32", + "quantization": { + "min": -1.1662906955270207, + "scale": 0.007199325281030991, + "dtype": "uint8" + } + }, + { + "name": "batch_normalization_63/moving_mean", + "shape": [192], + "dtype": "float32", + "quantization": { + "min": -0.5863659428615197, + "scale": 0.005235410204120711, + "dtype": "uint8" + } + }, + { + "name": "batch_normalization_63/moving_variance", + "shape": [192], + "dtype": "float32", + "quantization": { + "min": 0.09435708075761795, + "scale": 0.0028266684389581867, + "dtype": "uint8" + } + }, + { + "name": "batch_normalization_64/beta", + "shape": [192], + "dtype": "float32", + "quantization": { + "min": -2.0544645720837162, + "scale": 0.018343433679318896, + "dtype": "uint8" + } + }, + { + "name": "batch_normalization_64/moving_mean", + "shape": [192], + "dtype": "float32", + "quantization": { + "min": -2.3606223686068666, + "scale": 0.011803111843034333, + "dtype": "uint8" + } + }, + { + "name": "batch_normalization_64/moving_variance", + "shape": [192], + "dtype": "float32", + "quantization": { + "min": 0.24856248497962952, + "scale": 0.017925596587798173, + "dtype": "uint8" + } + }, + { + "name": "batch_normalization_65/beta", + "shape": [192], + "dtype": "float32", + "quantization": { + "min": -1.5397444839571037, + "scale": 0.007474487786199533, + "dtype": "uint8" + } + }, + { + "name": "batch_normalization_65/moving_mean", + "shape": [192], + "dtype": "float32", + "quantization": { + "min": -1.0257711017833036, + "scale": 0.007770993195328058, + "dtype": "uint8" + } + }, + { + "name": "batch_normalization_65/moving_variance", + "shape": [192], + "dtype": "float32", + "quantization": { + "min": 0.18295010924339294, + "scale": 0.002770194937201107, + "dtype": "uint8" + } + }, + { + "name": "batch_normalization_66/beta", + "shape": [192], + "dtype": "float32", + "quantization": { + "min": -1.5399934053421023, + "scale": 0.009058784737306484, + "dtype": "uint8" + } + }, + { + "name": "batch_normalization_66/moving_mean", + "shape": [192], + "dtype": "float32", + "quantization": { + "min": -1.2256995402130426, + "scale": 0.007959087923461316, + "dtype": "uint8" + } + }, + { + "name": "batch_normalization_66/moving_variance", + "shape": [192], + "dtype": "float32", + "quantization": { + "min": 0.2300872653722763, + "scale": 0.004644319648836173, + "dtype": "uint8" + } + }, + { + "name": "batch_normalization_67/beta", + "shape": [192], + "dtype": "float32", + "quantization": { + "min": -1.5030710697174072, + "scale": 0.005584524601113562, + "dtype": "uint8" + } + }, + { + "name": "batch_normalization_67/moving_mean", + "shape": [192], + "dtype": "float32", + "quantization": { + "min": -1.4341935107520982, + "scale": 0.0067971256433748736, + "dtype": "uint8" + } + }, + { + "name": "batch_normalization_67/moving_variance", + "shape": [192], + "dtype": "float32", + "quantization": { + "min": 0.13089387118816376, + "scale": 0.0026349552121816898, + "dtype": "uint8" + } + }, + { + "name": "batch_normalization_68/beta", + "shape": [192], + "dtype": "float32", + "quantization": { + "min": -1.1063206609557656, + "scale": 0.005853548470665427, + "dtype": "uint8" + } + }, + { + "name": "batch_normalization_68/moving_mean", + "shape": [192], + "dtype": "float32", + "quantization": { + "min": -1.067355478511137, + "scale": 0.010165290271534639, + "dtype": "uint8" + } + }, + { + "name": "batch_normalization_68/moving_variance", + "shape": [192], + "dtype": "float32", + "quantization": { + "min": 0.15702544152736664, + "scale": 0.0025017112493515015, + "dtype": "uint8" + } + }, + { + "name": "batch_normalization_69/beta", + "shape": [192], + "dtype": "float32", + "quantization": { + "min": -2.2159725623972277, + "scale": 0.012958903873667998, + "dtype": "uint8" + } + }, + { + "name": "batch_normalization_69/moving_mean", + "shape": [192], + "dtype": "float32", + "quantization": { + "min": -2.008986711502075, + "scale": 0.006804025056315404, + "dtype": "uint8" + } + }, + { + "name": "batch_normalization_69/moving_variance", + "shape": [192], + "dtype": "float32", + "quantization": { + "min": 0.3119298219680786, + "scale": 0.012169442924798704, + "dtype": "uint8" + } + }, + { + "name": "batch_normalization_7/beta", + "shape": [48], + "dtype": "float32", + "quantization": { + "min": -0.6259138478952295, + "scale": 0.009629443813772762, + "dtype": "uint8" + } + }, + { + "name": "batch_normalization_7/moving_mean", + "shape": [48], + "dtype": "float32", + "quantization": { + "min": -2.1740409458384793, + "scale": 0.019945329778334672, + "dtype": "uint8" + } + }, + { + "name": "batch_normalization_7/moving_variance", + "shape": [48], + "dtype": "float32", + "quantization": { + "min": 0.3680301010608673, + "scale": 0.014270223238888909, + "dtype": "uint8" + } + }, + { + "name": "batch_normalization_70/beta", + "shape": [192], + "dtype": "float32", + "quantization": { + "min": -1.865909457206726, + "scale": 0.004504433332705031, + "dtype": "uint8" + } + }, + { + "name": "batch_normalization_70/moving_mean", + "shape": [192], + "dtype": "float32", + "quantization": { + "min": -1.1317527546602135, + "scale": 0.0050524676547330965, + "dtype": "uint8" + } + }, + { + "name": "batch_normalization_70/moving_variance", + "shape": [192], + "dtype": "float32", + "quantization": { + "min": 0.11138727515935898, + "scale": 0.0026711427990128013, + "dtype": "uint8" + } + }, + { + "name": "batch_normalization_71/beta", + "shape": [192], + "dtype": "float32", + "quantization": { + "min": -1.6039793491363525, + "scale": 0.005784372196478003, + "dtype": "uint8" + } + }, + { + "name": "batch_normalization_71/moving_mean", + "shape": [192], + "dtype": "float32", + "quantization": { + "min": -0.47732780867931884, + "scale": 0.004920905244116689, + "dtype": "uint8" + } + }, + { + "name": "batch_normalization_71/moving_variance", + "shape": [192], + "dtype": "float32", + "quantization": { + "min": 0.037272851914167404, + "scale": 0.0005219906714617037, + "dtype": "uint8" + } + }, + { + "name": "batch_normalization_72/beta", + "shape": [320], + "dtype": "float32", + "quantization": { + "min": -1.540266954197603, + "scale": 0.009223155414356905, + "dtype": "uint8" + } + }, + { + "name": "batch_normalization_72/moving_mean", + "shape": [320], + "dtype": "float32", + "quantization": { + "min": -2.0190852207296035, + "scale": 0.010461581454557532, + "dtype": "uint8" + } + }, + { + "name": "batch_normalization_72/moving_variance", + "shape": [320], + "dtype": "float32", + "quantization": { + "min": 0.06347450613975525, + "scale": 0.003608025172177483, + "dtype": "uint8" + } + }, + { + "name": "batch_normalization_73/beta", + "shape": [192], + "dtype": "float32", + "quantization": { + "min": -0.985390640707577, + "scale": 0.012633213342404833, + "dtype": "uint8" + } + }, + { + "name": "batch_normalization_73/moving_mean", + "shape": [192], + "dtype": "float32", + "quantization": { + "min": -0.9022618592954149, + "scale": 0.010491416968551336, + "dtype": "uint8" + } + }, + { + "name": "batch_normalization_73/moving_variance", + "shape": [192], + "dtype": "float32", + "quantization": { + "min": 0.03170640394091606, + "scale": 0.0026475690889592265, + "dtype": "uint8" + } + }, + { + "name": "batch_normalization_74/beta", + "shape": [192], + "dtype": "float32", + "quantization": { + "min": -1.0769996951608096, + "scale": 0.015608691234214633, + "dtype": "uint8" + } + }, + { + "name": "batch_normalization_74/moving_mean", + "shape": [192], + "dtype": "float32", + "quantization": { + "min": -1.7473176166123034, + "scale": 0.012570630335340312, + "dtype": "uint8" + } + }, + { + "name": "batch_normalization_74/moving_variance", + "shape": [192], + "dtype": "float32", + "quantization": { + "min": 0.13737867772579193, + "scale": 0.006850161330372679, + "dtype": "uint8" + } + }, + { + "name": "batch_normalization_75/beta", + "shape": [192], + "dtype": "float32", + "quantization": { + "min": -1.4387849751640769, + "scale": 0.007653111570021685, + "dtype": "uint8" + } + }, + { + "name": "batch_normalization_75/moving_mean", + "shape": [192], + "dtype": "float32", + "quantization": { + "min": -2.253594519110287, + "scale": 0.017469724954343308, + "dtype": "uint8" + } + }, + { + "name": "batch_normalization_75/moving_variance", + "shape": [192], + "dtype": "float32", + "quantization": { + "min": 0.17224669456481934, + "scale": 0.014315306906606637, + "dtype": "uint8" + } + }, + { + "name": "batch_normalization_76/beta", + "shape": [192], + "dtype": "float32", + "quantization": { + "min": -1.6436317995482799, + "scale": 0.012265908951852835, + "dtype": "uint8" + } + }, + { + "name": "batch_normalization_76/moving_mean", + "shape": [192], + "dtype": "float32", + "quantization": { + "min": -1.6223250557394588, + "scale": 0.009012916976330327, + "dtype": "uint8" + } + }, + { + "name": "batch_normalization_76/moving_variance", + "shape": [192], + "dtype": "float32", + "quantization": { + "min": 0.10091816633939743, + "scale": 0.024782416896492826, + "dtype": "uint8" + } + }, + { + "name": "batch_normalization_77/beta", + "shape": [320], + "dtype": "float32", + "quantization": { + "min": -1.6236799055454778, + "scale": 0.008776648138083664, + "dtype": "uint8" + } + }, + { + "name": "batch_normalization_77/moving_mean", + "shape": [320], + "dtype": "float32", + "quantization": { + "min": -2.9638912789961873, + "scale": 0.017033857925265444, + "dtype": "uint8" + } + }, + { + "name": "batch_normalization_77/moving_variance", + "shape": [320], + "dtype": "float32", + "quantization": { + "min": 0.11361116915941238, + "scale": 0.023207617945530834, + "dtype": "uint8" + } + }, + { + "name": "batch_normalization_78/beta", + "shape": [384], + "dtype": "float32", + "quantization": { + "min": -1.4153826966005212, + "scale": 0.008277091792985504, + "dtype": "uint8" + } + }, + { + "name": "batch_normalization_78/moving_mean", + "shape": [384], + "dtype": "float32", + "quantization": { + "min": -0.9769486890119664, + "scale": 0.00707933832617367, + "dtype": "uint8" + } + }, + { + "name": "batch_normalization_78/moving_variance", + "shape": [384], + "dtype": "float32", + "quantization": { + "min": 0.19088256359100342, + "scale": 0.0073945882273655315, + "dtype": "uint8" + } + }, + { + "name": "batch_normalization_79/beta", + "shape": [384], + "dtype": "float32", + "quantization": { + "min": -2.0473411083221436, + "scale": 0.004208615013197356, + "dtype": "uint8" + } + }, + { + "name": "batch_normalization_79/moving_mean", + "shape": [384], + "dtype": "float32", + "quantization": { + "min": -0.7610570852663003, + "scale": 0.0033089438489839144, + "dtype": "uint8" + } + }, + { + "name": "batch_normalization_79/moving_variance", + "shape": [384], + "dtype": "float32", + "quantization": { + "min": 0.05480360612273216, + "scale": 0.001661744786828172, + "dtype": "uint8" + } + }, + { + "name": "batch_normalization_8/beta", + "shape": [64], + "dtype": "float32", + "quantization": { + "min": -1.2169222845750698, + "scale": 0.021349513764474908, + "dtype": "uint8" + } + }, + { + "name": "batch_normalization_8/moving_mean", + "shape": [64], + "dtype": "float32", + "quantization": { + "min": -7.352502991171444, + "scale": 0.03551933812160118, + "dtype": "uint8" + } + }, + { + "name": "batch_normalization_8/moving_variance", + "shape": [64], + "dtype": "float32", + "quantization": { + "min": 1.2515424489974976, + "scale": 0.03510500449760287, + "dtype": "uint8" + } + }, + { + "name": "batch_normalization_80/beta", + "shape": [384], + "dtype": "float32", + "quantization": { + "min": -1.7098569869995117, + "scale": 0.003118572515599868, + "dtype": "uint8" + } + }, + { + "name": "batch_normalization_80/moving_mean", + "shape": [384], + "dtype": "float32", + "quantization": { + "min": -0.7364731842980665, + "scale": 0.003425456671153798, + "dtype": "uint8" + } + }, + { + "name": "batch_normalization_80/moving_variance", + "shape": [384], + "dtype": "float32", + "quantization": { + "min": 0.06618082523345947, + "scale": 0.0018710627275354721, + "dtype": "uint8" + } + }, + { + "name": "batch_normalization_81/beta", + "shape": [448], + "dtype": "float32", + "quantization": { + "min": -1.869015963054171, + "scale": 0.008693097502577539, + "dtype": "uint8" + } + }, + { + "name": "batch_normalization_81/moving_mean", + "shape": [448], + "dtype": "float32", + "quantization": { + "min": -1.1766659362643372, + "scale": 0.008286379832847445, + "dtype": "uint8" + } + }, + { + "name": "batch_normalization_81/moving_variance", + "shape": [448], + "dtype": "float32", + "quantization": { + "min": 0.14993160963058472, + "scale": 0.004515989387736601, + "dtype": "uint8" + } + }, + { + "name": "batch_normalization_82/beta", + "shape": [384], + "dtype": "float32", + "quantization": { + "min": -1.3327109813690183, + "scale": 0.008710529289993585, + "dtype": "uint8" + } + }, + { + "name": "batch_normalization_82/moving_mean", + "shape": [384], + "dtype": "float32", + "quantization": { + "min": -1.1086185679716223, + "scale": 0.008940472322351792, + "dtype": "uint8" + } + }, + { + "name": "batch_normalization_82/moving_variance", + "shape": [384], + "dtype": "float32", + "quantization": { + "min": 0.21444351971149445, + "scale": 0.011961153149604798, + "dtype": "uint8" + } + }, + { + "name": "batch_normalization_83/beta", + "shape": [384], + "dtype": "float32", + "quantization": { + "min": -1.818679837619557, + "scale": 0.015412540996775907, + "dtype": "uint8" + } + }, + { + "name": "batch_normalization_83/moving_mean", + "shape": [384], + "dtype": "float32", + "quantization": { + "min": -2.0038957876317642, + "scale": 0.012845485818152334, + "dtype": "uint8" + } + }, + { + "name": "batch_normalization_83/moving_variance", + "shape": [384], + "dtype": "float32", + "quantization": { + "min": 0.07089755684137344, + "scale": 0.02103717663124496, + "dtype": "uint8" + } + }, + { + "name": "batch_normalization_84/beta", + "shape": [384], + "dtype": "float32", + "quantization": { + "min": -1.7786205541853812, + "scale": 0.008158809881584317, + "dtype": "uint8" + } + }, + { + "name": "batch_normalization_84/moving_mean", + "shape": [384], + "dtype": "float32", + "quantization": { + "min": -1.3955397058935726, + "scale": 0.01722888525794534, + "dtype": "uint8" + } + }, + { + "name": "batch_normalization_84/moving_variance", + "shape": [384], + "dtype": "float32", + "quantization": { + "min": 0.07342959940433502, + "scale": 0.011137770613034566, + "dtype": "uint8" + } + }, + { + "name": "batch_normalization_85/beta", + "shape": [192], + "dtype": "float32", + "quantization": { + "min": -1.178499460220337, + "scale": 0.0028658638982211842, + "dtype": "uint8" + } + }, + { + "name": "batch_normalization_85/moving_mean", + "shape": [192], + "dtype": "float32", + "quantization": { + "min": -1.690884064693077, + "scale": 0.010186048582488415, + "dtype": "uint8" + } + }, + { + "name": "batch_normalization_85/moving_variance", + "shape": [192], + "dtype": "float32", + "quantization": { + "min": 0.14086772501468658, + "scale": 0.00910748775098838, + "dtype": "uint8" + } + }, + { + "name": "batch_normalization_86/beta", + "shape": [320], + "dtype": "float32", + "quantization": { + "min": -0.5220519305736411, + "scale": 0.0020882077222945643, + "dtype": "uint8" + } + }, + { + "name": "batch_normalization_86/moving_mean", + "shape": [320], + "dtype": "float32", + "quantization": { + "min": -0.5231765800831365, + "scale": 0.0036081143454009413, + "dtype": "uint8" + } + }, + { + "name": "batch_normalization_86/moving_variance", + "shape": [320], + "dtype": "float32", + "quantization": { + "min": 0.11893065273761749, + "scale": 0.005666278098143783, + "dtype": "uint8" + } + }, + { + "name": "batch_normalization_87/beta", + "shape": [384], + "dtype": "float32", + "quantization": { + "min": -1.984124174889396, + "scale": 0.008818329666175094, + "dtype": "uint8" + } + }, + { + "name": "batch_normalization_87/moving_mean", + "shape": [384], + "dtype": "float32", + "quantization": { + "min": -0.5652224242687225, + "scale": 0.0036942642109066832, + "dtype": "uint8" + } + }, + { + "name": "batch_normalization_87/moving_variance", + "shape": [384], + "dtype": "float32", + "quantization": { + "min": 0.06085425242781639, + "scale": 0.03796012239421115, + "dtype": "uint8" + } + }, + { + "name": "batch_normalization_88/beta", + "shape": [384], + "dtype": "float32", + "quantization": { + "min": -0.3602467477321625, + "scale": 0.001247984813708885, + "dtype": "uint8" + } + }, + { + "name": "batch_normalization_88/moving_mean", + "shape": [384], + "dtype": "float32", + "quantization": { + "min": -0.0991711297455956, + "scale": 0.0008549235322896172, + "dtype": "uint8" + } + }, + { + "name": "batch_normalization_88/moving_variance", + "shape": [384], + "dtype": "float32", + "quantization": { + "min": 0.021573534235358238, + "scale": 0.0022643732454846886, + "dtype": "uint8" + } + }, + { + "name": "batch_normalization_89/beta", + "shape": [384], + "dtype": "float32", + "quantization": { + "min": -0.29050213098526, + "scale": 0.0009703184897993125, + "dtype": "uint8" + } + }, + { + "name": "batch_normalization_89/moving_mean", + "shape": [384], + "dtype": "float32", + "quantization": { + "min": -0.12789016552999907, + "scale": 0.0010231213242399926, + "dtype": "uint8" + } + }, + { + "name": "batch_normalization_89/moving_variance", + "shape": [384], + "dtype": "float32", + "quantization": { + "min": 0.01962556503713131, + "scale": 0.002291068997161061, + "dtype": "uint8" + } + }, + { + "name": "batch_normalization_9/beta", + "shape": [64], + "dtype": "float32", + "quantization": { + "min": -1.2553448396570541, + "scale": 0.017435344995236864, + "dtype": "uint8" + } + }, + { + "name": "batch_normalization_9/moving_mean", + "shape": [64], + "dtype": "float32", + "quantization": { + "min": -9.159099926668056, + "scale": 0.05174632726931105, + "dtype": "uint8" + } + }, + { + "name": "batch_normalization_9/moving_variance", + "shape": [64], + "dtype": "float32", + "quantization": { + "min": 0.36967048048973083, + "scale": 0.022706968293470495, + "dtype": "uint8" + } + }, + { + "name": "batch_normalization_90/beta", + "shape": [448], + "dtype": "float32", + "quantization": { + "min": -1.9150965461543963, + "scale": 0.008825329705780628, + "dtype": "uint8" + } + }, + { + "name": "batch_normalization_90/moving_mean", + "shape": [448], + "dtype": "float32", + "quantization": { + "min": -1.0748392633363313, + "scale": 0.011080817147797229, + "dtype": "uint8" + } + }, + { + "name": "batch_normalization_90/moving_variance", + "shape": [448], + "dtype": "float32", + "quantization": { + "min": 0.058019232004880905, + "scale": 0.03696253692694739, + "dtype": "uint8" + } + }, + { + "name": "batch_normalization_91/beta", + "shape": [384], + "dtype": "float32", + "quantization": { + "min": -1.4989316603716683, + "scale": 0.016117544735179228, + "dtype": "uint8" + } + }, + { + "name": "batch_normalization_91/moving_mean", + "shape": [384], + "dtype": "float32", + "quantization": { + "min": -1.0672029087356492, + "scale": 0.0048954261868607764, + "dtype": "uint8" + } + }, + { + "name": "batch_normalization_91/moving_variance", + "shape": [384], + "dtype": "float32", + "quantization": { + "min": 0.04761062562465668, + "scale": 0.02329025134152057, + "dtype": "uint8" + } + }, + { + "name": "batch_normalization_92/beta", + "shape": [384], + "dtype": "float32", + "quantization": { + "min": -0.4021552567680677, + "scale": 0.0018197070441994014, + "dtype": "uint8" + } + }, + { + "name": "batch_normalization_92/moving_mean", + "shape": [384], + "dtype": "float32", + "quantization": { + "min": -0.2961117188135783, + "scale": 0.0027935067812601727, + "dtype": "uint8" + } + }, + { + "name": "batch_normalization_92/moving_variance", + "shape": [384], + "dtype": "float32", + "quantization": { + "min": 0.3863965570926666, + "scale": 0.02258765405299617, + "dtype": "uint8" + } + }, + { + "name": "batch_normalization_93/beta", + "shape": [384], + "dtype": "float32", + "quantization": { + "min": -0.4592238664627075, + "scale": 0.0011769139883564968, + "dtype": "uint8" + } + }, + { + "name": "batch_normalization_93/moving_mean", + "shape": [384], + "dtype": "float32", + "quantization": { + "min": -0.29778090224546544, + "scale": 0.0027572305763469023, + "dtype": "uint8" + } + }, + { + "name": "batch_normalization_93/moving_variance", + "shape": [384], + "dtype": "float32", + "quantization": { + "min": 0.3583631217479706, + "scale": 0.01633430754437166, + "dtype": "uint8" + } + }, + { + "name": "batch_normalization_94/beta", + "shape": [192], + "dtype": "float32", + "quantization": { + "min": -0.314007496249442, + "scale": 0.0017640870575811349, + "dtype": "uint8" + } + }, + { + "name": "batch_normalization_94/moving_mean", + "shape": [192], + "dtype": "float32", + "quantization": { + "min": -0.7145729660987854, + "scale": 0.004203370388816385, + "dtype": "uint8" + } + }, + { + "name": "batch_normalization_94/moving_variance", + "shape": [192], + "dtype": "float32", + "quantization": { + "min": 0.11457707732915878, + "scale": 0.008541139814199185, + "dtype": "uint8" + } + }, + { + "name": "conv2d_1/kernel", + "shape": [3, 3, 3, 32], + "dtype": "float32", + "quantization": { + "min": -0.7515598654747009, + "scale": 0.006423588593800863, + "dtype": "uint8" + } + }, + { + "name": "conv2d_10/kernel", + "shape": [3, 3, 64, 96], + "dtype": "float32", + "quantization": { + "min": -0.5314577747793758, + "scale": 0.004088136729072122, + "dtype": "uint8" + } + }, + { + "name": "conv2d_11/kernel", + "shape": [3, 3, 96, 96], + "dtype": "float32", + "quantization": { + "min": -0.297173446299983, + "scale": 0.0027015767845453, + "dtype": "uint8" + } + }, + { + "name": "conv2d_12/kernel", + "shape": [1, 1, 192, 32], + "dtype": "float32", + "quantization": { + "min": -0.6043872510685641, + "scale": 0.003874277250439513, + "dtype": "uint8" + } + }, + { + "name": "conv2d_13/kernel", + "shape": [1, 1, 256, 64], + "dtype": "float32", + "quantization": { + "min": -0.6367825031280518, + "scale": 0.005489504337310791, + "dtype": "uint8" + } + }, + { + "name": "conv2d_14/kernel", + "shape": [1, 1, 256, 48], + "dtype": "float32", + "quantization": { + "min": -0.6980268389570946, + "scale": 0.004256261213153016, + "dtype": "uint8" + } + }, + { + "name": "conv2d_15/kernel", + "shape": [5, 5, 48, 64], + "dtype": "float32", + "quantization": { + "min": -0.37809036514338323, + "scale": 0.0034062195057962454, + "dtype": "uint8" + } + }, + { + "name": "conv2d_16/kernel", + "shape": [1, 1, 256, 64], + "dtype": "float32", + "quantization": { + "min": -0.38000125464271095, + "scale": 0.002945746160021015, + "dtype": "uint8" + } + }, + { + "name": "conv2d_17/kernel", + "shape": [3, 3, 64, 96], + "dtype": "float32", + "quantization": { + "min": -0.36159335772196455, + "scale": 0.002658774689132092, + "dtype": "uint8" + } + }, + { + "name": "conv2d_18/kernel", + "shape": [3, 3, 96, 96], + "dtype": "float32", + "quantization": { + "min": -0.322937131395527, + "scale": 0.0025229463390275546, + "dtype": "uint8" + } + }, + { + "name": "conv2d_19/kernel", + "shape": [1, 1, 256, 64], + "dtype": "float32", + "quantization": { + "min": -0.49620920665123885, + "scale": 0.0037308962906108184, + "dtype": "uint8" + } + }, + { + "name": "conv2d_2/kernel", + "shape": [3, 3, 32, 32], + "dtype": "float32", + "quantization": { + "min": -0.9963670036372017, + "scale": 0.00784540947745828, + "dtype": "uint8" + } + }, + { + "name": "conv2d_20/kernel", + "shape": [1, 1, 288, 64], + "dtype": "float32", + "quantization": { + "min": -0.9467216884388643, + "scale": 0.005954224455590342, + "dtype": "uint8" + } + }, + { + "name": "conv2d_21/kernel", + "shape": [1, 1, 288, 48], + "dtype": "float32", + "quantization": { + "min": -0.36753161491132247, + "scale": 0.0028939497237112006, + "dtype": "uint8" + } + }, + { + "name": "conv2d_22/kernel", + "shape": [5, 5, 48, 64], + "dtype": "float32", + "quantization": { + "min": -0.28142107234281655, + "scale": 0.0023451756028568045, + "dtype": "uint8" + } + }, + { + "name": "conv2d_23/kernel", + "shape": [1, 1, 288, 64], + "dtype": "float32", + "quantization": { + "min": -0.5600246597738827, + "scale": 0.004912497015560374, + "dtype": "uint8" + } + }, + { + "name": "conv2d_24/kernel", + "shape": [3, 3, 64, 96], + "dtype": "float32", + "quantization": { + "min": -0.40741646079456106, + "scale": 0.0032334639745600084, + "dtype": "uint8" + } + }, + { + "name": "conv2d_25/kernel", + "shape": [3, 3, 96, 96], + "dtype": "float32", + "quantization": { + "min": -0.2517923231218375, + "scale": 0.0026786417353386973, + "dtype": "uint8" + } + }, + { + "name": "conv2d_26/kernel", + "shape": [1, 1, 288, 64], + "dtype": "float32", + "quantization": { + "min": -0.40744167694858474, + "scale": 0.00420042965926376, + "dtype": "uint8" + } + }, + { + "name": "conv2d_27/kernel", + "shape": [3, 3, 288, 384], + "dtype": "float32", + "quantization": { + "min": -0.17904583583859837, + "scale": 0.0023872778111813115, + "dtype": "uint8" + } + }, + { + "name": "conv2d_28/kernel", + "shape": [1, 1, 288, 64], + "dtype": "float32", + "quantization": { + "min": -0.3550921758015951, + "scale": 0.0030092557271321615, + "dtype": "uint8" + } + }, + { + "name": "conv2d_29/kernel", + "shape": [3, 3, 64, 96], + "dtype": "float32", + "quantization": { + "min": -0.21044881904826443, + "scale": 0.0021044881904826443, + "dtype": "uint8" + } + }, + { + "name": "conv2d_3/kernel", + "shape": [3, 3, 32, 64], + "dtype": "float32", + "quantization": { + "min": -0.9826949535631666, + "scale": 0.006920386996923708, + "dtype": "uint8" + } + }, + { + "name": "conv2d_30/kernel", + "shape": [3, 3, 96, 96], + "dtype": "float32", + "quantization": { + "min": -0.142222724182933, + "scale": 0.0013291843381582522, + "dtype": "uint8" + } + }, + { + "name": "conv2d_31/kernel", + "shape": [1, 1, 768, 192], + "dtype": "float32", + "quantization": { + "min": -0.6299613606696035, + "scale": 0.004736551583981981, + "dtype": "uint8" + } + }, + { + "name": "conv2d_32/kernel", + "shape": [1, 1, 768, 128], + "dtype": "float32", + "quantization": { + "min": -0.28287766400505515, + "scale": 0.0029466423333859913, + "dtype": "uint8" + } + }, + { + "name": "conv2d_33/kernel", + "shape": [1, 7, 128, 128], + "dtype": "float32", + "quantization": { + "min": -0.37715829119962807, + "scale": 0.003308406063154632, + "dtype": "uint8" + } + }, + { + "name": "conv2d_34/kernel", + "shape": [7, 1, 128, 192], + "dtype": "float32", + "quantization": { + "min": -0.2915347753786573, + "scale": 0.002602989065880869, + "dtype": "uint8" + } + }, + { + "name": "conv2d_35/kernel", + "shape": [1, 1, 768, 128], + "dtype": "float32", + "quantization": { + "min": -0.5098388725636052, + "scale": 0.0034217373997557396, + "dtype": "uint8" + } + }, + { + "name": "conv2d_36/kernel", + "shape": [7, 1, 128, 128], + "dtype": "float32", + "quantization": { + "min": -0.29266455173492434, + "scale": 0.002956207593282064, + "dtype": "uint8" + } + }, + { + "name": "conv2d_37/kernel", + "shape": [1, 7, 128, 128], + "dtype": "float32", + "quantization": { + "min": -0.3063901633608575, + "scale": 0.002664262290094413, + "dtype": "uint8" + } + }, + { + "name": "conv2d_38/kernel", + "shape": [7, 1, 128, 128], + "dtype": "float32", + "quantization": { + "min": -0.2562146642628838, + "scale": 0.002227953602285946, + "dtype": "uint8" + } + }, + { + "name": "conv2d_39/kernel", + "shape": [1, 7, 128, 192], + "dtype": "float32", + "quantization": { + "min": -0.32483990402782664, + "scale": 0.0024062215113172343, + "dtype": "uint8" + } + }, + { + "name": "conv2d_4/kernel", + "shape": [1, 1, 64, 80], + "dtype": "float32", + "quantization": { + "min": -1.0175340128879922, + "scale": 0.008771844938689587, + "dtype": "uint8" + } + }, + { + "name": "conv2d_40/kernel", + "shape": [1, 1, 768, 192], + "dtype": "float32", + "quantization": { + "min": -0.5300707817077637, + "scale": 0.003897579277262968, + "dtype": "uint8" + } + }, + { + "name": "conv2d_41/kernel", + "shape": [1, 1, 768, 192], + "dtype": "float32", + "quantization": { + "min": -0.4742822464774637, + "scale": 0.0037345058777753046, + "dtype": "uint8" + } + }, + { + "name": "conv2d_42/kernel", + "shape": [1, 1, 768, 160], + "dtype": "float32", + "quantization": { + "min": -0.4733707100737329, + "scale": 0.004080781983394249, + "dtype": "uint8" + } + }, + { + "name": "conv2d_43/kernel", + "shape": [1, 7, 160, 160], + "dtype": "float32", + "quantization": { + "min": -0.31529887493918923, + "scale": 0.0028405304048575606, + "dtype": "uint8" + } + }, + { + "name": "conv2d_44/kernel", + "shape": [7, 1, 160, 192], + "dtype": "float32", + "quantization": { + "min": -0.2984846812837264, + "scale": 0.0025955189676845777, + "dtype": "uint8" + } + }, + { + "name": "conv2d_45/kernel", + "shape": [1, 1, 768, 160], + "dtype": "float32", + "quantization": { + "min": -0.756424422825084, + "scale": 0.0054813363972832175, + "dtype": "uint8" + } + }, + { + "name": "conv2d_46/kernel", + "shape": [7, 1, 160, 160], + "dtype": "float32", + "quantization": { + "min": -0.3355672222726485, + "scale": 0.0028680959168602437, + "dtype": "uint8" + } + }, + { + "name": "conv2d_47/kernel", + "shape": [1, 7, 160, 160], + "dtype": "float32", + "quantization": { + "min": -0.22706727812103197, + "scale": 0.002122124094589084, + "dtype": "uint8" + } + }, + { + "name": "conv2d_48/kernel", + "shape": [7, 1, 160, 160], + "dtype": "float32", + "quantization": { + "min": -0.2144267187983382, + "scale": 0.002257123355771981, + "dtype": "uint8" + } + }, + { + "name": "conv2d_49/kernel", + "shape": [1, 7, 160, 192], + "dtype": "float32", + "quantization": { + "min": -0.3024808161398944, + "scale": 0.002585306120853798, + "dtype": "uint8" + } + }, + { + "name": "conv2d_5/kernel", + "shape": [3, 3, 80, 192], + "dtype": "float32", + "quantization": { + "min": -0.5794109293058807, + "scale": 0.005267372084598915, + "dtype": "uint8" + } + }, + { + "name": "conv2d_50/kernel", + "shape": [1, 1, 768, 192], + "dtype": "float32", + "quantization": { + "min": -0.554896311900195, + "scale": 0.0038006596705492807, + "dtype": "uint8" + } + }, + { + "name": "conv2d_51/kernel", + "shape": [1, 1, 768, 192], + "dtype": "float32", + "quantization": { + "min": -1.2061398295795216, + "scale": 0.006931838101031733, + "dtype": "uint8" + } + }, + { + "name": "conv2d_52/kernel", + "shape": [1, 1, 768, 160], + "dtype": "float32", + "quantization": { + "min": -0.3730403196577932, + "scale": 0.0028695409204445633, + "dtype": "uint8" + } + }, + { + "name": "conv2d_53/kernel", + "shape": [1, 7, 160, 160], + "dtype": "float32", + "quantization": { + "min": -0.3463286845123067, + "scale": 0.003011553778367884, + "dtype": "uint8" + } + }, + { + "name": "conv2d_54/kernel", + "shape": [7, 1, 160, 192], + "dtype": "float32", + "quantization": { + "min": -0.37797666168680377, + "scale": 0.0027589537349401736, + "dtype": "uint8" + } + }, + { + "name": "conv2d_55/kernel", + "shape": [1, 1, 768, 160], + "dtype": "float32", + "quantization": { + "min": -0.4141439642391953, + "scale": 0.004989686316134883, + "dtype": "uint8" + } + }, + { + "name": "conv2d_56/kernel", + "shape": [7, 1, 160, 160], + "dtype": "float32", + "quantization": { + "min": -0.3559323572645, + "scale": 0.0032357487024045456, + "dtype": "uint8" + } + }, + { + "name": "conv2d_57/kernel", + "shape": [1, 7, 160, 160], + "dtype": "float32", + "quantization": { + "min": -0.2674277156007056, + "scale": 0.0026742771560070563, + "dtype": "uint8" + } + }, + { + "name": "conv2d_58/kernel", + "shape": [7, 1, 160, 160], + "dtype": "float32", + "quantization": { + "min": -0.5307076104715759, + "scale": 0.0035617960434333952, + "dtype": "uint8" + } + }, + { + "name": "conv2d_59/kernel", + "shape": [1, 7, 160, 192], + "dtype": "float32", + "quantization": { + "min": -0.4569946948219748, + "scale": 0.0036854410872739904, + "dtype": "uint8" + } + }, + { + "name": "conv2d_6/kernel", + "shape": [1, 1, 192, 64], + "dtype": "float32", + "quantization": { + "min": -0.670501438776652, + "scale": 0.005634465872072706, + "dtype": "uint8" + } + }, + { + "name": "conv2d_60/kernel", + "shape": [1, 1, 768, 192], + "dtype": "float32", + "quantization": { + "min": -0.7935055354062248, + "scale": 0.004408364085590138, + "dtype": "uint8" + } + }, + { + "name": "conv2d_61/kernel", + "shape": [1, 1, 768, 192], + "dtype": "float32", + "quantization": { + "min": -1.0109173382029812, + "scale": 0.006053397234748391, + "dtype": "uint8" + } + }, + { + "name": "conv2d_62/kernel", + "shape": [1, 1, 768, 192], + "dtype": "float32", + "quantization": { + "min": -0.41344635837218335, + "scale": 0.004645464700811049, + "dtype": "uint8" + } + }, + { + "name": "conv2d_63/kernel", + "shape": [1, 7, 192, 192], + "dtype": "float32", + "quantization": { + "min": -0.24348092184347264, + "scale": 0.004508905960064308, + "dtype": "uint8" + } + }, + { + "name": "conv2d_64/kernel", + "shape": [7, 1, 192, 192], + "dtype": "float32", + "quantization": { + "min": -0.4806287989896886, + "scale": 0.004005239991580738, + "dtype": "uint8" + } + }, + { + "name": "conv2d_65/kernel", + "shape": [1, 1, 768, 192], + "dtype": "float32", + "quantization": { + "min": -0.3917752130358827, + "scale": 0.0030136554848914053, + "dtype": "uint8" + } + }, + { + "name": "conv2d_66/kernel", + "shape": [7, 1, 192, 192], + "dtype": "float32", + "quantization": { + "min": -0.20425691803296406, + "scale": 0.002172945936520894, + "dtype": "uint8" + } + }, + { + "name": "conv2d_67/kernel", + "shape": [1, 7, 192, 192], + "dtype": "float32", + "quantization": { + "min": -0.22208931896032072, + "scale": 0.0019312114692201802, + "dtype": "uint8" + } + }, + { + "name": "conv2d_68/kernel", + "shape": [7, 1, 192, 192], + "dtype": "float32", + "quantization": { + "min": -0.1574226176037508, + "scale": 0.0016063532408546, + "dtype": "uint8" + } + }, + { + "name": "conv2d_69/kernel", + "shape": [1, 7, 192, 192], + "dtype": "float32", + "quantization": { + "min": -0.1563245475292206, + "scale": 0.0015951484441757203, + "dtype": "uint8" + } + }, + { + "name": "conv2d_7/kernel", + "shape": [1, 1, 192, 48], + "dtype": "float32", + "quantization": { + "min": -0.6889615984523997, + "scale": 0.005467949194066664, + "dtype": "uint8" + } + }, + { + "name": "conv2d_70/kernel", + "shape": [1, 1, 768, 192], + "dtype": "float32", + "quantization": { + "min": -0.5254201654125663, + "scale": 0.003574286839541267, + "dtype": "uint8" + } + }, + { + "name": "conv2d_71/kernel", + "shape": [1, 1, 768, 192], + "dtype": "float32", + "quantization": { + "min": -0.14087693007553326, + "scale": 0.001394821089856765, + "dtype": "uint8" + } + }, + { + "name": "conv2d_72/kernel", + "shape": [3, 3, 192, 320], + "dtype": "float32", + "quantization": { + "min": -0.1017690990485397, + "scale": 0.0009785490293128818, + "dtype": "uint8" + } + }, + { + "name": "conv2d_73/kernel", + "shape": [1, 1, 768, 192], + "dtype": "float32", + "quantization": { + "min": -0.27043156717337813, + "scale": 0.0035120982749789367, + "dtype": "uint8" + } + }, + { + "name": "conv2d_74/kernel", + "shape": [1, 7, 192, 192], + "dtype": "float32", + "quantization": { + "min": -0.1989350945341821, + "scale": 0.0017762062011980543, + "dtype": "uint8" + } + }, + { + "name": "conv2d_75/kernel", + "shape": [7, 1, 192, 192], + "dtype": "float32", + "quantization": { + "min": -0.21929225535953745, + "scale": 0.0017828638647116866, + "dtype": "uint8" + } + }, + { + "name": "conv2d_76/kernel", + "shape": [3, 3, 192, 192], + "dtype": "float32", + "quantization": { + "min": -0.31502492287579703, + "scale": 0.003316051819745232, + "dtype": "uint8" + } + }, + { + "name": "conv2d_77/kernel", + "shape": [1, 1, 1280, 320], + "dtype": "float32", + "quantization": { + "min": -0.2736586353358101, + "scale": 0.0035084440427667956, + "dtype": "uint8" + } + }, + { + "name": "conv2d_78/kernel", + "shape": [1, 1, 1280, 384], + "dtype": "float32", + "quantization": { + "min": -0.24273421998117484, + "scale": 0.0021672698212604896, + "dtype": "uint8" + } + }, + { + "name": "conv2d_79/kernel", + "shape": [1, 3, 384, 384], + "dtype": "float32", + "quantization": { + "min": -0.1003472120738497, + "scale": 0.0010239511436107112, + "dtype": "uint8" + } + }, + { + "name": "conv2d_8/kernel", + "shape": [5, 5, 48, 64], + "dtype": "float32", + "quantization": { + "min": -0.8959833215264714, + "scale": 0.007859502820407644, + "dtype": "uint8" + } + }, + { + "name": "conv2d_80/kernel", + "shape": [3, 1, 384, 384], + "dtype": "float32", + "quantization": { + "min": -0.12109428144553128, + "scale": 0.0013307063895113328, + "dtype": "uint8" + } + }, + { + "name": "conv2d_81/kernel", + "shape": [1, 1, 1280, 448], + "dtype": "float32", + "quantization": { + "min": -0.3801819539537617, + "scale": 0.004271707347795075, + "dtype": "uint8" + } + }, + { + "name": "conv2d_82/kernel", + "shape": [3, 3, 448, 384], + "dtype": "float32", + "quantization": { + "min": -0.23576255931573753, + "scale": 0.0026195839923970838, + "dtype": "uint8" + } + }, + { + "name": "conv2d_83/kernel", + "shape": [1, 3, 384, 384], + "dtype": "float32", + "quantization": { + "min": -1.244973014382755, + "scale": 0.007454928229836857, + "dtype": "uint8" + } + }, + { + "name": "conv2d_84/kernel", + "shape": [3, 1, 384, 384], + "dtype": "float32", + "quantization": { + "min": -0.25950103998184204, + "scale": 0.003052953411551083, + "dtype": "uint8" + } + }, + { + "name": "conv2d_85/kernel", + "shape": [1, 1, 1280, 192], + "dtype": "float32", + "quantization": { + "min": -0.29392333416377797, + "scale": 0.0026479579654394413, + "dtype": "uint8" + } + }, + { + "name": "conv2d_86/kernel", + "shape": [1, 1, 2048, 320], + "dtype": "float32", + "quantization": { + "min": -0.13341370236639882, + "scale": 0.0018028878698162004, + "dtype": "uint8" + } + }, + { + "name": "conv2d_87/kernel", + "shape": [1, 1, 2048, 384], + "dtype": "float32", + "quantization": { + "min": -0.7490756504675922, + "scale": 0.004512503918479471, + "dtype": "uint8" + } + }, + { + "name": "conv2d_88/kernel", + "shape": [1, 3, 384, 384], + "dtype": "float32", + "quantization": { + "min": -0.04267277524751775, + "scale": 0.0009482838943892834, + "dtype": "uint8" + } + }, + { + "name": "conv2d_89/kernel", + "shape": [3, 1, 384, 384], + "dtype": "float32", + "quantization": { + "min": -0.044487313663258275, + "scale": 0.0009671155144186581, + "dtype": "uint8" + } + }, + { + "name": "conv2d_9/kernel", + "shape": [1, 1, 192, 64], + "dtype": "float32", + "quantization": { + "min": -0.4946352222386528, + "scale": 0.004191823917276719, + "dtype": "uint8" + } + }, + { + "name": "conv2d_90/kernel", + "shape": [1, 1, 2048, 448], + "dtype": "float32", + "quantization": { + "min": -0.7601351137254753, + "scale": 0.007836444471396652, + "dtype": "uint8" + } + }, + { + "name": "conv2d_91/kernel", + "shape": [3, 3, 448, 384], + "dtype": "float32", + "quantization": { + "min": -0.31073258086746813, + "scale": 0.0023902506220574472, + "dtype": "uint8" + } + }, + { + "name": "conv2d_92/kernel", + "shape": [1, 3, 384, 384], + "dtype": "float32", + "quantization": { + "min": -0.09287645027917973, + "scale": 0.000938145962415957, + "dtype": "uint8" + } + }, + { + "name": "conv2d_93/kernel", + "shape": [3, 1, 384, 384], + "dtype": "float32", + "quantization": { + "min": -0.061754796522505144, + "scale": 0.0007917281605449377, + "dtype": "uint8" + } + }, + { + "name": "conv2d_94/kernel", + "shape": [1, 1, 2048, 192], + "dtype": "float32", + "quantization": { + "min": -0.31682243709470714, + "scale": 0.002382123587178249, + "dtype": "uint8" + } + }, + { + "name": "dense_1/kernel", + "shape": [2048, 256], + "dtype": "float32", + "quantization": { + "min": -0.0752635091251018, + "scale": 0.0008456574059000202, + "dtype": "uint8" + } + }, + { + "name": "dense_1/bias", + "shape": [256], + "dtype": "float32", + "quantization": { + "min": -0.4126813895562116, + "scale": 0.0029904448518566057, + "dtype": "uint8" + } + }, + { + "name": "dense_2/kernel", + "shape": [256, 128], + "dtype": "float32", + "quantization": { + "min": -0.41079130803837494, + "scale": 0.003065606776405783, + "dtype": "uint8" + } + }, + { + "name": "dense_2/bias", + "shape": [128], + "dtype": "float32", + "quantization": { + "min": -0.17716065984146268, + "scale": 0.003221102906208412, + "dtype": "uint8" + } + }, + { + "name": "dense_3/kernel", + "shape": [128, 5], + "dtype": "float32", + "quantization": { + "min": -0.692766010761261, + "scale": 0.00461844007174174, + "dtype": "uint8" + } + }, + { + "name": "dense_3/bias", + "shape": [5], + "dtype": "float32", + "quantization": { + "min": -0.5889016270637512, + "scale": 0.00384903024224674, + "dtype": "uint8" + } + } + ] + } + ] +} diff --git a/packages/backend/package.json b/packages/backend/package.json index ec6451f61c..8ad3b0e3ba 100644 --- a/packages/backend/package.json +++ b/packages/backend/package.json @@ -14,69 +14,71 @@ "revertmigration:cargo": "./native-utils/built/migration down", "check:connect": "node ./check_connect.js", "build": "pnpm swc src -d built -D", + "build:debug": "pnpm swc src -d built -s -D", "watch": "pnpm swc src -d built -D -w", - "lint": "pnpm rome check --apply *", + "lint": "pnpm biome check --apply **/*.ts ; pnpm run format", "mocha": "cross-env NODE_ENV=test TS_NODE_FILES=true TS_NODE_TRANSPILE_ONLY=true TS_NODE_PROJECT=\"./test/tsconfig.json\" mocha", "test": "pnpm run mocha", - "format": "pnpm rome format * --write" + "format": "pnpm biome format * --write" }, "optionalDependencies": { "@swc/core-android-arm64": "1.3.11", "@tensorflow/tfjs-node": "3.21.1" }, "dependencies": { - "@bull-board/api": "5.2.0", - "@bull-board/koa": "5.2.0", - "@bull-board/ui": "5.2.0", + "@bull-board/api": "5.8.0", + "@bull-board/koa": "5.8.0", + "@bull-board/ui": "5.8.0", "@discordapp/twemoji": "14.1.2", "@elastic/elasticsearch": "7.17.0", "@koa/cors": "3.4.3", "@koa/multer": "3.0.2", "@koa/router": "9.0.1", "@peertube/http-signature": "1.7.0", - "@redocly/openapi-core": "1.0.0-beta.120", + "@redocly/openapi-core": "1.0.2", "@sinonjs/fake-timers": "9.1.2", "@syuilo/aiscript": "0.11.1", "@tensorflow/tfjs": "^4.2.0", "adm-zip": "^0.5.10", "ajv": "8.12.0", - "archiver": "5.3.1", - "argon2": "^0.30.3", - "autobind-decorator": "2.4.0", + "archiver": "6.0.0", + "argon2": "^0.31.1", "autolinker": "4.0.0", "autwh": "0.1.0", - "aws-sdk": "2.1277.0", + "aws-sdk": "2.1413.0", "axios": "^1.4.0", "bcryptjs": "2.4.3", - "blurhash": "1.1.5", - "bull": "4.10.4", - "cacheable-lookup": "7.0.0", - "calckey-js": "workspace:*", - "cbor": "8.1.0", - "chalk": "5.2.0", + "blurhash": "2.0.5", + "bull": "4.11.3", + "cacheable-lookup": "TheEssem/cacheable-lookup", + "chalk": "5.3.0", "chalk-template": "0.4.0", - "chokidar": "3.5.3", + "chokidar": "^3.5.3", "cli-highlight": "2.1.11", "color-convert": "2.0.1", "content-disposition": "0.5.4", "date-fns": "2.30.0", + "decompress": "^4.2.1", "deep-email-validator": "0.1.21", "escape-regexp": "0.0.1", "feed": "4.2.2", - "file-type": "17.1.6", + "file-type": "18.5.0", + "firefish-js": "workspace:*", "fluent-ffmpeg": "2.1.2", - "got": "12.5.3", - "hpagent": "0.1.2", + "got": "13.0.0", + "gunzip-maybe": "^1.4.2", + "happy-dom": "^11.0.2", + "hpagent": "1.2.0", "ioredis": "5.3.2", - "ip-cidr": "3.0.11", - "is-svg": "4.3.2", + "ip-cidr": "3.1.0", + "is-svg": "5.0.0", "js-yaml": "4.1.0", - "jsdom": "20.0.3", - "jsonld": "8.2.0", - "jsrsasign": "10.6.1", - "koa": "2.13.4", + "json5": "2.2.3", + "jsonld": "8.2.1", + "jsrsasign": "10.8.6", + "koa": "2.14.2", "koa-body": "^6.0.1", - "koa-bodyparser": "4.3.0", + "koa-bodyparser": "4.4.1", "koa-favicon": "2.1.0", "koa-json-body": "5.3.0", "koa-logger": "3.2.1", @@ -86,71 +88,70 @@ "koa-slow": "2.1.0", "koa-views": "7.0.2", "megalodon": "workspace:*", - "meilisearch": "0.33.0", + "meilisearch": "0.34.1", "mfm-js": "0.23.3", "mime-types": "2.1.35", - "msgpackr": "1.9.5", + "msgpackr": "1.9.7", "multer": "1.4.4-lts.1", "native-utils": "link:native-utils", "nested-property": "4.0.0", - "node-fetch": "3.3.1", - "nodemailer": "6.9.3", + "node-fetch": "3.3.2", + "nodemailer": "6.9.4", "nsfwjs": "2.4.2", "oauth": "^0.10.0", + "opencc-js": "^1.0.5", "os-utils": "0.0.14", - "otpauth": "^9.1.2", + "otpauth": "^9.1.4", "parse5": "7.1.2", - "pg": "8.11.0", - "private-ip": "2.3.4", + "pg": "8.11.3", + "private-ip": "3.0.1", "probe-image-size": "7.2.3", "promise-limit": "2.7.0", "punycode": "2.3.0", - "pureimage": "0.3.15", + "pureimage": "0.4.8", "qrcode": "1.5.3", "qs": "6.11.2", "random-seed": "0.3.0", "ratelimiter": "3.4.1", - "re2": "1.19.0", - "redis-lock": "0.1.4", - "redis-semaphore": "5.3.1", + "re2": "1.20.3", + "redis-semaphore": "5.5.0", "reflect-metadata": "0.1.13", "rename": "1.0.4", "rndstr": "1.0.0", "rss-parser": "3.13.0", - "sanitize-html": "2.10.0", + "sanitize-html": "2.11.0", "seedrandom": "^3.0.5", - "semver": "7.5.1", - "sharp": "0.32.1", + "semver": "7.5.4", + "sharp": "0.32.5", "sonic-channel": "^1.3.1", "stringz": "2.1.0", "summaly": "2.7.0", "syslog-pro": "1.0.0", - "systeminformation": "5.17.17", - "tesseract.js": "^3.0.3", - "tinycolor2": "1.5.2", + "systeminformation": "5.21.3", + "tar-stream": "^3.1.6", + "tesseract.js": "^4.1.1", + "tinycolor2": "1.6.0", + "tinyld": "^1.3.4", "tmp": "0.2.1", "twemoji-parser": "14.0.0", - "typeorm": "0.3.11", + "typeorm": "0.3.17", "ulid": "2.3.0", "uuid": "9.0.0", - "web-push": "3.6.1", + "web-push": "3.6.5", "websocket": "1.0.34", "xev": "3.0.2" }, "devDependencies": { "@swc/cli": "^0.1.62", - "@swc/core": "^1.3.62", + "@swc/core": "1.3.82", "@types/adm-zip": "^0.5.0", "@types/bcryptjs": "2.4.2", - "@types/bull": "3.15.9", - "@types/cbor": "6.0.0", "@types/escape-regexp": "0.0.1", - "@types/fluent-ffmpeg": "2.1.20", + "@types/fluent-ffmpeg": "2.1.21", "@types/js-yaml": "4.0.5", - "@types/jsdom": "20.0.1", - "@types/jsonld": "1.5.8", - "@types/jsrsasign": "10.5.4", - "@types/koa": "2.13.5", + "@types/jsonld": "1.5.9", + "@types/jsrsasign": "10.5.8", + "@types/koa": "2.13.8", "@types/koa-bodyparser": "4.3.10", "@types/koa-cors": "0.0.2", "@types/koa-favicon": "2.0.21", @@ -164,12 +165,12 @@ "@types/mocha": "9.1.1", "@types/node": "18.11.18", "@types/node-fetch": "3.0.3", - "@types/nodemailer": "6.4.8", + "@types/nodemailer": "6.4.9", "@types/oauth": "0.9.1", "@types/probe-image-size": "^7.2.0", "@types/pug": "2.0.6", "@types/punycode": "2.1.0", - "@types/qrcode": "1.5.0", + "@types/qrcode": "1.5.1", "@types/qs": "6.9.7", "@types/random-seed": "0.3.3", "@types/ratelimiter": "3.4.4", @@ -177,29 +178,26 @@ "@types/rename": "1.0.4", "@types/sanitize-html": "2.9.0", "@types/semver": "7.5.0", - "@types/sharp": "0.31.1", "@types/sinonjs__fake-timers": "8.1.2", "@types/tinycolor2": "1.4.3", "@types/tmp": "0.2.3", - "@types/uuid": "8.3.4", + "@types/uuid": "9.0.2", "@types/web-push": "3.3.2", "@types/websocket": "1.0.5", - "@types/ws": "8.5.4", - "autobind-decorator": "2.4.0", + "@types/ws": "8.5.5", "cross-env": "7.0.3", - "eslint": "^8.42.0", + "eslint": "^8.46.0", "execa": "6.1.0", - "json5": "2.2.3", "json5-loader": "4.0.1", "mocha": "10.2.0", "pug": "3.0.2", "strict-event-emitter-types": "2.0.0", "swc-loader": "^0.2.3", - "ts-loader": "9.4.3", + "ts-loader": "9.4.4", "ts-node": "10.9.1", "tsconfig-paths": "4.2.0", - "typescript": "5.1.3", - "webpack": "^5.85.1", + "typescript": "5.1.6", + "webpack": "^5.88.2", "ws": "8.13.0" } } diff --git a/packages/backend/src/@types/langdetect.d.ts b/packages/backend/src/@types/langdetect.d.ts new file mode 100644 index 0000000000..bcfa6f5ca4 --- /dev/null +++ b/packages/backend/src/@types/langdetect.d.ts @@ -0,0 +1,7 @@ +declare module "langdetect" { + interface DetectResult { + lang: string; + prob: number; + } + export function detect(words: string): DetectResult[]; +} diff --git a/packages/backend/src/boot/index.ts b/packages/backend/src/boot/index.ts index e4f2ed7b1b..489350a155 100644 --- a/packages/backend/src/boot/index.ts +++ b/packages/backend/src/boot/index.ts @@ -19,7 +19,12 @@ const ev = new Xev(); * Init process */ export default async function () { - process.title = `Calckey (${cluster.isPrimary ? "master" : "worker"})`; + const mode = + process.env.mode && ["web", "queue"].includes(process.env.mode) + ? `(${process.env.mode})` + : ""; + const type = cluster.isPrimary ? "(master)" : "(worker)"; + process.title = `Firefish ${mode} ${type}`; if (cluster.isPrimary || envOption.disableClustering) { await masterMain(); @@ -42,7 +47,7 @@ export default async function () { os.setPriority(10); } - // For when Calckey is started in a child process during unit testing. + // For when Firefish is started in a child process during unit testing. // Otherwise, process.send cannot be used, so start it. if (process.send) { process.send("ok"); diff --git a/packages/backend/src/boot/master.ts b/packages/backend/src/boot/master.ts index bee8c8b0cd..4470cea9cb 100644 --- a/packages/backend/src/boot/master.ts +++ b/packages/backend/src/boot/master.ts @@ -29,18 +29,41 @@ const themeColor = chalk.hex("#31748f"); function greet() { if (!envOption.quiet) { - //#region Calckey logo - const v = `v${meta.version}`; - console.log(themeColor(" ___ _ _ ")); - console.log(themeColor(" / __\\__ _| | ___| | _____ _ _ ")); - console.log(themeColor(" / / / _` | |/ __| |/ / _ | | |")); - console.log(themeColor("/ /__| (_| | | (__| < __/ |_| |")); - console.log(themeColor("\\____/\\__,_|_|\\___|_|\\_\\___|\\__, |")); - console.log(themeColor(" (___/ ")); + //#region Firefish logo + console.log( + themeColor( + "██████╗ ██╗██████╗ ███████╗███████╗██╗███████╗██╗ ██╗ ○ ▄ ▄ ", + ), + ); + console.log( + themeColor( + "██╔════╝██║██╔══██╗██╔════╝██╔════╝██║██╔════╝██║ ██║ ⚬ █▄▄ █▄▄ ", + ), + ); + console.log( + themeColor( + "█████╗ ██║██████╔╝█████╗ █████╗ ██║███████╗███████║ ▄▄▄▄▄▄ ▄ ", + ), + ); + console.log( + themeColor( + "██╔══╝ ██║██╔══██╗██╔══╝ ██╔══╝ ██║╚════██║██╔══██║ █ █ █▄▄ ", + ), + ); + console.log( + themeColor( + "██║ ██║██║ ██║███████╗██║ ██║███████║██║ ██║ █ ● ● █ ", + ), + ); + console.log( + themeColor( + "╚═╝ ╚═╝╚═╝ ╚═╝╚══════╝╚═╝ ╚═╝╚══════╝╚═╝ ╚═╝ ▀▄▄▄▄▄▄▀ ", + ), + ); //#endregion console.log( - " Calckey is an open-source decentralized microblogging platform.", + " Firefish is an open-source decentralized microblogging platform.", ); console.log( chalk.rgb( @@ -48,7 +71,7 @@ function greet() { 136, 0, )( - " If you like Calckey, please consider starring or contributing to the repo. https://codeberg.org/calckey/calckey", + " If you like Firefish, please consider starring or contributing to the repo. https://git.joinfirefish.org/firefish/firefish", ), ); @@ -58,8 +81,8 @@ function greet() { ); } - bootLogger.info("Welcome to Calckey!"); - bootLogger.info(`Calckey v${meta.version}`, null, true); + bootLogger.info("Welcome to Firefish!"); + bootLogger.info(`Firefish v${meta.version}`, null, true); } /** @@ -77,14 +100,18 @@ export async function masterMain() { config = loadConfigBoot(); await connectDb(); } catch (e) { - bootLogger.error("Fatal error occurred during initialization", null, true); + bootLogger.error( + `Fatal error occurred during initialization: ${e}`, + null, + true, + ); process.exit(1); } - bootLogger.succ("Calckey initialized"); + bootLogger.succ("Firefish initialized"); if (!envOption.disableClustering) { - await spawnWorkers(config.clusterLimit); + await spawnWorkers(config.clusterLimits); } bootLogger.succ( @@ -93,7 +120,11 @@ export async function masterMain() { true, ); - if (!envOption.noDaemons && !config.onlyQueueProcessor) { + if ( + !envOption.noDaemons && + config.clusterLimits?.web && + config.clusterLimits?.web >= 1 + ) { import("../daemons/server-stats.js").then((x) => x.default()); import("../daemons/queue-stats.js").then((x) => x.default()); import("../daemons/janitor.js").then((x) => x.default()); @@ -109,7 +140,7 @@ function showEnvironment(): void { if (env !== "production") { logger.warn("The environment is not in production mode."); - logger.warn("DO NOT USE FOR PRODUCTION PURPOSE!", null, true); + logger.warn("DO NOT USE THIS IN PRODUCTION!", null, true); } } @@ -167,19 +198,35 @@ async function connectDb(): Promise { } } -async function spawnWorkers(limit = 1) { - const workers = Math.min(limit, os.cpus().length); - bootLogger.info(`Starting ${workers} worker${workers === 1 ? "" : "s"}...`); - await Promise.all([...Array(workers)].map(spawnWorker)); +async function spawnWorkers( + clusterLimits: Required, +): Promise { + const modes = ["web", "queue"]; + const cpus = os.cpus().length; + for (const mode of modes.filter((mode) => clusterLimits[mode] > cpus)) { + bootLogger.warn( + `configuration warning: cluster limit for ${mode} exceeds number of cores (${cpus})`, + ); + } + + const total = modes.reduce((acc, mode) => acc + clusterLimits[mode], 0); + const workers = new Array(total); + workers.fill("web", 0, clusterLimits?.web); + workers.fill("queue", clusterLimits?.web); + + bootLogger.info( + `Starting ${clusterLimits?.web} web workers and ${clusterLimits?.queue} queue workers (total ${total})...`, + ); + await Promise.all(workers.map((mode) => spawnWorker(mode))); bootLogger.succ("All workers started"); } -function spawnWorker(): Promise { +function spawnWorker(mode: "web" | "queue"): Promise { return new Promise((res) => { - const worker = cluster.fork(); + const worker = cluster.fork({ mode }); worker.on("message", (message) => { if (message === "listenFailed") { - bootLogger.error("The server Listen failed due to the previous error."); + bootLogger.error("The server listen failed due to the previous error."); process.exit(1); } if (message !== "ready") return; diff --git a/packages/backend/src/boot/worker.ts b/packages/backend/src/boot/worker.ts index 052c7397f3..236621b010 100644 --- a/packages/backend/src/boot/worker.ts +++ b/packages/backend/src/boot/worker.ts @@ -1,6 +1,7 @@ import cluster from "node:cluster"; import { initDb } from "../db/postgre.js"; import config from "@/config/index.js"; +import os from "node:os"; /** * Init worker process @@ -8,13 +9,20 @@ import config from "@/config/index.js"; export async function workerMain() { await initDb(); - if (!config.onlyQueueProcessor) { + if (!process.env.mode || process.env.mode === "web") { // start server await import("../server/index.js").then((x) => x.default()); } - // start job queue - import("../queue/index.js").then((x) => x.default()); + if (!process.env.mode || process.env.mode === "queue") { + // start job queue + import("../queue/index.js").then((x) => x.default()); + + if (process.env.mode === "queue") { + // if this is an exclusive queue worker, renice to have higher priority + os.setPriority(os.constants.priority.PRIORITY_BELOW_NORMAL); + } + } if (cluster.isWorker) { // Send a 'ready' message to parent process diff --git a/packages/backend/src/config/load.ts b/packages/backend/src/config/load.ts index fa98789554..2ff3309264 100644 --- a/packages/backend/src/config/load.ts +++ b/packages/backend/src/config/load.ts @@ -41,6 +41,7 @@ export default function load() { config.url = url.origin; config.port = config.port || parseInt(process.env.PORT || "", 10); + config.bind = config.bind || process.env.BIND; mixin.version = meta.version; mixin.host = url.host; @@ -51,12 +52,29 @@ export default function load() { mixin.apiUrl = `${mixin.scheme}://${mixin.host}/api`; mixin.authUrl = `${mixin.scheme}://${mixin.host}/auth`; mixin.driveUrl = `${mixin.scheme}://${mixin.host}/files`; - mixin.userAgent = `Calckey/${meta.version} (${config.url})`; + mixin.userAgent = `Firefish/${meta.version} (${config.url})`; mixin.clientEntry = clientManifest["src/init.ts"]; - if (!config.redis.prefix) config.redis.prefix = mixin.host; + if (!config.redis.prefix) config.redis.prefix = mixin.hostname; if (config.cacheServer && !config.cacheServer.prefix) - config.cacheServer.prefix = mixin.host; + config.cacheServer.prefix = mixin.hostname; + + if (!config.clusterLimits) { + config.clusterLimits = { + web: 1, + queue: 1, + }; + } else { + config.clusterLimits = { + web: 1, + queue: 1, + ...config.clusterLimits, + }; + + if (config.clusterLimits.web! < 1 || config.clusterLimits.queue! < 1) { + throw new Error("Invalid cluster limits"); + } + } return Object.assign(config, mixin); } diff --git a/packages/backend/src/config/types.ts b/packages/backend/src/config/types.ts index 7789c26e07..13d87fc19c 100644 --- a/packages/backend/src/config/types.ts +++ b/packages/backend/src/config/types.ts @@ -6,6 +6,7 @@ export type Source = { feedback_url?: string; url: string; port: number; + bind?: string; disableHsts?: boolean; db: { host: string; @@ -68,15 +69,17 @@ export type Source = { accesslog?: string; - clusterLimit?: number; - - onlyQueueProcessor?: boolean; + clusterLimits?: { + web?: number; + queue?: number; + }; cuid?: { length?: number; fingerprint?: string; }; + outgoingAddress?: string; outgoingAddressFamily?: "ipv4" | "ipv6" | "dual"; deliverJobConcurrency?: number; diff --git a/packages/backend/src/const.ts b/packages/backend/src/const.ts index 7e8f96444e..2a955ee521 100644 --- a/packages/backend/src/const.ts +++ b/packages/backend/src/const.ts @@ -1,8 +1,13 @@ import config from "@/config/index.js"; -import { DB_MAX_IMAGE_COMMENT_LENGTH } from "@/misc/hard-limits.js"; +import { + DB_MAX_NOTE_TEXT_LENGTH, + DB_MAX_IMAGE_COMMENT_LENGTH, +} from "@/misc/hard-limits.js"; -export const MAX_NOTE_TEXT_LENGTH = - config.maxNoteLength != null ? config.maxNoteLength : 3000; // <- should we increase this? +export const MAX_NOTE_TEXT_LENGTH = Math.min( + config.maxNoteLength ?? 3000, + DB_MAX_NOTE_TEXT_LENGTH, +); export const MAX_CAPTION_TEXT_LENGTH = Math.min( config.maxCaptionLength ?? 1500, DB_MAX_IMAGE_COMMENT_LENGTH, diff --git a/packages/backend/src/daemons/server-stats.ts b/packages/backend/src/daemons/server-stats.ts index 7d4fcd25e1..39d81ec914 100644 --- a/packages/backend/src/daemons/server-stats.ts +++ b/packages/backend/src/daemons/server-stats.ts @@ -37,6 +37,7 @@ export default function () { mem: { used: round(memStats.used - memStats.buffers - memStats.cached), active: round(memStats.active), + total: round(memStats.total), }, net: { rx: round(Math.max(0, netStats.rx_sec)), diff --git a/packages/backend/src/db/meilisearch.ts b/packages/backend/src/db/meilisearch.ts index 4a8985d080..40efaa5864 100644 --- a/packages/backend/src/db/meilisearch.ts +++ b/packages/backend/src/db/meilisearch.ts @@ -70,6 +70,8 @@ if (hasConfig) { "of", "they", "these", + "is", + "are", "これ", "それ", "あれ", @@ -81,37 +83,30 @@ if (hasConfig) { "あそこ", "こちら", "どこ", - "だれ", - "なに", - "なん", - "何", "私", - "貴方", - "貴方方", + "僕", + "俺", + "君", + "あなた", "我々", "私達", - "あの人", - "あのか", "彼女", "彼", "です", - "ありま", - "おりま", - "います", + "ます", "は", "が", "の", "に", "を", "で", - "え", + "へ", "から", "まで", "より", "も", "どの", "と", - "し", "それで", "しかし", ]) @@ -121,6 +116,19 @@ if (hasConfig) { ), ); + posts + .updateRankingRules([ + "sort", + "words", + "typo", + "proximity", + "attribute", + "exactness", + ]) + .catch((e) => { + logger.error("Failed to set ranking rules, sorting won't work properly."); + }); + logger.info("Connected to MeiliSearch"); } @@ -160,6 +168,7 @@ export default hasConfig limit: number, offset: number, userCtx: ILocalUser | null, + overrideSort: string | null, ) => { /// Advanced search syntax /// from:user => filter by user + optional domain @@ -170,8 +179,10 @@ export default hasConfig /// "text" => get posts with exact text between quotes /// filter:following => show results only from users you follow /// filter:followers => show results only from followers + /// order:desc/asc => order results ascending or descending const constructedFilters: string[] = []; + let sortRules: string[] = []; const splitSearch = query.split(" "); @@ -195,9 +206,9 @@ export default hasConfig // Determine if we got a webfinger address or a single username if (user.split("@").length > 1) { - let splitUser = user.split("@"); + const splitUser = user.split("@"); - let domain = splitUser.pop(); + const domain = splitUser.pop(); user = splitUser.join("@"); constructedFilters.push( @@ -210,12 +221,20 @@ export default hasConfig return null; } else if (term.startsWith("domain:")) { const domain = term.slice(7); + if ( + domain.length === 0 || + domain === "local" || + domain === config.hostname + ) { + constructedFilters.push("userHost NOT EXISTS"); + return null; + } constructedFilters.push(`userHost = ${domain}`); return null; } else if (term.startsWith("after:")) { const timestamp = term.slice(6); - let unix = timestampToUnix(timestamp); + const unix = timestampToUnix(timestamp); if (unix !== 0) constructedFilters.push(`createdAt > ${unix}`); @@ -223,7 +242,7 @@ export default hasConfig } else if (term.startsWith("before:")) { const timestamp = term.slice(7); - let unix = timestampToUnix(timestamp); + const unix = timestampToUnix(timestamp); if (unix !== 0) constructedFilters.push(`createdAt < ${unix}`); return null; @@ -278,6 +297,14 @@ export default hasConfig ); } + return null; + } else if (term.startsWith("order:desc")) { + sortRules.push("createdAt:desc"); + + return null; + } else if (term.startsWith("order:asc")) { + sortRules.push("createdAt:asc"); + return null; } @@ -286,14 +313,27 @@ export default hasConfig ) ).filter((term) => term !== null); - const sortRules = []; - // An empty search term with defined filters means we have a placeholder search => https://www.meilisearch.com/docs/reference/api/search#placeholder-search // These have to be ordered manually, otherwise the *oldest* posts are returned first, which we don't want - if (filteredSearchTerms.length === 0 && constructedFilters.length > 0) { + // If the user has defined a sort rule, don't mess with it + if ( + filteredSearchTerms.length === 0 && + constructedFilters.length > 0 && + sortRules.length === 0 + ) { sortRules.push("createdAt:desc"); } + // More than one sorting rule doesn't make sense. We only keep the first one, otherwise weird stuff may happen. + if (sortRules.length > 1) { + sortRules = [sortRules[0]]; + } + + // An override sort takes precedence, user sorting is ignored here + if (overrideSort) { + sortRules = [overrideSort]; + } + logger.info(`Searching for ${filteredSearchTerms.join(" ")}`); logger.info(`Limit: ${limit}`); logger.info(`Offset: ${offset}`); diff --git a/packages/backend/src/db/postgre.ts b/packages/backend/src/db/postgre.ts index 89b7a7bf6e..10ea5b15f6 100644 --- a/packages/backend/src/db/postgre.ts +++ b/packages/backend/src/db/postgre.ts @@ -58,7 +58,6 @@ import { AnnouncementRead } from "@/models/entities/announcement-read.js"; import { Clip } from "@/models/entities/clip.js"; import { ClipNote } from "@/models/entities/clip-note.js"; import { Antenna } from "@/models/entities/antenna.js"; -import { AntennaNote } from "@/models/entities/antenna-note.js"; import { PromoNote } from "@/models/entities/promo-note.js"; import { PromoRead } from "@/models/entities/promo-read.js"; import { Relay } from "@/models/entities/relay.js"; @@ -168,7 +167,6 @@ export const entities = [ Clip, ClipNote, Antenna, - AntennaNote, PromoNote, PromoRead, Relay, diff --git a/packages/backend/src/mfm/to-html.ts b/packages/backend/src/mfm/to-html.ts index 8d8a4a8889..47ee0c8890 100644 --- a/packages/backend/src/mfm/to-html.ts +++ b/packages/backend/src/mfm/to-html.ts @@ -1,4 +1,4 @@ -import { JSDOM } from "jsdom"; +import { Window } from "happy-dom"; import type * as mfm from "mfm-js"; import config from "@/config/index.js"; import { intersperse } from "@/prelude/array.js"; @@ -12,7 +12,7 @@ export function toHtml( return null; } - const { window } = new JSDOM(""); + const { window } = new Window(); const doc = window.document; @@ -156,7 +156,7 @@ export function toHtml( search(node) { const a = doc.createElement("a"); - a.href = `https://search.annoyingorange.xyz/search?q=${node.props.query}`; + a.href = `/search/${node.props.query}`; a.textContent = node.props.content; return a; }, diff --git a/packages/backend/src/misc/acct.ts b/packages/backend/src/misc/acct.ts index 5b7767a106..cb6808b4b4 100644 --- a/packages/backend/src/misc/acct.ts +++ b/packages/backend/src/misc/acct.ts @@ -4,7 +4,7 @@ export type Acct = { }; export function parse(acct: string): Acct { - if (acct.startsWith("@")) acct = acct.substr(1); + if (acct.startsWith("@")) acct = acct.slice(1); const split = acct.split("@", 2); return { username: split[0], host: split[1] || null }; } diff --git a/packages/backend/src/misc/app-lock.ts b/packages/backend/src/misc/app-lock.ts index 05bcf54244..198310c884 100644 --- a/packages/backend/src/misc/app-lock.ts +++ b/packages/backend/src/misc/app-lock.ts @@ -1,33 +1,49 @@ import { redisClient } from "../db/redis.js"; -import { promisify } from "node:util"; -import redisLock from "redis-lock"; +import { Mutex } from "redis-semaphore"; /** * Retry delay (ms) for lock acquisition */ const retryDelay = 100; -const lock: (key: string, timeout?: number) => Promise<() => void> = redisClient - ? promisify(redisLock(redisClient, retryDelay)) - : async () => () => {}; - /** * Get AP Object lock * @param uri AP object ID * @param timeout Lock timeout (ms), The timeout releases previous lock. * @returns Unlock function */ -export function getApLock(uri: string, timeout = 30 * 1000) { - return lock(`ap-object:${uri}`, timeout); +export async function getApLock( + uri: string, + timeout = 30 * 1000, +): Promise { + const lock = new Mutex(redisClient, `ap-object:${uri}`, { + lockTimeout: timeout, + retryInterval: retryDelay, + }); + await lock.acquire(); + return lock; } -export function getFetchInstanceMetadataLock( +export async function getFetchInstanceMetadataLock( host: string, timeout = 30 * 1000, -) { - return lock(`instance:${host}`, timeout); +): Promise { + const lock = new Mutex(redisClient, `instance:${host}`, { + lockTimeout: timeout, + retryInterval: retryDelay, + }); + await lock.acquire(); + return lock; } -export function getChartInsertLock(lockKey: string, timeout = 30 * 1000) { - return lock(`chart-insert:${lockKey}`, timeout); +export async function getChartInsertLock( + lockKey: string, + timeout = 30 * 1000, +): Promise { + const lock = new Mutex(redisClient, `chart-insert:${lockKey}`, { + lockTimeout: timeout, + retryInterval: retryDelay, + }); + await lock.acquire(); + return lock; } diff --git a/packages/backend/src/misc/check-word-mute.ts b/packages/backend/src/misc/check-word-mute.ts index 8c7d950861..a75beed9d1 100644 --- a/packages/backend/src/misc/check-word-mute.ts +++ b/packages/backend/src/misc/check-word-mute.ts @@ -33,7 +33,9 @@ function checkWordMute( if ( keywords.length > 0 && - keywords.every((keyword) => text.includes(keyword)) + keywords.every((keyword) => + text.toLowerCase().includes(keyword.toLowerCase()), + ) ) return true; } else { diff --git a/packages/backend/src/misc/download-url.ts b/packages/backend/src/misc/download-url.ts index 7fafb635ba..83680c175f 100644 --- a/packages/backend/src/misc/download-url.ts +++ b/packages/backend/src/misc/download-url.ts @@ -24,6 +24,7 @@ export async function downloadUrl(url: string, path: string): Promise { .stream(url, { headers: { "User-Agent": config.userAgent, + Host: new URL(url).hostname, }, timeout: { lookup: timeout, @@ -91,7 +92,7 @@ export async function downloadUrl(url: string, path: string): Promise { logger.succ(`Download finished: ${chalk.cyan(url)}`); } -function isPrivateIp(ip: string): boolean { +export function isPrivateIp(ip: string): boolean { for (const net of config.allowedPrivateNetworks || []) { const cidr = new IPCIDR(net); if (cidr.contains(ip)) { diff --git a/packages/backend/src/misc/fetch-meta.ts b/packages/backend/src/misc/fetch-meta.ts index b5426e31ae..b3a5e30ae4 100644 --- a/packages/backend/src/misc/fetch-meta.ts +++ b/packages/backend/src/misc/fetch-meta.ts @@ -18,8 +18,8 @@ export function metaToPugArgs(meta: Meta): object { return { img: meta.bannerUrl, - title: meta.name || "Calckey", - instanceName: meta.name || "Calckey", + title: meta.name || "Firefish", + instanceName: meta.name || "Firefish", desc: meta.description, icon: meta.iconUrl, splashIcon: splashIconUrl, diff --git a/packages/backend/src/misc/fetch.ts b/packages/backend/src/misc/fetch.ts index 0e673ba3a8..e47ef0d47a 100644 --- a/packages/backend/src/misc/fetch.ts +++ b/packages/backend/src/misc/fetch.ts @@ -99,6 +99,7 @@ const _http = new http.Agent({ keepAlive: true, keepAliveMsecs: 30 * 1000, lookup: cache.lookup, + localAddress: config.outgoingAddress, } as http.AgentOptions); /** @@ -108,6 +109,7 @@ const _https = new https.Agent({ keepAlive: true, keepAliveMsecs: 30 * 1000, lookup: cache.lookup, + localAddress: config.outgoingAddress, } as https.AgentOptions); const maxSockets = Math.max(256, config.deliverJobConcurrency || 128); @@ -123,6 +125,7 @@ export const httpAgent = config.proxy maxFreeSockets: 256, scheduling: "lifo", proxy: config.proxy, + localAddress: config.outgoingAddress, }) : _http; @@ -137,6 +140,7 @@ export const httpsAgent = config.proxy maxFreeSockets: 256, scheduling: "lifo", proxy: config.proxy, + localAddress: config.outgoingAddress, }) : _https; diff --git a/packages/backend/src/misc/gen-id.ts b/packages/backend/src/misc/gen-id.ts index ea0d414e77..737bbe488f 100644 --- a/packages/backend/src/misc/gen-id.ts +++ b/packages/backend/src/misc/gen-id.ts @@ -2,6 +2,7 @@ import config from "@/config/index.js"; import { nativeCreateId, nativeInitIdGenerator, + nativeGetTimestamp, } from "native-utils/built/index.js"; const length = Math.min(Math.max(config.cuid?.length ?? 16, 16), 24); @@ -17,5 +18,9 @@ nativeInitIdGenerator(length, fingerprint); * Ref: https://github.com/paralleldrive/cuid2#parameterized-length */ export function genId(date?: Date): string { - return nativeCreateId(BigInt((date ?? new Date()).getTime())); + return nativeCreateId((date ?? new Date()).getTime()); +} + +export function getTimestamp(id: string): number { + return nativeGetTimestamp(id); } diff --git a/packages/backend/src/misc/hard-limits.ts b/packages/backend/src/misc/hard-limits.ts index 51d2c0f5d2..5ce3e0ac9a 100644 --- a/packages/backend/src/misc/hard-limits.ts +++ b/packages/backend/src/misc/hard-limits.ts @@ -3,8 +3,13 @@ /** * Maximum note text length that can be stored in DB. * Surrogate pairs count as one + * + * NOTE: this can hypothetically be pushed further + * (up to 250000000), but will likely cause truncations + * and incompatibilities with other servers, + * as well as potential performance issues. */ -export const DB_MAX_NOTE_TEXT_LENGTH = 8192; +export const DB_MAX_NOTE_TEXT_LENGTH = 100000; /** * Maximum image description length that can be stored in DB. diff --git a/packages/backend/src/misc/nyaize.ts b/packages/backend/src/misc/nyaize.ts index dd0c5bbdff..13a112ce57 100644 --- a/packages/backend/src/misc/nyaize.ts +++ b/packages/backend/src/misc/nyaize.ts @@ -20,5 +20,9 @@ export function nyaize(text: string): string { ) .replace(/(다$)|(다(?=\.))|(다(?= ))|(다(?=!))|(다(?=\?))/gm, "다냥") .replace(/(야(?=\?))|(야$)|(야(?= ))/gm, "냥") + // el-GR + .replaceAll("να", "νια") + .replaceAll("ΝΑ", "ΝΙΑ") + .replaceAll("Να", "Νια") ); } diff --git a/packages/backend/src/misc/post.ts b/packages/backend/src/misc/post.ts index 90f4f75283..dbe703d1a0 100644 --- a/packages/backend/src/misc/post.ts +++ b/packages/backend/src/misc/post.ts @@ -1,16 +1,18 @@ export type Post = { - text: string | null; + text: string | undefined; cw: string | null; localOnly: boolean; createdAt: Date; + visibility: string; }; export function parse(acct: any): Post { return { - text: acct.text, + text: acct.text || undefined, cw: acct.cw, localOnly: acct.localOnly, createdAt: new Date(acct.createdAt), + visibility: "hidden" + (acct.visibility || ""), }; } diff --git a/packages/backend/src/misc/process-masto-notes.ts b/packages/backend/src/misc/process-masto-notes.ts new file mode 100644 index 0000000000..1327b4cff0 --- /dev/null +++ b/packages/backend/src/misc/process-masto-notes.ts @@ -0,0 +1,143 @@ +import * as fs from "node:fs"; +import Logger from "@/services/logger.js"; +import { createTemp, createTempDir } from "./create-temp.js"; +import { downloadUrl } from "./download-url.js"; +import { addFile } from "@/services/drive/add-file.js"; +import { Users } from "@/models/index.js"; +import * as tar from "tar-stream"; +import gunzip from "gunzip-maybe"; +import decompress from "decompress"; +import * as Path from "node:path"; + +const logger = new Logger("process-masto-notes"); + +export async function processMastoNotes( + fn: string, + url: string, + uid: string, +): Promise { + // Create temp file + const [path, cleanup] = await createTemp(); + + const [unzipPath, unzipCleanup] = await createTempDir(); + + logger.info(`Temp file is ${path}`); + + try { + // write content at URL to temp file + await downloadUrl(url, path); + return await processMastoFile(fn, path, unzipPath, uid); + } finally { + cleanup(); + //unzipCleanup(); + } +} + +function processMastoFile(fn: string, path: string, dir: string, uid: string) { + return new Promise(async (resolve, reject) => { + const user = await Users.findOneBy({ id: uid }); + try { + logger.info(`Start unzip ${path}`); + fn.endsWith("tar.gz") + ? await unzipTarGz(path, dir) + : await unzipZip(path, dir); + logger.info(`Unzip to ${dir}`); + const outbox = JSON.parse(fs.readFileSync(`${dir}/outbox.json`)); + for (const note of outbox.orderedItems) { + // Skip if attachment is undefined or not iterable + if ( + note.object.attachment == null || + !note.object.attachment[Symbol.iterator] + ) { + continue; + } + for (const attachment of note.object.attachment) { + const url = attachment.url.replaceAll("..", ""); + if (url.indexOf("\0") !== -1) { + logger.error(`Found Poison Null Bytes Attack: ${url}`); + reject(); + return; + } + try { + const fpath = Path.resolve(`${dir}${url}`); + if (!fpath.startsWith(dir)) { + logger.error(`Found Path Attack: ${url}`); + reject(); + return; + } + logger.info(fpath); + const driveFile = await addFile({ user: user, path: fpath }); + attachment.driveFile = driveFile; + } catch (e) { + logger.error(`Skipped adding file to drive: ${url}`); + } + } + } + resolve(outbox); + } catch (e) { + logger.error(`Error on extract masto note package: ${fn}`); + reject(e); + } + }); +} + +function createFileDir(fn: string) { + if (!fs.existsSync(fn)) { + fs.mkdirSync(fn, { recursive: true }); + fs.rmdirSync(fn); + } +} + +function unzipZip(fn: string, dir: string) { + return new Promise(async (resolve, reject) => { + try { + decompress(fn, dir).then((files: any) => { + resolve(files); + }); + } catch (e) { + reject(); + } + }); +} + +function unzipTarGz(fn: string, dir: string) { + return new Promise(async (resolve, reject) => { + const onErr = (err: any) => { + logger.error(`pipe broken: ${err}`); + reject(); + }; + try { + const extract = tar.extract().on("error", onErr); + dir = dir.endsWith("/") ? dir : dir + "/"; + const ls: string[] = []; + extract.on("entry", function (header: any, stream: any, next: any) { + try { + ls.push(dir + header.name); + createFileDir(dir + header.name); + stream + .on("error", onErr) + .pipe(fs.createWriteStream(dir + header.name)) + .on("error", onErr); + next(); + } catch (e) { + logger.error(`create dir error:${e}`); + reject(); + } + }); + + extract.on("finish", function () { + resolve(ls); + }); + + fs.createReadStream(fn) + .on("error", onErr) + .pipe(gunzip()) + .on("error", onErr) + .pipe(extract) + .on("error", onErr); + } catch (e) { + logger.error(`unzipTarGz error: ${e}`); + reject(); + } + }); +} diff --git a/packages/backend/src/models/entities/abuse-user-report.ts b/packages/backend/src/models/entities/abuse-user-report.ts index be183548d8..cb4d55851d 100644 --- a/packages/backend/src/models/entities/abuse-user-report.ts +++ b/packages/backend/src/models/entities/abuse-user-report.ts @@ -71,7 +71,7 @@ export class AbuseUserReport { //#region Denormalized fields @Index() @Column("varchar", { - length: 128, + length: 512, nullable: true, comment: "[Denormalized]", }) @@ -79,7 +79,7 @@ export class AbuseUserReport { @Index() @Column("varchar", { - length: 128, + length: 512, nullable: true, comment: "[Denormalized]", }) diff --git a/packages/backend/src/models/entities/antenna-note.ts b/packages/backend/src/models/entities/antenna-note.ts deleted file mode 100644 index fe982c19ee..0000000000 --- a/packages/backend/src/models/entities/antenna-note.ts +++ /dev/null @@ -1,50 +0,0 @@ -import { - Entity, - Index, - JoinColumn, - Column, - ManyToOne, - PrimaryColumn, -} from "typeorm"; -import { Note } from "./note.js"; -import { Antenna } from "./antenna.js"; -import { id } from "../id.js"; - -@Entity() -@Index(["noteId", "antennaId"], { unique: true }) -export class AntennaNote { - @PrimaryColumn(id()) - public id: string; - - @Index() - @Column({ - ...id(), - comment: "The note ID.", - }) - public noteId: Note["id"]; - - @ManyToOne((type) => Note, { - onDelete: "CASCADE", - }) - @JoinColumn() - public note: Note | null; - - @Index() - @Column({ - ...id(), - comment: "The antenna ID.", - }) - public antennaId: Antenna["id"]; - - @ManyToOne((type) => Antenna, { - onDelete: "CASCADE", - }) - @JoinColumn() - public antenna: Antenna | null; - - @Index() - @Column("boolean", { - default: false, - }) - public read: boolean; -} diff --git a/packages/backend/src/models/entities/drive-file.ts b/packages/backend/src/models/entities/drive-file.ts index d8b54fa194..da93f32a82 100644 --- a/packages/backend/src/models/entities/drive-file.ts +++ b/packages/backend/src/models/entities/drive-file.ts @@ -39,7 +39,7 @@ export class DriveFile { @Index() @Column("varchar", { - length: 128, + length: 512, nullable: true, comment: "The host of owner. It will be null if the user in local.", }) diff --git a/packages/backend/src/models/entities/emoji.ts b/packages/backend/src/models/entities/emoji.ts index 727ba2f10a..87b525dc59 100644 --- a/packages/backend/src/models/entities/emoji.ts +++ b/packages/backend/src/models/entities/emoji.ts @@ -20,7 +20,7 @@ export class Emoji { @Index() @Column("varchar", { - length: 128, + length: 512, nullable: true, }) public host: string | null; diff --git a/packages/backend/src/models/entities/following.ts b/packages/backend/src/models/entities/following.ts index fafcf88851..ea8f325650 100644 --- a/packages/backend/src/models/entities/following.ts +++ b/packages/backend/src/models/entities/following.ts @@ -50,7 +50,7 @@ export class Following { //#region Denormalized fields @Index() @Column("varchar", { - length: 128, + length: 512, nullable: true, comment: "[Denormalized]", }) @@ -72,7 +72,7 @@ export class Following { @Index() @Column("varchar", { - length: 128, + length: 512, nullable: true, comment: "[Denormalized]", }) diff --git a/packages/backend/src/models/entities/instance.ts b/packages/backend/src/models/entities/instance.ts index 7e0b085831..7b7701d07d 100644 --- a/packages/backend/src/models/entities/instance.ts +++ b/packages/backend/src/models/entities/instance.ts @@ -20,7 +20,7 @@ export class Instance { */ @Index({ unique: true }) @Column("varchar", { - length: 128, + length: 512, comment: "The host of the Instance.", }) public host: string; @@ -149,13 +149,13 @@ export class Instance { public maintainerEmail: string | null; @Column("varchar", { - length: 256, + length: 4096, nullable: true, }) public iconUrl: string | null; @Column("varchar", { - length: 256, + length: 4096, nullable: true, }) public faviconUrl: string | null; diff --git a/packages/backend/src/models/entities/meta.ts b/packages/backend/src/models/entities/meta.ts index 200ef50552..9fbe30449b 100644 --- a/packages/backend/src/models/entities/meta.ts +++ b/packages/backend/src/models/entities/meta.ts @@ -143,7 +143,7 @@ export class Meta { @Column("varchar", { length: 512, array: true, - default: "{/featured,/channels,/explore,/pages,/about-calckey}", + default: "{/featured,/channels,/explore,/pages,/about-firefish}", }) public pinnedPages: string[]; @@ -326,13 +326,13 @@ export class Meta { public smtpPort: number | null; @Column("varchar", { - length: 128, + length: 1024, nullable: true, }) public smtpUser: string | null; @Column("varchar", { - length: 128, + length: 1024, nullable: true, }) public smtpPass: string | null; @@ -436,14 +436,14 @@ export class Meta { @Column("varchar", { length: 512, - default: "https://codeberg.org/calckey/calckey", + default: "https://git.joinfirefish.org/firefish/firefish", nullable: false, }) public repositoryUrl: string; @Column("varchar", { length: 512, - default: "https://codeberg.org/calckey/calckey/issues/new", + default: "https://git.joinfirefish.org/firefish/firefish/issues/new", nullable: true, }) public feedbackUrl: string | null; @@ -556,4 +556,10 @@ export class Meta { default: true, }) public enableIdenticonGeneration: boolean; + + @Column("varchar", { + length: 256, + nullable: true, + }) + public donationLink: string | null; } diff --git a/packages/backend/src/models/entities/note.ts b/packages/backend/src/models/entities/note.ts index edcfdb635e..21fe64e901 100644 --- a/packages/backend/src/models/entities/note.ts +++ b/packages/backend/src/models/entities/note.ts @@ -217,7 +217,7 @@ export class Note { //#region Denormalized fields @Index() @Column("varchar", { - length: 128, + length: 512, nullable: true, comment: "[Denormalized]", }) @@ -231,7 +231,7 @@ export class Note { public replyUserId: User["id"] | null; @Column("varchar", { - length: 128, + length: 512, nullable: true, comment: "[Denormalized]", }) @@ -245,7 +245,7 @@ export class Note { public renoteUserId: User["id"] | null; @Column("varchar", { - length: 128, + length: 512, nullable: true, comment: "[Denormalized]", }) diff --git a/packages/backend/src/models/entities/poll.ts b/packages/backend/src/models/entities/poll.ts index 405cca2225..c117d4e733 100644 --- a/packages/backend/src/models/entities/poll.ts +++ b/packages/backend/src/models/entities/poll.ts @@ -58,7 +58,7 @@ export class Poll { @Index() @Column("varchar", { - length: 128, + length: 512, nullable: true, comment: "[Denormalized]", }) diff --git a/packages/backend/src/models/entities/user-profile.ts b/packages/backend/src/models/entities/user-profile.ts index 119eecdc73..0b8863867c 100644 --- a/packages/backend/src/models/entities/user-profile.ts +++ b/packages/backend/src/models/entities/user-profile.ts @@ -51,6 +51,7 @@ export class UserProfile { public fields: { name: string; value: string; + verified?: boolean; }[]; @Column("varchar", { @@ -166,6 +167,12 @@ export class UserProfile { }) public noCrawle: boolean; + @Column("boolean", { + default: true, + comment: "Whether User is indexable.", + }) + public isIndexable: boolean; + @Column("boolean", { default: true, }) @@ -241,7 +248,7 @@ export class UserProfile { //#region Denormalized fields @Index() @Column("varchar", { - length: 128, + length: 512, nullable: true, comment: "[Denormalized]", }) diff --git a/packages/backend/src/models/entities/user-publickey.ts b/packages/backend/src/models/entities/user-publickey.ts index 83a86b8a3a..e39b084d32 100644 --- a/packages/backend/src/models/entities/user-publickey.ts +++ b/packages/backend/src/models/entities/user-publickey.ts @@ -22,7 +22,7 @@ export class UserPublickey { @Index({ unique: true }) @Column("varchar", { - length: 256, + length: 512, }) public keyId: string; diff --git a/packages/backend/src/models/entities/user.ts b/packages/backend/src/models/entities/user.ts index ddad9f3b23..2d5e5dca3e 100644 --- a/packages/backend/src/models/entities/user.ts +++ b/packages/backend/src/models/entities/user.ts @@ -201,7 +201,7 @@ export class User { @Index() @Column("varchar", { - length: 128, + length: 512, nullable: true, comment: "The host of the User. It will be null if the origin of the user is local.", @@ -265,6 +265,13 @@ export class User { }) public driveCapacityOverrideMb: number | null; + @Index() + @Column("boolean", { + default: true, + comment: "Whether the User is indexable.", + }) + public isIndexable: boolean; + constructor(data: Partial) { if (data == null) return; diff --git a/packages/backend/src/models/index.ts b/packages/backend/src/models/index.ts index cfc3b01c55..8782d57408 100644 --- a/packages/backend/src/models/index.ts +++ b/packages/backend/src/models/index.ts @@ -51,7 +51,6 @@ import { UsedUsername } from "./entities/used-username.js"; import { ClipRepository } from "./repositories/clip.js"; import { ClipNote } from "./entities/clip-note.js"; import { AntennaRepository } from "./repositories/antenna.js"; -import { AntennaNote } from "./entities/antenna-note.js"; import { PromoNote } from "./entities/promo-note.js"; import { PromoRead } from "./entities/promo-read.js"; import { EmojiRepository } from "./repositories/emoji.js"; @@ -123,7 +122,6 @@ export const ModerationLogs = ModerationLogRepository; export const Clips = ClipRepository; export const ClipNotes = db.getRepository(ClipNote); export const Antennas = AntennaRepository; -export const AntennaNotes = db.getRepository(AntennaNote); export const PromoNotes = db.getRepository(PromoNote); export const PromoReads = db.getRepository(PromoRead); export const Relays = RelayRepository; diff --git a/packages/backend/src/models/repositories/note.ts b/packages/backend/src/models/repositories/note.ts index 453179bd6f..082455f42a 100644 --- a/packages/backend/src/models/repositories/note.ts +++ b/packages/backend/src/models/repositories/note.ts @@ -27,6 +27,7 @@ import { } from "@/misc/populate-emojis.js"; import { db } from "@/db/postgre.js"; import { IdentifiableError } from "@/misc/identifiable-error.js"; +import { detect as detectLanguage_ } from "tinyld"; export async function populatePoll(note: Note, meId: User["id"] | null) { const poll = await Polls.findOneByOrFail({ noteId: note.id }); @@ -201,6 +202,8 @@ export const NoteRepository = db.getRepository(Note).extend({ note.emojis.concat(reactionEmojiNames), host, ); + + const lang = detectLanguage_(`${note.cw ?? ''}\n${note.text ?? ''}`) ?? "unknown" const reactionEmoji = await populateEmojis(reactionEmojiNames, host); const packed: Packed<"Note"> = await awaitAll({ id: note.id, @@ -260,6 +263,7 @@ export const NoteRepository = db.getRepository(Note).extend({ : undefined, } : {}), + lang: lang, }); if (packed.user.isCat && packed.user.speakAsCat && packed.text) { diff --git a/packages/backend/src/models/repositories/user.ts b/packages/backend/src/models/repositories/user.ts index 5ca36e3d31..86bef413b5 100644 --- a/packages/backend/src/models/repositories/user.ts +++ b/packages/backend/src/models/repositories/user.ts @@ -18,7 +18,6 @@ import { createPerson } from "@/remote/activitypub/models/person.js"; import { AnnouncementReads, Announcements, - AntennaNotes, Blockings, ChannelFollowings, DriveFiles, @@ -258,23 +257,24 @@ export const UserRepository = db.getRepository(User).extend({ }, async getHasUnreadAntenna(userId: User["id"]): Promise { - try { - const myAntennas = (await getAntennas()).filter( - (a) => a.userId === userId, - ); + // try { + // const myAntennas = (await getAntennas()).filter( + // (a) => a.userId === userId, + // ); - const unread = - myAntennas.length > 0 - ? await AntennaNotes.findOneBy({ - antennaId: In(myAntennas.map((x) => x.id)), - read: false, - }) - : null; + // const unread = + // myAntennas.length > 0 + // ? await AntennaNotes.findOneBy({ + // antennaId: In(myAntennas.map((x) => x.id)), + // read: false, + // }) + // : null; - return unread != null; - } catch (e) { - return false; - } + // return unread != null; + // } catch (e) { + // return false; + // } + return false; // TODO }, async getHasUnreadChannel(userId: User["id"]): Promise { @@ -453,6 +453,8 @@ export const UserRepository = db.getRepository(User).extend({ isAdmin: user.isAdmin || falsy, isModerator: user.isModerator || falsy, isBot: user.isBot || falsy, + isLocked: user.isLocked, + isIndexable: user.isIndexable, isCat: user.isCat || falsy, speakAsCat: user.speakAsCat || falsy, instance: user.host @@ -497,7 +499,6 @@ export const UserRepository = db.getRepository(User).extend({ : null, bannerBlurhash: user.banner?.blurhash || null, bannerColor: null, // 後方互換性のため - isLocked: user.isLocked, isSilenced: user.isSilenced || falsy, isSuspended: user.isSuspended || falsy, description: profile!.description, diff --git a/packages/backend/src/models/schema/federation-instance.ts b/packages/backend/src/models/schema/federation-instance.ts index f793d40f62..7a8af7f51d 100644 --- a/packages/backend/src/models/schema/federation-instance.ts +++ b/packages/backend/src/models/schema/federation-instance.ts @@ -19,7 +19,7 @@ export const packedFederationInstanceSchema = { type: "string", optional: false, nullable: false, - example: "calckey.example.com", + example: "firefish.example.com", }, usersCount: { type: "number", @@ -77,7 +77,7 @@ export const packedFederationInstanceSchema = { type: "string", optional: false, nullable: true, - example: "calckey", + example: "firefish", }, softwareVersion: { type: "string", diff --git a/packages/backend/src/models/schema/hashtag.ts b/packages/backend/src/models/schema/hashtag.ts index dacc515070..479ab88f92 100644 --- a/packages/backend/src/models/schema/hashtag.ts +++ b/packages/backend/src/models/schema/hashtag.ts @@ -5,7 +5,7 @@ export const packedHashtagSchema = { type: "string", optional: false, nullable: false, - example: "calckey", + example: "firefish", }, mentionedUsersCount: { type: "number", diff --git a/packages/backend/src/models/schema/user.ts b/packages/backend/src/models/schema/user.ts index 4c840d0bac..d625308f00 100644 --- a/packages/backend/src/models/schema/user.ts +++ b/packages/backend/src/models/schema/user.ts @@ -66,6 +66,11 @@ export const packedUserLiteSchema = { nullable: false, optional: true, }, + isIndexable: { + type: "boolean", + nullable: false, + optional: true, + }, speakAsCat: { type: "boolean", nullable: false, diff --git a/packages/backend/src/queue/index.ts b/packages/backend/src/queue/index.ts index d7580a4f62..0500737a48 100644 --- a/packages/backend/src/queue/index.ts +++ b/packages/backend/src/queue/index.ts @@ -28,6 +28,7 @@ import { backgroundQueue, } from "./queues.js"; import type { ThinUser } from "./types.js"; +import { Note } from "@/models/entities/note.js"; function renderError(e: Error): any { return { @@ -358,6 +359,7 @@ export function createImportCkPostJob( user: ThinUser, post: any, signatureCheck: boolean, + parent: Note | null = null, ) { return dbQueue.add( "importCkPost", @@ -365,6 +367,7 @@ export function createImportCkPostJob( user: user, post: post, signatureCheck: signatureCheck, + parent: parent, }, { removeOnComplete: true, @@ -576,6 +579,16 @@ export default function () { { removeOnComplete: true, removeOnFail: true }, ); + systemQueue.add( + "verifyLinks", + {}, + { + repeat: { cron: "0 0 * * 0" }, + removeOnComplete: true, + removeOnFail: true, + }, + ); + processSystemQueue(systemQueue); } diff --git a/packages/backend/src/queue/processors/background/index-all-notes.ts b/packages/backend/src/queue/processors/background/index-all-notes.ts index 1dce4406a9..c0275b420a 100644 --- a/packages/backend/src/queue/processors/background/index-all-notes.ts +++ b/packages/backend/src/queue/processors/background/index-all-notes.ts @@ -1,4 +1,5 @@ import type Bull from "bull"; +import type { DoneCallback } from "bull"; import { queueLogger } from "../../logger.js"; import { Notes } from "@/models/index.js"; @@ -11,7 +12,7 @@ const logger = queueLogger.createSubLogger("index-all-notes"); export default async function indexAllNotes( job: Bull.Job>, - done: () => void, + done: DoneCallback, ): Promise { logger.info("Indexing all notes..."); @@ -20,7 +21,7 @@ export default async function indexAllNotes( let total: number = (job.data.total as number) ?? 0; let running = true; - const take = 100000; + const take = 10000; const batch = 100; while (running) { logger.info( @@ -41,13 +42,14 @@ export default async function indexAllNotes( }, relations: ["user"], }); - } catch (e) { + } catch (e: any) { logger.error(`Failed to query notes ${e}`); - continue; + done(e); + break; } if (notes.length === 0) { - job.progress(100); + await job.progress(100); running = false; break; } @@ -55,7 +57,7 @@ export default async function indexAllNotes( try { const count = await Notes.count(); total = count; - job.update({ indexedCount, cursor, total }); + await job.update({ indexedCount, cursor, total }); } catch (e) {} for (let i = 0; i < notes.length; i += batch) { @@ -69,12 +71,12 @@ export default async function indexAllNotes( indexedCount += chunk.length; const pct = (indexedCount / total) * 100; - job.update({ indexedCount, cursor, total }); - job.progress(+pct.toFixed(1)); + await job.update({ indexedCount, cursor, total }); + await job.progress(+pct.toFixed(1)); logger.info(`Indexed notes ${indexedCount}/${total ? total : "?"}`); } cursor = notes[notes.length - 1].id; - job.update({ indexedCount, cursor, total }); + await job.update({ indexedCount, cursor, total }); if (notes.length < take) { running = false; diff --git a/packages/backend/src/queue/processors/db/delete-account.ts b/packages/backend/src/queue/processors/db/delete-account.ts index 1cd7642ba5..adb93484bd 100644 --- a/packages/backend/src/queue/processors/db/delete-account.ts +++ b/packages/backend/src/queue/processors/db/delete-account.ts @@ -29,7 +29,7 @@ export async function deleteAccount( userId: user.id, ...(cursor ? { id: MoreThan(cursor) } : {}), }, - take: 100, + take: 10, order: { id: 1, }, diff --git a/packages/backend/src/queue/processors/db/export-notes.ts b/packages/backend/src/queue/processors/db/export-notes.ts index de8fac05b4..bf53f83603 100644 --- a/packages/backend/src/queue/processors/db/export-notes.ts +++ b/packages/backend/src/queue/processors/db/export-notes.ts @@ -4,7 +4,7 @@ import * as fs from "node:fs"; import { queueLogger } from "../../logger.js"; import { addFile } from "@/services/drive/add-file.js"; import { format as dateFormat } from "date-fns"; -import { Users, Notes, Polls } from "@/models/index.js"; +import { Users, Notes, Polls, DriveFiles } from "@/models/index.js"; import { MoreThan } from "typeorm"; import type { Note } from "@/models/entities/note.js"; import type { Poll } from "@/models/entities/poll.js"; @@ -75,7 +75,7 @@ export async function exportNotes( if (note.hasPoll) { poll = await Polls.findOneByOrFail({ noteId: note.id }); } - const content = JSON.stringify(serialize(note, poll)); + const content = JSON.stringify(await serialize(note, poll)); const isFirst = exportedNotesCount === 0; await write(isFirst ? content : ",\n" + content); exportedNotesCount++; @@ -112,15 +112,16 @@ export async function exportNotes( done(); } -function serialize( +async function serialize( note: Note, poll: Poll | null = null, -): Record { +): Promise> { return { id: note.id, text: note.text, createdAt: note.createdAt, fileIds: note.fileIds, + files: await DriveFiles.packMany(note.fileIds), replyId: note.replyId, renoteId: note.renoteId, poll: poll, diff --git a/packages/backend/src/queue/processors/db/import-calckey-post.ts b/packages/backend/src/queue/processors/db/import-calckey-post.ts deleted file mode 100644 index 28e794aa0c..0000000000 --- a/packages/backend/src/queue/processors/db/import-calckey-post.ts +++ /dev/null @@ -1,51 +0,0 @@ -import * as Post from "@/misc/post.js"; -import create from "@/services/note/create.js"; -import { Users } from "@/models/index.js"; -import type { DbUserImportMastoPostJobData } from "@/queue/types.js"; -import { queueLogger } from "../../logger.js"; -import type Bull from "bull"; - -const logger = queueLogger.createSubLogger("import-calckey-post"); - -export async function importCkPost( - job: Bull.Job, - done: any, -): Promise { - const user = await Users.findOneBy({ id: job.data.user.id }); - if (user == null) { - done(); - return; - } - const post = job.data.post; - if (post.replyId != null) { - done(); - return; - } - if (post.renoteId != null) { - done(); - return; - } - if (post.visibility !== "public") { - done(); - return; - } - const { text, cw, localOnly, createdAt } = Post.parse(post); - const note = await create(user, { - createdAt: createdAt, - files: undefined, - poll: undefined, - text: text || undefined, - reply: null, - renote: null, - cw: cw, - localOnly, - visibility: "hidden", - visibleUsers: [], - channel: null, - apMentions: new Array(0), - apHashtags: undefined, - apEmojis: undefined, - }); - logger.succ("Imported"); - done(); -} diff --git a/packages/backend/src/queue/processors/db/import-firefish-post.ts b/packages/backend/src/queue/processors/db/import-firefish-post.ts new file mode 100644 index 0000000000..4ec88d32cc --- /dev/null +++ b/packages/backend/src/queue/processors/db/import-firefish-post.ts @@ -0,0 +1,109 @@ +import * as Post from "@/misc/post.js"; +import create from "@/services/note/create.js"; +import { Users } from "@/models/index.js"; +import type { DbUserImportMastoPostJobData } from "@/queue/types.js"; +import { queueLogger } from "../../logger.js"; +import { uploadFromUrl } from "@/services/drive/upload-from-url.js"; +import type { DriveFile } from "@/models/entities/drive-file.js"; +import type Bull from "bull"; +import { createImportCkPostJob } from "@/queue/index.js"; +import { Notes, NoteEdits } from "@/models/index.js"; +import type { Note } from "@/models/entities/note.js"; +import { genId } from "@/misc/gen-id.js"; + +const logger = queueLogger.createSubLogger("import-firefish-post"); + +export async function importCkPost( + job: Bull.Job, + done: any, +): Promise { + const user = await Users.findOneBy({ id: job.data.user.id }); + if (user == null) { + done(); + return; + } + const post = job.data.post; + /* + if (post.replyId != null) { + done(); + return; + } + if (post.renoteId != null) { + done(); + return; + } + if (post.visibility !== "public") { + done(); + return; + } + */ + const urls = (post.files || []) + .map((x: any) => x.url) + .filter((x: String) => x.startsWith("http")); + const files: DriveFile[] = []; + for (const url of urls) { + try { + const file = await uploadFromUrl({ + url: url, + user: user, + }); + files.push(file); + } catch (e) { + logger.error(`Skipped adding file to drive: ${url}`); + } + } + const { text, cw, localOnly, createdAt, visibility } = Post.parse(post); + let note = await Notes.findOneBy({ + createdAt: createdAt, + text: text, + userId: user.id, + }); + + if (note && (note?.fileIds?.length || 0) < files.length) { + const update: Partial = {}; + update.fileIds = files.map((x) => x.id); + await Notes.update(note.id, update); + await NoteEdits.insert({ + id: genId(), + noteId: note.id, + text: note.text || undefined, + cw: note.cw, + fileIds: note.fileIds, + updatedAt: new Date(), + }); + logger.info(`Note file updated`); + } + if (!note) { + note = await create(user, { + createdAt: createdAt, + files: files.length == 0 ? undefined : files, + poll: undefined, + text: text || undefined, + reply: post.replyId ? job.data.parent : null, + renote: post.renoteId ? job.data.parent : null, + cw: cw, + localOnly, + visibility: visibility, + visibleUsers: [], + channel: null, + apMentions: new Array(0), + apHashtags: undefined, + apEmojis: undefined, + }); + logger.info(`Create new note`); + } else { + logger.info(`Note exist`); + } + logger.succ("Imported"); + if (post.childNotes) { + for (const child of post.childNotes) { + createImportCkPostJob( + job.data.user, + child, + job.data.signatureCheck, + note, + ); + } + } + done(); +} diff --git a/packages/backend/src/queue/processors/db/import-masto-post.ts b/packages/backend/src/queue/processors/db/import-masto-post.ts index 317ba7b1bd..9b86a5903f 100644 --- a/packages/backend/src/queue/processors/db/import-masto-post.ts +++ b/packages/backend/src/queue/processors/db/import-masto-post.ts @@ -6,6 +6,11 @@ import type Bull from "bull"; import { htmlToMfm } from "@/remote/activitypub/misc/html-to-mfm.js"; import { resolveNote } from "@/remote/activitypub/models/note.js"; import { Note } from "@/models/entities/note.js"; +import { uploadFromUrl } from "@/services/drive/upload-from-url.js"; +import type { DriveFile } from "@/models/entities/drive-file.js"; +import { Notes, NoteEdits } from "@/models/index.js"; +import type { Note } from "@/models/entities/note.js"; +import { genId } from "@/misc/gen-id.js"; const logger = queueLogger.createSubLogger("import-masto-post"); @@ -43,22 +48,69 @@ export async function importMastoPost( throw e; } job.progress(80); - const note = await create(user, { + + let files: DriveFile[] = (post.object.attachment || []) + .map((x: any) => x?.driveFile) + .filter((x: any) => x); + + if (files.length == 0) { + const urls = post.object.attachment + .map((x: any) => x.url) + .filter((x: String) => x.startsWith("http")); + files = []; + for (const url of urls) { + try { + const file = await uploadFromUrl({ + url: url, + user: user, + }); + files.push(file); + } catch (e) { + logger.error(`Skipped adding file to drive: ${url}`); + } + } + } + let note = await Notes.findOneBy({ createdAt: new Date(post.object.published), - files: undefined, - poll: undefined, - text: text || undefined, - reply, - renote: null, - cw: post.sensitive, - localOnly: false, - visibility: "hidden", - visibleUsers: [], - channel: null, - apMentions: new Array(0), - apHashtags: undefined, - apEmojis: undefined, + text: text, + userId: user.id, }); + + if (note && (note?.fileIds?.length || 0) < files.length) { + const update: Partial = {}; + update.fileIds = files.map((x) => x.id); + await Notes.update(note.id, update); + await NoteEdits.insert({ + id: genId(), + noteId: note.id, + text: note.text || undefined, + cw: note.cw, + fileIds: note.fileIds, + updatedAt: new Date(), + }); + logger.info(`Note file updated`); + } + if (!note) { + note = await create(user, { + createdAt: new Date(post.object.published), + files: files.length == 0 ? undefined : files, + poll: undefined, + text: text || undefined, + reply, + renote: null, + cw: post.object.sensitive ? post.object.summary : undefined, + localOnly: false, + visibility: "hiddenpublic", + visibleUsers: [], + channel: null, + apMentions: new Array(0), + apHashtags: undefined, + apEmojis: undefined, + }); + logger.info(`Create new note`); + } else { + logger.info(`Note exist`); + } job.progress(100); done(); diff --git a/packages/backend/src/queue/processors/db/import-posts.ts b/packages/backend/src/queue/processors/db/import-posts.ts index f92a5f710a..526489c634 100644 --- a/packages/backend/src/queue/processors/db/import-posts.ts +++ b/packages/backend/src/queue/processors/db/import-posts.ts @@ -1,4 +1,5 @@ import { downloadTextFile } from "@/misc/download-text-file.js"; +import { processMastoNotes } from "@/misc/process-masto-notes.js"; import { Users, DriveFiles } from "@/models/index.js"; import type { DbUserImportPostsJobData } from "@/queue/types.js"; import { queueLogger } from "../../logger.js"; @@ -30,13 +31,34 @@ export async function importPosts( return; } + if (file.name.endsWith("tar.gz") || file.name.endsWith("zip")) { + try { + logger.info("Reading Mastodon archive"); + const outbox = await processMastoNotes( + file.name, + file.url, + job.data.user.id, + ); + for (const post of outbox.orderedItems) { + createImportMastoPostJob(job.data.user, post, job.data.signatureCheck); + } + } catch (e) { + // handle error + logger.warn(`Failed reading Mastodon archive: ${e}`); + } + logger.succ("Mastodon archive imported"); + done(); + return; + } + const json = await downloadTextFile(file.url); try { const parsed = JSON.parse(json); if (parsed instanceof Array) { logger.info("Parsing key style posts"); - for (const post of JSON.parse(json)) { + const arr = recreateChain(parsed); + for (const post of arr) { createImportCkPostJob(job.data.user, post, job.data.signatureCheck); } } else if (parsed instanceof Object) { @@ -53,3 +75,32 @@ export async function importPosts( logger.succ("Imported"); done(); } + +function recreateChain(arr: any[]): any { + type NotesMap = { + [id: string]: any; + }; + const notesTree: any[] = []; + const lookup: NotesMap = {}; + for (const note of arr) { + lookup[`${note.id}`] = note; + note.childNotes = []; + if (note.replyId == null && note.renoteId == null) { + notesTree.push(note); + } + } + for (const note of arr) { + let parent = null; + if (note.replyId != null) { + parent = lookup[`${note.replyId}`]; + } + if (note.renoteId != null) { + parent = lookup[`${note.renoteId}`]; + } + + if (parent) { + parent.childNotes.push(note); + } + } + return notesTree; +} diff --git a/packages/backend/src/queue/processors/db/index.ts b/packages/backend/src/queue/processors/db/index.ts index 07fc8e6d5f..d20fc2c71a 100644 --- a/packages/backend/src/queue/processors/db/index.ts +++ b/packages/backend/src/queue/processors/db/index.ts @@ -13,7 +13,7 @@ import { deleteAccount } from "./delete-account.js"; import { importMuting } from "./import-muting.js"; import { importPosts } from "./import-posts.js"; import { importMastoPost } from "./import-masto-post.js"; -import { importCkPost } from "./import-calckey-post.js"; +import { importCkPost } from "./import-firefish-post.js"; import { importBlocking } from "./import-blocking.js"; import { importCustomEmojis } from "./import-custom-emojis.js"; diff --git a/packages/backend/src/queue/processors/object-storage/clean-remote-files.ts b/packages/backend/src/queue/processors/object-storage/clean-remote-files.ts index fdfe05d1a6..14ad1b1014 100644 --- a/packages/backend/src/queue/processors/object-storage/clean-remote-files.ts +++ b/packages/backend/src/queue/processors/object-storage/clean-remote-files.ts @@ -48,6 +48,6 @@ export default async function cleanRemoteFiles( job.progress(deletedCount / total); } - logger.succ("All cahced remote files has been deleted."); + logger.succ("All cached remote files has been deleted."); done(); } diff --git a/packages/backend/src/queue/processors/system/index.ts b/packages/backend/src/queue/processors/system/index.ts index 53321de5f9..697d24d067 100644 --- a/packages/backend/src/queue/processors/system/index.ts +++ b/packages/backend/src/queue/processors/system/index.ts @@ -5,6 +5,7 @@ import { cleanCharts } from "./clean-charts.js"; import { checkExpiredMutings } from "./check-expired-mutings.js"; import { clean } from "./clean.js"; import { setLocalEmojiSizes } from "./local-emoji-size.js"; +import { verifyLinks } from "./verify-links.js"; const jobs = { tickCharts, @@ -13,6 +14,7 @@ const jobs = { checkExpiredMutings, clean, setLocalEmojiSizes, + verifyLinks, } as Record< string, | Bull.ProcessCallbackFunction> diff --git a/packages/backend/src/queue/processors/system/verify-links.ts b/packages/backend/src/queue/processors/system/verify-links.ts new file mode 100644 index 0000000000..3ddda9baf4 --- /dev/null +++ b/packages/backend/src/queue/processors/system/verify-links.ts @@ -0,0 +1,44 @@ +import type Bull from "bull"; + +import { UserProfiles } from "@/models/index.js"; +import { Not } from "typeorm"; +import { queueLogger } from "../../logger.js"; +import { verifyLink } from "@/services/fetch-rel-me.js"; +import config from "@/config/index.js"; + +const logger = queueLogger.createSubLogger("verify-links"); + +export async function verifyLinks( + job: Bull.Job>, + done: any, +): Promise { + logger.info("Verifying links..."); + + const usersToVerify = await UserProfiles.findBy({ + fields: Not(null), + userHost: "", + }); + for (const user of usersToVerify) { + for (const field of user.fields) { + if (!field || field.name === "" || field.value === "") { + continue; + } + if (field.value.startsWith("http") && user.user?.username) { + field.verified = await verifyLink(field.value, user.user.username); + } + } + if (user.fields.length > 0) { + try { + await UserProfiles.update(user.userId, { + fields: user.fields, + }); + } catch (e) { + logger.error(`Failed to update user ${user.userId} ${e}`); + done(e); + } + } + } + + logger.succ("All links successfully verified."); + done(); +} diff --git a/packages/backend/src/queue/processors/webhook-deliver.ts b/packages/backend/src/queue/processors/webhook-deliver.ts index 0a54ae7d89..286b401ba7 100644 --- a/packages/backend/src/queue/processors/webhook-deliver.ts +++ b/packages/backend/src/queue/processors/webhook-deliver.ts @@ -16,10 +16,10 @@ export default async (job: Bull.Job) => { url: job.data.to, method: "POST", headers: { - "User-Agent": "Calckey-Hooks", - "X-Calckey-Host": config.host, - "X-Calckey-Hook-Id": job.data.webhookId, - "X-Calckey-Hook-Secret": job.data.secret, + "User-Agent": "Firefish-Hooks", + "X-Firefish-Host": config.host, + "X-Firefish-Hook-Id": job.data.webhookId, + "X-Firefish-Hook-Secret": job.data.secret, "Content-Type": "application/json", }, body: JSON.stringify({ diff --git a/packages/backend/src/queue/types.ts b/packages/backend/src/queue/types.ts index b72b127894..6383f3fdd5 100644 --- a/packages/backend/src/queue/types.ts +++ b/packages/backend/src/queue/types.ts @@ -52,6 +52,7 @@ export type DbUserImportMastoPostJobData = { user: ThinUser; post: any; signatureCheck: boolean; + parent: Note | null; }; export type ObjectStorageJobData = diff --git a/packages/backend/src/remote/activitypub/audience.ts b/packages/backend/src/remote/activitypub/audience.ts index 210d47573c..21b1b2e6ac 100644 --- a/packages/backend/src/remote/activitypub/audience.ts +++ b/packages/backend/src/remote/activitypub/audience.ts @@ -94,7 +94,7 @@ function groupingAudience(ids: string[], actor: CacheableRemoteUser) { function isPublic(id: string) { return [ "https://www.w3.org/ns/activitystreams#Public", - "as#Public", + "as:Public", "Public", ].includes(id); } diff --git a/packages/backend/src/remote/activitypub/deliver-manager.ts b/packages/backend/src/remote/activitypub/deliver-manager.ts index 400e047774..c97d1c99ae 100644 --- a/packages/backend/src/remote/activitypub/deliver-manager.ts +++ b/packages/backend/src/remote/activitypub/deliver-manager.ts @@ -122,19 +122,31 @@ export default class DeliverManager { ) .forEach((recipe) => inboxes.add(recipe.to.inbox!)); + // Validate Inboxes first + const validInboxes = []; + for (const inbox of inboxes) { + try { + validInboxes.push({ + inbox, + host: new URL(inbox).host, + }); + } catch (error) { + console.error(error); + console.error(`Invalid Inbox ${inbox}`); + } + } + const instancesToSkip = await skippedInstances( // get (unique) list of hosts - Array.from( - new Set(Array.from(inboxes).map((inbox) => new URL(inbox).host)), - ), + Array.from(new Set(validInboxes.map((valid) => valid.host))), ); // deliver - for (const inbox of inboxes) { + for (const valid of validInboxes) { // skip instances as indicated - if (instancesToSkip.includes(new URL(inbox).host)) continue; + if (instancesToSkip.includes(valid.host)) continue; - deliver(this.actor, this.activity, inbox); + deliver(this.actor, this.activity, valid.inbox); } } } diff --git a/packages/backend/src/remote/activitypub/kernel/announce/note.ts b/packages/backend/src/remote/activitypub/kernel/announce/note.ts index 6cdaa61662..50b59932cf 100644 --- a/packages/backend/src/remote/activitypub/kernel/announce/note.ts +++ b/packages/backend/src/remote/activitypub/kernel/announce/note.ts @@ -32,7 +32,7 @@ export default async function ( // Interrupt if you block the announcement destination if (await shouldBlockInstance(extractDbHost(uri))) return; - const unlock = await getApLock(uri); + const lock = await getApLock(uri); try { // Check if something with the same URI is already registered @@ -60,9 +60,10 @@ export default async function ( throw e; } - if (!(await Notes.isVisibleForMe(renote, actor.id))) - return "skip: invalid actor for this activity"; - + if (renote != null && !(await Notes.isVisibleForMe(renote, actor.id))) { + console.log("skip: invalid actor for this activity"); + return; + } logger.info(`Creating the (Re)Note: ${uri}`); const activityAudience = await parseAudience( @@ -79,6 +80,6 @@ export default async function ( uri, }); } finally { - unlock(); + await lock.release(); } } diff --git a/packages/backend/src/remote/activitypub/kernel/create/note.ts b/packages/backend/src/remote/activitypub/kernel/create/note.ts index 09c492730c..92b0ffb1e0 100644 --- a/packages/backend/src/remote/activitypub/kernel/create/note.ts +++ b/packages/backend/src/remote/activitypub/kernel/create/note.ts @@ -31,7 +31,7 @@ export default async function ( } } - const unlock = await getApLock(uri); + const lock = await getApLock(uri); try { const exist = await fetchNote(note); @@ -46,6 +46,6 @@ export default async function ( throw e; } } finally { - unlock(); + await lock.release(); } } diff --git a/packages/backend/src/remote/activitypub/kernel/delete/note.ts b/packages/backend/src/remote/activitypub/kernel/delete/note.ts index 69298e9175..4656480c2f 100644 --- a/packages/backend/src/remote/activitypub/kernel/delete/note.ts +++ b/packages/backend/src/remote/activitypub/kernel/delete/note.ts @@ -13,7 +13,7 @@ export default async function ( ): Promise { logger.info(`Deleting the Note: ${uri}`); - const unlock = await getApLock(uri); + const lock = await getApLock(uri); try { const dbResolver = new DbResolver(); @@ -39,6 +39,6 @@ export default async function ( await deleteNode(actor, note); return "ok: note deleted"; } finally { - unlock(); + await lock.release(); } } diff --git a/packages/backend/src/remote/activitypub/kernel/index.ts b/packages/backend/src/remote/activitypub/kernel/index.ts index 58e354a512..a90ac02345 100644 --- a/packages/backend/src/remote/activitypub/kernel/index.ts +++ b/packages/backend/src/remote/activitypub/kernel/index.ts @@ -37,7 +37,7 @@ import remove from "./remove/index.js"; import block from "./block/index.js"; import flag from "./flag/index.js"; import move from "./move/index.js"; -import type { IObject } from "../type.js"; +import type { IObject, IActivity } from "../type.js"; import { extractDbHost } from "@/misc/convert-host.js"; import { shouldBlockInstance } from "@/misc/should-block-instance.js"; @@ -106,6 +106,8 @@ async function performOneActivity( } else if (isMove(activity)) { await move(actor, activity); } else { - apLogger.warn(`unrecognized activity type: ${(activity as any).type}`); + apLogger.warn( + `Unrecognized activity type: ${(activity as IActivity).type}`, + ); } } diff --git a/packages/backend/src/remote/activitypub/models/image.ts b/packages/backend/src/remote/activitypub/models/image.ts index b5eece0f6e..67652d57de 100644 --- a/packages/backend/src/remote/activitypub/models/image.ts +++ b/packages/backend/src/remote/activitypub/models/image.ts @@ -68,8 +68,8 @@ export async function createImage( /** * Resolve Image. * - * If the target Image is registered in Calckey, return it, otherwise - * Fetch from remote server, register with Calckey and return it. + * If the target Image is registered in Firefish, return it, otherwise + * Fetch from remote server, register with Firefish and return it. */ export async function resolveImage( actor: CacheableRemoteUser, diff --git a/packages/backend/src/remote/activitypub/models/note.ts b/packages/backend/src/remote/activitypub/models/note.ts index a3141e388a..12b2c19972 100644 --- a/packages/backend/src/remote/activitypub/models/note.ts +++ b/packages/backend/src/remote/activitypub/models/note.ts @@ -92,7 +92,7 @@ export function validateNote(object: any, uri: string) { /** * Fetch Notes. * - * If the target Note is registered in Calckey, it will be returned. + * If the target Note is registered in Firefish, it will be returned. */ export async function fetchNote( object: string | IObject, @@ -397,8 +397,8 @@ export async function createNote( /** * Resolve Note. * - * If the target Note is registered in Calckey, return it, otherwise - * Fetch from remote server, register with Calckey and return it. + * If the target Note is registered in Firefish, return it, otherwise + * Fetch from remote server, register with Firefish and return it. */ export async function resolveNote( value: string | IObject, @@ -415,7 +415,7 @@ export async function resolveNote( `host ${extractDbHost(uri)} is blocked`, ); - const unlock = await getApLock(uri); + const lock = await getApLock(uri); try { //#region Returns if already registered with this server @@ -439,7 +439,7 @@ export async function resolveNote( // Since the attached Note Object may be disguised, always specify the uri and fetch it from the server. return await createNote(uri, resolver, true); } finally { - unlock(); + await lock.release(); } } diff --git a/packages/backend/src/remote/activitypub/models/person.ts b/packages/backend/src/remote/activitypub/models/person.ts index c5519ba031..c02905fabf 100644 --- a/packages/backend/src/remote/activitypub/models/person.ts +++ b/packages/backend/src/remote/activitypub/models/person.ts @@ -127,7 +127,7 @@ function validateActor(x: IObject, uri: string): IActor { /** * Fetch a Person. * - * If the target Person is registered in Calckey, it will be returned. + * If the target Person is registered in Firefish, it will be returned. */ export async function fetchPerson( uri: string, @@ -147,11 +147,11 @@ export async function fetchPerson( } //#region Returns if already registered with this server - const exist = await Users.findOneBy({ uri }); + const user = await Users.findOneBy({ uri }); - if (exist) { - await uriPersonCache.set(uri, exist); - return exist; + if (user != null) { + await uriPersonCache.set(uri, user); + return user; } //#endregion @@ -205,10 +205,10 @@ export async function createPerson( if (typeof person.followers === "string") { try { - let data = await fetch(person.followers, { + const data = await fetch(person.followers, { headers: { Accept: "application/json" }, }); - let json_data = JSON.parse(await data.text()); + const json_data = JSON.parse(await data.text()); followersCount = json_data.totalItems; } catch { @@ -220,10 +220,10 @@ export async function createPerson( if (typeof person.following === "string") { try { - let data = await fetch(person.following, { + const data = await fetch(person.following, { headers: { Accept: "application/json" }, }); - let json_data = JSON.parse(await data.text()); + const json_data = JSON.parse(await data.text()); followingCount = json_data.totalItems; } catch (e) { @@ -231,6 +231,21 @@ export async function createPerson( } } + let notesCount: number | undefined; + + if (typeof person.outbox === "string") { + try { + const data = await fetch(person.outbox, { + headers: { Accept: "application/json" }, + }); + const json_data = JSON.parse(await data.text()); + + notesCount = json_data.totalItems; + } catch (e) { + notesCount = undefined; + } + } + // Create user let user: IRemoteUser; try { @@ -274,11 +289,21 @@ export async function createPerson( isCollectionOrOrderedCollection(person.following) ? person.following.totalItems : undefined, + notesCount: + notesCount !== undefined + ? notesCount + : person.outbox && + typeof person.outbox !== "string" && + isCollectionOrOrderedCollection(person.outbox) + ? person.outbox.totalItems + : undefined, featured: person.featured ? getApId(person.featured) : undefined, uri: person.id, tags, isBot, isCat: (person as any).isCat === true, + speakAsCat: person.speakAsCat, + isIndexable: person.indexable, }), )) as IRemoteUser; @@ -378,7 +403,7 @@ export async function createPerson( /** * Update Person data from remote. - * If the target Person is not registered in Calckey, it is ignored. + * If the target Person is not registered in Firefish, it is ignored. * @param uri URI of Person * @param resolver Resolver * @param hint Hint of Person object (If this value is a valid Person, it is used for updating without Remote resolve) @@ -396,9 +421,9 @@ export async function updatePerson( } //#region Already registered on this server? - const exist = (await Users.findOneBy({ uri })) as IRemoteUser; + const user = (await Users.findOneBy({ uri })) as IRemoteUser; - if (exist == null) { + if (user == null) { return; } //#endregion @@ -416,17 +441,15 @@ export async function updatePerson( [person.icon, person.image].map((img) => img == null ? Promise.resolve(null) - : resolveImage(exist, img).catch(() => null), + : resolveImage(user, img).catch(() => null), ), ); // Custom pictogram acquisition - const emojis = await extractEmojis(person.tag || [], exist.host).catch( - (e) => { - logger.info(`extractEmojis: ${e}`); - return [] as Emoji[]; - }, - ); + const emojis = await extractEmojis(person.tag || [], user.host).catch((e) => { + logger.info(`extractEmojis: ${e}`); + return [] as Emoji[]; + }); const emojiNames = emojis.map((emoji) => emoji.name); @@ -474,6 +497,21 @@ export async function updatePerson( } } + let notesCount: number | undefined; + + if (typeof person.outbox === "string") { + try { + let data = await fetch(person.outbox, { + headers: { Accept: "application/json" }, + }); + let json_data = JSON.parse(await data.text()); + + notesCount = json_data.totalItems; + } catch (e) { + notesCount = undefined; + } + } + const updates = { lastFetchedAt: new Date(), inbox: person.inbox, @@ -497,12 +535,21 @@ export async function updatePerson( isCollectionOrOrderedCollection(person.following) ? person.following.totalItems : undefined, + notesCount: + notesCount !== undefined + ? notesCount + : person.outbox && + typeof person.outbox !== "string" && + isCollectionOrOrderedCollection(person.outbox) + ? person.outbox.totalItems + : undefined, featured: person.featured, emojis: emojiNames, name: truncate(person.name, nameLength), tags, isBot: getApType(object) !== "Person", isCat: (person as any).isCat === true, + isIndexable: person.indexable, isLocked: !!person.manuallyApprovesFollowers, movedToUri: person.movedTo || null, alsoKnownAs: person.alsoKnownAs || null, @@ -518,11 +565,11 @@ export async function updatePerson( } // Update user - await Users.update(exist.id, updates); + await Users.update(user.id, updates); if (person.publicKey) { await UserPublickeys.update( - { userId: exist.id }, + { userId: user.id }, { keyId: person.publicKey.id, keyPem: person.publicKey.publicKeyPem, @@ -531,7 +578,7 @@ export async function updatePerson( } await UserProfiles.update( - { userId: exist.id }, + { userId: user.id }, { url: url, fields, @@ -543,31 +590,31 @@ export async function updatePerson( }, ); - publishInternalEvent("remoteUserUpdated", { id: exist.id }); + publishInternalEvent("remoteUserUpdated", { id: user.id }); // Hashtag Update - updateUsertags(exist, tags); + updateUsertags(user, tags); // If the user in question is a follower, followers will also be updated. await Followings.update( { - followerId: exist.id, + followerId: user.id, }, { followerSharedInbox: person.sharedInbox || - (person.endpoints ? person.endpoints.sharedInbox : undefined), + (person.endpoints ? person.endpoints.sharedInbox : null), }, ); - await updateFeatured(exist.id, resolver).catch((err) => logger.error(err)); + await updateFeatured(user.id, resolver).catch((err) => logger.error(err)); } /** * Resolve Person. * - * If the target person is registered in Calckey, it returns it; - * otherwise, it fetches it from the remote server, registers it in Calckey, and returns it. + * If the target person is registered in Firefish, it returns it; + * otherwise, it fetches it from the remote server, registers it in Firefish, and returns it. */ export async function resolvePerson( uri: string, @@ -576,10 +623,10 @@ export async function resolvePerson( if (typeof uri !== "string") throw new Error("uri is not string"); //#region If already registered on this server, return it. - const exist = await fetchPerson(uri); + const user = await fetchPerson(uri); - if (exist) { - return exist; + if (user != null) { + return user; } //#endregion @@ -665,7 +712,7 @@ export async function updateFeatured(userId: User["id"], resolver?: Resolver) { ? collection.items : collection.orderedItems; const items = await Promise.all( - toArray(unresolvedItems).map((x) => resolver.resolve(x)), + toArray(unresolvedItems).map((x) => resolver?.resolve(x)), ); // Resolve and regist Notes diff --git a/packages/backend/src/remote/activitypub/renderer/index.ts b/packages/backend/src/remote/activitypub/renderer/index.ts index 7b98cf2d77..bb5dcdfc19 100644 --- a/packages/backend/src/remote/activitypub/renderer/index.ts +++ b/packages/backend/src/remote/activitypub/renderer/index.ts @@ -30,6 +30,7 @@ export const renderActivity = (x: any): IActivity | null => { Emoji: "toot:Emoji", featured: "toot:featured", discoverable: "toot:discoverable", + indexable: "toot:indexable", // schema schema: "http://schema.org#", PropertyValue: "schema:PropertyValue", diff --git a/packages/backend/src/remote/activitypub/renderer/person.ts b/packages/backend/src/remote/activitypub/renderer/person.ts index 1122a3a279..9f642bb9e5 100644 --- a/packages/backend/src/remote/activitypub/renderer/person.ts +++ b/packages/backend/src/remote/activitypub/renderer/person.ts @@ -81,6 +81,8 @@ export async function renderPerson(user: ILocalUser) { discoverable: !!user.isExplorable, publicKey: renderKey(user, keypair, "#main-key"), isCat: user.isCat, + speakAsCat: user.speakAsCat, + indexable: user.isIndexable, attachment: attachment.length ? attachment : undefined, } as any; diff --git a/packages/backend/src/remote/activitypub/type.ts b/packages/backend/src/remote/activitypub/type.ts index b0bdb0a8b4..ecaf6d6872 100644 --- a/packages/backend/src/remote/activitypub/type.ts +++ b/packages/backend/src/remote/activitypub/type.ts @@ -190,8 +190,9 @@ export interface IActor extends IObject { movedTo?: string; alsoKnownAs?: string[]; discoverable?: boolean; + indexable?: boolean; inbox: string; - sharedInbox?: string; // backward compatibility.. ig + sharedInbox?: string; // Backwards compatibility publicKey?: { id: string; publicKeyPem: string; diff --git a/packages/backend/src/server/api/api-handler.ts b/packages/backend/src/server/api/api-handler.ts index 99a12fd110..48a33dfc6e 100644 --- a/packages/backend/src/server/api/api-handler.ts +++ b/packages/backend/src/server/api/api-handler.ts @@ -33,7 +33,9 @@ export default (endpoint: IEndpoint, ctx: Koa.Context) => code: y!.code, id: y!.id, kind: y!.kind, - ...(y!.info ? { info: y!.info } : {}), + ...(y!.info && process.env.NODE_ENV !== "production" + ? { info: y!.info } + : {}), }, }; } else { diff --git a/packages/backend/src/server/api/compatibility.ts b/packages/backend/src/server/api/compatibility.ts index 42be40e104..624e5ff430 100644 --- a/packages/backend/src/server/api/compatibility.ts +++ b/packages/backend/src/server/api/compatibility.ts @@ -1,11 +1,9 @@ import type { IEndpoint } from "./endpoints"; -import * as cp___instance_info from "./endpoints/compatibility/instance-info.js"; import * as cp___custom_emojis from "./endpoints/compatibility/custom-emojis.js"; import * as ep___instance_peers from "./endpoints/compatibility/peers.js"; const cps = [ - ["v1/instance", cp___instance_info], ["v1/custom_emojis", cp___custom_emojis], ["v1/instance/peers", ep___instance_peers], ]; diff --git a/packages/backend/src/server/api/endpoints.ts b/packages/backend/src/server/api/endpoints.ts index 2cb3b30d10..8cc4fb2d77 100644 --- a/packages/backend/src/server/api/endpoints.ts +++ b/packages/backend/src/server/api/endpoints.ts @@ -65,6 +65,8 @@ import * as ep___admin_unsuspendUser from "./endpoints/admin/unsuspend-user.js"; import * as ep___admin_updateMeta from "./endpoints/admin/update-meta.js"; import * as ep___admin_vacuum from "./endpoints/admin/vacuum.js"; import * as ep___admin_deleteAccount from "./endpoints/admin/delete-account.js"; +import * as ep___admin_delete2fa from "./endpoints/admin/delete-2fa.js"; +import * as ep___admin_deletePasskeys from "./endpoints/admin/delete-passkeys.js"; import * as ep___admin_updateUserNote from "./endpoints/admin/update-user-note.js"; import * as ep___announcements from "./endpoints/announcements.js"; import * as ep___antennas_create from "./endpoints/antennas/create.js"; @@ -342,7 +344,7 @@ import * as ep___users_stats from "./endpoints/users/stats.js"; import * as ep___fetchRss from "./endpoints/fetch-rss.js"; import * as ep___admin_driveCapOverride from "./endpoints/admin/drive-capacity-override.js"; -//Calckey Move +//Firefish Move import * as ep___i_move from "./endpoints/i/move.js"; import * as ep___i_known_as from "./endpoints/i/known-as.js"; @@ -418,6 +420,8 @@ const eps = [ ["admin/update-meta", ep___admin_updateMeta], ["admin/vacuum", ep___admin_vacuum], ["admin/delete-account", ep___admin_deleteAccount], + ["admin/delete-2fa", ep___admin_delete2fa], + ["admin/delete-passkeys", ep___admin_deletePasskeys], ["admin/update-user-note", ep___admin_updateUserNote], ["announcements", ep___announcements], ["antennas/create", ep___antennas_create], diff --git a/packages/backend/src/server/api/endpoints/admin/delete-2fa.ts b/packages/backend/src/server/api/endpoints/admin/delete-2fa.ts new file mode 100644 index 0000000000..04f6abb82c --- /dev/null +++ b/packages/backend/src/server/api/endpoints/admin/delete-2fa.ts @@ -0,0 +1,40 @@ +import { Users, UserProfiles } from "@/models/index.js"; +import { publishMainStream } from "@/services/stream.js"; +import define from "../../define.js"; + +export const meta = { + tags: ["admin"], + + requireCredential: true, + requireAdmin: true, + + res: {}, +} as const; + +export const paramDef = { + type: "object", + properties: { + userId: { type: "string", format: "misskey:id" }, + }, + required: ["userId"], +} as const; + +export default define(meta, paramDef, async (ps) => { + const user = await Users.findOneByOrFail({ id: ps.userId }); + if (user.isDeleted) { + return; + } + + await UserProfiles.update(user.id, { + twoFactorSecret: null, + twoFactorEnabled: false, + usePasswordLessLogin: false, + }); + + const iObj = await Users.pack(user.id, user, { + detail: true, + includeSecrets: true, + }); + + publishMainStream(user.id, "meUpdated", iObj); +}); diff --git a/packages/backend/src/server/api/endpoints/admin/delete-passkeys.ts b/packages/backend/src/server/api/endpoints/admin/delete-passkeys.ts new file mode 100644 index 0000000000..3b5c595281 --- /dev/null +++ b/packages/backend/src/server/api/endpoints/admin/delete-passkeys.ts @@ -0,0 +1,42 @@ +import { Users, UserProfiles, UserSecurityKeys } from "@/models/index.js"; +import { publishMainStream } from "@/services/stream.js"; +import define from "../../define.js"; + +export const meta = { + tags: ["admin"], + + requireCredential: true, + requireAdmin: true, + + res: {}, +} as const; + +export const paramDef = { + type: "object", + properties: { + userId: { type: "string", format: "misskey:id" }, + }, + required: ["userId"], +} as const; + +export default define(meta, paramDef, async (ps) => { + const user = await Users.findOneByOrFail({ id: ps.userId }); + if (user.isDeleted) { + return; + } + + await UserSecurityKeys.delete({ + userId: user.id, + }); + + await UserProfiles.update(user.id, { + usePasswordLessLogin: false, + }); + + const iObj = await Users.pack(user.id, user, { + detail: true, + includeSecrets: true, + }); + + publishMainStream(user.id, "meUpdated", iObj); +}); diff --git a/packages/backend/src/server/api/endpoints/admin/emoji/import-zip.ts b/packages/backend/src/server/api/endpoints/admin/emoji/import-zip.ts index 6f49d6d18d..9eba9dfd54 100644 --- a/packages/backend/src/server/api/endpoints/admin/emoji/import-zip.ts +++ b/packages/backend/src/server/api/endpoints/admin/emoji/import-zip.ts @@ -1,6 +1,5 @@ import define from "../../../define.js"; import { createImportCustomEmojisJob } from "@/queue/index.js"; -import ms from "ms"; export const meta = { secure: true, diff --git a/packages/backend/src/server/api/endpoints/admin/meta.ts b/packages/backend/src/server/api/endpoints/admin/meta.ts index 50317d4a81..9abb57b1b3 100644 --- a/packages/backend/src/server/api/endpoints/admin/meta.ts +++ b/packages/backend/src/server/api/endpoints/admin/meta.ts @@ -491,6 +491,11 @@ export const meta = { optional: false, nullable: false, }, + donationLink: { + type: "string", + optional: true, + nullable: true, + }, }, }, } as const; @@ -604,5 +609,6 @@ export default define(meta, paramDef, async (ps, me) => { experimentalFeatures: instance.experimentalFeatures, enableServerMachineStats: instance.enableServerMachineStats, enableIdenticonGeneration: instance.enableIdenticonGeneration, + donationLink: instance.donationLink, }; }); diff --git a/packages/backend/src/server/api/endpoints/admin/promo/create.ts b/packages/backend/src/server/api/endpoints/admin/promo/create.ts index a6d1f35191..00244a777a 100644 --- a/packages/backend/src/server/api/endpoints/admin/promo/create.ts +++ b/packages/backend/src/server/api/endpoints/admin/promo/create.ts @@ -40,9 +40,9 @@ export default define(meta, paramDef, async (ps, user) => { throw err; }); - const exist = await PromoNotes.findOneBy({ noteId: note.id }); + const exist = await PromoNotes.exist({ where: { noteId: note.id } }); - if (exist != null) { + if (exist) { throw new ApiError(meta.errors.alreadyPromoted); } diff --git a/packages/backend/src/server/api/endpoints/admin/send-mod-mail.ts b/packages/backend/src/server/api/endpoints/admin/send-mod-mail.ts index f7a9ad7782..db12ab6c23 100644 --- a/packages/backend/src/server/api/endpoints/admin/send-mod-mail.ts +++ b/packages/backend/src/server/api/endpoints/admin/send-mod-mail.ts @@ -1,4 +1,4 @@ -import * as sanitizeHtml from "sanitize-html"; +import sanitizeHtml from "sanitize-html"; import define from "../../define.js"; import { Users, UserProfiles } from "@/models/index.js"; import { ApiError } from "../../error.js"; diff --git a/packages/backend/src/server/api/endpoints/admin/show-user.ts b/packages/backend/src/server/api/endpoints/admin/show-user.ts index 7a2bf23651..3c3a0913d0 100644 --- a/packages/backend/src/server/api/endpoints/admin/show-user.ts +++ b/packages/backend/src/server/api/endpoints/admin/show-user.ts @@ -60,6 +60,7 @@ export default define(meta, paramDef, async (ps, me) => { emailVerified: profile.emailVerified, autoAcceptFollowed: profile.autoAcceptFollowed, noCrawle: profile.noCrawle, + isIndexable: profile.isIndexable, preventAiLearning: profile.preventAiLearning, alwaysMarkNsfw: profile.alwaysMarkNsfw, autoSensitive: profile.autoSensitive, diff --git a/packages/backend/src/server/api/endpoints/admin/update-meta.ts b/packages/backend/src/server/api/endpoints/admin/update-meta.ts index cf22c6c489..2142c7df73 100644 --- a/packages/backend/src/server/api/endpoints/admin/update-meta.ts +++ b/packages/backend/src/server/api/endpoints/admin/update-meta.ts @@ -1,6 +1,5 @@ import { Meta } from "@/models/entities/meta.js"; import { insertModerationLog } from "@/services/insert-moderation-log.js"; -import { DB_MAX_NOTE_TEXT_LENGTH } from "@/misc/hard-limits.js"; import { db } from "@/db/postgre.js"; import define from "../../define.js"; @@ -177,6 +176,9 @@ export const paramDef = { postImports: { type: "boolean" }, }, }, + enableServerMachineStats: { type: "boolean" }, + enableIdenticonGeneration: { type: "boolean" }, + donationLink: { type: "string", nullable: true }, }, required: [], } as const; @@ -218,6 +220,15 @@ export default define(meta, paramDef, async (ps, me) => { if (Array.isArray(ps.recommendedInstances)) { set.recommendedInstances = ps.recommendedInstances.filter(Boolean); + if (set.recommendedInstances?.length > 0) { + set.recommendedInstances.forEach((instance, index) => { + if (/^https?:\/\//i.test(instance)) { + set.recommendedInstances![index] = instance + .replace(/^https?:\/\//i, "") + .replace(/\/$/, ""); + } + }); + } } if (Array.isArray(ps.hiddenTags)) { @@ -568,6 +579,21 @@ export default define(meta, paramDef, async (ps, me) => { set.experimentalFeatures = ps.experimentalFeatures || undefined; } + if (ps.enableServerMachineStats !== undefined) { + set.enableServerMachineStats = ps.enableServerMachineStats; + } + + if (ps.enableIdenticonGeneration !== undefined) { + set.enableIdenticonGeneration = ps.enableIdenticonGeneration; + } + + if (ps.donationLink !== undefined) { + set.donationLink = ps.donationLink; + if (set.donationLink && !/^https?:\/\//i.test(set.donationLink)) { + set.donationLink = `https://${set.donationLink}`; + } + } + await db.transaction(async (transactionalEntityManager) => { const metas = await transactionalEntityManager.find(Meta, { order: { diff --git a/packages/backend/src/server/api/endpoints/antennas/create.ts b/packages/backend/src/server/api/endpoints/antennas/create.ts index c2117d51a5..ed16450120 100644 --- a/packages/backend/src/server/api/endpoints/antennas/create.ts +++ b/packages/backend/src/server/api/endpoints/antennas/create.ts @@ -30,7 +30,7 @@ export const meta = { id: "c3a5a51e-04d4-11ee-be56-0242ac120002", }, noKeywords: { - message: "No keywords", + message: "No keywords.", code: "NO_KEYWORDS", id: "aa975b74-1ddb-11ee-be56-0242ac120002", }, diff --git a/packages/backend/src/server/api/endpoints/antennas/markread.ts b/packages/backend/src/server/api/endpoints/antennas/markread.ts index e29e13bbbb..db8e683e49 100644 --- a/packages/backend/src/server/api/endpoints/antennas/markread.ts +++ b/packages/backend/src/server/api/endpoints/antennas/markread.ts @@ -1,7 +1,6 @@ import define from "../../define.js"; -import { Antennas, AntennaNotes } from "@/models/index.js"; +import { Antennas } from "@/models/index.js"; import { FindOptionsWhere } from "typeorm"; -import { AntennaNote } from "@/models/entities/antenna-note.js"; export const meta = { tags: ["antennas", "account"], @@ -29,15 +28,15 @@ export default define(meta, paramDef, async (ps, me) => { return null; } - await AntennaNotes.update( - { - antennaId: antenna.id, - read: false, - }, - { - read: true, - }, - ); + // await AntennaNotes.update( + // { + // antennaId: antenna.id, + // read: false, + // }, + // { + // read: true, + // }, + // ); return true; }); diff --git a/packages/backend/src/server/api/endpoints/antennas/notes.ts b/packages/backend/src/server/api/endpoints/antennas/notes.ts index 29e2e085ad..149f98ea9b 100644 --- a/packages/backend/src/server/api/endpoints/antennas/notes.ts +++ b/packages/backend/src/server/api/endpoints/antennas/notes.ts @@ -1,6 +1,8 @@ import define from "../../define.js"; import readNote from "@/services/note/read.js"; -import { Antennas, Notes, AntennaNotes } from "@/models/index.js"; +import { Antennas, Notes } from "@/models/index.js"; +import { redisClient } from "@/db/redis.js"; +import { genId, getTimestamp } from "@/misc/gen-id.js"; import { makePaginationQuery } from "../../common/make-pagination-query.js"; import { generateVisibilityQuery } from "../../common/generate-visibility-query.js"; import { generateMutedUserQuery } from "../../common/generate-muted-user-query.js"; @@ -58,6 +60,39 @@ export default define(meta, paramDef, async (ps, user) => { throw new ApiError(meta.errors.noSuchAntenna); } + const limit = ps.limit + (ps.untilId ? 1 : 0) + (ps.sinceId ? 1 : 0); // untilIdに指定したものも含まれるため+1 + let end = "+"; + if (ps.untilDate) { + end = ps.untilDate.toString(); + } else if (ps.untilId) { + end = getTimestamp(ps.untilId).toString(); + } + let start = "-"; + if (ps.sinceDate) { + start = ps.sinceDate.toString(); + } else if (ps.sinceId) { + start = getTimestamp(ps.sinceId).toString(); + } + const noteIdsRes = await redisClient.xrevrange( + `antennaTimeline:${antenna.id}`, + end, + start, + "COUNT", + limit, + ); + + if (noteIdsRes.length === 0) { + return []; + } + + const noteIds = noteIdsRes + .map((x) => x[1][1]) + .filter((x) => x !== ps.untilId && x !== ps.sinceId); + + if (noteIds.length === 0) { + return []; + } + const query = makePaginationQuery( Notes.createQueryBuilder("note"), ps.sinceId, @@ -65,11 +100,7 @@ export default define(meta, paramDef, async (ps, user) => { ps.sinceDate, ps.untilDate, ) - .innerJoin( - AntennaNotes.metadata.targetName, - "antennaNote", - "antennaNote.noteId = note.id", - ) + .where("note.id IN (:...noteIds)", { noteIds: noteIds }) .innerJoinAndSelect("note.user", "user") .leftJoinAndSelect("user.avatar", "avatar") .leftJoinAndSelect("user.banner", "banner") @@ -81,14 +112,13 @@ export default define(meta, paramDef, async (ps, user) => { .leftJoinAndSelect("renote.user", "renoteUser") .leftJoinAndSelect("renoteUser.avatar", "renoteUserAvatar") .leftJoinAndSelect("renoteUser.banner", "renoteUserBanner") - .andWhere("antennaNote.antennaId = :antennaId", { antennaId: antenna.id }) .andWhere("note.visibility != 'home'"); generateVisibilityQuery(query, user); generateMutedUserQuery(query, user); generateBlockedUserQuery(query, user); - const notes = await query.take(ps.limit).getMany(); + const notes = await query.take(limit).getMany(); if (notes.length > 0) { readNote(user.id, notes); diff --git a/packages/backend/src/server/api/endpoints/auth/accept.ts b/packages/backend/src/server/api/endpoints/auth/accept.ts index 35565e2560..8e6ad6527a 100644 --- a/packages/backend/src/server/api/endpoints/auth/accept.ts +++ b/packages/backend/src/server/api/endpoints/auth/accept.ts @@ -41,12 +41,14 @@ export default define(meta, paramDef, async (ps, user) => { const accessToken = secureRndstr(32, true); // Fetch exist access token - const exist = await AccessTokens.findOneBy({ - appId: session.appId, - userId: user.id, + const exist = await AccessTokens.exist({ + where: { + appId: session.appId, + userId: user.id, + }, }); - if (exist == null) { + if (!exist) { // Lookup app const app = await Apps.findOneByOrFail({ id: session.appId }); diff --git a/packages/backend/src/server/api/endpoints/blocking/create.ts b/packages/backend/src/server/api/endpoints/blocking/create.ts index 4bd58d5ef5..f00a2923d5 100644 --- a/packages/backend/src/server/api/endpoints/blocking/create.ts +++ b/packages/backend/src/server/api/endpoints/blocking/create.ts @@ -69,12 +69,14 @@ export default define(meta, paramDef, async (ps, user) => { }); // Check if already blocking - const exist = await Blockings.findOneBy({ - blockerId: blocker.id, - blockeeId: blockee.id, + const exist = await Blockings.exist({ + where: { + blockerId: blocker.id, + blockeeId: blockee.id, + }, }); - if (exist != null) { + if (exist) { throw new ApiError(meta.errors.alreadyBlocking); } diff --git a/packages/backend/src/server/api/endpoints/blocking/delete.ts b/packages/backend/src/server/api/endpoints/blocking/delete.ts index 6c4ca27755..037d5af22c 100644 --- a/packages/backend/src/server/api/endpoints/blocking/delete.ts +++ b/packages/backend/src/server/api/endpoints/blocking/delete.ts @@ -69,12 +69,14 @@ export default define(meta, paramDef, async (ps, user) => { }); // Check not blocking - const exist = await Blockings.findOneBy({ - blockerId: blocker.id, - blockeeId: blockee.id, + const exist = await Blockings.exist({ + where: { + blockerId: blocker.id, + blockeeId: blockee.id, + }, }); - if (exist == null) { + if (!exist) { throw new ApiError(meta.errors.notBlocking); } diff --git a/packages/backend/src/server/api/endpoints/clips/add-note.ts b/packages/backend/src/server/api/endpoints/clips/add-note.ts index b9d6b54c95..416af6faa2 100644 --- a/packages/backend/src/server/api/endpoints/clips/add-note.ts +++ b/packages/backend/src/server/api/endpoints/clips/add-note.ts @@ -57,12 +57,14 @@ export default define(meta, paramDef, async (ps, user) => { throw err; }); - const exist = await ClipNotes.findOneBy({ - noteId: note.id, - clipId: clip.id, + const exist = await ClipNotes.exist({ + where: { + noteId: note.id, + clipId: clip.id, + }, }); - if (exist != null) { + if (exist) { throw new ApiError(meta.errors.alreadyClipped); } diff --git a/packages/backend/src/server/api/endpoints/compatibility/instance-info.ts b/packages/backend/src/server/api/endpoints/compatibility/instance-info.ts deleted file mode 100644 index 4e692568c5..0000000000 --- a/packages/backend/src/server/api/endpoints/compatibility/instance-info.ts +++ /dev/null @@ -1,232 +0,0 @@ -import * as mfm from "mfm-js"; -import { toHtml } from "@/mfm/to-html.js"; -import config from "@/config/index.js"; -import { fetchMeta } from "@/misc/fetch-meta.js"; -import { - Users, - Notes, - Instances, - UserProfiles, - Emojis, - DriveFiles, -} from "@/models/index.js"; -import type { Emoji } from "@/models/entities/emoji.js"; -import type { User } from "@/models/entities/user.js"; -import { IsNull, In } from "typeorm"; -import { MAX_NOTE_TEXT_LENGTH, FILE_TYPE_BROWSERSAFE } from "@/const.js"; -import define from "../../define.js"; - -export const meta = { - requireCredential: false, - requireCredentialPrivateMode: true, - allowGet: true, - - tags: ["meta"], -} as const; - -export const paramDef = { - type: "object", - properties: {}, - required: [], -} as const; - -export default define(meta, paramDef, async () => { - const now = Date.now(); - const [meta, total, localPosts, instanceCount, firstAdmin, emojis] = - await Promise.all([ - fetchMeta(true), - Users.count({ where: { host: IsNull() } }), - Notes.count({ where: { userHost: IsNull(), replyId: IsNull() } }), - Instances.count(), - Users.findOne({ - where: { - host: IsNull(), - isAdmin: true, - isDeleted: false, - isBot: false, - }, - order: { id: "ASC" }, - }), - Emojis.find({ - where: { host: IsNull(), type: In(FILE_TYPE_BROWSERSAFE) }, - select: ["id", "name", "originalUrl", "publicUrl"], - }).then((l) => - l.reduce((a, e) => { - a[e.name] = e; - return a; - }, {} as Record), - ), - ]); - - const descSplit = splitN(meta.description, "\n", 2); - const shortDesc = markup(descSplit.length > 0 ? descSplit[0] : ""); - const longDesc = markup(meta.description ?? ""); - - return { - uri: config.hostname, - title: meta.name, - short_description: shortDesc, - description: longDesc, - email: meta.maintainerEmail, - version: config.version, - urls: { - streaming_api: `wss://${config.host}`, - }, - stats: { - user_count: total, - status_count: localPosts, - domain_count: instanceCount, - }, - thumbnail: meta.logoImageUrl, - languages: meta.langs, - registrations: !meta.disableRegistration, - approval_required: false, - invites_enabled: false, - configuration: { - accounts: { - max_featured_tags: 16, - }, - statuses: { - max_characters: MAX_NOTE_TEXT_LENGTH, - max_media_attachments: 16, - characters_reserved_per_url: 0, - }, - media_attachments: { - supported_mime_types: FILE_TYPE_BROWSERSAFE, - image_size_limit: 10485760, - image_matrix_limit: 16777216, - video_size_limit: 41943040, - video_frame_rate_limit: 60, - video_matrix_limit: 2304000, - }, - polls: { - max_options: 10, - max_characters_per_option: 50, - min_expiration: 15, - max_expiration: -1, - }, - }, - contact_account: await getContact(firstAdmin, emojis), - rules: [], - }; -}); - -const splitN = (s: string | null, split: string, n: number): string[] => { - const ret: string[] = []; - if (s == null) return ret; - if (s === "") { - ret.push(s); - return ret; - } - - let start = 0; - let pos = s.indexOf(split); - if (pos === -1) { - ret.push(s); - return ret; - } - - for (let i = 0; i < n - 1; i++) { - ret.push(s.substring(start, pos)); - start = pos + split.length; - pos = s.indexOf(split, start); - if (pos === -1) break; - } - ret.push(s.substring(start)); - - return ret; -}; - -type ContactType = { - id: string; - username: string; - acct: string; - display_name: string; - note?: string; - noindex?: boolean; - fields?: { - name: string; - value: string; - verified_at: string | null; - }[]; - locked: boolean; - bot: boolean; - created_at: string; - url: string; - followers_count: number; - following_count: number; - statuses_count: number; - last_status_at?: string; - emojis: any; -} | null; - -const getContact = async ( - user: User | null, - emojis: Record, -): Promise => { - if (!user) return null; - - let contact: ContactType = { - id: user.id, - username: user.username, - acct: user.username, - display_name: user.name ?? user.username, - locked: user.isLocked, - bot: user.isBot, - created_at: user.createdAt.toISOString(), - url: `${config.url}/@${user.username}`, - followers_count: user.followersCount, - following_count: user.followingCount, - statuses_count: user.notesCount, - last_status_at: user.lastActiveDate?.toISOString(), - emojis: emojis - ? user.emojis - .filter((e, i, a) => e in emojis && a.indexOf(e) === i) - .map((e) => ({ - shortcode: e, - static_url: emojis[e].publicUrl, - url: emojis[e].originalUrl, - visible_in_picker: true, - })) - : [], - }; - - const [profile] = await Promise.all([ - UserProfiles.findOne({ where: { userId: user.id } }), - loadDriveFiles(contact, "avatar", user.avatarId), - loadDriveFiles(contact, "header", user.bannerId), - ]); - - if (!profile) { - return contact; - } - - contact = { - ...contact, - note: markup(profile.description ?? ""), - noindex: profile.noCrawle, - fields: profile.fields.map((f) => ({ - name: f.name, - value: f.value, - verified_at: null, - })), - }; - - return contact; -}; - -const loadDriveFiles = async ( - contact: any, - key: string, - fileId: string | null, -) => { - if (fileId) { - const file = await DriveFiles.findOneBy({ id: fileId }); - if (file) { - contact[key] = file.webpublicUrl ?? file.url; - contact[`${key}_static`] = contact[key]; - } - } -}; - -const markup = (text: string): string => toHtml(mfm.parse(text)) ?? ""; diff --git a/packages/backend/src/server/api/endpoints/drive/files/caption-image.ts b/packages/backend/src/server/api/endpoints/drive/files/caption-image.ts index 1ab817bd0c..30c8e3de86 100644 --- a/packages/backend/src/server/api/endpoints/drive/files/caption-image.ts +++ b/packages/backend/src/server/api/endpoints/drive/files/caption-image.ts @@ -26,16 +26,15 @@ export const paramDef = { } as const; export default define(meta, paramDef, async (ps) => { - const worker = createWorker({ - logger: (m) => console.log(m), - }); + const worker = await createWorker(); - await worker.load(); await worker.loadLanguage("eng"); await worker.initialize("eng"); const { data: { text }, - } = await worker.recognize(ps.url); + } = await worker.recognize(ps.url, { + rotateAuto: true, + }); await worker.terminate(); return text; diff --git a/packages/backend/src/server/api/endpoints/drive/files/check-existence.ts b/packages/backend/src/server/api/endpoints/drive/files/check-existence.ts index df89685201..e26da30eb5 100644 --- a/packages/backend/src/server/api/endpoints/drive/files/check-existence.ts +++ b/packages/backend/src/server/api/endpoints/drive/files/check-existence.ts @@ -26,10 +26,12 @@ export const paramDef = { } as const; export default define(meta, paramDef, async (ps, user) => { - const file = await DriveFiles.findOneBy({ - md5: ps.md5, - userId: user.id, + const exist = await DriveFiles.exist({ + where: { + md5: ps.md5, + userId: user.id, + }, }); - return file != null; + return exist; }); diff --git a/packages/backend/src/server/api/endpoints/drive/files/create.ts b/packages/backend/src/server/api/endpoints/drive/files/create.ts index 0a167178b2..51b9ea4c36 100644 --- a/packages/backend/src/server/api/endpoints/drive/files/create.ts +++ b/packages/backend/src/server/api/endpoints/drive/files/create.ts @@ -3,7 +3,7 @@ import { DriveFiles } from "@/models/index.js"; import { DB_MAX_IMAGE_COMMENT_LENGTH } from "@/misc/hard-limits.js"; import { IdentifiableError } from "@/misc/identifiable-error.js"; import { fetchMeta } from "@/misc/fetch-meta.js"; -import { HOUR } from "@/const.js"; +import { MINUTE } from "@/const.js"; import define from "../../../define.js"; import { apiLogger } from "../../../logger.js"; import { ApiError } from "../../../error.js"; @@ -14,8 +14,8 @@ export const meta = { requireCredential: true, limit: { - duration: HOUR, - max: 120, + duration: MINUTE * 10, + max: 250, }, requireFile: true, @@ -40,7 +40,7 @@ export const meta = { inappropriate: { message: - "Cannot upload the file because it has been determined that it possibly contains inappropriate content.", + "Cannot upload due to the file possibly containing inappropriate content.", code: "INAPPROPRIATE", id: "bec5bd69-fba3-43c9-b4fb-2894b66ad5d2", }, @@ -95,7 +95,7 @@ export default define( name = null; } - const meta = await fetchMeta(); + const instanceMeta = await fetchMeta(); try { // Create file @@ -107,8 +107,8 @@ export default define( folderId: ps.folderId, force: ps.force, sensitive: ps.isSensitive, - requestIp: meta.enableIpLogging ? ip : null, - requestHeaders: meta.enableIpLogging ? headers : null, + requestIp: instanceMeta.enableIpLogging ? ip : null, + requestHeaders: instanceMeta.enableIpLogging ? headers : null, }); return await DriveFiles.pack(driveFile, { self: true }); } catch (e) { @@ -123,7 +123,9 @@ export default define( } throw new ApiError(); } finally { - cleanup!(); + if (cleanup !== undefined) { + cleanup(); + } } }, ); diff --git a/packages/backend/src/server/api/endpoints/drive/folders/update.ts b/packages/backend/src/server/api/endpoints/drive/folders/update.ts index 929a69bdec..13673e9f2e 100644 --- a/packages/backend/src/server/api/endpoints/drive/folders/update.ts +++ b/packages/backend/src/server/api/endpoints/drive/folders/update.ts @@ -24,7 +24,7 @@ export const meta = { }, recursiveNesting: { - message: "It can not be structured like nesting folders recursively.", + message: "It cannot be structured like nesting folders recursively.", code: "NO_SUCH_PARENT_FOLDER", id: "ce104e3a-faaf-49d5-b459-10ff0cbbcaa1", }, diff --git a/packages/backend/src/server/api/endpoints/emoji.ts b/packages/backend/src/server/api/endpoints/emoji.ts index ddfad77374..f5a5be4ec5 100644 --- a/packages/backend/src/server/api/endpoints/emoji.ts +++ b/packages/backend/src/server/api/endpoints/emoji.ts @@ -1,6 +1,7 @@ import { IsNull } from "typeorm"; import { Emojis } from "@/models/index.js"; import define from "../define.js"; +import { ApiError } from "../error.js"; export const meta = { tags: ["meta"], @@ -9,6 +10,15 @@ export const meta = { allowGet: true, cacheSec: 3600, + errors: { + noSuchEmoji: { + message: "No such emoji.", + code: "NO_SUCH_EMOJI", + id: "6a5e3be7-5ac3-44a6-a425-9937cd66f8e1", + httpStatusCode: 404, + }, + }, + res: { type: "object", optional: false, @@ -28,12 +38,16 @@ export const paramDef = { } as const; export default define(meta, paramDef, async (ps, me) => { - const emoji = await Emojis.findOneOrFail({ + const emoji = await Emojis.findOne({ where: { name: ps.name, host: IsNull(), }, }); + if (!emoji) { + throw new ApiError(meta.errors.noSuchEmoji); + } + return Emojis.pack(emoji); }); diff --git a/packages/backend/src/server/api/endpoints/following/create.ts b/packages/backend/src/server/api/endpoints/following/create.ts index e617c1ffb3..48ae6ae7af 100644 --- a/packages/backend/src/server/api/endpoints/following/create.ts +++ b/packages/backend/src/server/api/endpoints/following/create.ts @@ -82,12 +82,14 @@ export default define(meta, paramDef, async (ps, user) => { }); // Check if already following - const exist = await Followings.findOneBy({ - followerId: follower.id, - followeeId: followee.id, + const exist = await Followings.exist({ + where: { + followerId: follower.id, + followeeId: followee.id, + }, }); - if (exist != null) { + if (exist) { throw new ApiError(meta.errors.alreadyFollowing); } diff --git a/packages/backend/src/server/api/endpoints/following/delete.ts b/packages/backend/src/server/api/endpoints/following/delete.ts index 2eebe8a903..cbc6097f4d 100644 --- a/packages/backend/src/server/api/endpoints/following/delete.ts +++ b/packages/backend/src/server/api/endpoints/following/delete.ts @@ -69,12 +69,14 @@ export default define(meta, paramDef, async (ps, user) => { }); // Check not following - const exist = await Followings.findOneBy({ - followerId: follower.id, - followeeId: followee.id, + const exist = await Followings.exist({ + where: { + followerId: follower.id, + followeeId: followee.id, + }, }); - if (exist == null) { + if (!exist) { throw new ApiError(meta.errors.notFollowing); } diff --git a/packages/backend/src/server/api/endpoints/following/invalidate.ts b/packages/backend/src/server/api/endpoints/following/invalidate.ts index 979d298f7d..01ccc2761b 100644 --- a/packages/backend/src/server/api/endpoints/following/invalidate.ts +++ b/packages/backend/src/server/api/endpoints/following/invalidate.ts @@ -69,12 +69,14 @@ export default define(meta, paramDef, async (ps, user) => { }); // Check not following - const exist = await Followings.findOneBy({ - followerId: follower.id, - followeeId: followee.id, + const exist = await Followings.exist({ + where: { + followerId: follower.id, + followeeId: followee.id, + }, }); - if (exist == null) { + if (!exist) { throw new ApiError(meta.errors.notFollowing); } diff --git a/packages/backend/src/server/api/endpoints/gallery/posts/like.ts b/packages/backend/src/server/api/endpoints/gallery/posts/like.ts index fd46406bdf..2506e40aaa 100644 --- a/packages/backend/src/server/api/endpoints/gallery/posts/like.ts +++ b/packages/backend/src/server/api/endpoints/gallery/posts/like.ts @@ -40,12 +40,14 @@ export default define(meta, paramDef, async (ps, user) => { } // if already liked - const exist = await GalleryLikes.findOneBy({ - postId: post.id, - userId: user.id, + const exist = await GalleryLikes.exist({ + where: { + postId: post.id, + userId: user.id, + }, }); - if (exist != null) { + if (exist) { throw new ApiError(meta.errors.alreadyLiked); } diff --git a/packages/backend/src/server/api/endpoints/gallery/posts/unlike.ts b/packages/backend/src/server/api/endpoints/gallery/posts/unlike.ts index 772dc92028..03bc299b94 100644 --- a/packages/backend/src/server/api/endpoints/gallery/posts/unlike.ts +++ b/packages/backend/src/server/api/endpoints/gallery/posts/unlike.ts @@ -38,17 +38,17 @@ export default define(meta, paramDef, async (ps, user) => { throw new ApiError(meta.errors.noSuchPost); } - const exist = await GalleryLikes.findOneBy({ + const like = await GalleryLikes.findOneBy({ postId: post.id, userId: user.id, }); - if (exist == null) { + if (like == null) { throw new ApiError(meta.errors.notLiked); } // Delete like - await GalleryLikes.delete(exist.id); + await GalleryLikes.delete(like.id); GalleryPosts.decrement({ id: post.id }, "likedCount", 1); }); diff --git a/packages/backend/src/server/api/endpoints/i/2fa/key-done.ts b/packages/backend/src/server/api/endpoints/i/2fa/key-done.ts index 34660c6f2e..32f972d0b6 100644 --- a/packages/backend/src/server/api/endpoints/i/2fa/key-done.ts +++ b/packages/backend/src/server/api/endpoints/i/2fa/key-done.ts @@ -1,5 +1,4 @@ -import { promisify } from "node:util"; -import * as cbor from "cbor"; +import { decode } from "msgpackr"; import define from "../../../define.js"; import { UserProfiles, @@ -12,7 +11,6 @@ import { procedures, hash } from "../../../2fa.js"; import { publishMainStream } from "@/services/stream.js"; import { comparePassword } from "@/misc/password.js"; -const cborDecodeFirst = promisify(cbor.decodeFirst) as any; const rpIdHashReal = hash(Buffer.from(config.hostname, "utf-8")); export const meta = { @@ -64,7 +62,7 @@ export default define(meta, paramDef, async (ps, user) => { const clientDataJSONHash = hash(Buffer.from(ps.clientDataJSON, "utf-8")); - const attestation = await cborDecodeFirst(ps.attestationObject); + const attestation = decode(Buffer.from(ps.attestationObject, "utf-8")); const rpIdHash = attestation.authData.slice(0, 32); if (!rpIdHashReal.equals(rpIdHash)) { @@ -81,7 +79,7 @@ export default define(meta, paramDef, async (ps, user) => { const credentialIdLength = authData.readUInt16BE(53); const credentialId = authData.slice(55, 55 + credentialIdLength); const publicKeyData = authData.slice(55 + credentialIdLength); - const publicKey: Map = await cborDecodeFirst(publicKeyData); + const publicKey: Map = decode(publicKeyData); if (publicKey.get(3) !== -7) { throw new Error("alg mismatch"); } diff --git a/packages/backend/src/server/api/endpoints/i/pin.ts b/packages/backend/src/server/api/endpoints/i/pin.ts index 40aa579184..7520705265 100644 --- a/packages/backend/src/server/api/endpoints/i/pin.ts +++ b/packages/backend/src/server/api/endpoints/i/pin.ts @@ -18,7 +18,7 @@ export const meta = { }, pinLimitExceeded: { - message: "You can not pin notes any more.", + message: "You cannot pin notes any more.", code: "PIN_LIMIT_EXCEEDED", id: "72dab508-c64d-498f-8740-a8eec1ba385a", }, diff --git a/packages/backend/src/server/api/endpoints/i/read-announcement.ts b/packages/backend/src/server/api/endpoints/i/read-announcement.ts index 5218dba871..d0dfa66579 100644 --- a/packages/backend/src/server/api/endpoints/i/read-announcement.ts +++ b/packages/backend/src/server/api/endpoints/i/read-announcement.ts @@ -30,19 +30,23 @@ export const paramDef = { export default define(meta, paramDef, async (ps, user) => { // Check if announcement exists - const announcement = await Announcements.findOneBy({ id: ps.announcementId }); + const exist = await Announcements.exist({ + where: { id: ps.announcementId }, + }); - if (announcement == null) { + if (!exist) { throw new ApiError(meta.errors.noSuchAnnouncement); } // Check if already read - const read = await AnnouncementReads.findOneBy({ - announcementId: ps.announcementId, - userId: user.id, + const read = await AnnouncementReads.exist({ + where: { + announcementId: ps.announcementId, + userId: user.id, + }, }); - if (read != null) { + if (read) { return; } diff --git a/packages/backend/src/server/api/endpoints/i/revoke-token.ts b/packages/backend/src/server/api/endpoints/i/revoke-token.ts index 308442bf7b..3a410fa0e5 100644 --- a/packages/backend/src/server/api/endpoints/i/revoke-token.ts +++ b/packages/backend/src/server/api/endpoints/i/revoke-token.ts @@ -17,9 +17,9 @@ export const paramDef = { } as const; export default define(meta, paramDef, async (ps, user) => { - const token = await AccessTokens.findOneBy({ id: ps.tokenId }); + const exist = await AccessTokens.exist({ where: { id: ps.tokenId } }); - if (token) { + if (exist) { await AccessTokens.delete({ id: ps.tokenId, userId: user.id, diff --git a/packages/backend/src/server/api/endpoints/i/update.ts b/packages/backend/src/server/api/endpoints/i/update.ts index 0637251a6b..0037839b5c 100644 --- a/packages/backend/src/server/api/endpoints/i/update.ts +++ b/packages/backend/src/server/api/endpoints/i/update.ts @@ -12,7 +12,9 @@ import type { UserProfile } from "@/models/entities/user-profile.js"; import { notificationTypes } from "@/types.js"; import { normalizeForSearch } from "@/misc/normalize-for-search.js"; import { langmap } from "@/misc/langmap.js"; +import { verifyLink } from "@/services/fetch-rel-me.js"; import { ApiError } from "../../error.js"; +import config from "@/config/index.js"; import define from "../../define.js"; export const meta = { @@ -58,6 +60,18 @@ export const meta = { code: "INVALID_REGEXP", id: "0d786918-10df-41cd-8f33-8dec7d9a89a5", }, + + invalidFieldName: { + message: "Invalid field name.", + code: "INVALID_FIELD_NAME", + id: "8f81972e-8b53-4d30-b0d2-efb026dda673", + }, + + invalidFieldValue: { + message: "Invalid field value.", + code: "INVALID_FIELD_VALUE", + id: "aede7444-244b-11ee-be56-0242ac120002", + }, }, res: { @@ -106,6 +120,7 @@ export const paramDef = { isBot: { type: "boolean" }, isCat: { type: "boolean" }, speakAsCat: { type: "boolean" }, + isIndexable: { type: "boolean" }, injectFeaturedNote: { type: "boolean" }, receiveAnnouncementEmail: { type: "boolean" }, alwaysMarkNsfw: { type: "boolean" }, @@ -192,6 +207,10 @@ export default define(meta, paramDef, async (ps, _user, token) => { if (typeof ps.preventAiLearning === "boolean") profileUpdates.preventAiLearning = ps.preventAiLearning; if (typeof ps.isCat === "boolean") updates.isCat = ps.isCat; + if (typeof ps.isIndexable === "boolean") { + updates.isIndexable = ps.isIndexable; + profileUpdates.isIndexable = ps.isIndexable; + } if (typeof ps.speakAsCat === "boolean") updates.speakAsCat = ps.speakAsCat; if (typeof ps.injectFeaturedNote === "boolean") profileUpdates.injectFeaturedNote = ps.injectFeaturedNote; @@ -234,16 +253,29 @@ export default define(meta, paramDef, async (ps, _user, token) => { } if (ps.fields) { + for (const field of ps.fields) { + if (!field || field.name === "" || field.value === "") { + continue; + } + if (typeof field.name !== "string" || field.name === "") { + throw new ApiError(meta.errors.invalidFieldName); + } + if (typeof field.value !== "string" || field.value === "") { + throw new ApiError(meta.errors.invalidFieldValue); + } + if (field.value.startsWith("http")) { + field.verified = await verifyLink(field.value, user.username); + } + } + profileUpdates.fields = ps.fields - .filter( - (x) => - typeof x.name === "string" && - x.name !== "" && - typeof x.value === "string" && - x.value !== "", - ) + .filter((x) => Object.keys(x).length !== 0) .map((x) => { - return { name: x.name, value: x.value }; + return { + name: x.name, + value: x.value, + verified: x.verified, + }; }); } diff --git a/packages/backend/src/server/api/endpoints/latest-version.ts b/packages/backend/src/server/api/endpoints/latest-version.ts index 72e84ae044..4d07406d1e 100644 --- a/packages/backend/src/server/api/endpoints/latest-version.ts +++ b/packages/backend/src/server/api/endpoints/latest-version.ts @@ -15,9 +15,7 @@ export const paramDef = { export default define(meta, paramDef, async () => { let tag_name; - await fetch( - "https://codeberg.org/api/v1/repos/calckey/calckey/releases?draft=false&pre-release=false&page=1&limit=1", - ) + await fetch("https://git.joinfirefish.org/api/v4/projects/7/releases") .then((response) => response.json()) .then((data) => { tag_name = data[0].tag_name; diff --git a/packages/backend/src/server/api/endpoints/messaging/messages.ts b/packages/backend/src/server/api/endpoints/messaging/messages.ts index 4b5440383c..17f626b69e 100644 --- a/packages/backend/src/server/api/endpoints/messaging/messages.ts +++ b/packages/backend/src/server/api/endpoints/messaging/messages.ts @@ -48,7 +48,7 @@ export const meta = { }, groupAccessDenied: { - message: "You can not read messages of groups that you have not joined.", + message: "You cannot read messages of groups that you have not joined.", code: "GROUP_ACCESS_DENIED", id: "a053a8dd-a491-4718-8f87-50775aad9284", }, diff --git a/packages/backend/src/server/api/endpoints/messaging/messages/create.ts b/packages/backend/src/server/api/endpoints/messaging/messages/create.ts index ed9ae16df0..4ffbb0699f 100644 --- a/packages/backend/src/server/api/endpoints/messaging/messages/create.ts +++ b/packages/backend/src/server/api/endpoints/messaging/messages/create.ts @@ -28,7 +28,7 @@ export const meta = { errors: { recipientIsYourself: { - message: "You can not send a message to yourself.", + message: "You cannot send a message to yourself.", code: "RECIPIENT_IS_YOURSELF", id: "17e2ba79-e22a-4cbc-bf91-d327643f4a7e", }, @@ -46,7 +46,7 @@ export const meta = { }, groupAccessDenied: { - message: "You can not send messages to groups that you have not joined.", + message: "You cannot send messages to groups that you have not joined.", code: "GROUP_ACCESS_DENIED", id: "d96b3cca-5ad1-438b-ad8b-02f931308fbd", }, diff --git a/packages/backend/src/server/api/endpoints/meta.ts b/packages/backend/src/server/api/endpoints/meta.ts index 673a0266c8..fc8235ea60 100644 --- a/packages/backend/src/server/api/endpoints/meta.ts +++ b/packages/backend/src/server/api/endpoints/meta.ts @@ -42,7 +42,7 @@ export const meta = { optional: false, nullable: false, format: "url", - example: "https://calckey.example.com", + example: "https://firefish.example.com", }, description: { type: "string", @@ -68,13 +68,13 @@ export const meta = { type: "string", optional: false, nullable: false, - default: "https://codeberg.org/calckey/calckey", + default: "https://git.joinfirefish.org/firefish/firefish", }, feedbackUrl: { type: "string", optional: false, nullable: false, - default: "https://codeberg.org/calckey/calckey/issues", + default: "https://git.joinfirefish.org/firefish/firefish/issues", }, defaultDarkTheme: { type: "string", @@ -389,6 +389,17 @@ export const meta = { nullable: false, default: "⭐", }, + donationLink: { + type: "string", + optional: "true", + nullable: true, + }, + enableServerMachineStats: { + type: "boolean", + optional: "true", + nullable: false, + default: false, + }, }, }, } as const; @@ -491,6 +502,9 @@ export default define(meta, paramDef, async (ps, me) => { translatorAvailable: instance.deeplAuthKey != null || instance.libreTranslateApiUrl != null, defaultReaction: instance.defaultReaction, + donationLink: instance.donationLink, + enableServerMachineStats: instance.enableServerMachineStats, + enableIdenticonGeneration: instance.enableIdenticonGeneration, ...(ps.detail ? { diff --git a/packages/backend/src/server/api/endpoints/mute/create.ts b/packages/backend/src/server/api/endpoints/mute/create.ts index bacab9b458..7b2f109053 100644 --- a/packages/backend/src/server/api/endpoints/mute/create.ts +++ b/packages/backend/src/server/api/endpoints/mute/create.ts @@ -64,12 +64,14 @@ export default define(meta, paramDef, async (ps, user) => { }); // Check if already muting - const exist = await Mutings.findOneBy({ - muterId: muter.id, - muteeId: mutee.id, + const exist = await Mutings.exist({ + where: { + muterId: muter.id, + muteeId: mutee.id, + }, }); - if (exist != null) { + if (exist) { throw new ApiError(meta.errors.alreadyMuting); } diff --git a/packages/backend/src/server/api/endpoints/mute/delete.ts b/packages/backend/src/server/api/endpoints/mute/delete.ts index cc67a44c26..cd00c1a8ab 100644 --- a/packages/backend/src/server/api/endpoints/mute/delete.ts +++ b/packages/backend/src/server/api/endpoints/mute/delete.ts @@ -56,18 +56,18 @@ export default define(meta, paramDef, async (ps, user) => { }); // Check not muting - const exist = await Mutings.findOneBy({ + const muting = await Mutings.findOneBy({ muterId: muter.id, muteeId: mutee.id, }); - if (exist == null) { + if (muting == null) { throw new ApiError(meta.errors.notMuting); } // Delete mute await Mutings.delete({ - id: exist.id, + id: muting.id, }); publishUserEvent(user.id, "unmute", mutee); diff --git a/packages/backend/src/server/api/endpoints/notes/children.ts b/packages/backend/src/server/api/endpoints/notes/children.ts index 9047fcce1d..a35b17a022 100644 --- a/packages/backend/src/server/api/endpoints/notes/children.ts +++ b/packages/backend/src/server/api/endpoints/notes/children.ts @@ -1,4 +1,3 @@ -import { Brackets } from "typeorm"; import { Notes } from "@/models/index.js"; import define from "../../define.js"; import { makePaginationQuery } from "../../common/make-pagination-query.js"; @@ -11,6 +10,7 @@ export const meta = { requireCredential: false, requireCredentialPrivateMode: true, + description: "Get threaded/chained replies to a note", res: { type: "array", @@ -23,13 +23,14 @@ export const meta = { ref: "Note", }, }, -}; +} as const; export const paramDef = { type: "object", properties: { noteId: { type: "string", format: "misskey:id" }, limit: { type: "integer", minimum: 1, maximum: 100, default: 10 }, + depth: { type: "integer", minimum: 1, maximum: 100, default: 12 }, sinceId: { type: "string", format: "misskey:id" }, untilId: { type: "string", format: "misskey:id" }, }, diff --git a/packages/backend/src/server/api/endpoints/notes/conversation.ts b/packages/backend/src/server/api/endpoints/notes/conversation.ts index 2e8f5ef73b..c74da2ec71 100644 --- a/packages/backend/src/server/api/endpoints/notes/conversation.ts +++ b/packages/backend/src/server/api/endpoints/notes/conversation.ts @@ -9,6 +9,7 @@ export const meta = { requireCredential: false, requireCredentialPrivateMode: true, + description: "Get conversation of a note thread/chain by a reply", res: { type: "array", @@ -34,7 +35,11 @@ export const meta = { export const paramDef = { type: "object", properties: { - noteId: { type: "string", format: "misskey:id" }, + noteId: { + type: "string", + format: "misskey:id", + description: "Should be a reply", + }, limit: { type: "integer", minimum: 1, maximum: 100, default: 10 }, offset: { type: "integer", default: 0 }, }, @@ -51,7 +56,7 @@ export default define(meta, paramDef, async (ps, user) => { const conversation: Note[] = []; let i = 0; - async function get(id: any) { + async function get(id: string) { i++; const p = await getNote(id, user).catch((e) => { if (e.id === "9725d0ce-ba28-4dde-95a7-2cbb2c15de24") return null; @@ -60,7 +65,7 @@ export default define(meta, paramDef, async (ps, user) => { if (p == null) return; - if (i > ps.offset!) { + if (i > ps.offset) { conversation.push(p); } diff --git a/packages/backend/src/server/api/endpoints/notes/create.ts b/packages/backend/src/server/api/endpoints/notes/create.ts index 41b8ab9796..542f617b30 100644 --- a/packages/backend/src/server/api/endpoints/notes/create.ts +++ b/packages/backend/src/server/api/endpoints/notes/create.ts @@ -52,7 +52,7 @@ export const meta = { }, cannotReRenote: { - message: "You can not Renote a pure Renote.", + message: "You cannot Renote a pure Renote.", code: "CANNOT_RENOTE_TO_A_PURE_RENOTE", id: "fd4cc33e-2a37-48dd-99cc-9b806eb2031a", }, @@ -64,7 +64,7 @@ export const meta = { }, cannotReplyToPureRenote: { - message: "You can not reply to a pure Renote.", + message: "You cannot reply to a pure Renote.", code: "CANNOT_REPLY_TO_A_PURE_RENOTE", id: "3ac74a84-8fd5-4bb0-870f-01804f82ce15", }, @@ -224,11 +224,13 @@ export default define(meta, paramDef, async (ps, user) => { // Check blocking if (renote.userId !== user.id) { - const block = await Blockings.findOneBy({ - blockerId: renote.userId, - blockeeId: user.id, + const isBlocked = await Blockings.exist({ + where: { + blockerId: renote.userId, + blockeeId: user.id, + }, }); - if (block) { + if (isBlocked) { throw new ApiError(meta.errors.youHaveBeenBlocked); } } @@ -249,11 +251,13 @@ export default define(meta, paramDef, async (ps, user) => { // Check blocking if (reply.userId !== user.id) { - const block = await Blockings.findOneBy({ - blockerId: reply.userId, - blockeeId: user.id, + const isBlocked = await Blockings.exist({ + where: { + blockerId: reply.userId, + blockeeId: user.id, + }, }); - if (block) { + if (isBlocked) { throw new ApiError(meta.errors.youHaveBeenBlocked); } } diff --git a/packages/backend/src/server/api/endpoints/notes/edit.ts b/packages/backend/src/server/api/endpoints/notes/edit.ts index 70c5ceffb4..8daf44b48f 100644 --- a/packages/backend/src/server/api/endpoints/notes/edit.ts +++ b/packages/backend/src/server/api/endpoints/notes/edit.ts @@ -70,7 +70,7 @@ export const meta = { }, cannotReRenote: { - message: "You can not Renote a pure Renote.", + message: "You cannot Renote a pure Renote.", code: "CANNOT_RENOTE_TO_A_PURE_RENOTE", id: "fd4cc33e-2a37-48dd-99cc-9b806eb2031a", }, @@ -82,7 +82,7 @@ export const meta = { }, cannotReplyToPureRenote: { - message: "You can not reply to a pure Renote.", + message: "You cannot reply to a pure Renote.", code: "CANNOT_REPLY_TO_A_PURE_RENOTE", id: "3ac74a84-8fd5-4bb0-870f-01804f82ce15", }, @@ -130,7 +130,7 @@ export const meta = { }, cannotPrivateRenote: { - message: "You can not perform a private renote.", + message: "You cannot perform a private renote.", code: "CANNOT_PRIVATE_RENOTE", id: "19a50f1c-84fa-4e33-81d3-17834ccc0ad8", }, @@ -140,6 +140,18 @@ export const meta = { code: "NOT_LOCAL_USER", id: "b907f407-2aa0-4283-800b-a2c56290b822", }, + + cannotChangeVisibility: { + message: "You cannot change the visibility of a note.", + code: "CANNOT_CHANGE_VISIBILITY", + id: "2917fd0b-da04-41de-949f-146835a006c6", + }, + + cannotQuoteOwnNote: { + message: "You cannot quote your own note.", + code: "CANNOT_QUOTE_OWN_NOTE", + id: "070eee98-5f8a-4eca-9dc0-830b4d4e52ac", + }, }, } as const; @@ -268,6 +280,10 @@ export default define(meta, paramDef, async (ps, user) => { throw e; }); + if (ps.renoteId === note.id) { + throw new ApiError(meta.errors.cannotQuoteOwnNote); + } + if (renote.renoteId && !renote.text && !renote.fileIds && !renote.hasPoll) { throw new ApiError(meta.errors.cannotReRenote); } @@ -523,7 +539,8 @@ export default define(meta, paramDef, async (ps, user) => { update.cw = null; } if (ps.visibility !== note.visibility) { - update.visibility = ps.visibility; + // update.visibility = ps.visibility; + throw new ApiError(meta.errors.cannotChangeVisibility); } if (ps.localOnly !== note.localOnly) { update.localOnly = ps.localOnly; @@ -591,7 +608,7 @@ export default define(meta, paramDef, async (ps, user) => { throw new ApiError(meta.errors.noSuchNote); } - if (publishing) { + if (publishing && user.isIndexable) { index(note, true); // Publish update event for the updated note details diff --git a/packages/backend/src/server/api/endpoints/notes/favorites/create.ts b/packages/backend/src/server/api/endpoints/notes/favorites/create.ts index 835594f03a..64862a3733 100644 --- a/packages/backend/src/server/api/endpoints/notes/favorites/create.ts +++ b/packages/backend/src/server/api/endpoints/notes/favorites/create.ts @@ -43,12 +43,14 @@ export default define(meta, paramDef, async (ps, user) => { }); // if already favorited - const exist = await NoteFavorites.findOneBy({ - noteId: note.id, - userId: user.id, + const exist = await NoteFavorites.exist({ + where: { + noteId: note.id, + userId: user.id, + }, }); - if (exist != null) { + if (exist) { throw new ApiError(meta.errors.alreadyFavorited); } diff --git a/packages/backend/src/server/api/endpoints/notes/favorites/delete.ts b/packages/backend/src/server/api/endpoints/notes/favorites/delete.ts index 9a09767482..e05d04a969 100644 --- a/packages/backend/src/server/api/endpoints/notes/favorites/delete.ts +++ b/packages/backend/src/server/api/endpoints/notes/favorites/delete.ts @@ -42,15 +42,15 @@ export default define(meta, paramDef, async (ps, user) => { }); // if already favorited - const exist = await NoteFavorites.findOneBy({ + const favorite = await NoteFavorites.findOneBy({ noteId: note.id, userId: user.id, }); - if (exist == null) { + if (favorite == null) { throw new ApiError(meta.errors.notFavorited); } // Delete favorite - await NoteFavorites.delete(exist.id); + await NoteFavorites.delete(favorite.id); }); diff --git a/packages/backend/src/server/api/endpoints/notes/search.ts b/packages/backend/src/server/api/endpoints/notes/search.ts index b4d83aa0bc..8c5798b62d 100644 --- a/packages/backend/src/server/api/endpoints/notes/search.ts +++ b/packages/backend/src/server/api/endpoints/notes/search.ts @@ -1,4 +1,4 @@ -import { In } from "typeorm"; +import { FindManyOptions, In } from "typeorm"; import { Notes } from "@/models/index.js"; import { Note } from "@/models/entities/note.js"; import config from "@/config/index.js"; @@ -58,6 +58,11 @@ export const paramDef = { nullable: true, default: null, }, + order: { + type: "string", + default: "chronological", + nullable: true, + }, }, required: ["query"], } as const; @@ -80,6 +85,7 @@ export default define(meta, paramDef, async (ps, me) => { query .andWhere("note.text ILIKE :q", { q: `%${sqlLikeEscape(ps.query)}%` }) + .andWhere("note.visibility = 'public'") .innerJoinAndSelect("note.user", "user") .leftJoinAndSelect("user.avatar", "avatar") .leftJoinAndSelect("user.banner", "banner") @@ -156,9 +162,6 @@ export default define(meta, paramDef, async (ps, me) => { where: { id: In(chunk), }, - order: { - id: "DESC", - }, }); // The notes are checked for visibility and muted/blocked users when packed @@ -175,19 +178,31 @@ export default define(meta, paramDef, async (ps, me) => { } else if (meilisearch) { let start = 0; const chunkSize = 100; + const sortByDate = ps.order !== "relevancy"; + + type NoteResult = { + id: string; + createdAt: number; + }; + const extractedNotes: NoteResult[] = []; - // Use meilisearch to fetch and step through all search results that could match the requirements - const ids = []; while (true) { - const results = await meilisearch.search(ps.query, chunkSize, start, me); + const searchRes = await meilisearch.search( + ps.query, + chunkSize, + start, + me, + sortByDate ? "createdAt:desc" : null, + ); + const results: MeilisearchNote[] = searchRes.hits as MeilisearchNote[]; start += chunkSize; - if (results.hits.length === 0) { + if (results.length === 0) { break; } - const res = results.hits + const res = results .filter((key: MeilisearchNote) => { if (ps.userId && key.userId !== ps.userId) { return false; @@ -203,34 +218,45 @@ export default define(meta, paramDef, async (ps, me) => { } return true; }) - .map((key) => key.id); + .map((key) => { + return { + id: key.id, + createdAt: key.createdAt, + }; + }); - ids.push(...res); + extractedNotes.push(...res); } - // Sort all the results by note id DESC (newest first) - ids.sort((a, b) => b - a); - // Fetch the notes from the database until we have enough to satisfy the limit start = 0; const found = []; - while (found.length < ps.limit && start < ids.length) { - const chunk = ids.slice(start, start + chunkSize); - const notes: Note[] = await Notes.find({ + const noteIDs = extractedNotes.map((note) => note.id); + + // Index the ID => index number into a map, so we can restore the array ordering efficiently later + const idIndexMap = new Map(noteIDs.map((id, index) => [id, index])); + + while (found.length < ps.limit && start < noteIDs.length) { + const chunk = noteIDs.slice(start, start + chunkSize); + + let query: FindManyOptions = { where: { id: In(chunk), }, - order: { - id: "DESC", - }, - }); + }; + + const notes: Note[] = await Notes.find(query); + + // Re-order the note result according to the noteIDs array (cannot be undefined, we map this earlier) + // @ts-ignore + notes.sort((a, b) => idIndexMap.get(a.id) - idIndexMap.get(b.id)); // The notes are checked for visibility and muted/blocked users when packed found.push(...(await Notes.packMany(notes, me))); start += chunkSize; } - // If we have more results than the limit, trim them + // If we have more results than the limit, trim the results down if (found.length > ps.limit) { found.length = ps.limit; } diff --git a/packages/backend/src/server/api/endpoints/notes/show.ts b/packages/backend/src/server/api/endpoints/notes/show.ts index 39d128134f..8c5f91c5c1 100644 --- a/packages/backend/src/server/api/endpoints/notes/show.ts +++ b/packages/backend/src/server/api/endpoints/notes/show.ts @@ -21,6 +21,7 @@ export const meta = { message: "No such note.", code: "NO_SUCH_NOTE", id: "24fcbfc6-2e37-42b6-8388-c29b3861a08d", + httpStatusCode: 404, }, }, } as const; diff --git a/packages/backend/src/server/api/endpoints/notes/timeline.ts b/packages/backend/src/server/api/endpoints/notes/timeline.ts index d629deebb6..56243977f8 100644 --- a/packages/backend/src/server/api/endpoints/notes/timeline.ts +++ b/packages/backend/src/server/api/endpoints/notes/timeline.ts @@ -87,8 +87,12 @@ export default define(meta, paramDef, async (ps, user) => { .andWhere( new Brackets((qb) => { qb.where("note.userId = :meId", { meId: user.id }); - if (hasFollowing) - qb.orWhere(`note.userId IN (${followingQuery.getQuery()})`); + if (hasFollowing) { + qb.orWhere( + `note.userId IN (${followingQuery.getQuery()})`, + followingQuery.getParameters(), + ); + } }), ) .innerJoinAndSelect("note.user", "user") diff --git a/packages/backend/src/server/api/endpoints/notes/translate.ts b/packages/backend/src/server/api/endpoints/notes/translate.ts index d86fc12a2e..1e90fb617e 100644 --- a/packages/backend/src/server/api/endpoints/notes/translate.ts +++ b/packages/backend/src/server/api/endpoints/notes/translate.ts @@ -1,9 +1,9 @@ import { URLSearchParams } from "node:url"; import fetch from "node-fetch"; import config from "@/config/index.js"; +import { Converter } from "opencc-js"; import { getAgentByUrl } from "@/misc/fetch.js"; import { fetchMeta } from "@/misc/fetch-meta.js"; -import { Notes } from "@/models/index.js"; import { ApiError } from "../../error.js"; import { getNote } from "../../common/getters.js"; import define from "../../define.js"; @@ -11,7 +11,7 @@ import define from "../../define.js"; export const meta = { tags: ["notes"], - requireCredential: false, + requireCredential: true, requireCredentialPrivateMode: true, res: { @@ -38,6 +38,13 @@ export const paramDef = { required: ["noteId", "targetLang"], } as const; +function convertChinese(convert: boolean, src: string) { + if (!convert) return src; + + const converter = Converter({ from: "cn", to: "twp" }); + return converter(src); +} + export default define(meta, paramDef, async (ps, user) => { const note = await getNote(ps.noteId, user).catch((err) => { if (err.id === "9725d0ce-ba28-4dde-95a7-2cbb2c15de24") @@ -93,7 +100,7 @@ export default define(meta, paramDef, async (ps, user) => { return { sourceLang: json.detectedLanguage?.language, - text: json.translatedText, + text: convertChinese(ps.targetLang === "zh-TW", json.translatedText), }; } @@ -128,6 +135,6 @@ export default define(meta, paramDef, async (ps, user) => { return { sourceLang: json.translations[0].detected_source_language, - text: json.translations[0].text, + text: convertChinese(ps.targetLang === "zh-TW", json.translations[0].text), }; }); diff --git a/packages/backend/src/server/api/endpoints/pages/like.ts b/packages/backend/src/server/api/endpoints/pages/like.ts index f14ed39eb0..03482c9616 100644 --- a/packages/backend/src/server/api/endpoints/pages/like.ts +++ b/packages/backend/src/server/api/endpoints/pages/like.ts @@ -40,12 +40,14 @@ export default define(meta, paramDef, async (ps, user) => { } // if already liked - const exist = await PageLikes.findOneBy({ - pageId: page.id, - userId: user.id, + const exist = await PageLikes.exist({ + where: { + pageId: page.id, + userId: user.id, + }, }); - if (exist != null) { + if (exist) { throw new ApiError(meta.errors.alreadyLiked); } diff --git a/packages/backend/src/server/api/endpoints/pages/unlike.ts b/packages/backend/src/server/api/endpoints/pages/unlike.ts index 07bf3fbf48..e607d7a546 100644 --- a/packages/backend/src/server/api/endpoints/pages/unlike.ts +++ b/packages/backend/src/server/api/endpoints/pages/unlike.ts @@ -38,17 +38,17 @@ export default define(meta, paramDef, async (ps, user) => { throw new ApiError(meta.errors.noSuchPage); } - const exist = await PageLikes.findOneBy({ + const like = await PageLikes.findOneBy({ pageId: page.id, userId: user.id, }); - if (exist == null) { + if (like == null) { throw new ApiError(meta.errors.notLiked); } // Delete like - await PageLikes.delete(exist.id); + await PageLikes.delete(like.id); Pages.decrement({ id: page.id }, "likedCount", 1); }); diff --git a/packages/backend/src/server/api/endpoints/patrons.ts b/packages/backend/src/server/api/endpoints/patrons.ts index 696d0e3383..d4793e1b94 100644 --- a/packages/backend/src/server/api/endpoints/patrons.ts +++ b/packages/backend/src/server/api/endpoints/patrons.ts @@ -9,7 +9,7 @@ const _dirname = dirname(_filename); export const meta = { tags: ["meta"], - description: "Get list of Calckey patrons from Codeberg", + description: "Get Firefish patrons", requireCredential: false, requireCredentialPrivateMode: false, @@ -36,7 +36,7 @@ export default define(meta, paramDef, async (ps) => { }; patrons = await fetch( - "https://codeberg.org/calckey/calckey/raw/branch/develop/patrons.json", + "https://git.joinfirefish.org/firefish/firefish/-/raw/develop/patrons.json", { signal: AbortSignal.timeout(2000) }, ) .then((response) => response.json()) @@ -51,6 +51,8 @@ export default define(meta, paramDef, async (ps) => { }); await redisClient.set("patrons", JSON.stringify(patrons), "EX", 3600); } - - return patrons["patrons"]; + return { + patrons: patrons["patrons"], + sponsors: patrons["sponsors"], + }; }); diff --git a/packages/backend/src/server/api/endpoints/promo/read.ts b/packages/backend/src/server/api/endpoints/promo/read.ts index 09c8cb6fab..5310382a43 100644 --- a/packages/backend/src/server/api/endpoints/promo/read.ts +++ b/packages/backend/src/server/api/endpoints/promo/read.ts @@ -33,12 +33,14 @@ export default define(meta, paramDef, async (ps, user) => { throw err; }); - const exist = await PromoReads.findOneBy({ - noteId: note.id, - userId: user.id, + const exist = await PromoReads.exist({ + where: { + noteId: note.id, + userId: user.id, + }, }); - if (exist != null) { + if (exist) { return; } diff --git a/packages/backend/src/server/api/endpoints/release.ts b/packages/backend/src/server/api/endpoints/release.ts index e5ebbb79a6..bce1bc082c 100644 --- a/packages/backend/src/server/api/endpoints/release.ts +++ b/packages/backend/src/server/api/endpoints/release.ts @@ -18,7 +18,7 @@ export default define(meta, paramDef, async () => { let release; await fetch( - "https://codeberg.org/calckey/calckey/raw/branch/develop/release.json", + "https://git.joinfirefish.org/firefish/firefish/-/raw/develop/release.json", ) .then((response) => response.json()) .then((data) => { diff --git a/packages/backend/src/server/api/endpoints/renote-mute/create.ts b/packages/backend/src/server/api/endpoints/renote-mute/create.ts index 857cbd9756..f09f197c01 100644 --- a/packages/backend/src/server/api/endpoints/renote-mute/create.ts +++ b/packages/backend/src/server/api/endpoints/renote-mute/create.ts @@ -47,12 +47,14 @@ export default define(meta, paramDef, async (ps, user) => { }); // Check if already muting - const exist = await RenoteMutings.findOneBy({ - muterId: muter.id, - muteeId: mutee.id, + const exist = await RenoteMutings.exist({ + where: { + muterId: muter.id, + muteeId: mutee.id, + }, }); - if (exist != null) { + if (exist) { throw new ApiError(meta.errors.alreadyMuting); } diff --git a/packages/backend/src/server/api/endpoints/renote-mute/delete.ts b/packages/backend/src/server/api/endpoints/renote-mute/delete.ts index fb4c972af0..7a898141c3 100644 --- a/packages/backend/src/server/api/endpoints/renote-mute/delete.ts +++ b/packages/backend/src/server/api/endpoints/renote-mute/delete.ts @@ -45,18 +45,18 @@ export default define(meta, paramDef, async (ps, user) => { }); // Check not muting - const exist = await RenoteMutings.findOneBy({ + const muting = await RenoteMutings.findOneBy({ muterId: muter.id, muteeId: mutee.id, }); - if (exist == null) { + if (muting == null) { throw new ApiError(meta.errors.notMuting); } // Delete mute await RenoteMutings.delete({ - id: exist.id, + id: muting.id, }); // publishUserEvent(user.id, "unmute", mutee); diff --git a/packages/backend/src/server/api/endpoints/sw/register.ts b/packages/backend/src/server/api/endpoints/sw/register.ts index 41be4bf74a..6268ae26d7 100644 --- a/packages/backend/src/server/api/endpoints/sw/register.ts +++ b/packages/backend/src/server/api/endpoints/sw/register.ts @@ -57,8 +57,7 @@ export const paramDef = { } as const; export default define(meta, paramDef, async (ps, me) => { - // if already subscribed - const exist = await SwSubscriptions.findOneBy({ + const subscription = await SwSubscriptions.findOneBy({ userId: me.id, endpoint: ps.endpoint, auth: ps.auth, @@ -67,13 +66,14 @@ export default define(meta, paramDef, async (ps, me) => { const instance = await fetchMeta(true); - if (exist != null) { + // if already subscribed + if (subscription != null) { return { state: "already-subscribed" as const, key: instance.swPublicKey, userId: me.id, - endpoint: exist.endpoint, - sendReadMessage: exist.sendReadMessage, + endpoint: subscription.endpoint, + sendReadMessage: subscription.sendReadMessage, }; } diff --git a/packages/backend/src/server/api/endpoints/sw/show-registration.ts b/packages/backend/src/server/api/endpoints/sw/show-registration.ts index c7a9609cff..3ccb7de948 100644 --- a/packages/backend/src/server/api/endpoints/sw/show-registration.ts +++ b/packages/backend/src/server/api/endpoints/sw/show-registration.ts @@ -42,16 +42,16 @@ export const paramDef = { // eslint-disable-next-line import/no-default-export export default define(meta, paramDef, async (ps, me) => { - const exist = await SwSubscriptions.findOneBy({ + const subscription = await SwSubscriptions.findOneBy({ userId: me.id, endpoint: ps.endpoint, }); - if (exist != null) { + if (subscription != null) { return { - userId: exist.userId, - endpoint: exist.endpoint, - sendReadMessage: exist.sendReadMessage, + userId: subscription.userId, + endpoint: subscription.endpoint, + sendReadMessage: subscription.sendReadMessage, }; } diff --git a/packages/backend/src/server/api/endpoints/users/followers.ts b/packages/backend/src/server/api/endpoints/users/followers.ts index 855ab35736..31719bad32 100644 --- a/packages/backend/src/server/api/endpoints/users/followers.ts +++ b/packages/backend/src/server/api/endpoints/users/followers.ts @@ -98,11 +98,13 @@ export default define(meta, paramDef, async (ps, me) => { if (me == null) { throw new ApiError(meta.errors.forbidden); } else if (me.id !== user.id) { - const following = await Followings.findOneBy({ - followeeId: user.id, - followerId: me.id, + const isFollowed = await Followings.exist({ + where: { + followeeId: user.id, + followerId: me.id, + }, }); - if (following == null) { + if (!isFollowed) { throw new ApiError(meta.errors.nullFollowers); } } diff --git a/packages/backend/src/server/api/endpoints/users/following.ts b/packages/backend/src/server/api/endpoints/users/following.ts index 37d69b048b..1c1da0e117 100644 --- a/packages/backend/src/server/api/endpoints/users/following.ts +++ b/packages/backend/src/server/api/endpoints/users/following.ts @@ -97,11 +97,13 @@ export default define(meta, paramDef, async (ps, me) => { if (me == null) { throw new ApiError(meta.errors.forbidden); } else if (me.id !== user.id) { - const following = await Followings.findOneBy({ - followeeId: user.id, - followerId: me.id, + const isFollowing = await Followings.exist({ + where: { + followeeId: user.id, + followerId: me.id, + }, }); - if (following == null) { + if (!isFollowing) { throw new ApiError(meta.errors.cannot_find); } } diff --git a/packages/backend/src/server/api/endpoints/users/groups/leave.ts b/packages/backend/src/server/api/endpoints/users/groups/leave.ts index d963b1826e..fac0a47fc5 100644 --- a/packages/backend/src/server/api/endpoints/users/groups/leave.ts +++ b/packages/backend/src/server/api/endpoints/users/groups/leave.ts @@ -10,7 +10,7 @@ export const meta = { kind: "write:user-groups", description: - "Leave a group. The owner of a group can not leave. They must transfer ownership or delete the group instead.", + "Leave a group. The owner of a group cannot leave. They must transfer ownership or delete the group instead.", errors: { noSuchGroup: { diff --git a/packages/backend/src/server/api/endpoints/users/groups/pull.ts b/packages/backend/src/server/api/endpoints/users/groups/pull.ts index 1f79a2d2b7..ce294b8c86 100644 --- a/packages/backend/src/server/api/endpoints/users/groups/pull.ts +++ b/packages/backend/src/server/api/endpoints/users/groups/pull.ts @@ -11,7 +11,7 @@ export const meta = { kind: "write:user-groups", description: - "Removes a specified user from a group. The owner can not be removed.", + "Removes a specified user from a group. The owner cannot be removed.", errors: { noSuchGroup: { diff --git a/packages/backend/src/server/api/endpoints/users/lists/push.ts b/packages/backend/src/server/api/endpoints/users/lists/push.ts index a14195bbc3..899754aafb 100644 --- a/packages/backend/src/server/api/endpoints/users/lists/push.ts +++ b/packages/backend/src/server/api/endpoints/users/lists/push.ts @@ -57,7 +57,7 @@ export default define(meta, paramDef, async (ps, me) => { userId: me.id, }); - if (userList == null) { + if (!userList) { throw new ApiError(meta.errors.noSuchList); } @@ -70,18 +70,22 @@ export default define(meta, paramDef, async (ps, me) => { // Check blocking if (user.id !== me.id) { - const block = await Blockings.findOneBy({ - blockerId: user.id, - blockeeId: me.id, + const isBlocked = await Blockings.exist({ + where: { + blockerId: user.id, + blockeeId: me.id, + }, }); - if (block) { + if (isBlocked) { throw new ApiError(meta.errors.youHaveBeenBlocked); } } - const exist = await UserListJoinings.findOneBy({ - userListId: userList.id, - userId: user.id, + const exist = await UserListJoinings.exist({ + where: { + userListId: ps.listId, + userId: user.id, + }, }); if (exist) { diff --git a/packages/backend/src/server/api/endpoints/users/lists/show.ts b/packages/backend/src/server/api/endpoints/users/lists/show.ts index 716fd405dc..cb4893b0e4 100644 --- a/packages/backend/src/server/api/endpoints/users/lists/show.ts +++ b/packages/backend/src/server/api/endpoints/users/lists/show.ts @@ -42,7 +42,7 @@ export default define(meta, paramDef, async (ps, me) => { userId: me.id, }); - if (userList == null) { + if (!userList) { throw new ApiError(meta.errors.noSuchList); } diff --git a/packages/backend/src/server/api/endpoints/users/report-abuse.ts b/packages/backend/src/server/api/endpoints/users/report-abuse.ts index 44d3f9b500..1368f9e2b9 100644 --- a/packages/backend/src/server/api/endpoints/users/report-abuse.ts +++ b/packages/backend/src/server/api/endpoints/users/report-abuse.ts @@ -1,12 +1,14 @@ -import * as sanitizeHtml from "sanitize-html"; +import * as mfm from "mfm-js"; +import sanitizeHtml from "sanitize-html"; import { publishAdminStream } from "@/services/stream.js"; -import { AbuseUserReports, Users } from "@/models/index.js"; +import { AbuseUserReports, UserProfiles, Users } from "@/models/index.js"; import { genId } from "@/misc/gen-id.js"; import { sendEmail } from "@/services/send-email.js"; import { fetchMeta } from "@/misc/fetch-meta.js"; import { getUser } from "../../common/getters.js"; import { ApiError } from "../../error.js"; import define from "../../define.js"; +import { toHtml } from "@/mfm/to-html.js"; export const meta = { tags: ["users"], @@ -84,6 +86,7 @@ export default define(meta, paramDef, async (ps, me) => { ], }); + const meta = await fetchMeta(); for (const moderator of moderators) { publishAdminStream(moderator.id, "newAbuseUserReport", { id: report.id, @@ -91,16 +94,16 @@ export default define(meta, paramDef, async (ps, me) => { reporterId: report.reporterId, comment: report.comment, }); - } - const meta = await fetchMeta(); - if (meta.email) { - sendEmail( - meta.email, - "New abuse report", - sanitizeHtml(ps.comment), - sanitizeHtml(ps.comment), - ); + const profile = await UserProfiles.findOneBy({ userId: moderator.id }); + if (profile?.email) { + sendEmail( + profile.email, + "New abuse report", + sanitizeHtml(toHtml(mfm.parse(ps.comment))!), + sanitizeHtml(toHtml(mfm.parse(ps.comment))!), + ); + } } }); }); diff --git a/packages/backend/src/server/api/mastodon/ApiMastodonCompatibleService.ts b/packages/backend/src/server/api/mastodon/ApiMastodonCompatibleService.ts index 753f73ead5..44485ac429 100644 --- a/packages/backend/src/server/api/mastodon/ApiMastodonCompatibleService.ts +++ b/packages/backend/src/server/api/mastodon/ApiMastodonCompatibleService.ts @@ -8,8 +8,14 @@ import { apiTimelineMastodon } from "./endpoints/timeline.js"; import { apiNotificationsMastodon } from "./endpoints/notifications.js"; import { apiSearchMastodon } from "./endpoints/search.js"; import { getInstance } from "./endpoints/meta.js"; -import { convertAnnouncement, convertFilter } from "./converters.js"; +import { + convertAccount, + convertAnnouncement, + convertFilter, +} from "./converters.js"; import { convertId, IdType } from "../index.js"; +import { Users } from "@/models/index.js"; +import { IsNull } from "typeorm"; export function getClient( BASE_URL: string, @@ -52,7 +58,20 @@ export function apiMastodonCompatible(router: Router): void { // displayed without being logged in try { const data = await client.getInstance(); - ctx.body = await getInstance(data.data); + const admin = await Users.findOne({ + where: { + host: IsNull(), + isAdmin: true, + isDeleted: false, + isSuspended: false, + }, + order: { id: "ASC" }, + }); + const contact = + admin == null + ? null + : convertAccount((await client.getAccount(admin.id)).data); + ctx.body = await getInstance(data.data, contact); } catch (e: any) { console.error(e); ctx.status = 401; @@ -84,7 +103,7 @@ export function apiMastodonCompatible(router: Router): void { const client = getClient(BASE_URL, accessTokens); try { const data = await client.dismissInstanceAnnouncement( - convertId(ctx.params.id, IdType.CalckeyId), + convertId(ctx.params.id, IdType.FirefishId), ); ctx.body = data.data; } catch (e: any) { diff --git a/packages/backend/src/server/api/mastodon/converters.ts b/packages/backend/src/server/api/mastodon/converters.ts index cbaf5287f6..6469d9c97b 100644 --- a/packages/backend/src/server/api/mastodon/converters.ts +++ b/packages/backend/src/server/api/mastodon/converters.ts @@ -32,12 +32,20 @@ export function convertNotification(notification: Entity.Notification) { notification.id = convertId(notification.id, IdType.MastodonId); if (notification.status) notification.status = convertStatus(notification.status); + if (notification.reaction) + notification.reaction = convertReaction(notification.reaction); return notification; } export function convertPoll(poll: Entity.Poll) { return simpleConvert(poll); } +export function convertReaction(reaction: Entity.Reaction) { + if (reaction.accounts) { + reaction.accounts = reaction.accounts.map(convertAccount); + } + return reaction; +} export function convertRelationship(relationship: Entity.Relationship) { return simpleConvert(relationship); } @@ -61,6 +69,18 @@ export function convertStatus(status: Entity.Status) { })); if (status.poll) status.poll = convertPoll(status.poll); if (status.reblog) status.reblog = convertStatus(status.reblog); + if (status.quote) status.quote = convertStatus(status.quote); + status.reactions = status.reactions.map(convertReaction); return status; } + +export function convertConversation(conversation: Entity.Conversation) { + conversation.id = convertId(conversation.id, IdType.MastodonId); + conversation.accounts = conversation.accounts.map(convertAccount); + if (conversation.last_status) { + conversation.last_status = convertStatus(conversation.last_status); + } + + return conversation; +} diff --git a/packages/backend/src/server/api/mastodon/endpoints/account.ts b/packages/backend/src/server/api/mastodon/endpoints/account.ts index 5d0abdedd6..36548cd3b2 100644 --- a/packages/backend/src/server/api/mastodon/endpoints/account.ts +++ b/packages/backend/src/server/api/mastodon/endpoints/account.ts @@ -114,7 +114,7 @@ export function apiAccountMastodon(router: Router): void { let reqIds = []; for (let i = 0; i < ids.length; i++) { - reqIds.push(convertId(ids[i], IdType.CalckeyId)); + reqIds.push(convertId(ids[i], IdType.FirefishId)); } const data = await client.getRelationships(reqIds); @@ -135,7 +135,7 @@ export function apiAccountMastodon(router: Router): void { const accessTokens = ctx.headers.authorization; const client = getClient(BASE_URL, accessTokens); try { - const calcId = convertId(ctx.params.id, IdType.CalckeyId); + const calcId = convertId(ctx.params.id, IdType.FirefishId); const data = await client.getAccount(calcId); ctx.body = convertAccount(data.data); } catch (e: any) { @@ -153,7 +153,7 @@ export function apiAccountMastodon(router: Router): void { const client = getClient(BASE_URL, accessTokens); try { const data = await client.getAccountStatuses( - convertId(ctx.params.id, IdType.CalckeyId), + convertId(ctx.params.id, IdType.FirefishId), convertTimelinesArgsId(argsToBools(limitToInt(ctx.query as any))), ); ctx.body = data.data.map((status) => convertStatus(status)); @@ -173,7 +173,7 @@ export function apiAccountMastodon(router: Router): void { const client = getClient(BASE_URL, accessTokens); try { const data = await client.getAccountFeaturedTags( - convertId(ctx.params.id, IdType.CalckeyId), + convertId(ctx.params.id, IdType.FirefishId), ); ctx.body = data.data.map((tag) => convertFeaturedTag(tag)); } catch (e: any) { @@ -192,7 +192,7 @@ export function apiAccountMastodon(router: Router): void { const client = getClient(BASE_URL, accessTokens); try { const data = await client.getAccountFollowers( - convertId(ctx.params.id, IdType.CalckeyId), + convertId(ctx.params.id, IdType.FirefishId), convertTimelinesArgsId(limitToInt(ctx.query as any)), ); ctx.body = data.data.map((account) => convertAccount(account)); @@ -212,7 +212,7 @@ export function apiAccountMastodon(router: Router): void { const client = getClient(BASE_URL, accessTokens); try { const data = await client.getAccountFollowing( - convertId(ctx.params.id, IdType.CalckeyId), + convertId(ctx.params.id, IdType.FirefishId), convertTimelinesArgsId(limitToInt(ctx.query as any)), ); ctx.body = data.data.map((account) => convertAccount(account)); @@ -232,7 +232,7 @@ export function apiAccountMastodon(router: Router): void { const client = getClient(BASE_URL, accessTokens); try { const data = await client.getAccountLists( - convertId(ctx.params.id, IdType.CalckeyId), + convertId(ctx.params.id, IdType.FirefishId), ); ctx.body = data.data.map((list) => convertList(list)); } catch (e: any) { @@ -251,7 +251,7 @@ export function apiAccountMastodon(router: Router): void { const client = getClient(BASE_URL, accessTokens); try { const data = await client.followAccount( - convertId(ctx.params.id, IdType.CalckeyId), + convertId(ctx.params.id, IdType.FirefishId), ); let acct = convertRelationship(data.data); acct.following = true; @@ -272,7 +272,7 @@ export function apiAccountMastodon(router: Router): void { const client = getClient(BASE_URL, accessTokens); try { const data = await client.unfollowAccount( - convertId(ctx.params.id, IdType.CalckeyId), + convertId(ctx.params.id, IdType.FirefishId), ); let acct = convertRelationship(data.data); acct.following = false; @@ -293,7 +293,7 @@ export function apiAccountMastodon(router: Router): void { const client = getClient(BASE_URL, accessTokens); try { const data = await client.blockAccount( - convertId(ctx.params.id, IdType.CalckeyId), + convertId(ctx.params.id, IdType.FirefishId), ); ctx.body = convertRelationship(data.data); } catch (e: any) { @@ -331,7 +331,7 @@ export function apiAccountMastodon(router: Router): void { const client = getClient(BASE_URL, accessTokens); try { const data = await client.muteAccount( - convertId(ctx.params.id, IdType.CalckeyId), + convertId(ctx.params.id, IdType.FirefishId), (ctx.request as any).body as any, ); ctx.body = convertRelationship(data.data); @@ -351,7 +351,7 @@ export function apiAccountMastodon(router: Router): void { const client = getClient(BASE_URL, accessTokens); try { const data = await client.unmuteAccount( - convertId(ctx.params.id, IdType.CalckeyId), + convertId(ctx.params.id, IdType.FirefishId), ); ctx.body = convertRelationship(data.data); } catch (e: any) { @@ -478,7 +478,7 @@ export function apiAccountMastodon(router: Router): void { const client = getClient(BASE_URL, accessTokens); try { const data = await client.acceptFollowRequest( - convertId(ctx.params.id, IdType.CalckeyId), + convertId(ctx.params.id, IdType.FirefishId), ); ctx.body = convertRelationship(data.data); } catch (e: any) { @@ -497,7 +497,7 @@ export function apiAccountMastodon(router: Router): void { const client = getClient(BASE_URL, accessTokens); try { const data = await client.rejectFollowRequest( - convertId(ctx.params.id, IdType.CalckeyId), + convertId(ctx.params.id, IdType.FirefishId), ); ctx.body = convertRelationship(data.data); } catch (e: any) { diff --git a/packages/backend/src/server/api/mastodon/endpoints/filter.ts b/packages/backend/src/server/api/mastodon/endpoints/filter.ts index 6daad31b68..e27b7e22ae 100644 --- a/packages/backend/src/server/api/mastodon/endpoints/filter.ts +++ b/packages/backend/src/server/api/mastodon/endpoints/filter.ts @@ -27,7 +27,7 @@ export function apiFilterMastodon(router: Router): void { const body: any = ctx.request.body; try { const data = await client.getFilter( - convertId(ctx.params.id, IdType.CalckeyId), + convertId(ctx.params.id, IdType.FirefishId), ); ctx.body = convertFilter(data.data); } catch (e: any) { @@ -59,7 +59,7 @@ export function apiFilterMastodon(router: Router): void { const body: any = ctx.request.body; try { const data = await client.updateFilter( - convertId(ctx.params.id, IdType.CalckeyId), + convertId(ctx.params.id, IdType.FirefishId), body.phrase, body.context, ); @@ -78,7 +78,7 @@ export function apiFilterMastodon(router: Router): void { const body: any = ctx.request.body; try { const data = await client.deleteFilter( - convertId(ctx.params.id, IdType.CalckeyId), + convertId(ctx.params.id, IdType.FirefishId), ); ctx.body = data.data; } catch (e: any) { diff --git a/packages/backend/src/server/api/mastodon/endpoints/meta.ts b/packages/backend/src/server/api/mastodon/endpoints/meta.ts index 2df4af82a5..c458798d5f 100644 --- a/packages/backend/src/server/api/mastodon/endpoints/meta.ts +++ b/packages/backend/src/server/api/mastodon/endpoints/meta.ts @@ -1,27 +1,28 @@ import { Entity } from "megalodon"; +import config from "@/config/index.js"; import { fetchMeta } from "@/misc/fetch-meta.js"; -import { Users, Notes } from "@/models/index.js"; -import { IsNull, MoreThan } from "typeorm"; +import { MAX_NOTE_TEXT_LENGTH, FILE_TYPE_BROWSERSAFE } from "@/const.js"; -// TODO: add calckey features -export async function getInstance(response: Entity.Instance) { +export async function getInstance( + response: Entity.Instance, + contact: Entity.Account, +) { const meta = await fetchMeta(true); - const totalUsers = Users.count({ where: { host: IsNull() } }); - const totalStatuses = Notes.count({ where: { userHost: IsNull() } }); + return { uri: response.uri, - title: response.title || "Calckey", + title: response.title || "Firefish", short_description: response.description?.substring(0, 50) || "See real server website", description: response.description || - "This is a vanilla Calckey Instance. It doesnt seem to have a description. BTW you are using the Mastodon api to access this server :)", + "This is a vanilla Firefish Instance. It doesn't seem to have a description.", email: response.email || "", - version: "3.0.0 compatible (3.5+ Calckey)", //I hope this version string is correct, we will need to test it. + version: `3.0.0 (compatible; Firefish ${config.version})`, urls: response.urls, stats: { - user_count: await totalUsers, - status_count: await totalStatuses, + user_count: response.stats.user_count, + status_count: response.stats.status_count, domain_count: response.stats.domain_count, }, thumbnail: response.thumbnail || "/static-assets/transparent.png", @@ -34,41 +35,12 @@ export async function getInstance(response: Entity.Instance) { max_featured_tags: 20, }, statuses: { - max_characters: 3000, - max_media_attachments: 4, + max_characters: MAX_NOTE_TEXT_LENGTH, + max_media_attachments: 16, characters_reserved_per_url: response.uri.length, }, media_attachments: { - supported_mime_types: [ - "image/jpeg", - "image/png", - "image/gif", - "image/heic", - "image/heif", - "image/webp", - "image/avif", - "video/webm", - "video/mp4", - "video/quicktime", - "video/ogg", - "audio/wave", - "audio/wav", - "audio/x-wav", - "audio/x-pn-wave", - "audio/vnd.wave", - "audio/ogg", - "audio/vorbis", - "audio/mpeg", - "audio/mp3", - "audio/webm", - "audio/flac", - "audio/aac", - "audio/m4a", - "audio/x-m4a", - "audio/mp4", - "audio/3gpp", - "video/x-ms-asf", - ], + supported_mime_types: FILE_TYPE_BROWSERSAFE, image_size_limit: 10485760, image_matrix_limit: 16777216, video_size_limit: 41943040, @@ -76,36 +48,16 @@ export async function getInstance(response: Entity.Instance) { video_matrix_limit: 2304000, }, polls: { - max_options: 8, + max_options: 10, max_characters_per_option: 50, - min_expiration: 300, + min_expiration: 50, max_expiration: 2629746, }, + reactions: { + max_reactions: 1, + }, }, - contact_account: { - id: "1", - username: "admin", - acct: "admin", - display_name: "admin", - locked: true, - bot: true, - discoverable: false, - group: false, - created_at: new Date().toISOString(), - note: "

Please refer to the original instance for the actual admin contact.

", - url: `${response.uri}/`, - avatar: `${response.uri}/static-assets/badges/info.png`, - avatar_static: `${response.uri}/static-assets/badges/info.png`, - header: "/static-assets/transparent.png", - header_static: "/static-assets/transparent.png", - followers_count: -1, - following_count: 0, - statuses_count: 0, - last_status_at: new Date().toISOString(), - noindex: true, - emojis: [], - fields: [], - }, + contact_account: contact, rules: [], }; } diff --git a/packages/backend/src/server/api/mastodon/endpoints/notifications.ts b/packages/backend/src/server/api/mastodon/endpoints/notifications.ts index 198717d5c2..f0a0bab984 100644 --- a/packages/backend/src/server/api/mastodon/endpoints/notifications.ts +++ b/packages/backend/src/server/api/mastodon/endpoints/notifications.ts @@ -45,7 +45,7 @@ export function apiNotificationsMastodon(router: Router): void { const body: any = ctx.request.body; try { const dataRaw = await client.getNotification( - convertId(ctx.params.id, IdType.CalckeyId), + convertId(ctx.params.id, IdType.FirefishId), ); const data = convertNotification(dataRaw.data); ctx.body = data; @@ -85,7 +85,7 @@ export function apiNotificationsMastodon(router: Router): void { const body: any = ctx.request.body; try { const data = await client.dismissNotification( - convertId(ctx.params.id, IdType.CalckeyId), + convertId(ctx.params.id, IdType.FirefishId), ); ctx.body = data.data; } catch (e: any) { diff --git a/packages/backend/src/server/api/mastodon/endpoints/status.ts b/packages/backend/src/server/api/mastodon/endpoints/status.ts index 76057ef0a2..c3e6946e2f 100644 --- a/packages/backend/src/server/api/mastodon/endpoints/status.ts +++ b/packages/backend/src/server/api/mastodon/endpoints/status.ts @@ -26,7 +26,9 @@ export function apiStatusMastodon(router: Router): void { try { let body: any = ctx.request.body; if (body.in_reply_to_id) - body.in_reply_to_id = convertId(body.in_reply_to_id, IdType.CalckeyId); + body.in_reply_to_id = convertId(body.in_reply_to_id, IdType.FirefishId); + if (body.quote_id) + body.quote_id = convertId(body.quote_id, IdType.FirefishId); if ( (!body.poll && body["poll[options][]"]) || (!body.media_ids && body["media_ids[]"]) @@ -48,7 +50,7 @@ export function apiStatusMastodon(router: Router): void { try { const id = body.in_reply_to_id; const post = await client.getStatus(id); - const react = post.data.emoji_reactions.filter((e) => e.me)[0].name; + const react = post.data.reactions.filter((e) => e.me)[0].name; const data = await client.deleteEmojiReaction(id, react); ctx.body = data.data; } catch (e: any) { @@ -61,12 +63,31 @@ export function apiStatusMastodon(router: Router): void { if (body.media_ids && !body.media_ids.length) body.media_ids = undefined; if (body.media_ids) { body.media_ids = (body.media_ids as string[]).map((p) => - convertId(p, IdType.CalckeyId), + convertId(p, IdType.FirefishId), ); } const { sensitive } = body; body.sensitive = typeof sensitive === "string" ? sensitive === "true" : sensitive; + + if (body.poll) { + if ( + body.poll.expires_in != null && + typeof body.poll.expires_in === "string" + ) + body.poll.expires_in = parseInt(body.poll.expires_in); + if ( + body.poll.multiple != null && + typeof body.poll.multiple === "string" + ) + body.poll.multiple = body.poll.multiple == "true"; + if ( + body.poll.hide_totals != null && + typeof body.poll.hide_totals === "string" + ) + body.poll.hide_totals = body.poll.hide_totals == "true"; + } + const data = await client.postStatus(text, body); ctx.body = convertStatus(data.data); } catch (e: any) { @@ -81,12 +102,12 @@ export function apiStatusMastodon(router: Router): void { const client = getClient(BASE_URL, accessTokens); try { const data = await client.getStatus( - convertId(ctx.params.id, IdType.CalckeyId), + convertId(ctx.params.id, IdType.FirefishId), ); ctx.body = convertStatus(data.data); } catch (e: any) { console.error(e); - ctx.status = 401; + ctx.status = ctx.status == 404 ? 404 : 401; ctx.body = e.response.data; } }); @@ -96,7 +117,7 @@ export function apiStatusMastodon(router: Router): void { const client = getClient(BASE_URL, accessTokens); try { const data = await client.deleteStatus( - convertId(ctx.params.id, IdType.CalckeyId), + convertId(ctx.params.id, IdType.FirefishId), ); ctx.body = data.data; } catch (e: any) { @@ -118,7 +139,7 @@ export function apiStatusMastodon(router: Router): void { const accessTokens = ctx.headers.authorization; const client = getClient(BASE_URL, accessTokens); try { - const id = convertId(ctx.params.id, IdType.CalckeyId); + const id = convertId(ctx.params.id, IdType.FirefishId); const data = await client.getStatusContext( id, convertTimelinesArgsId(limitToInt(ctx.query as any)), @@ -146,7 +167,7 @@ export function apiStatusMastodon(router: Router): void { const client = getClient(BASE_URL, accessTokens); try { const data = await client.getStatusHistory( - convertId(ctx.params.id, IdType.CalckeyId), + convertId(ctx.params.id, IdType.FirefishId), ); ctx.body = data.data.map((account) => convertAccount(account)); } catch (e: any) { @@ -164,7 +185,7 @@ export function apiStatusMastodon(router: Router): void { const client = getClient(BASE_URL, accessTokens); try { const data = await client.getStatusRebloggedBy( - convertId(ctx.params.id, IdType.CalckeyId), + convertId(ctx.params.id, IdType.FirefishId), ); ctx.body = data.data.map((account) => convertAccount(account)); } catch (e: any) { @@ -182,7 +203,7 @@ export function apiStatusMastodon(router: Router): void { const client = getClient(BASE_URL, accessTokens); try { const data = await client.getStatusFavouritedBy( - convertId(ctx.params.id, IdType.CalckeyId), + convertId(ctx.params.id, IdType.FirefishId), ); ctx.body = data.data.map((account) => convertAccount(account)); } catch (e: any) { @@ -201,7 +222,7 @@ export function apiStatusMastodon(router: Router): void { const react = await getFirstReaction(BASE_URL, accessTokens); try { const a = (await client.createEmojiReaction( - convertId(ctx.params.id, IdType.CalckeyId), + convertId(ctx.params.id, IdType.FirefishId), react, )) as any; //const data = await client.favouriteStatus(ctx.params.id) as any; @@ -223,7 +244,7 @@ export function apiStatusMastodon(router: Router): void { const react = await getFirstReaction(BASE_URL, accessTokens); try { const data = await client.deleteEmojiReaction( - convertId(ctx.params.id, IdType.CalckeyId), + convertId(ctx.params.id, IdType.FirefishId), react, ); ctx.body = convertStatus(data.data); @@ -243,7 +264,7 @@ export function apiStatusMastodon(router: Router): void { const client = getClient(BASE_URL, accessTokens); try { const data = await client.reblogStatus( - convertId(ctx.params.id, IdType.CalckeyId), + convertId(ctx.params.id, IdType.FirefishId), ); ctx.body = convertStatus(data.data); } catch (e: any) { @@ -262,7 +283,7 @@ export function apiStatusMastodon(router: Router): void { const client = getClient(BASE_URL, accessTokens); try { const data = await client.unreblogStatus( - convertId(ctx.params.id, IdType.CalckeyId), + convertId(ctx.params.id, IdType.FirefishId), ); ctx.body = convertStatus(data.data); } catch (e: any) { @@ -281,7 +302,7 @@ export function apiStatusMastodon(router: Router): void { const client = getClient(BASE_URL, accessTokens); try { const data = await client.bookmarkStatus( - convertId(ctx.params.id, IdType.CalckeyId), + convertId(ctx.params.id, IdType.FirefishId), ); ctx.body = convertStatus(data.data); } catch (e: any) { @@ -300,7 +321,7 @@ export function apiStatusMastodon(router: Router): void { const client = getClient(BASE_URL, accessTokens); try { const data = await client.unbookmarkStatus( - convertId(ctx.params.id, IdType.CalckeyId), + convertId(ctx.params.id, IdType.FirefishId), ); ctx.body = convertStatus(data.data); } catch (e: any) { @@ -319,7 +340,7 @@ export function apiStatusMastodon(router: Router): void { const client = getClient(BASE_URL, accessTokens); try { const data = await client.pinStatus( - convertId(ctx.params.id, IdType.CalckeyId), + convertId(ctx.params.id, IdType.FirefishId), ); ctx.body = convertStatus(data.data); } catch (e: any) { @@ -338,7 +359,7 @@ export function apiStatusMastodon(router: Router): void { const client = getClient(BASE_URL, accessTokens); try { const data = await client.unpinStatus( - convertId(ctx.params.id, IdType.CalckeyId), + convertId(ctx.params.id, IdType.FirefishId), ); ctx.body = convertStatus(data.data); } catch (e: any) { @@ -348,13 +369,54 @@ export function apiStatusMastodon(router: Router): void { } }, ); + + router.post<{ Params: { id: string; name: string } }>( + "/v1/statuses/:id/react/:name", + async (ctx) => { + const BASE_URL = `${ctx.protocol}://${ctx.hostname}`; + const accessTokens = ctx.headers.authorization; + const client = getClient(BASE_URL, accessTokens); + try { + const data = await client.reactStatus( + convertId(ctx.params.id, IdType.FirefishId), + ctx.params.name, + ); + ctx.body = convertStatus(data.data); + } catch (e: any) { + console.error(e); + ctx.status = 401; + ctx.body = e.response.data; + } + }, + ); + + router.post<{ Params: { id: string; name: string } }>( + "/v1/statuses/:id/unreact/:name", + async (ctx) => { + const BASE_URL = `${ctx.protocol}://${ctx.hostname}`; + const accessTokens = ctx.headers.authorization; + const client = getClient(BASE_URL, accessTokens); + try { + const data = await client.unreactStatus( + convertId(ctx.params.id, IdType.FirefishId), + ctx.params.name, + ); + ctx.body = convertStatus(data.data); + } catch (e: any) { + console.error(e); + ctx.status = 401; + ctx.body = e.response.data; + } + }, + ); + router.get<{ Params: { id: string } }>("/v1/media/:id", async (ctx) => { const BASE_URL = `${ctx.protocol}://${ctx.hostname}`; const accessTokens = ctx.headers.authorization; const client = getClient(BASE_URL, accessTokens); try { const data = await client.getMedia( - convertId(ctx.params.id, IdType.CalckeyId), + convertId(ctx.params.id, IdType.FirefishId), ); ctx.body = convertAttachment(data.data); } catch (e: any) { @@ -369,7 +431,7 @@ export function apiStatusMastodon(router: Router): void { const client = getClient(BASE_URL, accessTokens); try { const data = await client.updateMedia( - convertId(ctx.params.id, IdType.CalckeyId), + convertId(ctx.params.id, IdType.FirefishId), ctx.request.body as any, ); ctx.body = convertAttachment(data.data); @@ -385,7 +447,7 @@ export function apiStatusMastodon(router: Router): void { const client = getClient(BASE_URL, accessTokens); try { const data = await client.getPoll( - convertId(ctx.params.id, IdType.CalckeyId), + convertId(ctx.params.id, IdType.FirefishId), ); ctx.body = convertPoll(data.data); } catch (e: any) { @@ -402,7 +464,7 @@ export function apiStatusMastodon(router: Router): void { const client = getClient(BASE_URL, accessTokens); try { const data = await client.votePoll( - convertId(ctx.params.id, IdType.CalckeyId), + convertId(ctx.params.id, IdType.FirefishId), (ctx.request.body as any).choices, ); ctx.body = convertPoll(data.data); diff --git a/packages/backend/src/server/api/mastodon/endpoints/timeline.ts b/packages/backend/src/server/api/mastodon/endpoints/timeline.ts index efadfe7860..0a4da322d7 100644 --- a/packages/backend/src/server/api/mastodon/endpoints/timeline.ts +++ b/packages/backend/src/server/api/mastodon/endpoints/timeline.ts @@ -1,7 +1,12 @@ import Router from "@koa/router"; import { getClient } from "../ApiMastodonCompatibleService.js"; import { ParsedUrlQuery } from "querystring"; -import { convertAccount, convertList, convertStatus } from "../converters.js"; +import { + convertAccount, + convertConversation, + convertList, + convertStatus, +} from "../converters.js"; import { convertId, IdType } from "../../index.js"; export function limitToInt(q: ParsedUrlQuery) { @@ -18,6 +23,10 @@ export function argsToBools(q: ParsedUrlQuery) { const toBoolean = (value: string) => !["0", "f", "F", "false", "FALSE", "off", "OFF"].includes(value); + // Keys taken from: + // - https://docs.joinmastodon.org/methods/accounts/#statuses + // - https://docs.joinmastodon.org/methods/timelines/#public + // - https://docs.joinmastodon.org/methods/timelines/#tag let object: any = q; if (q.only_media) if (typeof q.only_media === "string") @@ -25,16 +34,23 @@ export function argsToBools(q: ParsedUrlQuery) { if (q.exclude_replies) if (typeof q.exclude_replies === "string") object.exclude_replies = toBoolean(q.exclude_replies); + if (q.exclude_reblogs) + if (typeof q.exclude_reblogs === "string") + object.exclude_reblogs = toBoolean(q.exclude_reblogs); + if (q.pinned) + if (typeof q.pinned === "string") object.pinned = toBoolean(q.pinned); + if (q.local) + if (typeof q.local === "string") object.local = toBoolean(q.local); return q; } export function convertTimelinesArgsId(q: ParsedUrlQuery) { if (typeof q.min_id === "string") - q.min_id = convertId(q.min_id, IdType.CalckeyId); + q.min_id = convertId(q.min_id, IdType.FirefishId); if (typeof q.max_id === "string") - q.max_id = convertId(q.max_id, IdType.CalckeyId); + q.max_id = convertId(q.max_id, IdType.FirefishId); if (typeof q.since_id === "string") - q.since_id = convertId(q.since_id, IdType.CalckeyId); + q.since_id = convertId(q.since_id, IdType.FirefishId); return q; } @@ -105,7 +121,7 @@ export function apiTimelineMastodon(router: Router): void { const client = getClient(BASE_URL, accessTokens); try { const data = await client.getListTimeline( - convertId(ctx.params.listId, IdType.CalckeyId), + convertId(ctx.params.listId, IdType.FirefishId), convertTimelinesArgsId(limitToInt(ctx.query)), ); ctx.body = data.data.map((status) => convertStatus(status)); @@ -125,7 +141,9 @@ export function apiTimelineMastodon(router: Router): void { const data = await client.getConversationTimeline( convertTimelinesArgsId(limitToInt(ctx.query)), ); - ctx.body = data.data; + ctx.body = data.data.map((conversation) => + convertConversation(conversation), + ); } catch (e: any) { console.error(e); console.error(e.response.data); @@ -155,7 +173,7 @@ export function apiTimelineMastodon(router: Router): void { const client = getClient(BASE_URL, accessTokens); try { const data = await client.getList( - convertId(ctx.params.id, IdType.CalckeyId), + convertId(ctx.params.id, IdType.FirefishId), ); ctx.body = convertList(data.data); } catch (e: any) { @@ -188,7 +206,7 @@ export function apiTimelineMastodon(router: Router): void { const client = getClient(BASE_URL, accessTokens); try { const data = await client.updateList( - convertId(ctx.params.id, IdType.CalckeyId), + convertId(ctx.params.id, IdType.FirefishId), (ctx.request.body as any).title, ); ctx.body = convertList(data.data); @@ -208,7 +226,7 @@ export function apiTimelineMastodon(router: Router): void { const client = getClient(BASE_URL, accessTokens); try { const data = await client.deleteList( - convertId(ctx.params.id, IdType.CalckeyId), + convertId(ctx.params.id, IdType.FirefishId), ); ctx.body = data.data; } catch (e: any) { @@ -227,7 +245,7 @@ export function apiTimelineMastodon(router: Router): void { const client = getClient(BASE_URL, accessTokens); try { const data = await client.getAccountsInList( - convertId(ctx.params.id, IdType.CalckeyId), + convertId(ctx.params.id, IdType.FirefishId), convertTimelinesArgsId(ctx.query as any), ); ctx.body = data.data.map((account) => convertAccount(account)); @@ -247,9 +265,9 @@ export function apiTimelineMastodon(router: Router): void { const client = getClient(BASE_URL, accessTokens); try { const data = await client.addAccountsToList( - convertId(ctx.params.id, IdType.CalckeyId), + convertId(ctx.params.id, IdType.FirefishId), (ctx.query.account_ids as string[]).map((id) => - convertId(id, IdType.CalckeyId), + convertId(id, IdType.FirefishId), ), ); ctx.body = data.data; @@ -269,9 +287,9 @@ export function apiTimelineMastodon(router: Router): void { const client = getClient(BASE_URL, accessTokens); try { const data = await client.deleteAccountsFromList( - convertId(ctx.params.id, IdType.CalckeyId), + convertId(ctx.params.id, IdType.FirefishId), (ctx.query.account_ids as string[]).map((id) => - convertId(id, IdType.CalckeyId), + convertId(id, IdType.FirefishId), ), ); ctx.body = data.data; diff --git a/packages/backend/src/server/api/openapi/gen-spec.ts b/packages/backend/src/server/api/openapi/gen-spec.ts index 683ffc6223..ee14f249f0 100644 --- a/packages/backend/src/server/api/openapi/gen-spec.ts +++ b/packages/backend/src/server/api/openapi/gen-spec.ts @@ -9,13 +9,13 @@ export function genOpenapiSpec() { info: { version: "v1", - title: "Calckey API", + title: "Firefish API", "x-logo": { url: "/static-assets/api-doc.png" }, }, externalDocs: { description: "Repository", - url: "https://codeberg.org/calckey/calckey", + url: "https://git.joinfirefish.org/firefish/firefish", }, servers: [ @@ -106,7 +106,7 @@ export function genOpenapiSpec() { description: desc, externalDocs: { description: "Source code", - url: `https://codeberg.org/calckey/calckey/src/branch/develop/packages/backend/src/server/api/endpoints/${endpoint.name}.ts`, + url: `https://git.joinfirefish.org/firefish/firefish/src/branch/develop/packages/backend/src/server/api/endpoints/${endpoint.name}.ts`, }, tags: endpoint.meta.tags || undefined, security, diff --git a/packages/backend/src/server/api/service/discord.ts b/packages/backend/src/server/api/service/discord.ts index 9906d2f7ca..848a70d4a5 100644 --- a/packages/backend/src/server/api/service/discord.ts +++ b/packages/backend/src/server/api/service/discord.ts @@ -18,7 +18,7 @@ function getUserToken(ctx: Koa.BaseContext): string | null { function compareOrigin(ctx: Koa.BaseContext): boolean { function normalizeUrl(url?: string): string { - return url ? (url.endsWith("/") ? url.substr(0, url.length - 1) : url) : ""; + return url ? (url.endsWith("/") ? url.slice(0, url.length - 1) : url) : ""; } const referer = ctx.headers["referer"]; diff --git a/packages/backend/src/server/api/service/github.ts b/packages/backend/src/server/api/service/github.ts index f77c5f795d..fd015fb8ad 100644 --- a/packages/backend/src/server/api/service/github.ts +++ b/packages/backend/src/server/api/service/github.ts @@ -18,7 +18,7 @@ function getUserToken(ctx: Koa.BaseContext): string | null { function compareOrigin(ctx: Koa.BaseContext): boolean { function normalizeUrl(url?: string): string { - return url ? (url.endsWith("/") ? url.substr(0, url.length - 1) : url) : ""; + return url ? (url.endsWith("/") ? url.slice(0, url.length - 1) : url) : ""; } const referer = ctx.headers["referer"]; diff --git a/packages/backend/src/server/api/stream/channels/global-timeline.ts b/packages/backend/src/server/api/stream/channels/global-timeline.ts index 2257be2b8c..f2aca7e3ca 100644 --- a/packages/backend/src/server/api/stream/channels/global-timeline.ts +++ b/packages/backend/src/server/api/stream/channels/global-timeline.ts @@ -23,7 +23,7 @@ export default class extends Channel { return; } - this.withReplies = params.withReplies as boolean; + this.withReplies = params != null ? !!params.withReplies : true; // Subscribe events this.subscriber.on("notesStream", this.onNote); diff --git a/packages/backend/src/server/api/stream/channels/home-timeline.ts b/packages/backend/src/server/api/stream/channels/home-timeline.ts index 47875aeda7..52e2dc2a97 100644 --- a/packages/backend/src/server/api/stream/channels/home-timeline.ts +++ b/packages/backend/src/server/api/stream/channels/home-timeline.ts @@ -16,7 +16,7 @@ export default class extends Channel { } public async init(params: any) { - this.withReplies = params.withReplies as boolean; + this.withReplies = params != null ? !!params.withReplies : true; // Subscribe events this.subscriber.on("notesStream", this.onNote); diff --git a/packages/backend/src/server/api/stream/channels/hybrid-timeline.ts b/packages/backend/src/server/api/stream/channels/hybrid-timeline.ts index 1f1a9b831a..6e2da514f5 100644 --- a/packages/backend/src/server/api/stream/channels/hybrid-timeline.ts +++ b/packages/backend/src/server/api/stream/channels/hybrid-timeline.ts @@ -25,7 +25,7 @@ export default class extends Channel { ) return; - this.withReplies = params.withReplies as boolean; + this.withReplies = params != null ? !!params.withReplies : true; // Subscribe events this.subscriber.on("notesStream", this.onNote); diff --git a/packages/backend/src/server/api/stream/channels/local-timeline.ts b/packages/backend/src/server/api/stream/channels/local-timeline.ts index bd488bdd7d..2cc286b17f 100644 --- a/packages/backend/src/server/api/stream/channels/local-timeline.ts +++ b/packages/backend/src/server/api/stream/channels/local-timeline.ts @@ -22,7 +22,7 @@ export default class extends Channel { return; } - this.withReplies = params.withReplies as boolean; + this.withReplies = params != null ? !!params.withReplies : true; // Subscribe events this.subscriber.on("notesStream", this.onNote); diff --git a/packages/backend/src/server/api/stream/channels/recommended-timeline.ts b/packages/backend/src/server/api/stream/channels/recommended-timeline.ts index 0b78d8b66c..186b120320 100644 --- a/packages/backend/src/server/api/stream/channels/recommended-timeline.ts +++ b/packages/backend/src/server/api/stream/channels/recommended-timeline.ts @@ -25,7 +25,7 @@ export default class extends Channel { ) return; - this.withReplies = params.withReplies as boolean; + this.withReplies = params != null ? !!params.withReplies : true; // Subscribe events this.subscriber.on("notesStream", this.onNote); diff --git a/packages/backend/src/server/api/stream/channels/user-list.ts b/packages/backend/src/server/api/stream/channels/user-list.ts index 0b52f69127..d140319503 100644 --- a/packages/backend/src/server/api/stream/channels/user-list.ts +++ b/packages/backend/src/server/api/stream/channels/user-list.ts @@ -22,11 +22,13 @@ export default class extends Channel { this.listId = params.listId as string; // Check existence and owner - const list = await UserLists.findOneBy({ - id: this.listId, - userId: this.user!.id, + const exist = await UserLists.exist({ + where: { + id: this.listId, + userId: this.user!.id, + }, }); - if (!list) return; + if (!exist) return; // Subscribe stream this.subscriber.on(`userListStream:${this.listId}`, this.send); diff --git a/packages/backend/src/server/api/stream/index.ts b/packages/backend/src/server/api/stream/index.ts index e778c49467..e483683151 100644 --- a/packages/backend/src/server/api/stream/index.ts +++ b/packages/backend/src/server/api/stream/index.ts @@ -59,7 +59,6 @@ export default class Connection { accessToken: string, prepareStream: string | undefined, ) { - console.log("constructor", prepareStream); this.wsConnection = wsConnection; this.subscriber = subscriber; if (user) this.user = user; @@ -88,7 +87,6 @@ export default class Connection { this.subscriber.on(`user:${this.user.id}`, this.onUserEvent); } - console.log("prepare", prepareStream); if (prepareStream) { this.onWsConnectionMessage({ type: "utf8", @@ -185,8 +183,7 @@ export default class Connection { const tl = await client.getHomeTimeline(); for (const t of tl.data) forSubscribe.push(t.id); } catch (e: any) { - console.log(e); - console.error(e.response.data); + console.error(e); } } else if (simpleObj.stream === "public:local") { this.currentSubscribe.push(["public:local"]); @@ -247,7 +244,6 @@ export default class Connection { for (const obj of objs) { const { type, body } = obj; - console.log(type, body); switch (type) { case "readNotification": this.onReadNotification(body); diff --git a/packages/backend/src/server/file/byte-range-readable.ts b/packages/backend/src/server/file/byte-range-readable.ts new file mode 100644 index 0000000000..d80e783cca --- /dev/null +++ b/packages/backend/src/server/file/byte-range-readable.ts @@ -0,0 +1,221 @@ +import { Readable, ReadableOptions } from "node:stream"; +import { Buffer, constants as BufferConstants } from "node:buffer"; +import * as fs from "node:fs"; + +interface ByteRange { + start: bigint; + end: bigint; + size: bigint; +} + +const BOUNDARY_CHARS = + "ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz0123456789"; +const BYTERANGE_SPEC_REGEX = /^bytes=(.+)$/; +const BYTERANGE_REGEX = /(\d*)-(\d*)/; + +const BIGINT_0 = BigInt(0); +const BIGINT_1 = BigInt(1); +const BOUNDARY_SIZE = 40; + +function extractRanges( + fileSize: bigint, + maxByteRanges: number, + rangeHeaderValue: string, +): ByteRange[] { + const ranges: ByteRange[] = []; + + if (!rangeHeaderValue) return ranges; + + const rangeSpecMatch = rangeHeaderValue.match(BYTERANGE_SPEC_REGEX); + if (!rangeSpecMatch) return []; + + const rangeSpecs = rangeSpecMatch[1].split(","); + for (let i = 0; i < rangeSpecs.length; i = i + 1) { + const byteRange = rangeSpecs[i].match(BYTERANGE_REGEX); + if (!byteRange) return []; + + let start: bigint; + let end: bigint; + let size: bigint; + + if (byteRange[1]) { + start = BigInt(byteRange[1]); + } + + if (byteRange[2]) { + end = BigInt(byteRange[2]); + } + + if (start === undefined && end === undefined) { + /* some invalid range like bytes=- */ + return []; + } + + if (start === undefined) { + /* end-of-file range like -500 */ + start = fileSize - end; + end = fileSize - BIGINT_1; + if (start < BIGINT_0) return []; /* range larger than file, return */ + } + + if (end === undefined) { + /* range like 0- */ + end = fileSize - BIGINT_1; + } + + if (start > end || end >= fileSize) { + /* return empty range to issue regular 200 */ + return []; + } + size = end - start + BIGINT_1; + + if (1 > maxByteRanges - ranges.length) return []; + + ranges.push({ + start: start, + end: end, + size: size, + }); + } + + return ranges; +} + +function createBoundary(len: number): string { + let chars = []; + for (let i = 0; i < len; i = i + 1) { + chars[i] = BOUNDARY_CHARS.charAt( + Math.floor(Math.random() * BOUNDARY_CHARS.length), + ); + } + return chars.join(""); +} + +class ByteRangeReadable extends Readable { + size: bigint; /* the total size in bytes */ + boundary: string; /* boundary marker to use in multipart headers */ + + private fd: number; + private ranges: ByteRange[]; + private index: number; /* index within ranges */ + private position: bigint; + private end: bigint; + private contentType: string; + private fileSize: bigint; + private headers: Buffer[]; + private trailer: Buffer; + + static parseByteRanges( + fileSize: bigint, + maxByteRanges: number, + rangeHeaderValue?: string, + ): ByteRange[] { + return extractRanges(fileSize, maxByteRanges, rangeHeaderValue); + } + + private createPartHeader(range: ByteRange): Buffer { + return Buffer.from( + [ + "", + `--${this.boundary}`, + `Content-Type: ${this.contentType}`, + `Content-Range: bytes ${range.start}-${range.end}/${this.fileSize}`, + "", + "", + ].join("\r\n"), + ); + } + + constructor( + fd: number, + fileSize: bigint, + ranges: ByteRange[], + contentType: string, + opts?: ReadableOptions, + ) { + super(opts); + + if (ranges.length === 0) { + throw Error("this requires at least 1 byte range"); + } + + this.fd = fd; + this.ranges = ranges; + this.fileSize = fileSize; + this.contentType = contentType; + + this.position = BIGINT_1; + this.end = BIGINT_0; + this.index = -1; + this.headers = []; + + this.size = BIGINT_0; + + if (this.ranges.length === 1) { + this.size = this.ranges[0].size; + } else { + this.boundary = createBoundary(BOUNDARY_SIZE); + this.ranges.forEach((r) => { + const header = this.createPartHeader(r); + this.headers.push(header); + + this.size += BigInt(header.length) + r.size; + }); + this.trailer = Buffer.from(`\r\n--${this.boundary}--\r\n`); + this.size += BigInt(this.trailer.length); + } + } + + _read(n) { + if (this.index == this.ranges.length) { + this.push(null); + return; + } + + if (this.position > this.end) { + /* move ahead to the next index */ + this.index++; + + if (this.index === this.ranges.length) { + if (this.trailer) { + this.push(this.trailer); + return; + } + this.push(null); + return; + } + + this.position = this.ranges[this.index].start; + this.end = this.ranges[this.index].end; + + if (this.ranges.length > 1) { + this.push(this.headers[this.index]); + return; + } + } + + const max = this.end - this.position + BIGINT_1; + + if (n > max) n = Number(max); + const buf = Buffer.alloc(n); + + fs.read(this.fd, buf, 0, n, this.position, (err, bytesRead) => { + if (err) { + this.destroy(err); + return; + } + if (bytesRead == 0) { + /* something seems to have gone wrong? */ + this.push(null); + return; + } + + if (bytesRead > n) bytesRead = n; + + this.position += BigInt(bytesRead); + this.push(buf.slice(0, bytesRead)); + }); + } +} + +export { ByteRange, ByteRangeReadable }; diff --git a/packages/backend/src/server/file/send-drive-file.ts b/packages/backend/src/server/file/send-drive-file.ts index 0877369025..1c4d4136b5 100644 --- a/packages/backend/src/server/file/send-drive-file.ts +++ b/packages/backend/src/server/file/send-drive-file.ts @@ -14,6 +14,7 @@ import { detectType } from "@/misc/get-file-info.js"; import { convertToWebp } from "@/services/drive/image-processor.js"; import { GenerateVideoThumbnail } from "@/services/drive/generate-video-thumbnail.js"; import { StatusError } from "@/misc/fetch.js"; +import { ByteRangeReadable } from "./byte-range-readable.js"; import { FILE_TYPE_BROWSERSAFE } from "@/const.js"; const _filename = fileURLToPath(import.meta.url); @@ -21,6 +22,8 @@ const _dirname = dirname(_filename); const assets = `${_dirname}/../../server/file/assets/`; +const MAX_BYTE_RANGES = 10; + const commonReadableHandlerGenerator = (ctx: Koa.Context) => (e: Error): void => { serverLogger.error(e); @@ -122,31 +125,86 @@ export default async function (ctx: Koa.Context) { return; } + let contentType; + let filename; + let fileHandle; + if (isThumbnail || isWebpublic) { const { mime, ext } = await detectType(InternalStorage.resolvePath(key)); - const filename = rename(file.name, { - suffix: isThumbnail ? "-thumb" : "-web", - extname: ext ? `.${ext}` : undefined, - }).toString(); + (contentType = FILE_TYPE_BROWSERSAFE.includes(mime) + ? mime + : "application/octet-stream"), + (filename = rename(file.name, { + suffix: isThumbnail ? "-thumb" : "-web", + extname: ext ? `.${ext}` : undefined, + }).toString()); - ctx.body = InternalStorage.read(key); - ctx.set( - "Content-Type", - FILE_TYPE_BROWSERSAFE.includes(mime) ? mime : "application/octet-stream", - ); - ctx.set("Cache-Control", "max-age=31536000, immutable"); - ctx.set("Content-Disposition", contentDisposition("inline", filename)); + fileHandle = await InternalStorage.open(key, "r"); } else { - const readable = InternalStorage.read(file.accessKey!); - readable.on("error", commonReadableHandlerGenerator(ctx)); - ctx.body = readable; - ctx.set( - "Content-Type", - FILE_TYPE_BROWSERSAFE.includes(file.type) - ? file.type - : "application/octet-stream", - ); - ctx.set("Cache-Control", "max-age=31536000, immutable"); - ctx.set("Content-Disposition", contentDisposition("inline", file.name)); + (contentType = FILE_TYPE_BROWSERSAFE.includes(file.type) + ? file.type + : "application/octet-stream"), + (filename = file.name); + fileHandle = await InternalStorage.open(file.accessKey!, "r"); + } + + // We can let Koa evaluate conditionals by setting + // the status to 200, along with the lastModified + // and etag properties, then checking ctx.fresh. + // Additionally, Range is ignored if a conditional GET would + // result in a 304 response, so we can return early here. + + ctx.status = 200; + ctx.etag = file.md5; + ctx.lastModified = file.createdAt; + + // When doing a conditional request, we MUST return a "Cache-Control" header + // if a normal 200 response would have included. + ctx.set("Cache-Control", "max-age=31536000, immutable"); + + if (ctx.fresh) { + ctx.status = 304; + return; + } + + ctx.set("Content-Disposition", contentDisposition("inline", filename)); + ctx.set("Content-Type", contentType); + + const ranges = ByteRangeReadable.parseByteRanges( + BigInt(file.size), + MAX_BYTE_RANGES, + ctx.headers["range"], + ); + const readable = + ranges.length === 0 + ? fileHandle.createReadStream() + : new ByteRangeReadable( + fileHandle.fd, + BigInt(file.size), + ranges, + contentType, + ); + readable.on("error", commonReadableHandlerGenerator(ctx)); + ctx.body = readable; + + if (ranges.length === 0) { + ctx.set("Accept-Ranges", "bytes"); + } else { + ctx.status = 206; + readable.on("close", async () => { + await fileHandle.close(); + }); + + if (ranges.length === 1) { + ctx.set( + "Content-Range", + `bytes ${ranges[0].start}-${ranges[0].end}/${file.size}`, + ); + } else { + ctx.set( + "Content-Type", + `multipart/byteranges; boundary=${readable.boundary}`, + ); + } } } diff --git a/packages/backend/src/server/index.ts b/packages/backend/src/server/index.ts index efff6dd236..92961d33d2 100644 --- a/packages/backend/src/server/index.ts +++ b/packages/backend/src/server/index.ts @@ -221,7 +221,10 @@ export const startServer = () => { initializeStreamingServer(server); - server.listen(config.port); + server.listen({ + port: config.port, + host: config.bind, + }); return server; }; @@ -257,6 +260,11 @@ export default () => } }); - // @ts-ignore - server.listen(config.port, resolve); + server.listen( + { + port: config.port, + host: config.bind, + }, + () => resolve(undefined), + ); }); diff --git a/packages/backend/src/server/nodeinfo.ts b/packages/backend/src/server/nodeinfo.ts index 940ca2e135..2d01446522 100644 --- a/packages/backend/src/server/nodeinfo.ts +++ b/packages/backend/src/server/nodeinfo.ts @@ -50,10 +50,10 @@ const nodeinfo2 = async () => { return { software: { - name: "calckey", + name: "firefish", version: config.version, repository: meta.repositoryUrl, - homepage: "https://calckey.org/", + homepage: "https://joinfirefish.org/", }, protocols: ["activitypub"], services: { diff --git a/packages/backend/src/server/proxy/proxy-media.ts b/packages/backend/src/server/proxy/proxy-media.ts index a9c257bfeb..ed607daa0e 100644 --- a/packages/backend/src/server/proxy/proxy-media.ts +++ b/packages/backend/src/server/proxy/proxy-media.ts @@ -1,4 +1,6 @@ import * as fs from "node:fs"; +import net from "node:net"; +import { promises } from "node:dns"; import type Koa from "koa"; import sharp from "sharp"; import type { IImage } from "@/services/drive/image-processor.js"; @@ -12,13 +14,49 @@ import { serverLogger } from "../index.js"; import { isMimeImage } from "@/misc/is-mime-image.js"; export async function proxyMedia(ctx: Koa.Context) { - const url = "url" in ctx.query ? ctx.query.url : `https://${ctx.params.url}`; + let url = "url" in ctx.query ? ctx.query.url : `https://${ctx.params.url}`; if (typeof url !== "string") { ctx.status = 400; return; } + url = url.replace("//", "/"); + + const { hostname } = new URL(url); + let resolvedIps; + try { + resolvedIps = await promises.resolve(hostname); + } catch (error) { + ctx.status = 400; + ctx.body = { message: "Invalid URL" }; + return; + } + + const isSSRF = resolvedIps.some((ip) => { + if (net.isIPv4(ip)) { + const parts = ip.split(".").map(Number); + return ( + parts[0] === 10 || + (parts[0] === 172 && parts[1] >= 16 && parts[1] < 32) || + (parts[0] === 192 && parts[1] === 168) || + parts[0] === 127 || + parts[0] === 0 + ); + } else if (net.isIPv6(ip)) { + return ( + ip.startsWith("::") || ip.startsWith("fc00:") || ip.startsWith("fe80:") + ); + } + return false; + }); + + if (isSSRF) { + ctx.status = 400; + ctx.body = { message: "Access to this URL is not allowed" }; + return; + } + // Create temp file const [path, cleanup] = await createTemp(); diff --git a/packages/backend/src/server/web/bios.css b/packages/backend/src/server/web/bios.css index 3193f303a8..719ac90bf4 100644 --- a/packages/backend/src/server/web/bios.css +++ b/packages/backend/src/server/web/bios.css @@ -45,7 +45,7 @@ main { * { font-family: BIZ UDGothic, Roboto, HelveticaNeue, Arial, sans-serif; } -#calckey_app { +#firefish_app { display: none !important; } body, diff --git a/packages/backend/src/server/web/boot.js b/packages/backend/src/server/web/boot.js index d3b7c3b823..4bd9326aac 100644 --- a/packages/backend/src/server/web/boot.js +++ b/packages/backend/src/server/web/boot.js @@ -102,7 +102,11 @@ localStorage.setItem("fontSize", null); fontSize = localStorage.getItem("fontSize"); } - document.documentElement.style.fontSize = fontSize + "px"; + document.documentElement.style.fontSize = `${fontSize}px`; + } + + if (["ja-JP", "ja-KS", "ko-KR", "zh-CN", "zh-TW"].includes(lang)) { + document.documentElement.classList.add("useCJKFont"); } const useSystemFont = localStorage.getItem("useSystemFont"); @@ -123,7 +127,7 @@ } async function addStyle(styleText) { - let css = document.createElement("style"); + const css = document.createElement("style"); css.appendChild(document.createTextNode(styleText)); document.head.appendChild(css); } @@ -143,7 +147,7 @@ Refresh

Don't worry, it's (probably) not your fault.

-

Please make sure your browser is up-to-date and any AdBlockers are off.

+

Please make sure your browser is up-to-date and any AdBlockers are off (given they can sometimes errouniously interfere with loading assets).

If the problem persists after refreshing, please contact your instance's administrator.
You may also try the following options:

@@ -55,10 +55,10 @@ diff --git a/packages/client/src/pages/messaging/messaging-room.message.vue b/packages/client/src/pages/messaging/messaging-room.message.vue index d58b90b2f5..f6bc9b31a8 100644 --- a/packages/client/src/pages/messaging/messaging-room.message.vue +++ b/packages/client/src/pages/messaging/messaging-room.message.vue @@ -82,9 +82,10 @@ diff --git a/packages/client/src/pages/mfm-cheat-sheet.vue b/packages/client/src/pages/mfm-cheat-sheet.vue index 1747befd1d..ea61667a58 100644 --- a/packages/client/src/pages/mfm-cheat-sheet.vue +++ b/packages/client/src/pages/mfm-cheat-sheet.vue @@ -149,18 +149,18 @@ -
{{ i18n.ts._mfm.flip }}
@@ -443,7 +443,7 @@ - - diff --git a/packages/client/src/pages/my-antennas/edit.vue b/packages/client/src/pages/my-antennas/edit.vue index 36254ff74b..386d21f3cb 100644 --- a/packages/client/src/pages/my-antennas/edit.vue +++ b/packages/client/src/pages/my-antennas/edit.vue @@ -9,7 +9,7 @@ - - diff --git a/packages/client/src/pages/my-antennas/editor.vue b/packages/client/src/pages/my-antennas/editor.vue index 3ca4d1dc5f..a2fba8c67c 100644 --- a/packages/client/src/pages/my-antennas/editor.vue +++ b/packages/client/src/pages/my-antennas/editor.vue @@ -114,8 +114,8 @@ diff --git a/packages/client/src/pages/my-antennas/index.vue b/packages/client/src/pages/my-antennas/index.vue index 85f567c175..86127c0db8 100644 --- a/packages/client/src/pages/my-antennas/index.vue +++ b/packages/client/src/pages/my-antennas/index.vue @@ -55,7 +55,7 @@ - - diff --git a/packages/client/src/pages/registry.vue b/packages/client/src/pages/registry.vue index 7bb300c99d..0fcc09cb56 100644 --- a/packages/client/src/pages/registry.vue +++ b/packages/client/src/pages/registry.vue @@ -24,7 +24,7 @@ - - diff --git a/packages/client/src/pages/reset-password.vue b/packages/client/src/pages/reset-password.vue index 395bf11f96..3544929fc0 100644 --- a/packages/client/src/pages/reset-password.vue +++ b/packages/client/src/pages/reset-password.vue @@ -30,7 +30,7 @@ - - diff --git a/packages/client/src/pages/scratchpad.vue b/packages/client/src/pages/scratchpad.vue index 77b4bf835d..a63c7f5682 100644 --- a/packages/client/src/pages/scratchpad.vue +++ b/packages/client/src/pages/scratchpad.vue @@ -133,10 +133,6 @@ function highlighter(code) { return highlight(code, languages.js, "javascript"); } -const headerActions = $computed(() => []); - -const headerTabs = $computed(() => []); - definePageMetadata({ title: i18n.ts.scratchpad, icon: "ph-terminal-window ph-bold ph-lg", diff --git a/packages/client/src/pages/search.vue b/packages/client/src/pages/search.vue index 3968348a5f..161d0e6dc1 100644 --- a/packages/client/src/pages/search.vue +++ b/packages/client/src/pages/search.vue @@ -12,9 +12,9 @@ :round-lengths="true" :touch-angle="25" :threshold="10" - :centeredSlides="true" + :centered-slides="true" :modules="[Virtual]" - :space-between="20" + :space-between="30" :virtual="true" :allow-touch-move=" defaultStore.state.swipeOnMobile && @@ -40,8 +40,8 @@ + + diff --git a/packages/client/src/pages/settings/notifications.vue b/packages/client/src/pages/settings/notifications.vue index b78ef7aa66..5c3c2e0a05 100644 --- a/packages/client/src/pages/settings/notifications.vue +++ b/packages/client/src/pages/settings/notifications.vue @@ -49,10 +49,9 @@ - - diff --git a/packages/client/src/pages/settings/preferences-backups.vue b/packages/client/src/pages/settings/preferences-backups.vue index dcee4587fb..4e97b05621 100644 --- a/packages/client/src/pages/settings/preferences-backups.vue +++ b/packages/client/src/pages/settings/preferences-backups.vue @@ -56,7 +56,7 @@ diff --git a/packages/client/src/pages/settings/profile.vue b/packages/client/src/pages/settings/profile.vue index 1229539c13..6d1e8098dd 100644 --- a/packages/client/src/pages/settings/profile.vue +++ b/packages/client/src/pages/settings/profile.vue @@ -126,7 +126,11 @@
@@ -158,7 +162,7 @@ @@ -270,10 +253,12 @@ definePageMetadata({ padding: 8px; cursor: move; } +} - > .add { - display: inline-block; - padding: 8px; - } +.add { + display: inline-block; + padding: 8px; + margin-left: 12px; + margin-bottom: 12px; } diff --git a/packages/client/src/pages/settings/security.vue b/packages/client/src/pages/settings/security.vue index 07261bb836..7b3d6801c2 100644 --- a/packages/client/src/pages/settings/security.vue +++ b/packages/client/src/pages/settings/security.vue @@ -112,15 +112,11 @@ function regenerateToken() { }).then(({ canceled, result: password }) => { if (canceled) return; os.api("i/regenerate-token", { - password: password, + password, }); }); } -const headerActions = $computed(() => []); - -const headerTabs = $computed(() => []); - definePageMetadata({ title: i18n.ts.security, icon: "ph-lock ph-bold ph-lg", diff --git a/packages/client/src/pages/settings/sounds.vue b/packages/client/src/pages/settings/sounds.vue index bc890a5697..12f4456fe0 100644 --- a/packages/client/src/pages/settings/sounds.vue +++ b/packages/client/src/pages/settings/sounds.vue @@ -57,12 +57,6 @@ const masterVolume = computed({ }, }); -const volumeIcon = computed(() => - masterVolume.value === 0 - ? "ph-speaker-none ph-bold ph-lg" - : "ph-speaker-high ph-bold ph-lg", -); - const sounds = ref({ note: ColdDeviceStorage.get("sound_note"), noteMy: ColdDeviceStorage.get("sound_noteMy"), @@ -122,10 +116,6 @@ function reset() { } } -const headerActions = $computed(() => []); - -const headerTabs = $computed(() => []); - definePageMetadata({ title: i18n.ts.sounds, icon: "ph-speaker-high ph-bold ph-lg", diff --git a/packages/client/src/pages/settings/statusbar.statusbar.vue b/packages/client/src/pages/settings/statusbar.statusbar.vue index b070c0c7de..24bc7e8859 100644 --- a/packages/client/src/pages/settings/statusbar.statusbar.vue +++ b/packages/client/src/pages/settings/statusbar.statusbar.vue @@ -142,14 +142,13 @@ - - diff --git a/packages/client/src/pages/user/following.vue b/packages/client/src/pages/user/following.vue index 3b8a6f4d97..96ac8087e3 100644 --- a/packages/client/src/pages/user/following.vue +++ b/packages/client/src/pages/user/following.vue @@ -16,16 +16,9 @@ @@ -750,6 +753,12 @@ onUnmounted(() => { margin-bottom: 8px; } + &.verified { + background-color: var(--hover); + border-radius: 10px; + color: var(--badge) !important; + } + > .name { width: 30%; overflow: hidden; @@ -767,9 +776,6 @@ onUnmounted(() => { margin: 0; } } - - &.system > .field > .name { - } } > .status { diff --git a/packages/client/src/pages/user/index.activity.vue b/packages/client/src/pages/user/index.activity.vue index c261e8067b..461d094394 100644 --- a/packages/client/src/pages/user/index.activity.vue +++ b/packages/client/src/pages/user/index.activity.vue @@ -29,8 +29,9 @@ @@ -98,6 +98,9 @@ onMounted(() => { grid-gap: 6px; > .img { + display: flex; + justify-content: center; + align-items: center; position: relative; height: 128px; border-radius: 6px; diff --git a/packages/client/src/pages/user/index.timeline.vue b/packages/client/src/pages/user/index.timeline.vue index 1792b6357c..fc4306a09b 100644 --- a/packages/client/src/pages/user/index.timeline.vue +++ b/packages/client/src/pages/user/index.timeline.vue @@ -12,11 +12,10 @@ - - diff --git a/packages/client/src/pages/user/reactions.vue b/packages/client/src/pages/user/reactions.vue index 09f2bebd6d..9b52c080ba 100644 --- a/packages/client/src/pages/user/reactions.vue +++ b/packages/client/src/pages/user/reactions.vue @@ -25,7 +25,7 @@ diff --git a/packages/client/src/ui/visitor/kanban.vue b/packages/client/src/ui/visitor/kanban.vue index e3552c0fc3..e8caae87e1 100644 --- a/packages/client/src/ui/visitor/kanban.vue +++ b/packages/client/src/ui/visitor/kanban.vue @@ -26,7 +26,7 @@
@@ -69,8 +69,8 @@ > Powered by - CalckeyFirefish
@@ -81,7 +81,7 @@

Looks like you're offline!

Looks like Firefish couldn't connect to the server, probably because your device is offline.

The installed Service Worker is version ${_VERSION_}`; +} + +globalThis.addEventListener("fetch", (ev) => { let isHTMLRequest = false; if (ev.request.headers.get("sec-fetch-dest") === "document") { isHTMLRequest = true; @@ -41,90 +43,68 @@ self.addEventListener("fetch", (ev) => { if (!isHTMLRequest) return; ev.respondWith( - fetch(ev.request).catch( - () => - new Response(`Offline. Service Worker @${_VERSION_}`, { status: 200 }), - ), + fetch(ev.request).catch(() => { + return new Response(offlineContentHTML(), { + status: 200, + headers: { + "content-type": "text/html", + }, + }); + }), ); }); -self.addEventListener("push", (ev) => { +globalThis.addEventListener("push", (ev) => { // クライアント取得 ev.waitUntil( - self.clients + globalThis.clients .matchAll({ includeUncontrolled: true, type: "window", }) - .then( - async ( - clients: readonly WindowClient[], - ) => { - const data: pushNotificationDataMap[K] = ev.data?.json(); + .then(async () => { + const data: PushNotificationDataMap[keyof PushNotificationDataMap] = + ev.data?.json(); - switch (data.type) { - // case 'driveFileCreated': - case "notification": - case "unreadMessagingMessage": - // 1日以上経過している場合は無視 - if (new Date().getTime() - data.dateTime > 1000 * 60 * 60 * 24) - break; + switch (data.type) { + // case 'driveFileCreated': + case "notification": + case "unreadAntennaNote": + // 1日以上経過している場合は無視 + if (new Date().getTime() - data.dateTime > 1000 * 60 * 60 * 24) + break; - // クライアントがあったらストリームに接続しているということなので通知しない - if (clients.length !== 0) break; + return createNotification(data); + case "readAllNotifications": + await globalThis.registration + .getNotifications() + .then((notifications) => + notifications.forEach( + (n) => n.tag !== "read_notification" && n.close(), + ), + ); + break; + } - return createNotification(data); - case "readAllNotifications": - for (const n of await self.registration.getNotifications()) { - if (n?.data?.type === "notification") n.close(); - } - break; - case "readAllMessagingMessages": - for (const n of await self.registration.getNotifications()) { - if (n?.data?.type === "unreadMessagingMessage") n.close(); - } - break; - case "readNotifications": - for (const n of await self.registration.getNotifications()) { - if (data.body?.notificationIds?.includes(n.data.body.id)) { - n.close(); - } - } - break; - case "readAllMessagingMessagesOfARoom": - for (const n of await self.registration.getNotifications()) { - if ( - n.data.type === "unreadMessagingMessage" && - ("userId" in data.body - ? data.body.userId === n.data.body.userId - : data.body.groupId === n.data.body.groupId) - ) { - n.close(); - } - } - break; - } - - return createEmptyNotification(); - }, - ), + await createEmptyNotification(); + return; + }), ); }); -self.addEventListener( +(globalThis as unknown as ServiceWorkerGlobalScope).addEventListener( "notificationclick", - ( - ev: ServiceWorkerGlobalScopeEventMap["notificationclick"], - ) => { + (ev: ServiceWorkerGlobalScopeEventMap["notificationclick"]) => { ev.waitUntil( - (async () => { + (async (): Promise => { if (_DEV_) { console.log("notificationclick", ev.action, ev.notification.data); } const { action, notification } = ev; - const data: pushNotificationDataMap[K] = notification.data; - const { userId: id } = data; + const data: PushNotificationDataMap[keyof PushNotificationDataMap] = + notification.data ?? {}; + const { userId: loginId } = data; let client: WindowClient | null = null; switch (data.type) { @@ -132,57 +112,53 @@ self.addEventListener( switch (action) { case "follow": if ("userId" in data.body) - await swos.api("following/create", id, { + await swos.api("following/create", loginId, { userId: data.body.userId, }); break; case "showUser": if ("user" in data.body) - client = await swos.openUser(getAcct(data.body.user), id); + client = await swos.openUser( + Acct.toString(data.body.user), + loginId, + ); break; case "reply": if ("note" in data.body) - client = await swos.openPost({ reply: data.body.note }, id); + client = await swos.openPost( + { reply: data.body.note }, + loginId, + ); break; case "renote": if ("note" in data.body) - await swos.api("notes/create", id, { + await swos.api("notes/create", loginId, { renoteId: data.body.note.id, }); break; case "accept": switch (data.body.type) { case "receiveFollowRequest": - await swos.api("following/requests/accept", id, { + await swos.api("following/requests/accept", loginId, { userId: data.body.userId, }); break; - case "groupInvited": - await swos.api("users/groups/invitations/accept", id, { - invitationId: data.body.invitation.id, - }); - break; } break; case "reject": switch (data.body.type) { case "receiveFollowRequest": - await swos.api("following/requests/reject", id, { + await swos.api("following/requests/reject", loginId, { userId: data.body.userId, }); break; - case "groupInvited": - await swos.api("users/groups/invitations/reject", id, { - invitationId: data.body.invitation.id, - }); - break; } break; case "showFollowRequests": client = await swos.openClient( "push", "/my/follow-requests", - id, + loginId, ); break; default: @@ -191,35 +167,61 @@ self.addEventListener( client = await swos.openClient( "push", "/my/follow-requests", - id, + loginId, ); break; - case "groupInvited": - client = await swos.openClient("push", "/my/groups", id); - break; case "reaction": - client = await swos.openNote(data.body.note.id, id); + client = await swos.openNote(data.body.note.id, loginId); break; default: if ("note" in data.body) { - client = await swos.openNote(data.body.note.id, id); + client = await swos.openNote(data.body.note.id, loginId); } else if ("user" in data.body) { - client = await swos.openUser(getAcct(data.body.user), id); + client = await swos.openUser( + Acct.toString(data.body.user), + loginId, + ); } break; } } break; - case "unreadMessagingMessage": - client = await swos.openChat(data.body, id); + case "unreadAntennaNote": + client = await swos.openAntenna(data.body.antenna.id, loginId); break; + default: + switch (action) { + case "markAllAsRead": + await globalThis.registration + .getNotifications() + .then((notifications) => + notifications.forEach( + (n) => n.tag !== "read_notification" && n.close(), + ), + ); + await get("accounts").then((accounts) => { + return Promise.all( + accounts.map(async (account) => { + await swos.sendMarkAllAsRead(account.id); + }), + ); + }); + break; + case "settings": + client = await swos.openClient( + "push", + "/settings/notifications", + loginId, + ); + break; + } } if (client) { client.focus(); } if (data.type === "notification") { - swNotificationRead.then((that) => that.read(data)); + await swos.sendMarkAllAsRead(loginId); } notification.close(); @@ -228,24 +230,28 @@ self.addEventListener( }, ); -self.addEventListener( +(globalThis as unknown as ServiceWorkerGlobalScope).addEventListener( "notificationclose", - ( - ev: ServiceWorkerGlobalScopeEventMap["notificationclose"], - ) => { - const data: pushNotificationDataMap[K] = ev.notification.data; + (ev: ServiceWorkerGlobalScopeEventMap["notificationclose"]) => { + const data: PushNotificationDataMap[keyof PushNotificationDataMap] = + ev.notification.data; - if (data.type === "notification") { - swNotificationRead.then((that) => that.read(data)); - } + ev.waitUntil( + (async (): Promise => { + if (data.type === "notification") { + await swos.sendMarkAllAsRead(data.userId); + } + return; + })(), + ); }, ); -self.addEventListener( +(globalThis as unknown as ServiceWorkerGlobalScope).addEventListener( "message", (ev: ServiceWorkerGlobalScopeEventMap["message"]) => { ev.waitUntil( - (async () => { + (async (): Promise => { switch (ev.data) { case "clear": // Cache Storage全削除 diff --git a/packages/sw/src/types.ts b/packages/sw/src/types.ts index 984076dbec..3318354905 100644 --- a/packages/sw/src/types.ts +++ b/packages/sw/src/types.ts @@ -1,34 +1,51 @@ -import * as Misskey from "calckey-js"; +import * as Misskey from "firefish-js"; -export type swMessageOrderType = "post" | "push"; +export type SwMessageOrderType = "post" | "push"; export type SwMessage = { type: "order"; - order: swMessageOrderType; - loginId: string; + order: SwMessageOrderType; + loginId?: string; url: string; - [x: string]: any; + [x: string]: unknown; }; // Defined also @/services/push-notification.ts#L7-L14 -type pushNotificationDataSourceMap = { +type PushNotificationDataSourceMap = { notification: Misskey.entities.Notification; - unreadMessagingMessage: Misskey.entities.MessagingMessage; - readNotifications: { notificationIds: string[] }; + unreadAntennaNote: { + antenna: { id: string; name: string }; + note: Misskey.entities.Note; + }; readAllNotifications: undefined; readAllMessagingMessages: undefined; readAllMessagingMessagesOfARoom: { userId: string } | { groupId: string }; }; -export type pushNotificationData< - K extends keyof pushNotificationDataSourceMap, +export type PushNotificationData< + K extends keyof PushNotificationDataSourceMap, > = { type: K; - body: pushNotificationDataSourceMap[K]; + body: PushNotificationDataSourceMap[K]; userId: string; dateTime: number; }; -export type pushNotificationDataMap = { - [K in keyof pushNotificationDataSourceMap]: pushNotificationData; +export type PushNotificationDataMap = { + [K in keyof PushNotificationDataSourceMap]: PushNotificationData; }; + +export type BadgeNames = + | "null" + | "antenna" + | "arrow-back-up" + | "at" + | "chart-arrows" + | "circle-check" + | "medal" + | "messages" + | "plus" + | "quote" + | "repeat" + | "user-plus" + | "users"; diff --git a/packages/sw/webpack.config.js b/packages/sw/webpack.config.js index 3443585d92..5df2544098 100644 --- a/packages/sw/webpack.config.js +++ b/packages/sw/webpack.config.js @@ -44,7 +44,7 @@ module.exports = { ), _ENV_: JSON.stringify(process.env.NODE_ENV), _DEV_: !isProduction, - _PERF_PREFIX_: JSON.stringify("Calckey:"), + _PERF_PREFIX_: JSON.stringify("Firefish:"), }), ], }; diff --git a/patrons.json b/patrons.json index fbd46ee064..738083ec98 100644 --- a/patrons.json +++ b/patrons.json @@ -1,73 +1,72 @@ { "patrons": [ - "@atomicpoet@calckey.social", + "@atomicpoet@firefish.social", "@shoq@mastodon.social", "@pikadude@erisly.social", "@sage@stop.voring.me", "@sky@therian.club", "@panos@electricrequiem.com", "@redhunt07@www.foxyhole.io", - "@griff@stop.voring.me", + "@griff@firefish.social", "@cafkafk@ck.cafkafk.com", "@privateger@plasmatrap.com", "@effye@toot.thoughtworks.com", "@Kio@kitsunes.club", "@twann@tech.lgbt", - "@surfbum@calckey.nz", + "@surfbum@firefish.nz", "@topher@mastodon.online", "@hanicef@stop.voring.me", "@nmkj@calckey.jp", - "@unattributed@calckey.social", + "@unattributed@firefish.social", "@cody@misskey.codingneko.com", "@kate@blahaj.zone", "@emtk@mkkey.net", - "@jovikowi@calckey.social", - "@padraig@calckey.social", + "@jovikowi@firefish.social", + "@padraig@firefish.social", "@pancakes@cats.city", - "@theresmiling@calckey.social", - "@AlderForrest@calckey.social", - "@kristian@calckey.social", + "@theresmiling@firefish.social", + "@kristian@firefish.social", "@jo@blahaj.zone", - "@narF@calckey.social", - "@AlderForrest@calckey.social", - "@box464@calckey.social", - "@MariaTheMartian@calckey.social", - "@nisemikol@calckey.social", + "@narF@firefish.social", + "@AlderForrest@raining.anvil.top", + "@box464@firefish.social", + "@MariaTheMartian@firefish.social", + "@nisemikol@firefish.social", "@smallpatatas@blahaj.zone", "@bayra@stop.voring.me", "@frost@wolfdo.gg", "@joebiden@fuckgov.org", - "@nyaa@calckey.social", - "@Dan@calckey.social", - "@dana@calckey.social", - "@Jdreben@calckey.social", + "@nyaa@firefish.social", + "@Dan@firefish.social", + "@dana@firefish.social", + "@Jdreben@firefish.social", "@natalie@prismst.one", "@KelsonV@wandering.shop", - "@breakfastmtn@calckey.social", + "@breakfastmtn@firefish.social", "@richardazia@mastodon.social", - "@joestone@calckey.social", - "@aj@calckey.social", + "@joestone@firefish.social", + "@aj@firefish.social", "@zepfanman@ramblingreaders.org", "@kimby@stop.voring.me", - "@fyrfli@bkgrdclrschm.link", - "@riversidebryan@calckey.lgbt", + "@fyrfli@fyrfli.social", + "@riversidebryan@firefish.lgbt", "@aRubes@sloth.run", - "@andreasdotorg@calckey.social", + "@andreasdotorg@firefish.social", "@ozzy@calckey.online", "@leni@windycity.style", "@mhzmodels@calckey.art", - "@ReflexVE@calckey.social", - "@mark@calckey.social", + "@ReflexVE@firefish.social", + "@mark@firefish.social", "@skyizwhite@himagine.club", - "@Uwu@calckey.social", - "@jGoose@calckey.social", + "@Uwu@firefish.social", + "@jGoose@firefish.social", "@kunev@blewsky.social", "@Simoto@electricrequiem.com", - "@Evoterra@calckey.social", + "@Evoterra@firefish.social", "@LauraLangdon@procial.tchncs.de", "@mho@social.heise.de", - "@richardazia@calckey.social", - "@blues653@calckey.social", + "@richardazia@firefish.social", + "@blues653@firefish.social", "@rafale_blue@calc.04.si", "@esm@lethallava.land", "@vmstan@vmst.io", @@ -75,17 +74,45 @@ "@renere@distance.blue", "@theking@kitsunes.club", "@toof@fedi.toofie.net", - "@Punko@calckey.social", - "@joesbrat67@calckey.social", - "@arth@calckey.social", + "@Punko@firefish.social", + "@joesbrat67@firefish.social", + "@arth@firefish.social", "@octofloofy@ck.octofloofy.ink", "@pauliehedron@infosec.town", "@soulthunk@lethallava.land", "@bumble@ibe.social", - "@DarrenNevares@calckey.social", - "@irfan@calckey.social", + "@DarrenNevares@firefish.social", + "@irfan@firefish.social", "@dvd@dvd.chat", "@charlie2alpha@electricrequiem.com", + "@arndot@layer8.space", + "@ryan@c.ryanccn.dev", + "@lapastora_deprova@firefish.social", + "@rameez@firefish.social", + "@dracoling@firetribe.org", + "@Space6host@firefish.social", + "@zakalwe@plasmatrap.com", + "@seasicksailor@firefish.social", + "@geerue@firefish.social", + "@WXFanatic@m.ai6yr.org", + "@Hunkabilly@calckey.world", + "@samleegray@firefish.social", + "@schwarzewald@kodow.net", + "@Conatusprinciple@firefish.social", + "@183231bcb@firefish.lgbt", + "@wiase@firefish.social", + "@leonieke@vitaulium.nl", + "@soulfire@wackywolf.xyz", + "@elbullazul@pub.elbullazul.com", + "@rafale_blue@calc.04.si", + "@firnin@federation.network", + "@clement@ck.villisek.fr", + "@hryggrbyr@ibe.social" + ], + "sponsors": [ + "@atomicpoet@firefish.social", + "@unattributed@firefish.social", + "@jtbennett@noc.social", "\nInterkosmos Link" ] } diff --git a/pnpm-lock.yaml b/pnpm-lock.yaml index b18c938542..9f1749dc34 100644 --- a/pnpm-lock.yaml +++ b/pnpm-lock.yaml @@ -12,17 +12,17 @@ importers: .: dependencies: '@bull-board/api': - specifier: 5.2.0 - version: 5.2.0(@bull-board/ui@5.2.0) + specifier: 5.8.0 + version: 5.8.0(@bull-board/ui@5.8.0) '@bull-board/ui': - specifier: 5.2.0 - version: 5.2.0 + specifier: 5.8.0 + version: 5.8.0 '@napi-rs/cli': - specifier: ^2.16.1 - version: 2.16.1 + specifier: ^2.16.2 + version: 2.16.3 '@tensorflow/tfjs': - specifier: ^3.21.0 - version: 3.21.0(seedrandom@3.0.5) + specifier: ^4.10.0 + version: 4.11.0(seedrandom@3.0.5) js-yaml: specifier: 4.1.0 version: 4.1.0 @@ -30,18 +30,33 @@ importers: specifier: ^3.0.5 version: 3.0.5 devDependencies: + '@biomejs/biome': + specifier: 1.0.0 + version: 1.0.0 + '@biomejs/cli-darwin-arm64': + specifier: ^1.0.0 + version: 1.2.2 + '@biomejs/cli-darwin-x64': + specifier: ^1.0.0 + version: 1.2.2 + '@biomejs/cli-linux-arm64': + specifier: ^1.0.0 + version: 1.2.2 + '@biomejs/cli-linux-x64': + specifier: ^1.0.0 + version: 1.2.2 '@types/gulp': - specifier: 4.0.10 - version: 4.0.10 + specifier: 4.0.13 + version: 4.0.13 '@types/gulp-rename': - specifier: 2.0.1 - version: 2.0.1 + specifier: 2.0.2 + version: 2.0.2 '@types/node': - specifier: 18.11.18 - version: 18.11.18 - chalk: - specifier: 4.1.2 - version: 4.1.2 + specifier: 20.5.8 + version: 20.5.8 + add: + specifier: 2.0.6 + version: 2.0.6 cross-env: specifier: 7.0.3 version: 7.0.3 @@ -69,27 +84,27 @@ importers: install-peers: specifier: ^1.0.4 version: 1.0.4 - rome: - specifier: ^12.1.3 - version: 12.1.3 + pnpm: + specifier: 8.7.1 + version: 8.7.1 start-server-and-test: specifier: 1.15.2 version: 1.15.2 typescript: - specifier: 4.9.4 - version: 4.9.4 + specifier: 5.2.2 + version: 5.2.2 packages/backend: dependencies: '@bull-board/api': - specifier: 5.2.0 - version: 5.2.0(@bull-board/ui@5.2.0) + specifier: 5.8.0 + version: 5.8.0(@bull-board/ui@5.8.0) '@bull-board/koa': - specifier: 5.2.0 - version: 5.2.0(@types/koa@2.13.5)(pug@3.0.2) + specifier: 5.8.0 + version: 5.8.0(@types/koa@2.13.8)(pug@3.0.2) '@bull-board/ui': - specifier: 5.2.0 - version: 5.2.0 + specifier: 5.8.0 + version: 5.8.0 '@discordapp/twemoji': specifier: 14.1.2 version: 14.1.2 @@ -109,8 +124,8 @@ importers: specifier: 1.7.0 version: 1.7.0 '@redocly/openapi-core': - specifier: 1.0.0-beta.120 - version: 1.0.0-beta.120 + specifier: 1.0.2 + version: 1.0.2 '@sinonjs/fake-timers': specifier: 9.1.2 version: 9.1.2 @@ -119,7 +134,7 @@ importers: version: 0.11.1 '@tensorflow/tfjs': specifier: ^4.2.0 - version: 4.2.0(seedrandom@3.0.5) + version: 4.11.0(seedrandom@3.0.5) adm-zip: specifier: ^0.5.10 version: 0.5.10 @@ -127,14 +142,11 @@ importers: specifier: 8.12.0 version: 8.12.0 archiver: - specifier: 5.3.1 - version: 5.3.1 + specifier: 6.0.0 + version: 6.0.0 argon2: - specifier: ^0.30.3 - version: 0.30.3 - autobind-decorator: - specifier: 2.4.0 - version: 2.4.0 + specifier: ^0.31.1 + version: 0.31.1 autolinker: specifier: 4.0.0 version: 4.0.0 @@ -142,38 +154,32 @@ importers: specifier: 0.1.0 version: 0.1.0 aws-sdk: - specifier: 2.1277.0 - version: 2.1277.0 + specifier: 2.1413.0 + version: 2.1413.0 axios: specifier: ^1.4.0 - version: 1.4.0 + version: 1.5.0 bcryptjs: specifier: 2.4.3 version: 2.4.3 blurhash: - specifier: 1.1.5 - version: 1.1.5 + specifier: 2.0.5 + version: 2.0.5 bull: - specifier: 4.10.4 - version: 4.10.4 + specifier: 4.11.3 + version: 4.11.3 cacheable-lookup: - specifier: 7.0.0 - version: 7.0.0 - calckey-js: - specifier: workspace:* - version: link:../calckey-js - cbor: - specifier: 8.1.0 - version: 8.1.0 + specifier: TheEssem/cacheable-lookup + version: github.com/TheEssem/cacheable-lookup/dd2fb616366a3c68dcf321a57a67295967b204bf chalk: - specifier: 5.2.0 - version: 5.2.0 + specifier: 5.3.0 + version: 5.3.0 chalk-template: specifier: 0.4.0 version: 0.4.0 chokidar: specifier: ^3.3.1 - version: 3.3.1 + version: 3.5.3 cli-highlight: specifier: 2.1.11 version: 2.1.11 @@ -186,6 +192,9 @@ importers: date-fns: specifier: 2.30.0 version: 2.30.0 + decompress: + specifier: ^4.2.1 + version: 4.2.1 deep-email-validator: specifier: 0.1.21 version: 0.1.21 @@ -196,47 +205,56 @@ importers: specifier: 4.2.2 version: 4.2.2 file-type: - specifier: 17.1.6 - version: 17.1.6 + specifier: 18.5.0 + version: 18.5.0 + firefish-js: + specifier: workspace:* + version: link:../firefish-js fluent-ffmpeg: specifier: 2.1.2 version: 2.1.2 got: - specifier: 12.5.3 - version: 12.5.3 + specifier: 13.0.0 + version: 13.0.0 + gunzip-maybe: + specifier: ^1.4.2 + version: 1.4.2 + happy-dom: + specifier: ^11.0.2 + version: 11.2.0 hpagent: - specifier: 0.1.2 - version: 0.1.2 + specifier: 1.2.0 + version: 1.2.0 ioredis: specifier: 5.3.2 version: 5.3.2 ip-cidr: - specifier: 3.0.11 - version: 3.0.11 + specifier: 3.1.0 + version: 3.1.0 is-svg: - specifier: 4.3.2 - version: 4.3.2 + specifier: 5.0.0 + version: 5.0.0 js-yaml: specifier: 4.1.0 version: 4.1.0 - jsdom: - specifier: 20.0.3 - version: 20.0.3 + json5: + specifier: 2.2.3 + version: 2.2.3 jsonld: - specifier: 8.2.0 - version: 8.2.0 + specifier: 8.2.1 + version: 8.2.1 jsrsasign: - specifier: 10.6.1 - version: 10.6.1 + specifier: 10.8.6 + version: 10.8.6 koa: - specifier: 2.13.4 - version: 2.13.4 + specifier: 2.14.2 + version: 2.14.2 koa-body: specifier: ^6.0.1 version: 6.0.1 koa-bodyparser: - specifier: 4.3.0 - version: 4.3.0 + specifier: 4.4.1 + version: 4.4.1 koa-favicon: specifier: 2.1.0 version: 2.1.0 @@ -260,13 +278,13 @@ importers: version: 2.1.0 koa-views: specifier: 7.0.2 - version: 7.0.2(@types/koa@2.13.5)(ejs@3.1.9)(pug@3.0.2) + version: 7.0.2(@types/koa@2.13.8)(ejs@3.1.9)(pug@3.0.2) megalodon: specifier: workspace:* version: link:../megalodon meilisearch: - specifier: 0.33.0 - version: 0.33.0 + specifier: 0.34.1 + version: 0.34.1 mfm-js: specifier: 0.23.3 version: 0.23.3 @@ -274,8 +292,8 @@ importers: specifier: 2.1.35 version: 2.1.35 msgpackr: - specifier: 1.9.5 - version: 1.9.5 + specifier: 1.9.7 + version: 1.9.7 multer: specifier: 1.4.4-lts.1 version: 1.4.4-lts.1 @@ -286,32 +304,35 @@ importers: specifier: 4.0.0 version: 4.0.0 node-fetch: - specifier: 3.3.1 - version: 3.3.1 + specifier: 3.3.2 + version: 3.3.2 nodemailer: - specifier: 6.9.3 - version: 6.9.3 + specifier: 6.9.4 + version: 6.9.4 nsfwjs: specifier: 2.4.2 - version: 2.4.2(@tensorflow/tfjs@4.2.0) + version: 2.4.2(@tensorflow/tfjs@4.11.0) oauth: specifier: ^0.10.0 version: 0.10.0 + opencc-js: + specifier: ^1.0.5 + version: 1.0.5 os-utils: specifier: 0.0.14 version: 0.0.14 otpauth: - specifier: ^9.1.2 - version: 9.1.2 + specifier: ^9.1.4 + version: 9.1.4 parse5: specifier: 7.1.2 version: 7.1.2 pg: - specifier: 8.11.0 - version: 8.11.0 + specifier: 8.11.3 + version: 8.11.3 private-ip: - specifier: 2.3.4 - version: 2.3.4 + specifier: 3.0.1 + version: 3.0.1 probe-image-size: specifier: 7.2.3 version: 7.2.3 @@ -322,8 +343,8 @@ importers: specifier: 2.3.0 version: 2.3.0 pureimage: - specifier: 0.3.15 - version: 0.3.15 + specifier: 0.4.8 + version: 0.4.8 qrcode: specifier: 1.5.3 version: 1.5.3 @@ -337,14 +358,11 @@ importers: specifier: 3.4.1 version: 3.4.1 re2: - specifier: 1.19.0 - version: 1.19.0 - redis-lock: - specifier: 0.1.4 - version: 0.1.4 + specifier: 1.20.3 + version: 1.20.3 redis-semaphore: - specifier: 5.3.1 - version: 5.3.1(ioredis@5.3.2) + specifier: 5.5.0 + version: 5.5.0(ioredis@5.3.2) reflect-metadata: specifier: 0.1.13 version: 0.1.13 @@ -358,17 +376,17 @@ importers: specifier: 3.13.0 version: 3.13.0 sanitize-html: - specifier: 2.10.0 - version: 2.10.0 + specifier: 2.11.0 + version: 2.11.0 seedrandom: specifier: ^3.0.5 version: 3.0.5 semver: - specifier: 7.5.1 - version: 7.5.1 + specifier: 7.5.4 + version: 7.5.4 sharp: - specifier: 0.32.1 - version: 0.32.1 + specifier: 0.32.5 + version: 0.32.5 sonic-channel: specifier: ^1.3.1 version: 1.3.1 @@ -382,14 +400,20 @@ importers: specifier: 1.0.0 version: 1.0.0 systeminformation: - specifier: 5.17.17 - version: 5.17.17 + specifier: 5.21.3 + version: 5.21.3 + tar-stream: + specifier: ^3.1.6 + version: 3.1.6 tesseract.js: - specifier: ^3.0.3 - version: 3.0.3(eslint@8.42.0) + specifier: ^4.1.1 + version: 4.1.2 tinycolor2: - specifier: 1.5.2 - version: 1.5.2 + specifier: 1.6.0 + version: 1.6.0 + tinyld: + specifier: ^1.3.4 + version: 1.3.4 tmp: specifier: 0.2.1 version: 0.2.1 @@ -397,8 +421,8 @@ importers: specifier: 14.0.0 version: 14.0.0 typeorm: - specifier: 0.3.11 - version: 0.3.11(ioredis@5.3.2)(pg@8.11.0)(ts-node@10.9.1) + specifier: 0.3.17 + version: 0.3.17(ioredis@5.3.2)(pg@8.11.3)(ts-node@10.9.1) ulid: specifier: 2.3.0 version: 2.3.0 @@ -406,8 +430,8 @@ importers: specifier: 9.0.0 version: 9.0.0 web-push: - specifier: 3.6.1 - version: 3.6.1 + specifier: 3.6.5 + version: 3.6.5 websocket: specifier: 1.0.34 version: 1.0.34 @@ -424,43 +448,34 @@ importers: devDependencies: '@swc/cli': specifier: ^0.1.62 - version: 0.1.62(@swc/core@1.3.62)(chokidar@3.3.1) + version: 0.1.62(@swc/core@1.3.82)(chokidar@3.5.3) '@swc/core': - specifier: ^1.3.62 - version: 1.3.62 + specifier: 1.3.82 + version: 1.3.82 '@types/adm-zip': specifier: ^0.5.0 - version: 0.5.0 + version: 0.5.1 '@types/bcryptjs': specifier: 2.4.2 version: 2.4.2 - '@types/bull': - specifier: 3.15.9 - version: 3.15.9 - '@types/cbor': - specifier: 6.0.0 - version: 6.0.0 '@types/escape-regexp': specifier: 0.0.1 version: 0.0.1 '@types/fluent-ffmpeg': - specifier: 2.1.20 - version: 2.1.20 + specifier: 2.1.21 + version: 2.1.21 '@types/js-yaml': specifier: 4.0.5 version: 4.0.5 - '@types/jsdom': - specifier: 20.0.1 - version: 20.0.1 '@types/jsonld': - specifier: 1.5.8 - version: 1.5.8 + specifier: 1.5.9 + version: 1.5.9 '@types/jsrsasign': - specifier: 10.5.4 - version: 10.5.4 + specifier: 10.5.8 + version: 10.5.8 '@types/koa': - specifier: 2.13.5 - version: 2.13.5 + specifier: 2.13.8 + version: 2.13.8 '@types/koa-bodyparser': specifier: 4.3.10 version: 4.3.10 @@ -481,7 +496,7 @@ importers: version: 4.1.3 '@types/koa-views': specifier: 7.0.0 - version: 7.0.0(@types/koa@2.13.5)(pug@3.0.2) + version: 7.0.0(@types/koa@2.13.8)(pug@3.0.2) '@types/koa__cors': specifier: 3.3.0 version: 3.3.0 @@ -501,8 +516,8 @@ importers: specifier: 3.0.3 version: 3.0.3 '@types/nodemailer': - specifier: 6.4.8 - version: 6.4.8 + specifier: 6.4.9 + version: 6.4.9 '@types/oauth': specifier: 0.9.1 version: 0.9.1 @@ -516,8 +531,8 @@ importers: specifier: 2.1.0 version: 2.1.0 '@types/qrcode': - specifier: 1.5.0 - version: 1.5.0 + specifier: 1.5.1 + version: 1.5.1 '@types/qs': specifier: 6.9.7 version: 6.9.7 @@ -539,9 +554,6 @@ importers: '@types/semver': specifier: 7.5.0 version: 7.5.0 - '@types/sharp': - specifier: 0.31.1 - version: 0.31.1 '@types/sinonjs__fake-timers': specifier: 8.1.2 version: 8.1.2 @@ -552,8 +564,8 @@ importers: specifier: 0.2.3 version: 0.2.3 '@types/uuid': - specifier: 8.3.4 - version: 8.3.4 + specifier: 9.0.2 + version: 9.0.2 '@types/web-push': specifier: 3.3.2 version: 3.3.2 @@ -561,23 +573,20 @@ importers: specifier: 1.0.5 version: 1.0.5 '@types/ws': - specifier: 8.5.4 - version: 8.5.4 + specifier: 8.5.5 + version: 8.5.5 cross-env: specifier: 7.0.3 version: 7.0.3 eslint: - specifier: ^8.42.0 - version: 8.42.0 + specifier: ^8.46.0 + version: 8.49.0 execa: specifier: 6.1.0 version: 6.1.0 - json5: - specifier: 2.2.3 - version: 2.2.3 json5-loader: specifier: 4.0.1 - version: 4.0.1(webpack@5.85.1) + version: 4.0.1(webpack@5.88.2) mocha: specifier: 10.2.0 version: 10.2.0 @@ -589,22 +598,22 @@ importers: version: 2.0.0 swc-loader: specifier: ^0.2.3 - version: 0.2.3(@swc/core@1.3.62)(webpack@5.85.1) + version: 0.2.3(@swc/core@1.3.82)(webpack@5.88.2) ts-loader: - specifier: 9.4.3 - version: 9.4.3(typescript@5.1.3)(webpack@5.85.1) + specifier: 9.4.4 + version: 9.4.4(typescript@5.1.6)(webpack@5.88.2) ts-node: specifier: 10.9.1 - version: 10.9.1(@swc/core@1.3.62)(@types/node@18.11.18)(typescript@5.1.3) + version: 10.9.1(@swc/core@1.3.82)(@types/node@18.11.18)(typescript@5.1.6) tsconfig-paths: specifier: 4.2.0 version: 4.2.0 typescript: - specifier: 5.1.3 - version: 5.1.3 + specifier: 5.1.6 + version: 5.1.6 webpack: - specifier: ^5.85.1 - version: 5.85.1(@swc/core@1.3.62)(webpack-cli@5.1.3) + specifier: ^5.88.2 + version: 5.88.2(@swc/core@1.3.82)(webpack-cli@5.1.4) ws: specifier: 8.13.0 version: 8.13.0 @@ -618,82 +627,29 @@ importers: specifier: 5.1.1 version: 5.1.1 - packages/calckey-js: - dependencies: - eventemitter3: - specifier: ^4.0.7 - version: 4.0.7 - reconnecting-websocket: - specifier: ^4.4.0 - version: 4.4.0 - semver: - specifier: ^7.3.8 - version: 7.5.1 - optionalDependencies: - '@swc/core-android-arm64': - specifier: 1.3.11 - version: 1.3.11 - devDependencies: - '@microsoft/api-documenter': - specifier: ^7.22.21 - version: 7.22.21(@types/node@20.3.1) - '@microsoft/api-extractor': - specifier: ^7.36.0 - version: 7.36.0(@types/node@20.3.1) - '@swc/cli': - specifier: ^0.1.62 - version: 0.1.62(@swc/core@1.3.62)(chokidar@3.3.1) - '@swc/core': - specifier: ^1.3.62 - version: 1.3.62 - '@types/jest': - specifier: ^27.4.0 - version: 27.4.0 - '@types/node': - specifier: 20.3.1 - version: 20.3.1 - jest: - specifier: ^27.4.5 - version: 27.4.5(ts-node@10.4.0) - jest-fetch-mock: - specifier: ^3.0.3 - version: 3.0.3 - jest-websocket-mock: - specifier: ^2.2.1 - version: 2.2.1(mock-socket@9.0.8) - mock-socket: - specifier: ^9.0.8 - version: 9.0.8 - ts-jest: - specifier: ^27.1.2 - version: 27.1.2(@babel/core@7.22.5)(@types/jest@27.4.0)(jest@27.4.5)(typescript@5.1.3) - ts-node: - specifier: 10.4.0 - version: 10.4.0(@swc/core@1.3.62)(@types/node@20.3.1)(typescript@5.1.3) - tsd: - specifier: ^0.28.1 - version: 0.28.1 - typescript: - specifier: 5.1.3 - version: 5.1.3 - packages/client: devDependencies: '@discordapp/twemoji': specifier: 14.1.2 version: 14.1.2 + '@eslint-sets/eslint-config-vue3': + specifier: ^5.8.0 + version: 5.9.0(@babel/core@7.22.20)(eslint@8.49.0)(prettier@3.0.3)(typescript@5.2.2) + '@eslint-sets/eslint-config-vue3-ts': + specifier: ^3.3.0 + version: 3.3.0(@babel/core@7.22.20)(eslint@8.49.0)(prettier@3.0.3)(typescript@5.2.2) '@phosphor-icons/web': specifier: ^2.0.3 version: 2.0.3 '@rollup/plugin-alias': - specifier: 3.1.9 - version: 3.1.9(rollup@3.23.1) + specifier: 5.0.0 + version: 5.0.0(rollup@3.28.1) '@rollup/plugin-json': - specifier: 4.1.0 - version: 4.1.0(rollup@3.23.1) + specifier: 6.0.0 + version: 6.0.0(rollup@3.28.1) '@rollup/pluginutils': - specifier: ^4.2.1 - version: 4.2.1 + specifier: ^5.0.4 + version: 5.0.4(rollup@3.28.1) '@syuilo/aiscript': specifier: 0.11.1 version: 0.11.1 @@ -704,17 +660,17 @@ importers: specifier: 8.1.0 version: 8.1.0 '@types/gulp': - specifier: 4.0.11 - version: 4.0.11 + specifier: 4.0.13 + version: 4.0.13 '@types/gulp-rename': specifier: 2.0.2 version: 2.0.2 '@types/katex': - specifier: 0.16.0 - version: 0.16.0 + specifier: 0.16.2 + version: 0.16.2 '@types/matter-js': - specifier: 0.18.2 - version: 0.18.2 + specifier: 0.19.0 + version: 0.19.0 '@types/punycode': specifier: 2.1.0 version: 2.1.0 @@ -728,11 +684,11 @@ importers: specifier: 1.4.3 version: 1.4.3 '@types/uuid': - specifier: 8.3.4 - version: 8.3.4 + specifier: 9.0.3 + version: 9.0.3 '@vitejs/plugin-vue': - specifier: 4.2.3 - version: 4.2.3(vite@4.3.9)(vue@3.3.4) + specifier: 4.3.4 + version: 4.3.4(vite@4.4.9)(vue@3.3.4) '@vue/compiler-sfc': specifier: 3.3.4 version: 3.3.4 @@ -740,41 +696,38 @@ importers: specifier: 2.4.0 version: 2.4.0 autosize: - specifier: 5.0.2 - version: 5.0.2 + specifier: 6.0.1 + version: 6.0.1 blurhash: - specifier: 1.1.5 - version: 1.1.5 + specifier: 2.0.5 + version: 2.0.5 broadcast-channel: - specifier: 4.19.1 - version: 4.19.1 + specifier: 5.3.0 + version: 5.3.0 browser-image-resizer: specifier: github:misskey-dev/browser-image-resizer - version: github.com/misskey-dev/browser-image-resizer/56f504427ad7f6500e141a6d9f3aee42023d7f3e - calckey-js: - specifier: workspace:* - version: link:../calckey-js + version: github.com/misskey-dev/browser-image-resizer/5a70660c2ac8aad3d436bfa67a5e7f7c8946cac4 chart.js: - specifier: 4.3.0 - version: 4.3.0 + specifier: 4.4.0 + version: 4.4.0 chartjs-adapter-date-fns: specifier: 3.0.0 - version: 3.0.0(chart.js@4.3.0)(date-fns@2.30.0) + version: 3.0.0(chart.js@4.4.0)(date-fns@2.30.0) chartjs-chart-matrix: specifier: ^2.0.1 - version: 2.0.1(chart.js@4.3.0) + version: 2.0.1(chart.js@4.4.0) chartjs-plugin-gradient: specifier: 0.6.1 - version: 0.6.1(chart.js@4.3.0) + version: 0.6.1(chart.js@4.4.0) chartjs-plugin-zoom: specifier: 2.0.1 - version: 2.0.1(chart.js@4.3.0) + version: 2.0.1(chart.js@4.4.0) city-timezones: specifier: ^1.2.1 version: 1.2.1 compare-versions: - specifier: 5.0.3 - version: 5.0.3 + specifier: 6.1.0 + version: 6.1.0 cropperjs: specifier: 2.0.0-beta.2 version: 2.0.0-beta.2 @@ -789,22 +742,34 @@ importers: version: 2.30.0 emojilib: specifier: github:thatonecalculator/emojilib - version: github.com/thatonecalculator/emojilib/9d16541664dc8fef3201ae9b647477070676a52e + version: github.com/thatonecalculator/emojilib/d3c8c6a77d4362b3b3180099f1d2eac344ce245c escape-regexp: specifier: 0.0.1 version: 0.0.1 + eslint-config-prettier: + specifier: 9.0.0 + version: 9.0.0(eslint@8.49.0) + eslint-plugin-file-progress: + specifier: ^1.3.0 + version: 1.3.0(eslint@8.49.0) eventemitter3: - specifier: 4.0.7 - version: 4.0.7 + specifier: 5.0.1 + version: 5.0.1 + fast-blurhash: + specifier: ^1.1.2 + version: 1.1.2 + firefish-js: + specifier: workspace:* + version: link:../firefish-js focus-trap: - specifier: ^7.4.3 - version: 7.4.3 + specifier: ^7.5.2 + version: 7.5.2 focus-trap-vue: specifier: ^4.0.2 - version: 4.0.2(focus-trap@7.4.3)(vue@3.3.4) + version: 4.0.2(focus-trap@7.5.2)(vue@3.3.4) gsap: - specifier: ^3.11.5 - version: 3.11.5 + specifier: ^3.12.2 + version: 3.12.2 idb-keyval: specifier: 6.2.1 version: 6.2.1 @@ -815,20 +780,20 @@ importers: specifier: 2.2.3 version: 2.2.3 katex: - specifier: 0.16.7 - version: 0.16.7 + specifier: 0.16.8 + version: 0.16.8 matter-js: - specifier: 0.18.0 - version: 0.18.0 + specifier: 0.19.0 + version: 0.19.0 mfm-js: specifier: 0.23.3 version: 0.23.3 photoswipe: - specifier: 5.3.7 - version: 5.3.7 + specifier: 5.3.9 + version: 5.3.9 prettier: - specifier: 3.0.0 - version: 3.0.0 + specifier: 3.0.3 + version: 3.0.3 prettier-plugin-vue: specifier: 1.1.6 version: 1.1.6 @@ -836,29 +801,23 @@ importers: specifier: 1.29.0 version: 1.29.0 punycode: - specifier: 2.1.1 - version: 2.1.1 - querystring: - specifier: 0.2.1 - version: 0.2.1 + specifier: 2.3.0 + version: 2.3.0 rndstr: specifier: 1.0.0 version: 1.0.0 rollup: - specifier: 3.23.1 - version: 3.23.1 + specifier: 3.28.1 + version: 3.28.1 s-age: specifier: 1.1.2 version: 1.1.2 sass: - specifier: 1.62.1 - version: 1.62.1 + specifier: 1.66.1 + version: 1.66.1 seedrandom: specifier: 3.0.5 version: 3.0.5 - start-server-and-test: - specifier: 1.15.2 - version: 1.15.2 strict-event-emitter-types: specifier: 2.0.0 version: 2.0.0 @@ -866,8 +825,8 @@ importers: specifier: 2.1.0 version: 2.1.0 swiper: - specifier: 9.3.2 - version: 9.3.2 + specifier: 10.2.0 + version: 10.2.0 syuilo-password-strength: specifier: 0.0.1 version: 0.0.1 @@ -875,17 +834,20 @@ importers: specifier: 3.1.0 version: 3.1.0 three: - specifier: 0.146.0 - version: 0.146.0 + specifier: 0.156.0 + version: 0.156.0 throttle-debounce: specifier: 5.0.0 version: 5.0.0 tinycolor2: - specifier: 1.5.2 - version: 1.5.2 + specifier: 1.6.0 + version: 1.6.0 + tinyld: + specifier: ^1.3.4 + version: 1.3.4 tsc-alias: - specifier: 1.8.6 - version: 1.8.6 + specifier: 1.8.7 + version: 1.8.7 tsconfig-paths: specifier: 4.2.0 version: 4.2.0 @@ -893,8 +855,8 @@ importers: specifier: 14.0.0 version: 14.0.0 typescript: - specifier: 5.1.3 - version: 5.1.3 + specifier: 5.2.2 + version: 5.2.2 unicode-emoji-json: specifier: ^0.4.0 version: 0.4.0 @@ -902,17 +864,20 @@ importers: specifier: 9.0.0 version: 9.0.0 vanilla-tilt: - specifier: 1.8.0 - version: 1.8.0 + specifier: 1.8.1 + version: 1.8.1 vite: - specifier: 4.3.9 - version: 4.3.9(@types/node@18.11.18)(sass@1.62.1) + specifier: 4.4.9 + version: 4.4.9(@types/node@20.5.8)(sass@1.66.1) vite-plugin-compression: specifier: ^0.5.1 - version: 0.5.1(vite@4.3.9) + version: 0.5.1(vite@4.4.9) vue: specifier: 3.3.4 version: 3.3.4 + vue-draggable-plus: + specifier: ^0.2.6 + version: 0.2.6(@types/sortablejs@1.15.2) vue-isyourpasswordsafe: specifier: ^2.0.0 version: 2.0.0 @@ -922,9 +887,65 @@ importers: vue-prism-editor: specifier: 2.0.0-alpha.2 version: 2.0.0-alpha.2(vue@3.3.4) - vuedraggable: - specifier: 4.1.0 - version: 4.1.0(vue@3.3.4) + + packages/firefish-js: + dependencies: + eventemitter3: + specifier: ^4.0.7 + version: 4.0.7 + reconnecting-websocket: + specifier: ^4.4.0 + version: 4.4.0 + semver: + specifier: ^7.3.8 + version: 7.5.4 + optionalDependencies: + '@swc/core-android-arm64': + specifier: 1.3.11 + version: 1.3.11 + devDependencies: + '@microsoft/api-documenter': + specifier: ^7.22.21 + version: 7.23.0(@types/node@20.3.1) + '@microsoft/api-extractor': + specifier: ^7.36.0 + version: 7.37.0(@types/node@20.3.1) + '@swc/cli': + specifier: ^0.1.62 + version: 0.1.62(@swc/core@1.3.82)(chokidar@3.5.3) + '@swc/core': + specifier: 1.3.82 + version: 1.3.82 + '@types/jest': + specifier: ^27.4.0 + version: 27.5.2 + '@types/node': + specifier: 20.3.1 + version: 20.3.1 + jest: + specifier: ^27.4.5 + version: 27.5.1(ts-node@10.4.0) + jest-fetch-mock: + specifier: ^3.0.3 + version: 3.0.3 + jest-websocket-mock: + specifier: ^2.2.1 + version: 2.5.0 + mock-socket: + specifier: ^9.0.8 + version: 9.3.1 + ts-jest: + specifier: ^27.1.2 + version: 27.1.5(@babel/core@7.22.20)(@types/jest@27.5.2)(jest@27.5.1)(typescript@5.1.3) + ts-node: + specifier: 10.4.0 + version: 10.4.0(@swc/core@1.3.82)(@types/node@20.3.1)(typescript@5.1.3) + tsd: + specifier: ^0.28.1 + version: 0.28.1 + typescript: + specifier: 5.1.3 + version: 5.1.3 packages/megalodon: dependencies: @@ -933,7 +954,7 @@ importers: version: 0.9.1 '@types/ws': specifier: ^8.5.4 - version: 8.5.4 + version: 8.5.5 async-lock: specifier: 1.4.0 version: 1.4.0 @@ -942,7 +963,7 @@ importers: version: 1.2.2 dayjs: specifier: ^1.11.7 - version: 1.11.8 + version: 1.11.9 form-data: specifier: ^4.0.0 version: 4.0.0 @@ -976,61 +997,61 @@ importers: version: 1.4.0 '@types/core-js': specifier: ^2.5.0 - version: 2.5.0 + version: 2.5.6 '@types/form-data': specifier: ^2.5.0 version: 2.5.0 '@types/jest': specifier: ^29.4.0 - version: 29.4.0 + version: 29.5.5 '@types/node': specifier: 18.11.18 version: 18.11.18 '@types/object-assign-deep': specifier: ^0.4.0 - version: 0.4.0 + version: 0.4.1 '@types/parse-link-header': specifier: ^2.0.0 - version: 2.0.0 + version: 2.0.1 '@types/uuid': specifier: ^9.0.0 - version: 9.0.0 + version: 9.0.3 '@typescript-eslint/eslint-plugin': specifier: ^5.49.0 - version: 5.49.0(@typescript-eslint/parser@5.49.0)(eslint@8.42.0)(typescript@4.9.4) + version: 5.62.0(@typescript-eslint/parser@5.62.0)(eslint@8.49.0)(typescript@4.9.4) '@typescript-eslint/parser': specifier: ^5.49.0 - version: 5.49.0(eslint@8.42.0)(typescript@4.9.4) + version: 5.62.0(eslint@8.49.0)(typescript@4.9.4) eslint: specifier: ^8.32.0 - version: 8.42.0 + version: 8.49.0 eslint-config-prettier: specifier: ^8.6.0 - version: 8.6.0(eslint@8.42.0) + version: 8.10.0(eslint@8.49.0) eslint-config-standard: specifier: ^16.0.3 - version: 16.0.3(eslint-plugin-import@2.27.5)(eslint-plugin-node@11.0.0)(eslint-plugin-promise@6.1.1)(eslint@8.42.0) + version: 16.0.3(eslint-plugin-import@2.28.1)(eslint-plugin-node@11.1.0)(eslint-plugin-promise@6.1.1)(eslint@8.49.0) eslint-plugin-import: specifier: ^2.27.5 - version: 2.27.5(@typescript-eslint/parser@5.49.0)(eslint@8.42.0) + version: 2.28.1(@typescript-eslint/parser@5.62.0)(eslint@8.49.0) eslint-plugin-node: specifier: ^11.0.0 - version: 11.0.0(eslint@8.42.0) + version: 11.1.0(eslint@8.49.0) eslint-plugin-prettier: specifier: ^4.2.1 - version: 4.2.1(eslint-config-prettier@8.6.0)(eslint@8.42.0)(prettier@2.8.8) + version: 4.2.1(eslint-config-prettier@8.10.0)(eslint@8.49.0)(prettier@2.8.8) eslint-plugin-promise: specifier: ^6.1.1 - version: 6.1.1(eslint@8.42.0) + version: 6.1.1(eslint@8.49.0) eslint-plugin-standard: specifier: ^5.0.0 - version: 5.0.0(eslint@8.42.0) + version: 5.0.0(eslint@8.49.0) jest: specifier: ^29.4.0 - version: 29.4.0(@types/node@18.11.18) + version: 29.7.0(@types/node@18.11.18) jest-worker: specifier: ^29.4.0 - version: 29.4.0 + version: 29.7.0 lodash: specifier: ^4.17.14 version: 4.17.21 @@ -1039,142 +1060,153 @@ importers: version: 2.8.8 ts-jest: specifier: ^29.0.5 - version: 29.0.5(@babel/core@7.22.5)(jest@29.4.0)(typescript@4.9.4) + version: 29.1.1(@babel/core@7.22.20)(jest@29.7.0)(typescript@4.9.4) typedoc: specifier: ^0.23.24 - version: 0.23.24(typescript@4.9.4) + version: 0.23.28(typescript@4.9.4) packages/sw: devDependencies: '@swc/cli': specifier: ^0.1.62 - version: 0.1.62(@swc/core@1.3.62)(chokidar@3.3.1) + version: 0.1.62(@swc/core@1.3.82)(chokidar@3.5.3) '@swc/core': - specifier: ^1.3.62 - version: 1.3.62 + specifier: 1.3.82 + version: 1.3.82 '@swc/core-android-arm64': specifier: 1.3.11 version: 1.3.11 - calckey-js: + firefish-js: specifier: workspace:* - version: link:../calckey-js + version: link:../firefish-js idb-keyval: specifier: ^6.2.1 version: 6.2.1 swc-loader: specifier: ^0.2.3 - version: 0.2.3(@swc/core@1.3.62)(webpack@5.85.1) + version: 0.2.3(@swc/core@1.3.82)(webpack@5.88.2) webpack: specifier: ^5.85.1 - version: 5.85.1(@swc/core@1.3.62)(webpack-cli@5.1.3) + version: 5.88.2(@swc/core@1.3.82)(webpack-cli@5.1.4) webpack-cli: specifier: ^5.1.3 - version: 5.1.3(webpack@5.85.1) + version: 5.1.4(webpack@5.88.2) packages: - /@aashutoshrathi/word-wrap@1.2.5: - resolution: {integrity: sha512-plhoNEfSVdHMKXQyAxvH0Zyv3/4NL8r6pwgMQdmHR2vBUXn2t74PN2pBRppqKUa6RMT0yldyvOHG5Dbjwy2mBQ==} + /@aashutoshrathi/word-wrap@1.2.6: + resolution: {integrity: sha512-1Yjs2SvM8TflER/OD3cOjhWWOZb58A2t7wpE2S9XfBYTiIl+XFhQG2bjy4Pu1I+EAlCNUzRDYDdFwFYUKvXcIA==} engines: {node: '>=0.10.0'} + dev: true /@ampproject/remapping@2.2.1: resolution: {integrity: sha512-lFMjJTrFL3j7L9yBxwYfCq2k6qqwHyzuUl/XBnif78PWTJYyL/dfowQHWE3sp6U6ZzqWiiIZnpTMO96zhkjwtg==} engines: {node: '>=6.0.0'} dependencies: '@jridgewell/gen-mapping': 0.3.3 - '@jridgewell/trace-mapping': 0.3.18 + '@jridgewell/trace-mapping': 0.3.19 - /@babel/code-frame@7.22.5: - resolution: {integrity: sha512-Xmwn266vad+6DAqEB2A6V/CcZVp62BbwVmcOJc2RPuwih1kw02TjQvWVWlcKGbBPd+8/0V5DEkOcizRGYsspYQ==} + /@babel/code-frame@7.22.13: + resolution: {integrity: sha512-XktuhWlJ5g+3TJXc5upd9Ks1HutSArik6jf2eAjYFyIOf4ej3RN+184cZbzDvbPnuTJIUhPKKJE3cIsYTiAT3w==} engines: {node: '>=6.9.0'} dependencies: - '@babel/highlight': 7.22.5 + '@babel/highlight': 7.22.20 + chalk: 2.4.2 - /@babel/compat-data@7.22.5: - resolution: {integrity: sha512-4Jc/YuIaYqKnDDz892kPIledykKg12Aw1PYX5i/TY28anJtacvM1Rrr8wbieB9GfEJwlzqT0hUEao0CxEebiDA==} + /@babel/compat-data@7.22.20: + resolution: {integrity: sha512-BQYjKbpXjoXwFW5jGqiizJQQT/aC7pFm9Ok1OWssonuguICi264lbgMzRp2ZMmRSlfkX6DsWDDcsrctK8Rwfiw==} engines: {node: '>=6.9.0'} - /@babel/core@7.22.5: - resolution: {integrity: sha512-SBuTAjg91A3eKOvD+bPEz3LlhHZRNu1nFOVts9lzDJTXshHTjII0BAtDS3Y2DAkdZdDKWVZGVwkDfc4Clxn1dg==} + /@babel/core@7.22.20: + resolution: {integrity: sha512-Y6jd1ahLubuYweD/zJH+vvOY141v4f9igNQAQ+MBgq9JlHS2iTsZKn1aMsb3vGccZsXI16VzTBw52Xx0DWmtnA==} engines: {node: '>=6.9.0'} dependencies: '@ampproject/remapping': 2.2.1 - '@babel/code-frame': 7.22.5 - '@babel/generator': 7.22.5 - '@babel/helper-compilation-targets': 7.22.5(@babel/core@7.22.5) - '@babel/helper-module-transforms': 7.22.5 - '@babel/helpers': 7.22.5 - '@babel/parser': 7.22.5 - '@babel/template': 7.22.5 - '@babel/traverse': 7.22.5 - '@babel/types': 7.22.5 + '@babel/code-frame': 7.22.13 + '@babel/generator': 7.22.15 + '@babel/helper-compilation-targets': 7.22.15 + '@babel/helper-module-transforms': 7.22.20(@babel/core@7.22.20) + '@babel/helpers': 7.22.15 + '@babel/parser': 7.22.16 + '@babel/template': 7.22.15 + '@babel/traverse': 7.22.20 + '@babel/types': 7.22.19 convert-source-map: 1.9.0 debug: 4.3.4(supports-color@8.1.1) gensync: 1.0.0-beta.2 json5: 2.2.3 - semver: 6.3.0 + semver: 6.3.1 transitivePeerDependencies: - supports-color - /@babel/generator@7.22.5: - resolution: {integrity: sha512-+lcUbnTRhd0jOewtFSedLyiPsD5tswKkbgcezOqqWFUVNEwoUTlpPOBmvhG7OXWLR4jMdv0czPGH5XbflnD1EA==} + /@babel/eslint-parser@7.22.15(@babel/core@7.22.20)(eslint@8.49.0): + resolution: {integrity: sha512-yc8OOBIQk1EcRrpizuARSQS0TWAcOMpEJ1aafhNznaeYkeL+OhqnDObGFylB8ka8VFF/sZc+S4RzHyO+3LjQxg==} + engines: {node: ^10.13.0 || ^12.13.0 || >=14.0.0} + peerDependencies: + '@babel/core': ^7.11.0 + eslint: ^7.5.0 || ^8.0.0 + dependencies: + '@babel/core': 7.22.20 + '@nicolo-ribaudo/eslint-scope-5-internals': 5.1.1-v1 + eslint: 8.49.0 + eslint-visitor-keys: 2.1.0 + semver: 6.3.1 + dev: true + + /@babel/generator@7.22.15: + resolution: {integrity: sha512-Zu9oWARBqeVOW0dZOjXc3JObrzuqothQ3y/n1kUtrjCoCPLkXUwMvOo/F/TCfoHMbWIFlWwpZtkZVb9ga4U2pA==} engines: {node: '>=6.9.0'} dependencies: - '@babel/types': 7.22.5 + '@babel/types': 7.22.19 '@jridgewell/gen-mapping': 0.3.3 - '@jridgewell/trace-mapping': 0.3.18 + '@jridgewell/trace-mapping': 0.3.19 jsesc: 2.5.2 - /@babel/helper-compilation-targets@7.22.5(@babel/core@7.22.5): - resolution: {integrity: sha512-Ji+ywpHeuqxB8WDxraCiqR0xfhYjiDE/e6k7FuIaANnoOFxAHskHChz4vA1mJC9Lbm01s1PVAGhQY4FUKSkGZw==} + /@babel/helper-compilation-targets@7.22.15: + resolution: {integrity: sha512-y6EEzULok0Qvz8yyLkCvVX+02ic+By2UdOhylwUOvOn9dvYc9mKICJuuU1n1XBI02YWsNsnrY1kc6DVbjcXbtw==} engines: {node: '>=6.9.0'} - peerDependencies: - '@babel/core': ^7.0.0 dependencies: - '@babel/compat-data': 7.22.5 - '@babel/core': 7.22.5 - '@babel/helper-validator-option': 7.22.5 - browserslist: 4.21.9 + '@babel/compat-data': 7.22.20 + '@babel/helper-validator-option': 7.22.15 + browserslist: 4.21.10 lru-cache: 5.1.1 - semver: 6.3.0 + semver: 6.3.1 - /@babel/helper-environment-visitor@7.22.5: - resolution: {integrity: sha512-XGmhECfVA/5sAt+H+xpSg0mfrHq6FzNr9Oxh7PSEBBRUb/mL7Kz3NICXb194rCqAEdxkhPT1a88teizAFyvk8Q==} + /@babel/helper-environment-visitor@7.22.20: + resolution: {integrity: sha512-zfedSIzFhat/gFhWfHtgWvlec0nqB9YEIVrpuwjruLlXfUSnA8cJB0miHKwqDnQ7d32aKo2xt88/xZptwxbfhA==} engines: {node: '>=6.9.0'} /@babel/helper-function-name@7.22.5: resolution: {integrity: sha512-wtHSq6jMRE3uF2otvfuD3DIvVhOsSNshQl0Qrd7qC9oQJzHvOL4qQXlQn2916+CXGywIjpGuIkoyZRRxHPiNQQ==} engines: {node: '>=6.9.0'} dependencies: - '@babel/template': 7.22.5 - '@babel/types': 7.22.5 + '@babel/template': 7.22.15 + '@babel/types': 7.22.19 /@babel/helper-hoist-variables@7.22.5: resolution: {integrity: sha512-wGjk9QZVzvknA6yKIUURb8zY3grXCcOZt+/7Wcy8O2uctxhplmUPkOdlgoNhmdVee2c92JXbf1xpMtVNbfoxRw==} engines: {node: '>=6.9.0'} dependencies: - '@babel/types': 7.22.5 + '@babel/types': 7.22.19 - /@babel/helper-module-imports@7.22.5: - resolution: {integrity: sha512-8Dl6+HD/cKifutF5qGd/8ZJi84QeAKh+CEe1sBzz8UayBBGg1dAIJrdHOcOM5b2MpzWL2yuotJTtGjETq0qjXg==} + /@babel/helper-module-imports@7.22.15: + resolution: {integrity: sha512-0pYVBnDKZO2fnSPCrgM/6WMc7eS20Fbok+0r88fp+YtWVLZrp4CkafFGIp+W0VKw4a22sgebPT99y+FDNMdP4w==} engines: {node: '>=6.9.0'} dependencies: - '@babel/types': 7.22.5 + '@babel/types': 7.22.19 - /@babel/helper-module-transforms@7.22.5: - resolution: {integrity: sha512-+hGKDt/Ze8GFExiVHno/2dvG5IdstpzCq0y4Qc9OJ25D4q3pKfiIP/4Vp3/JvhDkLKsDK2api3q3fpIgiIF5bw==} + /@babel/helper-module-transforms@7.22.20(@babel/core@7.22.20): + resolution: {integrity: sha512-dLT7JVWIUUxKOs1UnJUBR3S70YK+pKX6AbJgB2vMIvEkZkrfJDbYDJesnPshtKV4LhDOR3Oc5YULeDizRek+5A==} engines: {node: '>=6.9.0'} + peerDependencies: + '@babel/core': ^7.0.0 dependencies: - '@babel/helper-environment-visitor': 7.22.5 - '@babel/helper-module-imports': 7.22.5 + '@babel/core': 7.22.20 + '@babel/helper-environment-visitor': 7.22.20 + '@babel/helper-module-imports': 7.22.15 '@babel/helper-simple-access': 7.22.5 - '@babel/helper-split-export-declaration': 7.22.5 - '@babel/helper-validator-identifier': 7.22.5 - '@babel/template': 7.22.5 - '@babel/traverse': 7.22.5 - '@babel/types': 7.22.5 - transitivePeerDependencies: - - supports-color + '@babel/helper-split-export-declaration': 7.22.6 + '@babel/helper-validator-identifier': 7.22.20 /@babel/helper-plugin-utils@7.22.5: resolution: {integrity: sha512-uLls06UVKgFG9QD4OeFYLEGteMIAa5kpTPcFL28yuCIIzsf6ZyKZMllKVOCZFhiZ5ptnwX4mtKdWCBE/uT4amg==} @@ -1184,284 +1216,379 @@ packages: resolution: {integrity: sha512-n0H99E/K+Bika3++WNL17POvo4rKWZ7lZEp1Q+fStVbUi8nxPQEBOlTmCOxW/0JsS56SKKQ+ojAe2pHKJHN35w==} engines: {node: '>=6.9.0'} dependencies: - '@babel/types': 7.22.5 + '@babel/types': 7.22.19 - /@babel/helper-split-export-declaration@7.22.5: - resolution: {integrity: sha512-thqK5QFghPKWLhAV321lxF95yCg2K3Ob5yw+M3VHWfdia0IkPXUtoLH8x/6Fh486QUvzhb8YOWHChTVen2/PoQ==} + /@babel/helper-split-export-declaration@7.22.6: + resolution: {integrity: sha512-AsUnxuLhRYsisFiaJwvp1QF+I3KjD5FOxut14q/GzovUe6orHLesW2C7d754kRm53h5gqrz6sFl6sxc4BVtE/g==} engines: {node: '>=6.9.0'} dependencies: - '@babel/types': 7.22.5 + '@babel/types': 7.22.19 /@babel/helper-string-parser@7.22.5: resolution: {integrity: sha512-mM4COjgZox8U+JcXQwPijIZLElkgEpO5rsERVDJTc2qfCDfERyob6k5WegS14SX18IIjv+XD+GrqNumY5JRCDw==} engines: {node: '>=6.9.0'} - /@babel/helper-validator-identifier@7.22.5: - resolution: {integrity: sha512-aJXu+6lErq8ltp+JhkJUfk1MTGyuA4v7f3pA+BJ5HLfNC6nAQ0Cpi9uOquUj8Hehg0aUiHzWQbOVJGao6ztBAQ==} + /@babel/helper-validator-identifier@7.22.20: + resolution: {integrity: sha512-Y4OZ+ytlatR8AI+8KZfKuL5urKp7qey08ha31L8b3BwewJAoJamTzyvxPR/5D+KkdJCGPq/+8TukHBlY10FX9A==} engines: {node: '>=6.9.0'} - /@babel/helper-validator-option@7.22.5: - resolution: {integrity: sha512-R3oB6xlIVKUnxNUxbmgq7pKjxpru24zlimpE8WK47fACIlM0II/Hm1RS8IaOI7NgCr6LNS+jl5l75m20npAziw==} + /@babel/helper-validator-option@7.22.15: + resolution: {integrity: sha512-bMn7RmyFjY/mdECUbgn9eoSY4vqvacUnS9i9vGAGttgFWesO6B4CYWA7XlpbWgBt71iv/hfbPlynohStqnu5hA==} engines: {node: '>=6.9.0'} - /@babel/helpers@7.22.5: - resolution: {integrity: sha512-pSXRmfE1vzcUIDFQcSGA5Mr+GxBV9oiRKDuDxXvWQQBCh8HoIjs/2DlDB7H8smac1IVrB9/xdXj2N3Wol9Cr+Q==} + /@babel/helpers@7.22.15: + resolution: {integrity: sha512-7pAjK0aSdxOwR+CcYAqgWOGy5dcfvzsTIfFTb2odQqW47MDfv14UaJDY6eng8ylM2EaeKXdxaSWESbkmaQHTmw==} engines: {node: '>=6.9.0'} dependencies: - '@babel/template': 7.22.5 - '@babel/traverse': 7.22.5 - '@babel/types': 7.22.5 + '@babel/template': 7.22.15 + '@babel/traverse': 7.22.20 + '@babel/types': 7.22.19 transitivePeerDependencies: - supports-color - /@babel/highlight@7.22.5: - resolution: {integrity: sha512-BSKlD1hgnedS5XRnGOljZawtag7H1yPfQp0tdNJCHoH6AZ+Pcm9VvkrK59/Yy593Ypg0zMxH2BxD1VPYUQ7UIw==} + /@babel/highlight@7.22.20: + resolution: {integrity: sha512-dkdMCN3py0+ksCgYmGG8jKeGA/8Tk+gJwSYYlFGxG5lmhfKNoAy004YpLxpS1W2J8m/EK2Ew+yOs9pVRwO89mg==} engines: {node: '>=6.9.0'} dependencies: - '@babel/helper-validator-identifier': 7.22.5 + '@babel/helper-validator-identifier': 7.22.20 chalk: 2.4.2 js-tokens: 4.0.0 - /@babel/parser@7.22.5: - resolution: {integrity: sha512-DFZMC9LJUG9PLOclRC32G63UXwzqS2koQC8dkx+PLdmt1xSePYpbT/NbsrJy8Q/muXz7o/h/d4A7Fuyixm559Q==} + /@babel/parser@7.22.16: + resolution: {integrity: sha512-+gPfKv8UWeKKeJTUxe59+OobVcrYHETCsORl61EmSkmgymguYk/X5bp7GuUIXaFsc6y++v8ZxPsLSSuujqDphA==} engines: {node: '>=6.0.0'} hasBin: true dependencies: - '@babel/types': 7.22.5 + '@babel/types': 7.22.19 - /@babel/plugin-proposal-export-namespace-from@7.18.9(@babel/core@7.22.5): + /@babel/plugin-proposal-export-namespace-from@7.18.9(@babel/core@7.22.20): resolution: {integrity: sha512-k1NtHyOMvlDDFeb9G5PhUXuGj8m/wiwojgQVEhJ/fsVsMCpLyOP4h0uGEjYJKrRI+EVPlb5Jk+Gt9P97lOGwtA==} engines: {node: '>=6.9.0'} + deprecated: This proposal has been merged to the ECMAScript standard and thus this plugin is no longer maintained. Please use @babel/plugin-transform-export-namespace-from instead. peerDependencies: '@babel/core': ^7.0.0-0 dependencies: - '@babel/core': 7.22.5 + '@babel/core': 7.22.20 '@babel/helper-plugin-utils': 7.22.5 - '@babel/plugin-syntax-export-namespace-from': 7.8.3(@babel/core@7.22.5) + '@babel/plugin-syntax-export-namespace-from': 7.8.3(@babel/core@7.22.20) dev: false - /@babel/plugin-syntax-async-generators@7.8.4(@babel/core@7.22.5): + /@babel/plugin-syntax-async-generators@7.8.4(@babel/core@7.22.20): resolution: {integrity: sha512-tycmZxkGfZaxhMRbXlPXuVFpdWlXpir2W4AMhSJgRKzk/eDlIXOhb2LHWoLpDF7TEHylV5zNhykX6KAgHJmTNw==} peerDependencies: '@babel/core': ^7.0.0-0 dependencies: - '@babel/core': 7.22.5 + '@babel/core': 7.22.20 '@babel/helper-plugin-utils': 7.22.5 dev: true - /@babel/plugin-syntax-bigint@7.8.3(@babel/core@7.22.5): + /@babel/plugin-syntax-bigint@7.8.3(@babel/core@7.22.20): resolution: {integrity: sha512-wnTnFlG+YxQm3vDxpGE57Pj0srRU4sHE/mDkt1qv2YJJSeUAec2ma4WLUnUPeKjyrfntVwe/N6dCXpU+zL3Npg==} peerDependencies: '@babel/core': ^7.0.0-0 dependencies: - '@babel/core': 7.22.5 + '@babel/core': 7.22.20 '@babel/helper-plugin-utils': 7.22.5 dev: true - /@babel/plugin-syntax-class-properties@7.12.13(@babel/core@7.22.5): + /@babel/plugin-syntax-class-properties@7.12.13(@babel/core@7.22.20): resolution: {integrity: sha512-fm4idjKla0YahUNgFNLCB0qySdsoPiZP3iQE3rky0mBUtMZ23yDJ9SJdg6dXTSDnulOVqiF3Hgr9nbXvXTQZYA==} peerDependencies: '@babel/core': ^7.0.0-0 dependencies: - '@babel/core': 7.22.5 + '@babel/core': 7.22.20 '@babel/helper-plugin-utils': 7.22.5 dev: true - /@babel/plugin-syntax-export-namespace-from@7.8.3(@babel/core@7.22.5): + /@babel/plugin-syntax-export-namespace-from@7.8.3(@babel/core@7.22.20): resolution: {integrity: sha512-MXf5laXo6c1IbEbegDmzGPwGNTsHZmEy6QGznu5Sh2UCWvueywb2ee+CCE4zQiZstxU9BMoQO9i6zUFSY0Kj0Q==} peerDependencies: '@babel/core': ^7.0.0-0 dependencies: - '@babel/core': 7.22.5 + '@babel/core': 7.22.20 '@babel/helper-plugin-utils': 7.22.5 dev: false - /@babel/plugin-syntax-import-meta@7.10.4(@babel/core@7.22.5): + /@babel/plugin-syntax-import-meta@7.10.4(@babel/core@7.22.20): resolution: {integrity: sha512-Yqfm+XDx0+Prh3VSeEQCPU81yC+JWZ2pDPFSS4ZdpfZhp4MkFMaDC1UqseovEKwSUpnIL7+vK+Clp7bfh0iD7g==} peerDependencies: '@babel/core': ^7.0.0-0 dependencies: - '@babel/core': 7.22.5 + '@babel/core': 7.22.20 '@babel/helper-plugin-utils': 7.22.5 dev: true - /@babel/plugin-syntax-json-strings@7.8.3(@babel/core@7.22.5): + /@babel/plugin-syntax-json-strings@7.8.3(@babel/core@7.22.20): resolution: {integrity: sha512-lY6kdGpWHvjoe2vk4WrAapEuBR69EMxZl+RoGRhrFGNYVK8mOPAW8VfbT/ZgrFbXlDNiiaxQnAtgVCZ6jv30EA==} peerDependencies: '@babel/core': ^7.0.0-0 dependencies: - '@babel/core': 7.22.5 + '@babel/core': 7.22.20 '@babel/helper-plugin-utils': 7.22.5 dev: true - /@babel/plugin-syntax-jsx@7.22.5(@babel/core@7.22.5): + /@babel/plugin-syntax-jsx@7.22.5(@babel/core@7.22.20): resolution: {integrity: sha512-gvyP4hZrgrs/wWMaocvxZ44Hw0b3W8Pe+cMxc8V1ULQ07oh8VNbIRaoD1LRZVTvD+0nieDKjfgKg89sD7rrKrg==} engines: {node: '>=6.9.0'} peerDependencies: '@babel/core': ^7.0.0-0 dependencies: - '@babel/core': 7.22.5 + '@babel/core': 7.22.20 '@babel/helper-plugin-utils': 7.22.5 dev: true - /@babel/plugin-syntax-logical-assignment-operators@7.10.4(@babel/core@7.22.5): + /@babel/plugin-syntax-logical-assignment-operators@7.10.4(@babel/core@7.22.20): resolution: {integrity: sha512-d8waShlpFDinQ5MtvGU9xDAOzKH47+FFoney2baFIoMr952hKOLp1HR7VszoZvOsV/4+RRszNY7D17ba0te0ig==} peerDependencies: '@babel/core': ^7.0.0-0 dependencies: - '@babel/core': 7.22.5 + '@babel/core': 7.22.20 '@babel/helper-plugin-utils': 7.22.5 dev: true - /@babel/plugin-syntax-nullish-coalescing-operator@7.8.3(@babel/core@7.22.5): + /@babel/plugin-syntax-nullish-coalescing-operator@7.8.3(@babel/core@7.22.20): resolution: {integrity: sha512-aSff4zPII1u2QD7y+F8oDsz19ew4IGEJg9SVW+bqwpwtfFleiQDMdzA/R+UlWDzfnHFCxxleFT0PMIrR36XLNQ==} peerDependencies: '@babel/core': ^7.0.0-0 dependencies: - '@babel/core': 7.22.5 + '@babel/core': 7.22.20 '@babel/helper-plugin-utils': 7.22.5 dev: true - /@babel/plugin-syntax-numeric-separator@7.10.4(@babel/core@7.22.5): + /@babel/plugin-syntax-numeric-separator@7.10.4(@babel/core@7.22.20): resolution: {integrity: sha512-9H6YdfkcK/uOnY/K7/aA2xpzaAgkQn37yzWUMRK7OaPOqOpGS1+n0H5hxT9AUw9EsSjPW8SVyMJwYRtWs3X3ug==} peerDependencies: '@babel/core': ^7.0.0-0 dependencies: - '@babel/core': 7.22.5 + '@babel/core': 7.22.20 '@babel/helper-plugin-utils': 7.22.5 dev: true - /@babel/plugin-syntax-object-rest-spread@7.8.3(@babel/core@7.22.5): + /@babel/plugin-syntax-object-rest-spread@7.8.3(@babel/core@7.22.20): resolution: {integrity: sha512-XoqMijGZb9y3y2XskN+P1wUGiVwWZ5JmoDRwx5+3GmEplNyVM2s2Dg8ILFQm8rWM48orGy5YpI5Bl8U1y7ydlA==} peerDependencies: '@babel/core': ^7.0.0-0 dependencies: - '@babel/core': 7.22.5 + '@babel/core': 7.22.20 '@babel/helper-plugin-utils': 7.22.5 dev: true - /@babel/plugin-syntax-optional-catch-binding@7.8.3(@babel/core@7.22.5): + /@babel/plugin-syntax-optional-catch-binding@7.8.3(@babel/core@7.22.20): resolution: {integrity: sha512-6VPD0Pc1lpTqw0aKoeRTMiB+kWhAoT24PA+ksWSBrFtl5SIRVpZlwN3NNPQjehA2E/91FV3RjLWoVTglWcSV3Q==} peerDependencies: '@babel/core': ^7.0.0-0 dependencies: - '@babel/core': 7.22.5 + '@babel/core': 7.22.20 '@babel/helper-plugin-utils': 7.22.5 dev: true - /@babel/plugin-syntax-optional-chaining@7.8.3(@babel/core@7.22.5): + /@babel/plugin-syntax-optional-chaining@7.8.3(@babel/core@7.22.20): resolution: {integrity: sha512-KoK9ErH1MBlCPxV0VANkXW2/dw4vlbGDrFgz8bmUsBGYkFRcbRwMh6cIJubdPrkxRwuGdtCk0v/wPTKbQgBjkg==} peerDependencies: '@babel/core': ^7.0.0-0 dependencies: - '@babel/core': 7.22.5 + '@babel/core': 7.22.20 '@babel/helper-plugin-utils': 7.22.5 dev: true - /@babel/plugin-syntax-top-level-await@7.14.5(@babel/core@7.22.5): + /@babel/plugin-syntax-top-level-await@7.14.5(@babel/core@7.22.20): resolution: {integrity: sha512-hx++upLv5U1rgYfwe1xBQUhRmU41NEvpUvrp8jkrSCdvGSnM5/qdRMtylJ6PG5OFkBaHkbTAKTnd3/YyESRHFw==} engines: {node: '>=6.9.0'} peerDependencies: '@babel/core': ^7.0.0-0 dependencies: - '@babel/core': 7.22.5 + '@babel/core': 7.22.20 '@babel/helper-plugin-utils': 7.22.5 dev: true - /@babel/plugin-syntax-typescript@7.22.5(@babel/core@7.22.5): + /@babel/plugin-syntax-typescript@7.22.5(@babel/core@7.22.20): resolution: {integrity: sha512-1mS2o03i7t1c6VzH6fdQ3OA8tcEIxwG18zIPRp+UY1Ihv6W+XZzBCVxExF9upussPXJ0xE9XRHwMoNs1ep/nRQ==} engines: {node: '>=6.9.0'} peerDependencies: '@babel/core': ^7.0.0-0 dependencies: - '@babel/core': 7.22.5 + '@babel/core': 7.22.20 '@babel/helper-plugin-utils': 7.22.5 dev: true - /@babel/plugin-transform-modules-commonjs@7.22.5(@babel/core@7.22.5): - resolution: {integrity: sha512-B4pzOXj+ONRmuaQTg05b3y/4DuFz3WcCNAXPLb2Q0GT0TrGKGxNKV4jwsXts+StaM0LQczZbOpj8o1DLPDJIiA==} + /@babel/plugin-transform-modules-commonjs@7.22.15(@babel/core@7.22.20): + resolution: {integrity: sha512-jWL4eh90w0HQOTKP2MoXXUpVxilxsB2Vl4ji69rSjS3EcZ/v4sBmn+A3NpepuJzBhOaEBbR7udonlHHn5DWidg==} engines: {node: '>=6.9.0'} peerDependencies: '@babel/core': ^7.0.0-0 dependencies: - '@babel/core': 7.22.5 - '@babel/helper-module-transforms': 7.22.5 + '@babel/core': 7.22.20 + '@babel/helper-module-transforms': 7.22.20(@babel/core@7.22.20) '@babel/helper-plugin-utils': 7.22.5 '@babel/helper-simple-access': 7.22.5 - transitivePeerDependencies: - - supports-color dev: false - /@babel/runtime@7.20.7: - resolution: {integrity: sha512-UF0tvkUtxwAgZ5W/KrkHf0Rn0fdnLDU9ScxBrEVNUprE/MzirjK4MJUX1/BVDv00Sv8cljtukVK1aky++X1SjQ==} + /@babel/runtime@7.22.10: + resolution: {integrity: sha512-21t/fkKLMZI4pqP2wlmsQAWnYW1PDyKyyUV4vCi+B25ydmdaYTKXPwCj0BzSUnZf4seIiYvSA3jcZ3gdsMFkLQ==} engines: {node: '>=6.9.0'} dependencies: - regenerator-runtime: 0.13.11 + regenerator-runtime: 0.14.0 dev: true - /@babel/runtime@7.22.5: - resolution: {integrity: sha512-ecjvYlnAaZ/KVneE/OdKYBYfgXV3Ptu6zQWmgEF7vwKhQnvVS6bjMD2XYgj+SNvQ1GfK/pjgokfPkC/2CO8CuA==} + /@babel/runtime@7.22.15: + resolution: {integrity: sha512-T0O+aa+4w0u06iNmapipJXMV4HoUir03hpx3/YqXXhu9xim3w+dVphjFWl1OH8NbZHw5Lbm9k45drDkgq2VNNA==} engines: {node: '>=6.9.0'} dependencies: - regenerator-runtime: 0.13.11 + regenerator-runtime: 0.14.0 - /@babel/template@7.22.5: - resolution: {integrity: sha512-X7yV7eiwAxdj9k94NEylvbVHLiVG1nvzCV2EAowhxLTwODV1jl9UzZ48leOC0sH7OnuHrIkllaBgneUykIcZaw==} + /@babel/template@7.22.15: + resolution: {integrity: sha512-QPErUVm4uyJa60rkI73qneDacvdvzxshT3kksGqlGWYdOTIUOwJ7RDUL8sGqslY1uXWSL6xMFKEXDS3ox2uF0w==} engines: {node: '>=6.9.0'} dependencies: - '@babel/code-frame': 7.22.5 - '@babel/parser': 7.22.5 - '@babel/types': 7.22.5 + '@babel/code-frame': 7.22.13 + '@babel/parser': 7.22.16 + '@babel/types': 7.22.19 - /@babel/traverse@7.22.5: - resolution: {integrity: sha512-7DuIjPgERaNo6r+PZwItpjCZEa5vyw4eJGufeLxrPdBXBoLcCJCIasvK6pK/9DVNrLZTLFhUGqaC6X/PA007TQ==} + /@babel/traverse@7.22.20: + resolution: {integrity: sha512-eU260mPZbU7mZ0N+X10pxXhQFMGTeLb9eFS0mxehS8HZp9o1uSnFeWQuG1UPrlxgA7QoUzFhOnilHDp0AXCyHw==} engines: {node: '>=6.9.0'} dependencies: - '@babel/code-frame': 7.22.5 - '@babel/generator': 7.22.5 - '@babel/helper-environment-visitor': 7.22.5 + '@babel/code-frame': 7.22.13 + '@babel/generator': 7.22.15 + '@babel/helper-environment-visitor': 7.22.20 '@babel/helper-function-name': 7.22.5 '@babel/helper-hoist-variables': 7.22.5 - '@babel/helper-split-export-declaration': 7.22.5 - '@babel/parser': 7.22.5 - '@babel/types': 7.22.5 + '@babel/helper-split-export-declaration': 7.22.6 + '@babel/parser': 7.22.16 + '@babel/types': 7.22.19 debug: 4.3.4(supports-color@8.1.1) globals: 11.12.0 transitivePeerDependencies: - supports-color - /@babel/types@7.22.5: - resolution: {integrity: sha512-zo3MIHGOkPOfoRXitsgHLjEXmlDaD/5KU1Uzuc9GNiZPhSqVxVRtxuPaSBZDsYZ9qV88AjtMtWW7ww98loJ9KA==} + /@babel/types@7.22.19: + resolution: {integrity: sha512-P7LAw/LbojPzkgp5oznjE6tQEIWbp4PkkfrZDINTro9zgBRtI324/EYsiSI7lhPbpIQ+DCeR2NNmMWANGGfZsg==} engines: {node: '>=6.9.0'} dependencies: '@babel/helper-string-parser': 7.22.5 - '@babel/helper-validator-identifier': 7.22.5 + '@babel/helper-validator-identifier': 7.22.20 to-fast-properties: 2.0.0 /@bcoe/v8-coverage@0.2.3: resolution: {integrity: sha512-0hYQ8SB4Db5zvZB4axdMHGwEaQjkZzFjQiN9LVYvIFB2nSUHW9tYpxWriPrWDASIxiaXax83REcLxuSdnGPZtw==} dev: true - /@bull-board/api@5.2.0(@bull-board/ui@5.2.0): - resolution: {integrity: sha512-1HGF2EF/4zI3+Cj414nQzwFprLXOJTlVdqXUf5UEBS4HtYafWv93mGIwkrD8S4Bpz4VSvM87adF6tQPJ7Ewt+w==} + /@biomejs/biome@1.0.0: + resolution: {integrity: sha512-Y5CND1QZ5pF6hc4dFw5ItDutv9KJO91ksLdBIFyvHL7LmXN0UomqyyRWryvrqq+YlA8Q58cR6sqjjQuMp9E2Ig==} + engines: {node: '>=14.*'} + hasBin: true + requiresBuild: true + optionalDependencies: + '@biomejs/cli-darwin-arm64': 1.0.0 + '@biomejs/cli-darwin-x64': 1.0.0 + '@biomejs/cli-linux-arm64': 1.0.0 + '@biomejs/cli-linux-x64': 1.0.0 + '@biomejs/cli-win32-arm64': 1.0.0 + '@biomejs/cli-win32-x64': 1.0.0 + dev: true + + /@biomejs/cli-darwin-arm64@1.0.0: + resolution: {integrity: sha512-3v7kEyxkf3D246esH+q/lDK5wWn+xLCXZpHCuc1itAmC35GkEc6S7um6C1VD3XKXLx6N0sJR/rTmjKiRGV32Ig==} + engines: {node: '>=14.*'} + cpu: [arm64] + os: [darwin] + requiresBuild: true + dev: true + optional: true + + /@biomejs/cli-darwin-arm64@1.2.2: + resolution: {integrity: sha512-Fx1IURKhoqH6wPawtKLT6wcfMSjRRcNK8+VWau0iDOjXvNtjJpSmICbU89B7Vt/gZRwPqkfDMBkFwm6V5vFTSQ==} + engines: {node: '>=14.*'} + cpu: [arm64] + os: [darwin] + dev: true + + /@biomejs/cli-darwin-x64@1.0.0: + resolution: {integrity: sha512-uxIMt/X7TQWicjsImkqMvUUEqaFZTOJJrtEhlHl/eIaETWJmK3uAR7ihIWctpGJnN16sUgpLgwczc7FETqu/PQ==} + engines: {node: '>=14.*'} + cpu: [x64] + os: [darwin] + requiresBuild: true + dev: true + optional: true + + /@biomejs/cli-darwin-x64@1.2.2: + resolution: {integrity: sha512-JNaAFOI/ZisnmzvcFNd73geJxaFaN2L4YsWM6cgBeKyLY/ycl9C/PBTFfEmeB1c7f5XIIal8P2cj47kLJpN5Ig==} + engines: {node: '>=14.*'} + cpu: [x64] + os: [darwin] + dev: true + + /@biomejs/cli-linux-arm64@1.0.0: + resolution: {integrity: sha512-kJWtu3Xr4MdHV2Yn4U+eZudAGPgv0kRCjWAyzLRewJiqE5TLPrX08imB9SU1n3+VxNO8e2JJ0tWWBHo4J+aSEg==} + engines: {node: '>=14.*'} + cpu: [arm64] + os: [linux] + requiresBuild: true + dev: true + optional: true + + /@biomejs/cli-linux-arm64@1.2.2: + resolution: {integrity: sha512-JHXRnfhOLx8UO/Fcyn2c5pFRri0XKqRZm2wf5oH5GSfLVpckDw2X15dYGbu3nmfM/3pcAaTV46pUpjrCnaAieg==} + engines: {node: '>=14.*'} + cpu: [arm64] + os: [linux] + dev: true + + /@biomejs/cli-linux-x64@1.0.0: + resolution: {integrity: sha512-FK6hYZ0Lkk39eXYx1+2ZWtLkApc0RdOpcjDVM96JbvI0bxqvNnm193BPXuxh5A/fCl6N28RNUvcKnZ5LbgZ0Yw==} + engines: {node: '>=14.*'} + cpu: [x64] + os: [linux] + requiresBuild: true + dev: true + optional: true + + /@biomejs/cli-linux-x64@1.2.2: + resolution: {integrity: sha512-5Zr+iM7lUKsw81p9PkXRESuH2/AhRZ6RCWkgE+FSLcxMhXy/4RDR+o2YQDsJM6cWKIzOJM05vDHTGrDq7vXE4A==} + engines: {node: '>=14.*'} + cpu: [x64] + os: [linux] + dev: true + + /@biomejs/cli-win32-arm64@1.0.0: + resolution: {integrity: sha512-kE+OY2isEJHBodiLPMlybZckHkl3CQWsvXuJEvSxkoMhLbGDPEV3yZ/0lEph3BlxP3KP5vUO3hOFGaTvHFOuqQ==} + engines: {node: '>=14.*'} + cpu: [arm64] + os: [win32] + requiresBuild: true + dev: true + optional: true + + /@biomejs/cli-win32-x64@1.0.0: + resolution: {integrity: sha512-Ko6ZsbmbScPMEnh/xz4mwDSCZIUCAEjbbbnUVApgAAL2+1Hoe7Vnhh2RiwYRqy3tHrBIMDwXkSxj0vlf1G3EHg==} + engines: {node: '>=14.*'} + cpu: [x64] + os: [win32] + requiresBuild: true + dev: true + optional: true + + /@bull-board/api@5.8.0(@bull-board/ui@5.8.0): + resolution: {integrity: sha512-jHJ7Mw/CHixNgIsrbUihyYVxIdlM/lzii+ZUo7E8CFEsOCjE+Um5RDr9boYghWVHuJykkLy7b+wPvbnTwmX0SA==} peerDependencies: - '@bull-board/ui': 5.2.0 + '@bull-board/ui': 5.8.0 dependencies: - '@bull-board/ui': 5.2.0 + '@bull-board/ui': 5.8.0 redis-info: 3.1.0 dev: false - /@bull-board/koa@5.2.0(@types/koa@2.13.5)(pug@3.0.2): - resolution: {integrity: sha512-jntDAl/POouD0PS/iiKXBNl26SuUf7Y5uL3EgpDN7isvwFcpKhvdk0VdBypjrkRHN6rPaEJJPkEtK30qv01XYw==} + /@bull-board/koa@5.8.0(@types/koa@2.13.8)(pug@3.0.2): + resolution: {integrity: sha512-r7v+PxDklRoDhhTu+h0I1LElxgfd9QUqyD6auJNMMsxDKjvCCLFwDWgzAzav0m2bG0XX5MM3dsEiFJnY8a8bYA==} dependencies: - '@bull-board/api': 5.2.0(@bull-board/ui@5.2.0) - '@bull-board/ui': 5.2.0 + '@bull-board/api': 5.8.0(@bull-board/ui@5.8.0) + '@bull-board/ui': 5.8.0 ejs: 3.1.9 - koa: 2.13.4 + koa: 2.14.2 koa-mount: 4.0.0 koa-router: 10.1.1 koa-static: 5.0.0 - koa-views: 7.0.2(@types/koa@2.13.5)(ejs@3.1.9)(pug@3.0.2) + koa-views: 7.0.2(@types/koa@2.13.8)(ejs@3.1.9)(pug@3.0.2) transitivePeerDependencies: - '@types/koa' - arc-templates @@ -1519,10 +1646,14 @@ packages: - whiskers dev: false - /@bull-board/ui@5.2.0: - resolution: {integrity: sha512-f2sgs7AjOVch7tFhbmlVCkhZjJWboxwNxWEfAsIUd1WidUC+Ef5J02tpQvu7apzRtu5zcn8IiJtI5HFO6oKaCA==} + /@bull-board/ui@5.8.0: + resolution: {integrity: sha512-O2imjnV7KFictoy6FsrG2y5u10Z60BIuX+nghLbhdEkZL/B4B2VUM+655d9wMIpjXocXkr2DN5ELJkUXewl9wQ==} dependencies: - '@bull-board/api': 5.2.0(@bull-board/ui@5.2.0) + '@bull-board/api': 5.8.0(@bull-board/ui@5.8.0) + dev: false + + /@chainsafe/is-ip@2.0.2: + resolution: {integrity: sha512-ndGqEMG1W5WkGagaqOZHpPU172AGdxr+LD15sv3WIUvT5oCFUrG1Y0CW/v2Egwj4JXEvSibaIIIqImsm98y1nA==} dev: false /@colors/colors@1.5.0: @@ -1532,92 +1663,92 @@ packages: dev: true optional: true - /@cropper/element-canvas@2.0.0-beta.3: - resolution: {integrity: sha512-G4KqpZHAqb2PNY63lt7MxSIXQhYrQUWImDmsQYrXSTVYC5yrMLlk5bT9oEaSTjQZnV4x5EaujFM+gx6lWh/5sg==} + /@cropper/element-canvas@2.0.0-beta.4: + resolution: {integrity: sha512-xL7k5YgtbCLdR/QEj81An4HpPcBTJXf1lq+2xisyHALGeUKQXjA9cJQL7bldYscHAKjmFgNZ5xOMrNaYM++qZw==} dependencies: - '@cropper/element': 2.0.0-beta.3 - '@cropper/utils': 2.0.0-beta.3 + '@cropper/element': 2.0.0-beta.4 + '@cropper/utils': 2.0.0-beta.4 dev: true - /@cropper/element-crosshair@2.0.0-beta.3: - resolution: {integrity: sha512-SfrzZjO+x7ND/CgAclfwDQ9T/nTlZTKsLtM+dDXfjJQjuqreMaWaLD23isB1kh8H7iqjz1g+VE2ZsdiLB932ww==} + /@cropper/element-crosshair@2.0.0-beta.4: + resolution: {integrity: sha512-NiwIQZFh963i3E3QbXFiU9oNqs+P1cLJur3+e+DK0E3oLTa7rEfcigP/ZoMj/3DZ9Et0LPhKKRDY2SJ8ZszyPA==} dependencies: - '@cropper/element': 2.0.0-beta.3 - '@cropper/utils': 2.0.0-beta.3 + '@cropper/element': 2.0.0-beta.4 + '@cropper/utils': 2.0.0-beta.4 dev: true - /@cropper/element-grid@2.0.0-beta.3: - resolution: {integrity: sha512-/U1/sNcJ9TKcUD7N+yHJqxRfZcW15XHz63LYMLaWQ7Cnnq2uYopopJUqtTiAdIoCh6mwoIWdYvLZ1Vhr6XKJBg==} + /@cropper/element-grid@2.0.0-beta.4: + resolution: {integrity: sha512-uMVVNk1SICwM2nA/7BHkyEojc0DAqsDFIUnC/sIGPtNf3fe5hYQyukby8BEPO7dlqzfIXYmnxacgLaPM9BZ7GQ==} dependencies: - '@cropper/element': 2.0.0-beta.3 - '@cropper/utils': 2.0.0-beta.3 + '@cropper/element': 2.0.0-beta.4 + '@cropper/utils': 2.0.0-beta.4 dev: true - /@cropper/element-handle@2.0.0-beta.3: - resolution: {integrity: sha512-bjxZfX0rqj4RsTBGxJ1WcxDya1/25dKe9j4+YRZFyASQUOPuUrqVOpWKQcGaQ0PeN+wfwLo3422vjaGSXNA+Pg==} + /@cropper/element-handle@2.0.0-beta.4: + resolution: {integrity: sha512-PHjC4ptBi0leQ82mPWvivNilNOpiBnV90ueqz99tli8f9bQobx+Os7dzKFwLIpj4WKCNRYhyEvxf1KuKhQisIg==} dependencies: - '@cropper/element': 2.0.0-beta.3 - '@cropper/utils': 2.0.0-beta.3 + '@cropper/element': 2.0.0-beta.4 + '@cropper/utils': 2.0.0-beta.4 dev: true - /@cropper/element-image@2.0.0-beta.3: - resolution: {integrity: sha512-1VjqaJG+IxPDkvEUvnKAfR12zK8fx+C6+ZsC5T4986KLtpltmqccaYiupgGXX8CVHrVyaW5ncBvOXSTGowiC7Q==} + /@cropper/element-image@2.0.0-beta.4: + resolution: {integrity: sha512-Nu5z5EFpyOEC2CAdhNZGfvpG9Xj6ZD46jvpJGKxsel7J7Kqf4qy+5m6nNdq2J+lK7YfTi16svkHeFwzNWZYLAA==} dependencies: - '@cropper/element': 2.0.0-beta.3 - '@cropper/element-canvas': 2.0.0-beta.3 - '@cropper/utils': 2.0.0-beta.3 + '@cropper/element': 2.0.0-beta.4 + '@cropper/element-canvas': 2.0.0-beta.4 + '@cropper/utils': 2.0.0-beta.4 dev: true - /@cropper/element-selection@2.0.0-beta.3: - resolution: {integrity: sha512-FjcNwUaV5/KzQROoaoNZzOpeRe92PCd8PPTgfl4/b2rGgpYvGcjwpjei5HRsF+uaDJwR2f1MOK8L+3ZkAUw18Q==} + /@cropper/element-selection@2.0.0-beta.4: + resolution: {integrity: sha512-wHZhWI80cC5TfFHI/2HT1A+ZbHifnAO+/IAr4IqkbaxtDZ9duqEvM2hhC+ZXgB3BYqVidAJNwpSnZkVK+DlJ6A==} dependencies: - '@cropper/element': 2.0.0-beta.3 - '@cropper/element-canvas': 2.0.0-beta.3 - '@cropper/element-image': 2.0.0-beta.3 - '@cropper/utils': 2.0.0-beta.3 + '@cropper/element': 2.0.0-beta.4 + '@cropper/element-canvas': 2.0.0-beta.4 + '@cropper/element-image': 2.0.0-beta.4 + '@cropper/utils': 2.0.0-beta.4 dev: true - /@cropper/element-shade@2.0.0-beta.3: - resolution: {integrity: sha512-WCmGYbmewIF49GUeJyXCXZUBwmLsu7B+G22o5FObhtxoY8pF7mp1SclIZdJU5KfvGFFOzXKHJg4yx1wO9IAfvQ==} + /@cropper/element-shade@2.0.0-beta.4: + resolution: {integrity: sha512-sTFTzlmu+Z31Hp7RHgUAxfDsRIQ/uG8RueOBBHLeKVGFZbYhsIElQaLcVDwebgqXLHVr9imCEvvIX11JeTqiTQ==} dependencies: - '@cropper/element': 2.0.0-beta.3 - '@cropper/element-canvas': 2.0.0-beta.3 - '@cropper/element-selection': 2.0.0-beta.3 - '@cropper/utils': 2.0.0-beta.3 + '@cropper/element': 2.0.0-beta.4 + '@cropper/element-canvas': 2.0.0-beta.4 + '@cropper/element-selection': 2.0.0-beta.4 + '@cropper/utils': 2.0.0-beta.4 dev: true - /@cropper/element-viewer@2.0.0-beta.3: - resolution: {integrity: sha512-A2yh8ULbxuykJHVvcG3eI81VX2ug/IklDuOAzCP4yRMGSvGb9eK0BQDkOButoViwM2FtleCf2blXPuXjzD1OMA==} + /@cropper/element-viewer@2.0.0-beta.4: + resolution: {integrity: sha512-bXW8OuezoHjyGFmQzX1QEj3OqvmSZwaLiQts+mVhcarYqAEVrK9s/bC/OqZKR2ZKkHeaiGWq+rTOBVAmhZja/A==} dependencies: - '@cropper/element': 2.0.0-beta.3 - '@cropper/element-canvas': 2.0.0-beta.3 - '@cropper/element-image': 2.0.0-beta.3 - '@cropper/element-selection': 2.0.0-beta.3 - '@cropper/utils': 2.0.0-beta.3 + '@cropper/element': 2.0.0-beta.4 + '@cropper/element-canvas': 2.0.0-beta.4 + '@cropper/element-image': 2.0.0-beta.4 + '@cropper/element-selection': 2.0.0-beta.4 + '@cropper/utils': 2.0.0-beta.4 dev: true - /@cropper/element@2.0.0-beta.3: - resolution: {integrity: sha512-Ta1QPx6uqO4WtlvWbQanKSdTi0NptfnSk4h93TSk/GTKYTUI6Qa1g5C+2ibdsomcD/bVTTY6cbuGMFfM8E8zQQ==} + /@cropper/element@2.0.0-beta.4: + resolution: {integrity: sha512-1P8Vm9+OqTQz4B/rEA0t8xmzKUkYyxzxTiOaDMPKjKbG2R3UZgJBWRzvTgTsDudld9vlR6FfXpDBU1ZWA1BWxQ==} dependencies: - '@cropper/utils': 2.0.0-beta.3 + '@cropper/utils': 2.0.0-beta.4 dev: true - /@cropper/elements@2.0.0-beta.3: - resolution: {integrity: sha512-oHRnhrFN/S2vadX1/ogaoZQuPUwUxYRoZ+BZjPUxr0kdX4SwumU0pMD2hxVMbveTl0zxFc0S3HdqXx8kcHGPtg==} + /@cropper/elements@2.0.0-beta.4: + resolution: {integrity: sha512-cXKNFwudKcFrxn75VU9nLWNpjUnHcY0rUvtLn+2YVOLAnCTFLlu+azjOW1XZJ01FAEcC62Itb4CvDae+qgDpcQ==} dependencies: - '@cropper/element': 2.0.0-beta.3 - '@cropper/element-canvas': 2.0.0-beta.3 - '@cropper/element-crosshair': 2.0.0-beta.3 - '@cropper/element-grid': 2.0.0-beta.3 - '@cropper/element-handle': 2.0.0-beta.3 - '@cropper/element-image': 2.0.0-beta.3 - '@cropper/element-selection': 2.0.0-beta.3 - '@cropper/element-shade': 2.0.0-beta.3 - '@cropper/element-viewer': 2.0.0-beta.3 + '@cropper/element': 2.0.0-beta.4 + '@cropper/element-canvas': 2.0.0-beta.4 + '@cropper/element-crosshair': 2.0.0-beta.4 + '@cropper/element-grid': 2.0.0-beta.4 + '@cropper/element-handle': 2.0.0-beta.4 + '@cropper/element-image': 2.0.0-beta.4 + '@cropper/element-selection': 2.0.0-beta.4 + '@cropper/element-shade': 2.0.0-beta.4 + '@cropper/element-viewer': 2.0.0-beta.4 dev: true - /@cropper/utils@2.0.0-beta.3: - resolution: {integrity: sha512-3oBwFN2DZiqfKzkB+fpAa+LV2izRUpbH0MS427p8rgMb7EEOP/UFaKeq/P/Ovs3dhLbiA48aLiV6GmX9piEmlw==} + /@cropper/utils@2.0.0-beta.4: + resolution: {integrity: sha512-mrUTA3LbEq1Y3nPTC5X6koTd2Dk8P+6xTuhp4P8X3mg5Z7d8AVK+0OU5kbB49OLAaEfvGEqbZJ84rLwgMy9RHw==} dev: true /@cspotcode/source-map-consumer@0.8.0: @@ -1638,8 +1769,8 @@ packages: dependencies: '@jridgewell/trace-mapping': 0.3.9 - /@cypress/request@2.88.11: - resolution: {integrity: sha512-M83/wfQ1EkspjkE2lNWNV5ui2Cv7UCv1swW1DqljahbzLVWltcsexQh8jYtuS/vzFXP+HySntGM83ZXA9fn17w==} + /@cypress/request@2.88.12: + resolution: {integrity: sha512-tOn+0mDZxASFM+cuAP9szGUGPI1HwWVSvdzm7V4cCsPdFTx6qMj29CwaQmRAMIEhORIUBFBsYROYJcveK4uOjA==} engines: {node: '>= 6'} dependencies: aws-sign2: 0.7.0 @@ -1657,7 +1788,7 @@ packages: performance-now: 2.1.0 qs: 6.10.4 safe-buffer: 5.2.1 - tough-cookie: 2.5.0 + tough-cookie: 4.1.3 tunnel-agent: 0.6.0 uuid: 8.3.2 dev: true @@ -1677,7 +1808,7 @@ packages: dependencies: ky: 0.33.3 ky-universal: 0.11.0(ky@0.33.3) - undici: 5.22.1 + undici: 5.24.0 transitivePeerDependencies: - web-streams-polyfill dev: false @@ -1707,8 +1838,17 @@ packages: - supports-color dev: false - /@esbuild/android-arm64@0.17.19: - resolution: {integrity: sha512-KBMWvEZooR7+kzY0BtbTQn0OAYY7CsiydT63pVEaPtVYF0hXbUaOyZog37DKxK7NF3XacBJOpYT4adIJh+avxA==} + /@es-joy/jsdoccomment@0.40.1: + resolution: {integrity: sha512-YORCdZSusAlBrFpZ77pJjc5r1bQs5caPWtAu+WWmiSo+8XaUzseapVrfAtiRFbQWnrBxxLLEwF6f6ZG/UgCQCg==} + engines: {node: '>=16'} + dependencies: + comment-parser: 1.4.0 + esquery: 1.5.0 + jsdoc-type-pratt-parser: 4.0.0 + dev: true + + /@esbuild/android-arm64@0.18.20: + resolution: {integrity: sha512-Nz4rJcchGDtENV0eMKUNa6L12zz2zBDXuhj/Vjh18zGqB44Bi7MBMSXjgunJgjRhCmKOjnPuZp4Mb6OKqtMHLQ==} engines: {node: '>=12'} cpu: [arm64] os: [android] @@ -1716,8 +1856,8 @@ packages: dev: true optional: true - /@esbuild/android-arm@0.17.19: - resolution: {integrity: sha512-rIKddzqhmav7MSmoFCmDIb6e2W57geRsM94gV2l38fzhXMwq7hZoClug9USI2pFRGL06f4IOPHHpFNOkWieR8A==} + /@esbuild/android-arm@0.18.20: + resolution: {integrity: sha512-fyi7TDI/ijKKNZTUJAQqiG5T7YjJXgnzkURqmGj13C6dCqckZBLdl4h7bkhHt/t0WP+zO9/zwroDvANaOqO5Sw==} engines: {node: '>=12'} cpu: [arm] os: [android] @@ -1725,8 +1865,8 @@ packages: dev: true optional: true - /@esbuild/android-x64@0.17.19: - resolution: {integrity: sha512-uUTTc4xGNDT7YSArp/zbtmbhO0uEEK9/ETW29Wk1thYUJBz3IVnvgEiEwEa9IeLyvnpKrWK64Utw2bgUmDveww==} + /@esbuild/android-x64@0.18.20: + resolution: {integrity: sha512-8GDdlePJA8D6zlZYJV/jnrRAi6rOiNaCC/JclcXpB+KIuvfBN4owLtgzY2bsxnx666XjJx2kDPUmnTtR8qKQUg==} engines: {node: '>=12'} cpu: [x64] os: [android] @@ -1734,8 +1874,8 @@ packages: dev: true optional: true - /@esbuild/darwin-arm64@0.17.19: - resolution: {integrity: sha512-80wEoCfF/hFKM6WE1FyBHc9SfUblloAWx6FJkFWTWiCoht9Mc0ARGEM47e67W9rI09YoUxJL68WHfDRYEAvOhg==} + /@esbuild/darwin-arm64@0.18.20: + resolution: {integrity: sha512-bxRHW5kHU38zS2lPTPOyuyTm+S+eobPUnTNkdJEfAddYgEcll4xkT8DB9d2008DtTbl7uJag2HuE5NZAZgnNEA==} engines: {node: '>=12'} cpu: [arm64] os: [darwin] @@ -1743,8 +1883,8 @@ packages: dev: true optional: true - /@esbuild/darwin-x64@0.17.19: - resolution: {integrity: sha512-IJM4JJsLhRYr9xdtLytPLSH9k/oxR3boaUIYiHkAawtwNOXKE8KoU8tMvryogdcT8AU+Bflmh81Xn6Q0vTZbQw==} + /@esbuild/darwin-x64@0.18.20: + resolution: {integrity: sha512-pc5gxlMDxzm513qPGbCbDukOdsGtKhfxD1zJKXjCCcU7ju50O7MeAZ8c4krSJcOIJGFR+qx21yMMVYwiQvyTyQ==} engines: {node: '>=12'} cpu: [x64] os: [darwin] @@ -1752,8 +1892,8 @@ packages: dev: true optional: true - /@esbuild/freebsd-arm64@0.17.19: - resolution: {integrity: sha512-pBwbc7DufluUeGdjSU5Si+P3SoMF5DQ/F/UmTSb8HXO80ZEAJmrykPyzo1IfNbAoaqw48YRpv8shwd1NoI0jcQ==} + /@esbuild/freebsd-arm64@0.18.20: + resolution: {integrity: sha512-yqDQHy4QHevpMAaxhhIwYPMv1NECwOvIpGCZkECn8w2WFHXjEwrBn3CeNIYsibZ/iZEUemj++M26W3cNR5h+Tw==} engines: {node: '>=12'} cpu: [arm64] os: [freebsd] @@ -1761,8 +1901,8 @@ packages: dev: true optional: true - /@esbuild/freebsd-x64@0.17.19: - resolution: {integrity: sha512-4lu+n8Wk0XlajEhbEffdy2xy53dpR06SlzvhGByyg36qJw6Kpfk7cp45DR/62aPH9mtJRmIyrXAS5UWBrJT6TQ==} + /@esbuild/freebsd-x64@0.18.20: + resolution: {integrity: sha512-tgWRPPuQsd3RmBZwarGVHZQvtzfEBOreNuxEMKFcd5DaDn2PbBxfwLcj4+aenoh7ctXcbXmOQIn8HI6mCSw5MQ==} engines: {node: '>=12'} cpu: [x64] os: [freebsd] @@ -1770,8 +1910,8 @@ packages: dev: true optional: true - /@esbuild/linux-arm64@0.17.19: - resolution: {integrity: sha512-ct1Tg3WGwd3P+oZYqic+YZF4snNl2bsnMKRkb3ozHmnM0dGWuxcPTTntAF6bOP0Sp4x0PjSF+4uHQ1xvxfRKqg==} + /@esbuild/linux-arm64@0.18.20: + resolution: {integrity: sha512-2YbscF+UL7SQAVIpnWvYwM+3LskyDmPhe31pE7/aoTMFKKzIc9lLbyGUpmmb8a8AixOL61sQ/mFh3jEjHYFvdA==} engines: {node: '>=12'} cpu: [arm64] os: [linux] @@ -1779,8 +1919,8 @@ packages: dev: true optional: true - /@esbuild/linux-arm@0.17.19: - resolution: {integrity: sha512-cdmT3KxjlOQ/gZ2cjfrQOtmhG4HJs6hhvm3mWSRDPtZ/lP5oe8FWceS10JaSJC13GBd4eH/haHnqf7hhGNLerA==} + /@esbuild/linux-arm@0.18.20: + resolution: {integrity: sha512-/5bHkMWnq1EgKr1V+Ybz3s1hWXok7mDFUMQ4cG10AfW3wL02PSZi5kFpYKrptDsgb2WAJIvRcDm+qIvXf/apvg==} engines: {node: '>=12'} cpu: [arm] os: [linux] @@ -1788,8 +1928,8 @@ packages: dev: true optional: true - /@esbuild/linux-ia32@0.17.19: - resolution: {integrity: sha512-w4IRhSy1VbsNxHRQpeGCHEmibqdTUx61Vc38APcsRbuVgK0OPEnQ0YD39Brymn96mOx48Y2laBQGqgZ0j9w6SQ==} + /@esbuild/linux-ia32@0.18.20: + resolution: {integrity: sha512-P4etWwq6IsReT0E1KHU40bOnzMHoH73aXp96Fs8TIT6z9Hu8G6+0SHSw9i2isWrD2nbx2qo5yUqACgdfVGx7TA==} engines: {node: '>=12'} cpu: [ia32] os: [linux] @@ -1797,8 +1937,8 @@ packages: dev: true optional: true - /@esbuild/linux-loong64@0.17.19: - resolution: {integrity: sha512-2iAngUbBPMq439a+z//gE+9WBldoMp1s5GWsUSgqHLzLJ9WoZLZhpwWuym0u0u/4XmZ3gpHmzV84PonE+9IIdQ==} + /@esbuild/linux-loong64@0.18.20: + resolution: {integrity: sha512-nXW8nqBTrOpDLPgPY9uV+/1DjxoQ7DoB2N8eocyq8I9XuqJ7BiAMDMf9n1xZM9TgW0J8zrquIb/A7s3BJv7rjg==} engines: {node: '>=12'} cpu: [loong64] os: [linux] @@ -1806,8 +1946,8 @@ packages: dev: true optional: true - /@esbuild/linux-mips64el@0.17.19: - resolution: {integrity: sha512-LKJltc4LVdMKHsrFe4MGNPp0hqDFA1Wpt3jE1gEyM3nKUvOiO//9PheZZHfYRfYl6AwdTH4aTcXSqBerX0ml4A==} + /@esbuild/linux-mips64el@0.18.20: + resolution: {integrity: sha512-d5NeaXZcHp8PzYy5VnXV3VSd2D328Zb+9dEq5HE6bw6+N86JVPExrA6O68OPwobntbNJ0pzCpUFZTo3w0GyetQ==} engines: {node: '>=12'} cpu: [mips64el] os: [linux] @@ -1815,8 +1955,8 @@ packages: dev: true optional: true - /@esbuild/linux-ppc64@0.17.19: - resolution: {integrity: sha512-/c/DGybs95WXNS8y3Ti/ytqETiW7EU44MEKuCAcpPto3YjQbyK3IQVKfF6nbghD7EcLUGl0NbiL5Rt5DMhn5tg==} + /@esbuild/linux-ppc64@0.18.20: + resolution: {integrity: sha512-WHPyeScRNcmANnLQkq6AfyXRFr5D6N2sKgkFo2FqguP44Nw2eyDlbTdZwd9GYk98DZG9QItIiTlFLHJHjxP3FA==} engines: {node: '>=12'} cpu: [ppc64] os: [linux] @@ -1824,8 +1964,8 @@ packages: dev: true optional: true - /@esbuild/linux-riscv64@0.17.19: - resolution: {integrity: sha512-FC3nUAWhvFoutlhAkgHf8f5HwFWUL6bYdvLc/TTuxKlvLi3+pPzdZiFKSWz/PF30TB1K19SuCxDTI5KcqASJqA==} + /@esbuild/linux-riscv64@0.18.20: + resolution: {integrity: sha512-WSxo6h5ecI5XH34KC7w5veNnKkju3zBRLEQNY7mv5mtBmrP/MjNBCAlsM2u5hDBlS3NGcTQpoBvRzqBcRtpq1A==} engines: {node: '>=12'} cpu: [riscv64] os: [linux] @@ -1833,8 +1973,8 @@ packages: dev: true optional: true - /@esbuild/linux-s390x@0.17.19: - resolution: {integrity: sha512-IbFsFbxMWLuKEbH+7sTkKzL6NJmG2vRyy6K7JJo55w+8xDk7RElYn6xvXtDW8HCfoKBFK69f3pgBJSUSQPr+4Q==} + /@esbuild/linux-s390x@0.18.20: + resolution: {integrity: sha512-+8231GMs3mAEth6Ja1iK0a1sQ3ohfcpzpRLH8uuc5/KVDFneH6jtAJLFGafpzpMRO6DzJ6AvXKze9LfFMrIHVQ==} engines: {node: '>=12'} cpu: [s390x] os: [linux] @@ -1842,8 +1982,8 @@ packages: dev: true optional: true - /@esbuild/linux-x64@0.17.19: - resolution: {integrity: sha512-68ngA9lg2H6zkZcyp22tsVt38mlhWde8l3eJLWkyLrp4HwMUr3c1s/M2t7+kHIhvMjglIBrFpncX1SzMckomGw==} + /@esbuild/linux-x64@0.18.20: + resolution: {integrity: sha512-UYqiqemphJcNsFEskc73jQ7B9jgwjWrSayxawS6UVFZGWrAAtkzjxSqnoclCXxWtfwLdzU+vTpcNYhpn43uP1w==} engines: {node: '>=12'} cpu: [x64] os: [linux] @@ -1851,8 +1991,8 @@ packages: dev: true optional: true - /@esbuild/netbsd-x64@0.17.19: - resolution: {integrity: sha512-CwFq42rXCR8TYIjIfpXCbRX0rp1jo6cPIUPSaWwzbVI4aOfX96OXY8M6KNmtPcg7QjYeDmN+DD0Wp3LaBOLf4Q==} + /@esbuild/netbsd-x64@0.18.20: + resolution: {integrity: sha512-iO1c++VP6xUBUmltHZoMtCUdPlnPGdBom6IrO4gyKPFFVBKioIImVooR5I83nTew5UOYrk3gIJhbZh8X44y06A==} engines: {node: '>=12'} cpu: [x64] os: [netbsd] @@ -1860,8 +2000,8 @@ packages: dev: true optional: true - /@esbuild/openbsd-x64@0.17.19: - resolution: {integrity: sha512-cnq5brJYrSZ2CF6c35eCmviIN3k3RczmHz8eYaVlNasVqsNY+JKohZU5MKmaOI+KkllCdzOKKdPs762VCPC20g==} + /@esbuild/openbsd-x64@0.18.20: + resolution: {integrity: sha512-e5e4YSsuQfX4cxcygw/UCPIEP6wbIL+se3sxPdCiMbFLBWu0eiZOJ7WoD+ptCLrmjZBK1Wk7I6D/I3NglUGOxg==} engines: {node: '>=12'} cpu: [x64] os: [openbsd] @@ -1869,8 +2009,8 @@ packages: dev: true optional: true - /@esbuild/sunos-x64@0.17.19: - resolution: {integrity: sha512-vCRT7yP3zX+bKWFeP/zdS6SqdWB8OIpaRq/mbXQxTGHnIxspRtigpkUcDMlSCOejlHowLqII7K2JKevwyRP2rg==} + /@esbuild/sunos-x64@0.18.20: + resolution: {integrity: sha512-kDbFRFp0YpTQVVrqUd5FTYmWo45zGaXe0X8E1G/LKFC0v8x0vWrhOWSLITcCn63lmZIxfOMXtCfti/RxN/0wnQ==} engines: {node: '>=12'} cpu: [x64] os: [sunos] @@ -1878,8 +2018,8 @@ packages: dev: true optional: true - /@esbuild/win32-arm64@0.17.19: - resolution: {integrity: sha512-yYx+8jwowUstVdorcMdNlzklLYhPxjniHWFKgRqH7IFlUEa0Umu3KuYplf1HUZZ422e3NU9F4LGb+4O0Kdcaag==} + /@esbuild/win32-arm64@0.18.20: + resolution: {integrity: sha512-ddYFR6ItYgoaq4v4JmQQaAI5s7npztfV4Ag6NrhiaW0RrnOXqBkgwZLofVTlq1daVTQNhtI5oieTvkRPfZrePg==} engines: {node: '>=12'} cpu: [arm64] os: [win32] @@ -1887,8 +2027,8 @@ packages: dev: true optional: true - /@esbuild/win32-ia32@0.17.19: - resolution: {integrity: sha512-eggDKanJszUtCdlVs0RB+h35wNlb5v4TWEkq4vZcmVt5u/HiDZrTXe2bWFQUez3RgNHwx/x4sk5++4NSSicKkw==} + /@esbuild/win32-ia32@0.18.20: + resolution: {integrity: sha512-Wv7QBi3ID/rROT08SABTS7eV4hX26sVduqDOTe1MvGMjNd3EjOz4b7zeexIR62GTIEKrfJXKL9LFxTYgkyeu7g==} engines: {node: '>=12'} cpu: [ia32] os: [win32] @@ -1896,8 +2036,8 @@ packages: dev: true optional: true - /@esbuild/win32-x64@0.17.19: - resolution: {integrity: sha512-lAhycmKnVOuRYNtRtatQR1LPQf2oYCkRGkSFnseDAKPl8lu5SOsK/e1sXe5a0Pc5kHIHe6P2I/ilntNv2xf3cA==} + /@esbuild/win32-x64@0.18.20: + resolution: {integrity: sha512-kTdfRcSiDfQca/y9QIkng02avJ+NCaQvrMejlsB3RRv5sE9rRoeBPISaZpKxHELzRxZyLvNts1P27W3wV+8geQ==} engines: {node: '>=12'} cpu: [x64] os: [win32] @@ -1905,27 +2045,210 @@ packages: dev: true optional: true - /@eslint-community/eslint-utils@4.4.0(eslint@8.42.0): + /@eslint-community/eslint-utils@4.4.0(eslint@8.49.0): resolution: {integrity: sha512-1/sA4dwrzBAyeUoQ6oxahHKmrZvsnLCg4RfxW3ZFGGmQkSNQPFNLV9CUEFQP1x9EYXHTo5p6xdhZM1Ne9p/AfA==} engines: {node: ^12.22.0 || ^14.17.0 || >=16.0.0} peerDependencies: eslint: ^6.0.0 || ^7.0.0 || >=8.0.0 dependencies: - eslint: 8.42.0 - eslint-visitor-keys: 3.4.1 + eslint: 8.49.0 + eslint-visitor-keys: 3.4.3 + dev: true - /@eslint-community/regexpp@4.5.1: - resolution: {integrity: sha512-Z5ba73P98O1KUYCCJTUeVpja9RcGoMdncZ6T49FCUl2lN38JtCJ+3WgIDBv0AuY4WChU5PmtJmOCTlN6FZTFKQ==} + /@eslint-community/regexpp@4.8.1: + resolution: {integrity: sha512-PWiOzLIUAjN/w5K17PoF4n6sKBw0gqLHPhywmYHP4t1VFQQVYeb1yWsJwnMVEMl3tUHME7X/SJPZLmtG7XBDxQ==} engines: {node: ^12.0.0 || ^14.0.0 || >=16.0.0} + dev: true - /@eslint/eslintrc@2.0.3: - resolution: {integrity: sha512-+5gy6OQfk+xx3q0d6jGZZC3f3KzAkXc/IanVxd1is/VIIziRqqt3ongQz0FiTUXqTk0c7aDB3OaFuKnuSoJicQ==} + /@eslint-sets/eslint-config-basic@3.3.0(@babel/core@7.22.20)(@typescript-eslint/parser@5.62.0)(eslint@8.49.0)(prettier@3.0.3): + resolution: {integrity: sha512-x5YH0CvZJxn19/5ehu188XaoLQpxOGlFiIuPHCN6FyONgrmriakT/cmIIBOJg2Vi/y1bn2xbhsgVNb00J3HyTg==} + peerDependencies: + eslint: '>=8.0.0' + prettier: '>=2.0.0' + dependencies: + '@babel/eslint-parser': 7.22.15(@babel/core@7.22.20)(eslint@8.49.0) + eslint: 8.49.0 + eslint-config-prettier: 8.10.0(eslint@8.49.0) + eslint-plugin-eslint-comments: 3.2.0(eslint@8.49.0) + eslint-plugin-html: 7.1.0 + eslint-plugin-import: 2.28.1(@typescript-eslint/parser@5.62.0)(eslint@8.49.0) + eslint-plugin-jsonc: 2.9.0(eslint@8.49.0) + eslint-plugin-markdown: 3.0.1(eslint@8.49.0) + eslint-plugin-n: 15.7.0(eslint@8.49.0) + eslint-plugin-prettier: 4.2.1(eslint-config-prettier@8.10.0)(eslint@8.49.0)(prettier@3.0.3) + eslint-plugin-promise: 5.2.0(eslint@8.49.0) + eslint-plugin-tsdoc: 0.2.17 + eslint-plugin-unicorn: 45.0.2(eslint@8.49.0) + eslint-plugin-yml: 1.9.0(eslint@8.49.0) + jsonc-eslint-parser: 2.3.0 + prettier: 3.0.3 + vue-eslint-parser: 9.3.1(eslint@8.49.0) + yaml-eslint-parser: 1.2.2 + transitivePeerDependencies: + - '@babel/core' + - '@typescript-eslint/parser' + - eslint-import-resolver-typescript + - eslint-import-resolver-webpack + - supports-color + dev: true + + /@eslint-sets/eslint-config-basic@5.9.0(@babel/core@7.22.20)(@typescript-eslint/parser@6.7.0)(eslint@8.49.0)(prettier@3.0.3)(typescript@5.2.2): + resolution: {integrity: sha512-jRZwcBy3BMMiCpplIIiFMHKWWoZi9CEhH6KSCTJJ5XREqCTiT8eCNU2Z1UtXdSL6EzZSKpPpMm4Ag/meLsyKQg==} + peerDependencies: + eslint: '>=7.4.0' + prettier: '>=2' + typescript: '*' + peerDependenciesMeta: + typescript: + optional: true + dependencies: + '@babel/eslint-parser': 7.22.15(@babel/core@7.22.20)(eslint@8.49.0) + eslint: 8.49.0 + eslint-config-prettier: 9.0.0(eslint@8.49.0) + eslint-plugin-eslint-comments: 3.2.0(eslint@8.49.0) + eslint-plugin-html: 7.1.0 + eslint-plugin-import: 2.28.1(@typescript-eslint/parser@6.7.0)(eslint@8.49.0) + eslint-plugin-jsonc: 2.9.0(eslint@8.49.0) + eslint-plugin-markdown: 3.0.1(eslint@8.49.0) + eslint-plugin-n: 16.1.0(eslint@8.49.0) + eslint-plugin-prettier: 5.0.0(eslint-config-prettier@9.0.0)(eslint@8.49.0)(prettier@3.0.3) + eslint-plugin-promise: 6.1.1(eslint@8.49.0) + eslint-plugin-tsdoc: 0.2.17 + eslint-plugin-unicorn: 40.1.0(eslint@8.49.0) + eslint-plugin-yml: 1.9.0(eslint@8.49.0) + jsonc-eslint-parser: 2.3.0 + prettier: 3.0.3 + typescript: 5.2.2 + vue-eslint-parser: 9.3.1(eslint@8.49.0) + yaml-eslint-parser: 1.2.2 + transitivePeerDependencies: + - '@babel/core' + - '@types/eslint' + - '@typescript-eslint/parser' + - eslint-import-resolver-typescript + - eslint-import-resolver-webpack + - supports-color + dev: true + + /@eslint-sets/eslint-config-ts@3.3.0(@babel/core@7.22.20)(eslint@8.49.0)(prettier@3.0.3)(typescript@5.2.2): + resolution: {integrity: sha512-4Vj3KxYx16hmW6AyEv1mil0gVN8H3rdJt8TRWufbAj0ZN+EjwOPf3TqE7ASCYto/NpA8xWQY3NGm/og9Or/dDQ==} + peerDependencies: + eslint: '>=8.0.0' + prettier: '>=2.0.0' + typescript: '>=4.0.0' + dependencies: + '@eslint-sets/eslint-config-basic': 3.3.0(@babel/core@7.22.20)(@typescript-eslint/parser@5.62.0)(eslint@8.49.0)(prettier@3.0.3) + '@typescript-eslint/eslint-plugin': 5.62.0(@typescript-eslint/parser@5.62.0)(eslint@8.49.0)(typescript@5.2.2) + '@typescript-eslint/parser': 5.62.0(eslint@8.49.0)(typescript@5.2.2) + eslint: 8.49.0 + eslint-config-prettier: 8.10.0(eslint@8.49.0) + eslint-plugin-prettier: 4.2.1(eslint-config-prettier@8.10.0)(eslint@8.49.0)(prettier@3.0.3) + eslint-plugin-tsdoc: 0.2.17 + prettier: 3.0.3 + typescript: 5.2.2 + transitivePeerDependencies: + - '@babel/core' + - eslint-import-resolver-typescript + - eslint-import-resolver-webpack + - supports-color + dev: true + + /@eslint-sets/eslint-config-ts@5.9.0(@babel/core@7.22.20)(eslint@8.49.0)(prettier@3.0.3)(typescript@5.2.2): + resolution: {integrity: sha512-pHYbue8foI1y04BO4MwDlSTEwd04N47puVTbjK1MbK9JKxNpYaWoZxV8IxvdYKZMSeufjjIc4pW0w9EOfP8stQ==} + peerDependencies: + eslint: '>=7.4.0' + prettier: '>=2' + typescript: '*' + peerDependenciesMeta: + typescript: + optional: true + dependencies: + '@eslint-sets/eslint-config-basic': 5.9.0(@babel/core@7.22.20)(@typescript-eslint/parser@6.7.0)(eslint@8.49.0)(prettier@3.0.3)(typescript@5.2.2) + '@typescript-eslint/eslint-plugin': 6.7.0(@typescript-eslint/parser@6.7.0)(eslint@8.49.0)(typescript@5.2.2) + '@typescript-eslint/parser': 6.7.0(eslint@8.49.0)(typescript@5.2.2) + eslint: 8.49.0 + eslint-config-prettier: 9.0.0(eslint@8.49.0) + eslint-plugin-prettier: 5.0.0(eslint-config-prettier@9.0.0)(eslint@8.49.0)(prettier@3.0.3) + eslint-plugin-tsdoc: 0.2.17 + prettier: 3.0.3 + typescript: 5.2.2 + transitivePeerDependencies: + - '@babel/core' + - '@types/eslint' + - eslint-import-resolver-typescript + - eslint-import-resolver-webpack + - supports-color + dev: true + + /@eslint-sets/eslint-config-vue3-ts@3.3.0(@babel/core@7.22.20)(eslint@8.49.0)(prettier@3.0.3)(typescript@5.2.2): + resolution: {integrity: sha512-KX3VFuS5U4FYKfZ6PABQjl54BMpNapNjYYe103Nm2Zy8y9zphDCBAARbhU97XNSvzkurve7HhJcsi9gXrWlGFA==} + peerDependencies: + eslint: '>=8.0.0' + prettier: '>=2.0.0' + typescript: '>=4.0.0' + dependencies: + '@eslint-sets/eslint-config-ts': 3.3.0(@babel/core@7.22.20)(eslint@8.49.0)(prettier@3.0.3)(typescript@5.2.2) + '@typescript-eslint/eslint-plugin': 5.62.0(@typescript-eslint/parser@5.62.0)(eslint@8.49.0)(typescript@5.2.2) + '@typescript-eslint/parser': 5.62.0(eslint@8.49.0)(typescript@5.2.2) + eslint: 8.49.0 + eslint-config-prettier: 8.10.0(eslint@8.49.0) + eslint-plugin-prettier: 4.2.1(eslint-config-prettier@8.10.0)(eslint@8.49.0)(prettier@3.0.3) + eslint-plugin-tsdoc: 0.2.17 + eslint-plugin-vitest-globals: 1.4.0 + eslint-plugin-vue: 9.17.0(eslint@8.49.0) + eslint-plugin-vue-scoped-css: 2.5.0(eslint@8.49.0)(vue-eslint-parser@9.3.1) + prettier: 3.0.3 + typescript: 5.2.2 + vue-eslint-parser: 9.3.1(eslint@8.49.0) + transitivePeerDependencies: + - '@babel/core' + - eslint-import-resolver-typescript + - eslint-import-resolver-webpack + - supports-color + dev: true + + /@eslint-sets/eslint-config-vue3@5.9.0(@babel/core@7.22.20)(eslint@8.49.0)(prettier@3.0.3)(typescript@5.2.2): + resolution: {integrity: sha512-a3+ObfBl+n4GvcHLc404zw/Mv/t10MN50ZZq1GEo0yclasmz4vQkPQWH15x/IJbavClmT+0LLP6Y9ji16syerw==} + peerDependencies: + eslint: '>=7.4.0' + prettier: '>=2' + typescript: '*' + peerDependenciesMeta: + typescript: + optional: true + dependencies: + '@eslint-sets/eslint-config-basic': 5.9.0(@babel/core@7.22.20)(@typescript-eslint/parser@6.7.0)(eslint@8.49.0)(prettier@3.0.3)(typescript@5.2.2) + '@eslint-sets/eslint-config-ts': 5.9.0(@babel/core@7.22.20)(eslint@8.49.0)(prettier@3.0.3)(typescript@5.2.2) + '@typescript-eslint/eslint-plugin': 6.7.0(@typescript-eslint/parser@6.7.0)(eslint@8.49.0)(typescript@5.2.2) + '@typescript-eslint/parser': 6.7.0(eslint@8.49.0)(typescript@5.2.2) + eslint: 8.49.0 + eslint-config-prettier: 9.0.0(eslint@8.49.0) + eslint-plugin-jsdoc: 46.8.1(eslint@8.49.0) + eslint-plugin-prettier: 5.0.0(eslint-config-prettier@9.0.0)(eslint@8.49.0)(prettier@3.0.3) + eslint-plugin-tsdoc: 0.2.17 + eslint-plugin-vitest-globals: 1.4.0 + eslint-plugin-vue: 9.17.0(eslint@8.49.0) + eslint-plugin-vue-scoped-css: 2.5.0(eslint@8.49.0)(vue-eslint-parser@9.3.1) + local-pkg: 0.4.3 + prettier: 3.0.3 + typescript: 5.2.2 + vue-eslint-parser: 9.3.1(eslint@8.49.0) + transitivePeerDependencies: + - '@babel/core' + - '@types/eslint' + - eslint-import-resolver-typescript + - eslint-import-resolver-webpack + - supports-color + dev: true + + /@eslint/eslintrc@2.1.2: + resolution: {integrity: sha512-+wvgpDsrB1YqAMdEUCcnTlpfVBH7Vqn6A/NT3D8WVXFIaKMlErPIZT3oCIAVCOtarRpMtelZLqJeU3t7WY6X6g==} engines: {node: ^12.22.0 || ^14.17.0 || >=16.0.0} dependencies: ajv: 6.12.6 debug: 4.3.4(supports-color@8.1.1) - espree: 9.5.2 - globals: 13.20.0 + espree: 9.6.1 + globals: 13.21.0 ignore: 5.2.4 import-fresh: 3.3.0 js-yaml: 4.1.0 @@ -1933,10 +2256,12 @@ packages: strip-json-comments: 3.1.1 transitivePeerDependencies: - supports-color + dev: true - /@eslint/js@8.42.0: - resolution: {integrity: sha512-6SWlXpWU5AvId8Ac7zjzmIOqMOba/JWY8XZ4A7q7Gn1Vlfg/SFFIlrtHXt9nPn4op9ZPAkl91Jao+QQv3r/ukw==} + /@eslint/js@8.49.0: + resolution: {integrity: sha512-1S8uAY/MTJqVx0SC4epBq+N2yhuwtNwLbJYNZyhL2pO1ZVKn5HFXav5T41Ryzy9K9V7ZId2JB2oy/W4aCd9/2w==} engines: {node: ^12.22.0 || ^14.17.0 || >=16.0.0} + dev: true /@hapi/hoek@9.3.0: resolution: {integrity: sha512-/c6rf4UJlmHlC9b5BaNvzAcFv7HZ2QHaV0D4/HNlBdvFnvQq8RI4kYdhyPCl7Xj+oWvTWQ8ujhqS53LIgAe6KQ==} @@ -1948,8 +2273,8 @@ packages: '@hapi/hoek': 9.3.0 dev: true - /@humanwhocodes/config-array@0.11.10: - resolution: {integrity: sha512-KVVjQmNUepDVGXNuoRRdmmEjruj0KfiGSbS8LVc12LMsWDQzRXJ0qdhN8L8uUigKpfEHRhlaQFY0ib1tnUbNeQ==} + /@humanwhocodes/config-array@0.11.11: + resolution: {integrity: sha512-N2brEuAadi0CcdeMXUkhbZB84eskAc8MEX1By6qEchoVywSgXPIjou4rYsl0V3Hj0ZnuGycGCjdNgockbzeWNA==} engines: {node: '>=10.10.0'} dependencies: '@humanwhocodes/object-schema': 1.2.1 @@ -1957,16 +2282,20 @@ packages: minimatch: 3.1.2 transitivePeerDependencies: - supports-color + dev: true /@humanwhocodes/module-importer@1.0.1: resolution: {integrity: sha512-bxveV4V8v5Yb4ncFTT3rPSgZBOpCkjfK0y4oVVVJwIuDVBRMDXrPyXRL988i5ap9m9bnyEEjWfm5WkBmtffLfA==} engines: {node: '>=12.22'} + dev: true /@humanwhocodes/object-schema@1.2.1: resolution: {integrity: sha512-ZnQMnLV4e7hDlUvw8H+U8ASL02SS2Gn6+9Ac3wGGLIe7+je2AeAOxPY+izIPJDfFDb7eDjev0Us8MO1iFRN8hA==} + dev: true /@ioredis/commands@1.2.0: resolution: {integrity: sha512-Sx1pU8EM64o2BrqNpEO1CNLtKQwyhuXuqyfH7oGKCk+1a33d2r5saW8zNwm3j6BTExtjrv2BxTgzzkMwts6vGg==} + dev: false /@isaacs/cliui@8.0.2: resolution: {integrity: sha512-O8jcjabXaleOG9DQ0+ARXWZBTfnP4WNAqzuiJK7ll44AmxGKv/J2M4TPjxjY3znBCfvBXFzucm1twdyFybFqEA==} @@ -2001,22 +2330,22 @@ packages: engines: {node: ^10.13.0 || ^12.13.0 || ^14.15.0 || >=15.0.0} dependencies: '@jest/types': 27.5.1 - '@types/node': 20.3.1 + '@types/node': 20.5.8 chalk: 4.1.2 jest-message-util: 27.5.1 jest-util: 27.5.1 slash: 3.0.0 dev: true - /@jest/console@29.6.0: - resolution: {integrity: sha512-anb6L1yg7uPQpytNVA5skRaXy3BmrsU8icRhTVNbWdjYWDDfy8M1Kq5HIVRpYoABdbpqsc5Dr+jtu4+qWRQBiQ==} + /@jest/console@29.7.0: + resolution: {integrity: sha512-5Ni4CU7XHQi32IJ398EEP4RrB8eV09sXP2ROqD4bksHrnTree52PsxvX8tpL8LvTZ3pFzXyPbNQReSN41CAhOg==} engines: {node: ^14.15.0 || ^16.10.0 || >=18.0.0} dependencies: - '@jest/types': 29.6.0 - '@types/node': 20.3.1 + '@jest/types': 29.6.3 + '@types/node': 20.5.8 chalk: 4.1.2 - jest-message-util: 29.6.0 - jest-util: 29.6.0 + jest-message-util: 29.7.0 + jest-util: 29.7.0 slash: 3.0.0 dev: true @@ -2034,7 +2363,7 @@ packages: '@jest/test-result': 27.5.1 '@jest/transform': 27.5.1 '@jest/types': 27.5.1 - '@types/node': 20.3.1 + '@types/node': 20.5.8 ansi-escapes: 4.3.2 chalk: 4.1.2 emittery: 0.8.1 @@ -2065,8 +2394,8 @@ packages: - utf-8-validate dev: true - /@jest/core@29.6.0: - resolution: {integrity: sha512-5dbMHfY/5R9m8NbgmB3JlxQqooZ/ooPSOiwEQZZ+HODwJTbIu37seVcZNBK29aMdXtjvTRB3f6LCvkKq+r8uQA==} + /@jest/core@29.7.0: + resolution: {integrity: sha512-n7aeXWKMnGtDA48y8TLWJPJmLmmZ642Ceo78cYWEpiD7FzDgmNDV/GCVRorPABdXLJZ/9wzzgZAlHjXjxDHGsg==} engines: {node: ^14.15.0 || ^16.10.0 || >=18.0.0} peerDependencies: node-notifier: ^8.0.1 || ^9.0.0 || ^10.0.0 @@ -2074,35 +2403,36 @@ packages: node-notifier: optional: true dependencies: - '@jest/console': 29.6.0 - '@jest/reporters': 29.6.0 - '@jest/test-result': 29.6.0 - '@jest/transform': 29.6.0 - '@jest/types': 29.6.0 - '@types/node': 20.3.1 + '@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': 20.5.8 ansi-escapes: 4.3.2 chalk: 4.1.2 ci-info: 3.8.0 exit: 0.1.2 graceful-fs: 4.2.11 - jest-changed-files: 29.5.0 - jest-config: 29.6.0(@types/node@20.3.1) - jest-haste-map: 29.6.0 - jest-message-util: 29.6.0 - jest-regex-util: 29.4.3 - jest-resolve: 29.6.0 - jest-resolve-dependencies: 29.6.0 - jest-runner: 29.6.0 - jest-runtime: 29.6.0 - jest-snapshot: 29.6.0 - jest-util: 29.6.0 - jest-validate: 29.6.0 - jest-watcher: 29.6.0 + jest-changed-files: 29.7.0 + jest-config: 29.7.0(@types/node@20.5.8) + 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.5 - pretty-format: 29.6.0 + pretty-format: 29.7.0 slash: 3.0.0 strip-ansi: 6.0.1 transitivePeerDependencies: + - babel-plugin-macros - supports-color - ts-node dev: true @@ -2113,33 +2443,33 @@ packages: dependencies: '@jest/fake-timers': 27.5.1 '@jest/types': 27.5.1 - '@types/node': 20.3.1 + '@types/node': 20.5.8 jest-mock: 27.5.1 dev: true - /@jest/environment@29.6.0: - resolution: {integrity: sha512-bUZLYUxYlUIsslBbxII0fq0kr1+friI3Gty+cRLmocGB1jdcAHs7FS8QdCDqedE8q4DZE1g/AJHH6OJZBLGGsg==} + /@jest/environment@29.7.0: + resolution: {integrity: sha512-aQIfHDq33ExsN4jP1NWGXhxgQ/wixs60gDiKO+XVMd8Mn0NWPWgc34ZQDTb2jKaUWQ7MuwoitXAsN2XVXNMpAw==} engines: {node: ^14.15.0 || ^16.10.0 || >=18.0.0} dependencies: - '@jest/fake-timers': 29.6.0 - '@jest/types': 29.6.0 - '@types/node': 20.3.1 - jest-mock: 29.6.0 + '@jest/fake-timers': 29.7.0 + '@jest/types': 29.6.3 + '@types/node': 20.5.8 + jest-mock: 29.7.0 dev: true - /@jest/expect-utils@29.6.0: - resolution: {integrity: sha512-LLSQQN7oypMSETKoPWpsWYVKJd9LQWmSDDAc4hUQ4JocVC7LAMy9R3ZMhlnLwbcFvQORZnZR7HM893Px6cJhvA==} + /@jest/expect-utils@29.7.0: + resolution: {integrity: sha512-GlsNBWiFQFCVi9QVSx7f5AgMeLxe9YCCs5PuP2O2LdjDAA8Jh9eX7lA1Jq/xdXw3Wb3hyvlFNfZIfcRetSzYcA==} engines: {node: ^14.15.0 || ^16.10.0 || >=18.0.0} dependencies: - jest-get-type: 29.4.3 + jest-get-type: 29.6.3 dev: true - /@jest/expect@29.6.0: - resolution: {integrity: sha512-a7pISPW28Q3c0/pLwz4mQ6tbAI+hc8/0CJp9ix6e9U4dQ6TiHQX82CT5DV5BMWaw8bFH4E6zsfZxXdn6Ka23Bw==} + /@jest/expect@29.7.0: + resolution: {integrity: sha512-8uMeAMycttpva3P1lBHB8VciS9V0XAr3GymPpipdyQXbBcuhkLQOSe8E/p92RyAdToS6ZD1tFkX+CkhoECE0dQ==} engines: {node: ^14.15.0 || ^16.10.0 || >=18.0.0} dependencies: - expect: 29.6.0 - jest-snapshot: 29.6.0 + expect: 29.7.0 + jest-snapshot: 29.7.0 transitivePeerDependencies: - supports-color dev: true @@ -2150,22 +2480,22 @@ packages: dependencies: '@jest/types': 27.5.1 '@sinonjs/fake-timers': 8.1.0 - '@types/node': 20.3.1 + '@types/node': 20.5.8 jest-message-util: 27.5.1 jest-mock: 27.5.1 jest-util: 27.5.1 dev: true - /@jest/fake-timers@29.6.0: - resolution: {integrity: sha512-nuCU46AsZoskthWSDS2Aj6LARgyNcp5Fjx2qxsO/fPl1Wp1CJ+dBDqs0OkEcJK8FBeV/MbjH5efe79M2sHcV+A==} + /@jest/fake-timers@29.7.0: + resolution: {integrity: sha512-q4DH1Ha4TTFPdxLsqDXK1d3+ioSL7yL5oCMJZgDYm6i+6CygW5E5xVr/D1HdsGxjt1ZWSfUAs9OxSB/BNelWrQ==} engines: {node: ^14.15.0 || ^16.10.0 || >=18.0.0} dependencies: - '@jest/types': 29.6.0 + '@jest/types': 29.6.3 '@sinonjs/fake-timers': 10.3.0 - '@types/node': 20.3.1 - jest-message-util: 29.6.0 - jest-mock: 29.6.0 - jest-util: 29.6.0 + '@types/node': 20.5.8 + jest-message-util: 29.7.0 + jest-mock: 29.7.0 + jest-util: 29.7.0 dev: true /@jest/globals@27.5.1: @@ -2177,14 +2507,14 @@ packages: expect: 27.5.1 dev: true - /@jest/globals@29.6.0: - resolution: {integrity: sha512-IQQ3hZ2D/hwEwXSMv5GbfhzdH0nTQR3KPYxnuW6gYWbd6+7/zgMz7Okn6EgBbNtJNONq03k5EKA6HqGyzRbpeg==} + /@jest/globals@29.7.0: + resolution: {integrity: sha512-mpiz3dutLbkW2MNFubUGUEVLkTGiqW6yLVTA+JbP6fI6J5iL9Y0Nlg8k95pcF8ctKwCS7WVxteBs29hhfAotzQ==} engines: {node: ^14.15.0 || ^16.10.0 || >=18.0.0} dependencies: - '@jest/environment': 29.6.0 - '@jest/expect': 29.6.0 - '@jest/types': 29.6.0 - jest-mock: 29.6.0 + '@jest/environment': 29.7.0 + '@jest/expect': 29.7.0 + '@jest/types': 29.6.3 + jest-mock: 29.7.0 transitivePeerDependencies: - supports-color dev: true @@ -2203,17 +2533,17 @@ packages: '@jest/test-result': 27.5.1 '@jest/transform': 27.5.1 '@jest/types': 27.5.1 - '@types/node': 20.3.1 + '@types/node': 20.5.8 chalk: 4.1.2 - collect-v8-coverage: 1.0.1 + collect-v8-coverage: 1.0.2 exit: 0.1.2 glob: 7.2.3 graceful-fs: 4.2.11 istanbul-lib-coverage: 3.2.0 istanbul-lib-instrument: 5.2.1 - istanbul-lib-report: 3.0.0 + istanbul-lib-report: 3.0.1 istanbul-lib-source-maps: 4.0.1 - istanbul-reports: 3.1.5 + istanbul-reports: 3.1.6 jest-haste-map: 27.5.1 jest-resolve: 27.5.1 jest-util: 27.5.1 @@ -2227,8 +2557,8 @@ packages: - supports-color dev: true - /@jest/reporters@29.6.0: - resolution: {integrity: sha512-dWEq4HI0VvHcAD6XTtyBKKARLytyyWPIy1SvGOcU91106MfvHPdxZgupFwVHd8TFpZPpA3SebYjtwS5BUS76Rw==} + /@jest/reporters@29.7.0: + resolution: {integrity: sha512-DApq0KJbJOEzAFYjHADNNxAE3KbhxQB1y5Kplb5Waqw6zVbuWatSnMjE5gs8FUgEPmNsnZA3NCWl9NG0ia04Pg==} engines: {node: ^14.15.0 || ^16.10.0 || >=18.0.0} peerDependencies: node-notifier: ^8.0.1 || ^9.0.0 || ^10.0.0 @@ -2237,25 +2567,25 @@ packages: optional: true dependencies: '@bcoe/v8-coverage': 0.2.3 - '@jest/console': 29.6.0 - '@jest/test-result': 29.6.0 - '@jest/transform': 29.6.0 - '@jest/types': 29.6.0 - '@jridgewell/trace-mapping': 0.3.18 - '@types/node': 20.3.1 + '@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.19 + '@types/node': 20.5.8 chalk: 4.1.2 - collect-v8-coverage: 1.0.1 + collect-v8-coverage: 1.0.2 exit: 0.1.2 glob: 7.2.3 graceful-fs: 4.2.11 istanbul-lib-coverage: 3.2.0 - istanbul-lib-instrument: 5.2.1 - istanbul-lib-report: 3.0.0 + istanbul-lib-instrument: 6.0.0 + istanbul-lib-report: 3.0.1 istanbul-lib-source-maps: 4.0.1 - istanbul-reports: 3.1.5 - jest-message-util: 29.6.0 - jest-util: 29.6.0 - jest-worker: 29.6.0 + istanbul-reports: 3.1.6 + jest-message-util: 29.7.0 + jest-util: 29.7.0 + jest-worker: 29.7.0 slash: 3.0.0 string-length: 4.0.2 strip-ansi: 6.0.1 @@ -2264,15 +2594,8 @@ packages: - supports-color dev: true - /@jest/schemas@29.4.3: - resolution: {integrity: sha512-VLYKXQmtmuEz6IxJsrZwzG9NvtkQsWNnWMsKxqWNu3+CnfzJQhp0WDDKWLVV9hLKr0l3SLLFRqcYHjhtyuDVxg==} - engines: {node: ^14.15.0 || ^16.10.0 || >=18.0.0} - dependencies: - '@sinclair/typebox': 0.25.24 - dev: true - - /@jest/schemas@29.6.0: - resolution: {integrity: sha512-rxLjXyJBTL4LQeJW3aKo0M/+GkCOXsO+8i9Iu7eDb6KwtP65ayoDsitrdPBtujxQ88k4wI2FNYfa6TOGwSn6cQ==} + /@jest/schemas@29.6.3: + resolution: {integrity: sha512-mo5j5X+jIZmJQveBKeS/clAueipV7KgiX1vMgCxam1RNYiqE1w62n0/tJJnHtjW8ZHcQco5gY85jA3mi0L+nSA==} engines: {node: ^14.15.0 || ^16.10.0 || >=18.0.0} dependencies: '@sinclair/typebox': 0.27.8 @@ -2287,11 +2610,11 @@ packages: source-map: 0.6.1 dev: true - /@jest/source-map@29.6.0: - resolution: {integrity: sha512-oA+I2SHHQGxDCZpbrsCQSoMLb3Bz547JnM+jUr9qEbuw0vQlWZfpPS7CO9J7XiwKicEz9OFn/IYoLkkiUD7bzA==} + /@jest/source-map@29.6.3: + resolution: {integrity: sha512-MHjT95QuipcPrpLM+8JMSzFx6eHp5Bm+4XeFDJlwsvVBjmKNiIAvasGK2fxz2WbGRlnvqehFbh07MMa7n3YJnw==} engines: {node: ^14.15.0 || ^16.10.0 || >=18.0.0} dependencies: - '@jridgewell/trace-mapping': 0.3.18 + '@jridgewell/trace-mapping': 0.3.19 callsites: 3.1.0 graceful-fs: 4.2.11 dev: true @@ -2303,17 +2626,17 @@ packages: '@jest/console': 27.5.1 '@jest/types': 27.5.1 '@types/istanbul-lib-coverage': 2.0.4 - collect-v8-coverage: 1.0.1 + collect-v8-coverage: 1.0.2 dev: true - /@jest/test-result@29.6.0: - resolution: {integrity: sha512-9qLb7xITeyWhM4yatn2muqfomuoCTOhv0QV9i7XiIyYi3QLfnvPv5NeJp5u0PZeutAOROMLKakOkmoAisOr3YQ==} + /@jest/test-result@29.7.0: + resolution: {integrity: sha512-Fdx+tv6x1zlkJPcWXmMDAG2HBnaR9XPSd5aDWQVsfrZmLVT3lU1cwyxLgRmXR9yrq4NBoEm9BMsfgFzTQAbJYA==} engines: {node: ^14.15.0 || ^16.10.0 || >=18.0.0} dependencies: - '@jest/console': 29.6.0 - '@jest/types': 29.6.0 + '@jest/console': 29.7.0 + '@jest/types': 29.6.3 '@types/istanbul-lib-coverage': 2.0.4 - collect-v8-coverage: 1.0.1 + collect-v8-coverage: 1.0.2 dev: true /@jest/test-sequencer@27.5.1: @@ -2328,13 +2651,13 @@ packages: - supports-color dev: true - /@jest/test-sequencer@29.6.0: - resolution: {integrity: sha512-HYCS3LKRQotKWj2mnA3AN13PPevYZu8MJKm12lzYojpJNnn6kI/3PWmr1At/e3tUu+FHQDiOyaDVuR4EV3ezBw==} + /@jest/test-sequencer@29.7.0: + resolution: {integrity: sha512-GQwJ5WZVrKnOJuiYiAF52UNUJXgTZx1NHjFSEB0qEMmSZKAkdMoIzw/Cj6x6NF4AvV23AUqDpFzQkN/eYCYTxw==} engines: {node: ^14.15.0 || ^16.10.0 || >=18.0.0} dependencies: - '@jest/test-result': 29.6.0 + '@jest/test-result': 29.7.0 graceful-fs: 4.2.11 - jest-haste-map: 29.6.0 + jest-haste-map: 29.7.0 slash: 3.0.0 dev: true @@ -2342,7 +2665,7 @@ packages: resolution: {integrity: sha512-ipON6WtYgl/1329g5AIJVbUuEh0wZVbdpGwC99Jw4LwuoBNS95MVphU6zOeD9pDkon+LLbFL7lOQRapbB8SCHw==} engines: {node: ^10.13.0 || ^12.13.0 || ^14.15.0 || >=15.0.0} dependencies: - '@babel/core': 7.22.5 + '@babel/core': 7.22.20 '@jest/types': 27.5.1 babel-plugin-istanbul: 6.1.1 chalk: 4.1.2 @@ -2361,21 +2684,21 @@ packages: - supports-color dev: true - /@jest/transform@29.6.0: - resolution: {integrity: sha512-bhP/KxPo3e322FJ0nKAcb6WVK76ZYyQd1lWygJzoSqP8SYMSLdxHqP4wnPTI4WvbB8PKPDV30y5y7Tya4RHOBA==} + /@jest/transform@29.7.0: + resolution: {integrity: sha512-ok/BTPFzFKVMwO5eOHRrvnBVHdRy9IrsrW1GpMaQ9MCnilNLXQKmAX8s1YXDFaai9xJpac2ySzV0YeRRECr2Vw==} engines: {node: ^14.15.0 || ^16.10.0 || >=18.0.0} dependencies: - '@babel/core': 7.22.5 - '@jest/types': 29.6.0 - '@jridgewell/trace-mapping': 0.3.18 + '@babel/core': 7.22.20 + '@jest/types': 29.6.3 + '@jridgewell/trace-mapping': 0.3.19 babel-plugin-istanbul: 6.1.1 chalk: 4.1.2 convert-source-map: 2.0.0 fast-json-stable-stringify: 2.1.0 graceful-fs: 4.2.11 - jest-haste-map: 29.6.0 - jest-regex-util: 29.4.3 - jest-util: 29.6.0 + jest-haste-map: 29.7.0 + jest-regex-util: 29.6.3 + jest-util: 29.7.0 micromatch: 4.0.5 pirates: 4.0.6 slash: 3.0.0 @@ -2390,19 +2713,19 @@ packages: dependencies: '@types/istanbul-lib-coverage': 2.0.4 '@types/istanbul-reports': 3.0.1 - '@types/node': 20.3.1 + '@types/node': 20.5.8 '@types/yargs': 16.0.5 chalk: 4.1.2 dev: true - /@jest/types@29.6.0: - resolution: {integrity: sha512-8XCgL9JhqbJTFnMRjEAO+TuW251+MoMd5BSzLiE3vvzpQ8RlBxy8NoyNkDhs3K3OL3HeVinlOl9or5p7GTeOLg==} + /@jest/types@29.6.3: + resolution: {integrity: sha512-u3UPsIilWKOM3F9CXtrG8LEJmNxwoCQC/XVj4IKYXvvpx7QIi/Kg1LI5uDmDpKlac62NUtX7eLjRh+jVZcLOzw==} engines: {node: ^14.15.0 || ^16.10.0 || >=18.0.0} dependencies: - '@jest/schemas': 29.6.0 + '@jest/schemas': 29.6.3 '@types/istanbul-lib-coverage': 2.0.4 '@types/istanbul-reports': 3.0.1 - '@types/node': 20.3.1 + '@types/node': 20.5.8 '@types/yargs': 17.0.24 chalk: 4.1.2 dev: true @@ -2413,11 +2736,7 @@ packages: dependencies: '@jridgewell/set-array': 1.1.2 '@jridgewell/sourcemap-codec': 1.4.15 - '@jridgewell/trace-mapping': 0.3.18 - - /@jridgewell/resolve-uri@3.1.0: - resolution: {integrity: sha512-F2msla3tad+Mfht5cJq7LSXcdudKTWCVYUgw6pLFOOHSTtZlj6SWNYAp+AhuqLmWdBO2X5hPrLcu8cVP8fy28w==} - engines: {node: '>=6.0.0'} + '@jridgewell/trace-mapping': 0.3.19 /@jridgewell/resolve-uri@3.1.1: resolution: {integrity: sha512-dSYZh7HhCDtCKm4QakX0xFpsRDqjjtZf/kjI/v3T3Nwt5r8/qz/M19F9ySyOqU94SXBmeG9ttTul+YnR4LOxFA==} @@ -2427,24 +2746,21 @@ packages: resolution: {integrity: sha512-xnkseuNADM0gt2bs+BvhO0p78Mk762YnZdsuzFV018NoG1Sj1SCQvpSqa7XUaTam5vAGasABV9qXASMKnFMwMw==} engines: {node: '>=6.0.0'} - /@jridgewell/source-map@0.3.3: - resolution: {integrity: sha512-b+fsZXeLYi9fEULmfBrhxn4IrPlINf8fiNarzTof004v3lFdntdwa9PF7vFJqm3mg7s+ScJMxXaE3Acp1irZcg==} + /@jridgewell/source-map@0.3.5: + resolution: {integrity: sha512-UTYAUj/wviwdsMfzoSJspJxbkH5o1snzwX0//0ENX1u/55kkZZkcTZP6u9bwKGkv+dkk9at4m1Cpt0uY80kcpQ==} dependencies: '@jridgewell/gen-mapping': 0.3.3 - '@jridgewell/trace-mapping': 0.3.18 + '@jridgewell/trace-mapping': 0.3.19 dev: true - /@jridgewell/sourcemap-codec@1.4.14: - resolution: {integrity: sha512-XPSJHWmi394fuUuzDnGz1wiKqWfo1yXecHQMRf2l6hztTO+nPru658AyDngaBe7isIxEkRsPR3FZh+s7iVa4Uw==} - /@jridgewell/sourcemap-codec@1.4.15: resolution: {integrity: sha512-eF2rxCRulEKXHTRiDrDy6erMYWqNw4LPdQ8UQA4huuxaQsVeRPFl2oM8oDGxMFhJUWZf9McpLtJasDDZb/Bpeg==} - /@jridgewell/trace-mapping@0.3.18: - resolution: {integrity: sha512-w+niJYzMHdd7USdiH2U6869nqhD2nbfZXND5Yp93qIbEmnDNk7PD48o+YchRVpzMU7M6jVCbenTR7PA1FLQ9pA==} + /@jridgewell/trace-mapping@0.3.19: + resolution: {integrity: sha512-kf37QtfW+Hwx/buWGMPcR60iF9ziHa6r/CZJIHbmcm4+0qrXiVdxegAH0F6yddEVQ7zdkjcGCgCzUu+BcbhQxw==} dependencies: - '@jridgewell/resolve-uri': 3.1.0 - '@jridgewell/sourcemap-codec': 1.4.14 + '@jridgewell/resolve-uri': 3.1.1 + '@jridgewell/sourcemap-codec': 1.4.15 /@jridgewell/trace-mapping@0.3.9: resolution: {integrity: sha512-3Belt6tdc8bPgAtbcmdtNJlirVoTmEb5e2gC94PnkwEW9jI6CAHUeoG85tjWP5WquqfavoMtMwiG4P926ZKKuQ==} @@ -2488,19 +2804,19 @@ packages: resolution: {integrity: sha512-fuscdXJ9G1qb7W8VdHi+IwRqij3lBkosAm4ydQtEmbY58OzHXqQhvlxqEkoz0yssNVn38bcpRWgA9PP+OGoisw==} dev: true - /@mapbox/node-pre-gyp@1.0.10: - resolution: {integrity: sha512-4ySo4CjzStuprMwk35H5pPbkymjv1SF3jGLj6rAHp/xT/RF7TL7bd9CTm1xDY49K2qF7jmR/g7k+SkLETP6opA==} + /@mapbox/node-pre-gyp@1.0.11: + resolution: {integrity: sha512-Yhlar6v9WQgUp/He7BdgzOz8lqMQ8sU+jkCq7Wx8Myc5YFJLbEe7lgui/V7G1qB1DJykHSGwreceSaD60Y0PUQ==} hasBin: true dependencies: - detect-libc: 2.0.1 + detect-libc: 2.0.2 https-proxy-agent: 5.0.1 make-dir: 3.1.0 - node-fetch: 2.6.11 + node-fetch: 2.7.0 nopt: 5.0.0 npmlog: 5.0.1 rimraf: 3.0.2 - semver: 7.5.1 - tar: 6.1.15 + semver: 7.5.4 + tar: 6.2.0 transitivePeerDependencies: - encoding - supports-color @@ -2509,61 +2825,62 @@ packages: /@mapbox/node-pre-gyp@1.0.9: resolution: {integrity: sha512-aDF3S3rK9Q2gey/WAttUlISduDItz5BU3306M9Eyv6/oS40aMprnopshtlKTykxRNIBEZuRMaZAnbrQ4QtKGyw==} hasBin: true + requiresBuild: true dependencies: - detect-libc: 2.0.1 + detect-libc: 2.0.2 https-proxy-agent: 5.0.1 make-dir: 3.1.0 - node-fetch: 2.6.11 + node-fetch: 2.7.0 nopt: 5.0.0 npmlog: 5.0.1 rimraf: 3.0.2 - semver: 7.5.1 - tar: 6.1.15 + semver: 7.5.4 + tar: 6.2.0 transitivePeerDependencies: - encoding - supports-color dev: false optional: true - /@microsoft/api-documenter@7.22.21(@types/node@20.3.1): - resolution: {integrity: sha512-o8VXpB83P87cLIYfkQS7ibShoYorTZ7Xs+gMwftT75pFaYWwhBuI8M0MPgzTGIAxzi338XfUjhctlVCjRn+Sqg==} + /@microsoft/api-documenter@7.23.0(@types/node@20.3.1): + resolution: {integrity: sha512-fEScQLW29+tgP4hxNS0NretEC0UFNVHj7H5C4FjapkNlcNcy/rVa/2v7LybTL5E7ilCsbEftmso8wyzFjg0Dvw==} hasBin: true dependencies: - '@microsoft/api-extractor-model': 7.27.3(@types/node@20.3.1) + '@microsoft/api-extractor-model': 7.28.0(@types/node@20.3.1) '@microsoft/tsdoc': 0.14.2 - '@rushstack/node-core-library': 3.59.4(@types/node@20.3.1) - '@rushstack/ts-command-line': 4.15.1 + '@rushstack/node-core-library': 3.60.0(@types/node@20.3.1) + '@rushstack/ts-command-line': 4.16.0 colors: 1.2.5 js-yaml: 3.13.1 - resolve: 1.22.2 + resolve: 1.22.6 transitivePeerDependencies: - '@types/node' dev: true - /@microsoft/api-extractor-model@7.27.3(@types/node@20.3.1): - resolution: {integrity: sha512-fSFvw7otYHduOkyshjTbapKKgwF8bgquVHvgF8VgeKtMYvqXkoaj7W6VcM7PNY7E2bbblhUgC4XNdqZLD4SJGw==} + /@microsoft/api-extractor-model@7.28.0(@types/node@20.3.1): + resolution: {integrity: sha512-QIMtUVm1tqiKG+M6ciFgRShcDoovyltaeg+CbyOnyr7SMrp6gg0ojK5/nToMqR9kAvsTS4QVgW4Twl50EoAjcw==} dependencies: '@microsoft/tsdoc': 0.14.2 '@microsoft/tsdoc-config': 0.16.2 - '@rushstack/node-core-library': 3.59.4(@types/node@20.3.1) + '@rushstack/node-core-library': 3.60.0(@types/node@20.3.1) transitivePeerDependencies: - '@types/node' dev: true - /@microsoft/api-extractor@7.36.0(@types/node@20.3.1): - resolution: {integrity: sha512-P+kYgJFDXIr+UNzhRMhlpM/dderi6ab4lxn35vdhfAIMPtGCSXIJxrrtpTOQmQW8CZtmoZX06LYoUsKCc1zjow==} + /@microsoft/api-extractor@7.37.0(@types/node@20.3.1): + resolution: {integrity: sha512-df/wffWpDhYRw7kzdxeHGsCpim+dC8aFiZlsJb4uFvVPWhBZpDzOhQxSUTFx3Df1ORY+/JjuPR3fDE9Hq+PHzQ==} hasBin: true dependencies: - '@microsoft/api-extractor-model': 7.27.3(@types/node@20.3.1) + '@microsoft/api-extractor-model': 7.28.0(@types/node@20.3.1) '@microsoft/tsdoc': 0.14.2 '@microsoft/tsdoc-config': 0.16.2 - '@rushstack/node-core-library': 3.59.4(@types/node@20.3.1) - '@rushstack/rig-package': 0.4.0 - '@rushstack/ts-command-line': 4.15.1 + '@rushstack/node-core-library': 3.60.0(@types/node@20.3.1) + '@rushstack/rig-package': 0.5.0 + '@rushstack/ts-command-line': 4.16.0 colors: 1.2.5 lodash: 4.17.21 - resolve: 1.22.2 - semver: 7.3.8 + resolve: 1.22.6 + semver: 7.5.4 source-map: 0.6.1 typescript: 5.0.4 transitivePeerDependencies: @@ -2593,7 +2910,7 @@ packages: ext-name: 5.0.0 file-type: 17.1.6 filenamify: 5.1.1 - got: 11.8.5 + got: 11.8.6 os-filter-obj: 2.0.0 dev: true @@ -2649,6 +2966,19 @@ packages: resolution: {integrity: sha512-L0Gr5iEQIDEbvWdDr1HUaBOxBSHL1VZhWSk1oryawoT8qJIY+KGfLFelU+Qma64ivCPbxYpkfPoKYVG3rcoGIA==} engines: {node: '>= 10'} hasBin: true + dev: true + + /@napi-rs/cli@2.16.3: + resolution: {integrity: sha512-3mLNPlbbOhpbIUKicLrJtIearlHXUuXL3UeueYyRRplpVMNkdn8xCyzY6PcYZi3JXR8bmCOiWgkVmLnrSL7DKw==} + engines: {node: '>= 10'} + hasBin: true + dev: false + + /@nicolo-ribaudo/eslint-scope-5-internals@5.1.1-v1: + resolution: {integrity: sha512-54/JRvkLIzzDWshCWfuhadfrfZVPiElY8Fcgmg1HroEly/EDSszzhBAsarCux+D/kOslTRquNzuyGSmUSTTHGg==} + dependencies: + eslint-scope: 5.1.1 + dev: true /@nodelib/fs.scandir@2.1.5: resolution: {integrity: sha512-vq24Bq3ym5HEQm2NKCr3yXDwjc7vTsEThRDnkp2DK9p1uqLR+DHurm/NOTo0KG7HYHU7eppKZj3MyqYuMBf62g==} @@ -2656,10 +2986,12 @@ packages: dependencies: '@nodelib/fs.stat': 2.0.5 run-parallel: 1.2.0 + dev: true /@nodelib/fs.stat@2.0.5: resolution: {integrity: sha512-RkhPPp2zrqDAQA/2jNhnztcPAlv64XdhIp7a7454A5ovI7Bukxgt7MX7udwAu3zg1DcpPU0rz3VV1SeaqvY4+A==} engines: {node: '>= 8'} + dev: true /@nodelib/fs.walk@1.2.8: resolution: {integrity: sha512-oGB+UxlgWcgQkgwo8GcEGwemoTFt3FIO9ababBmaGwXIoBKZ+GTy0pP185beGg7Llih/NSHSV2XAs1lnznocSg==} @@ -2667,12 +2999,13 @@ packages: dependencies: '@nodelib/fs.scandir': 2.1.5 fastq: 1.15.0 + dev: true /@npmcli/fs@3.1.0: resolution: {integrity: sha512-7kZUAaLscfgbwBQRbvdMYaZOWyMEcPTH/tJjnyAWJ/dvvs9Ef+CERx/qJb9GExJpl1qipaDGn7KqHnFGGixd0w==} engines: {node: ^14.17.0 || ^16.13.0 || >=18.0.0} dependencies: - semver: 7.5.1 + semver: 7.5.4 dev: false /@nsfw-filter/gif-frames@1.0.2: @@ -2693,6 +3026,9 @@ packages: through: 2.3.4 dev: false + /@one-ini/wasm@0.1.1: + resolution: {integrity: sha512-XuySG1E38YScSJoMlqovLru4KTUNSjgVTIjyh7qMX6aNN5HY5Ct5LhRJdxO79JtTzKfzV/bnWpz+zquYrISsvw==} + /@peertube/http-signature@1.7.0: resolution: {integrity: sha512-aGQIwo6/sWtyyqhVK4e1MtxYz4N1X8CNt6SOtCc+Wnczs5S5ONaLHDDR8LYaGn0MgOwvGgXyuZ5sJIfd7iyoUw==} engines: {node: '>=0.10'} @@ -2718,16 +3054,28 @@ packages: dev: false optional: true - /@redis/bloom@1.2.0(@redis/client@1.5.8): + /@pkgr/utils@2.4.2: + resolution: {integrity: sha512-POgTXhjrTfbTV63DiFXav4lBHiICLKKwDeaKn9Nphwj7WH6m0hMMCaJkMyRWjgtPFyRKRVoMXXjczsTQRDEhYw==} + engines: {node: ^12.20.0 || ^14.18.0 || >=16.0.0} + dependencies: + cross-spawn: 7.0.3 + fast-glob: 3.3.1 + is-glob: 4.0.3 + open: 9.1.0 + picocolors: 1.0.0 + tslib: 2.6.2 + dev: true + + /@redis/bloom@1.2.0(@redis/client@1.5.9): resolution: {integrity: sha512-HG2DFjYKbpNmVXsa0keLHp/3leGJz1mjh09f2RLGGLQZzSHpkmZWuwJbAvo3QcRY8p80m5+ZdXZdYOSBLlp7Cg==} peerDependencies: '@redis/client': ^1.0.0 dependencies: - '@redis/client': 1.5.8 + '@redis/client': 1.5.9 dev: true - /@redis/client@1.5.8: - resolution: {integrity: sha512-xzElwHIO6rBAqzPeVnCzgvrnBEcFL1P0w8P65VNLRkdVW8rOE58f52hdj0BDgmsdOm4f1EoXPZtH4Fh7M/qUpw==} + /@redis/client@1.5.9: + resolution: {integrity: sha512-SffgN+P1zdWJWSXBvJeynvEnmnZrYmtKSRW00xl8pOPFOMJjxRR9u0frSxJpPR6Y4V+k54blJjGW7FgxbTI7bQ==} engines: {node: '>=14'} dependencies: cluster-key-slot: 1.1.2 @@ -2735,36 +3083,36 @@ packages: yallist: 4.0.0 dev: true - /@redis/graph@1.1.0(@redis/client@1.5.8): + /@redis/graph@1.1.0(@redis/client@1.5.9): resolution: {integrity: sha512-16yZWngxyXPd+MJxeSr0dqh2AIOi8j9yXKcKCwVaKDbH3HTuETpDVPcLujhFYVPtYrngSco31BUcSa9TH31Gqg==} peerDependencies: '@redis/client': ^1.0.0 dependencies: - '@redis/client': 1.5.8 + '@redis/client': 1.5.9 dev: true - /@redis/json@1.0.4(@redis/client@1.5.8): + /@redis/json@1.0.4(@redis/client@1.5.9): resolution: {integrity: sha512-LUZE2Gdrhg0Rx7AN+cZkb1e6HjoSKaeeW8rYnt89Tly13GBI5eP4CwDVr+MY8BAYfCg4/N15OUrtLoona9uSgw==} peerDependencies: '@redis/client': ^1.0.0 dependencies: - '@redis/client': 1.5.8 + '@redis/client': 1.5.9 dev: true - /@redis/search@1.1.3(@redis/client@1.5.8): + /@redis/search@1.1.3(@redis/client@1.5.9): resolution: {integrity: sha512-4Dg1JjvCevdiCBTZqjhKkGoC5/BcB7k9j99kdMnaXFXg8x4eyOIVg9487CMv7/BUVkFLZCaIh8ead9mU15DNng==} peerDependencies: '@redis/client': ^1.0.0 dependencies: - '@redis/client': 1.5.8 + '@redis/client': 1.5.9 dev: true - /@redis/time-series@1.0.4(@redis/client@1.5.8): - resolution: {integrity: sha512-ThUIgo2U/g7cCuZavucQTQzA9g9JbDDY2f64u3AbAoz/8vE2lt2U37LamDUVChhaDA3IRT9R6VvJwqnUfTJzng==} + /@redis/time-series@1.0.5(@redis/client@1.5.9): + resolution: {integrity: sha512-IFjIgTusQym2B5IZJG3XKr5llka7ey84fw/NOYqESP5WUfQs9zz1ww/9+qoz4ka/S6KcGBodzlCeZ5UImKbscg==} peerDependencies: '@redis/client': ^1.0.0 dependencies: - '@redis/client': 1.5.8 + '@redis/client': 1.5.9 dev: true /@redocly/ajv@8.11.0: @@ -2776,113 +3124,67 @@ packages: uri-js: 4.4.1 dev: false - /@redocly/openapi-core@1.0.0-beta.120: - resolution: {integrity: sha512-BvasunpVWm5O9F/mW6JmxUqat4XFU5zNnKJkMY6GJ9UYH2UxgKnGaMLWXKtbJEOBnMT12S/p9yeqrQHnk8rGhQ==} + /@redocly/openapi-core@1.0.2: + resolution: {integrity: sha512-53dzhmG2bsi/8rcAAgBKk9ZLMR035VHgN7oSM3+BM4UAIoNBg6lMC/ChHSf9zO+GrX5qtuWVPqHhjjMti3SAlQ==} engines: {node: '>=12.0.0'} dependencies: '@redocly/ajv': 8.11.0 - '@types/node': 14.18.52 + '@types/node': 14.18.61 colorette: 1.4.0 js-levenshtein: 1.1.6 js-yaml: 4.1.0 lodash.isequal: 4.5.0 minimatch: 5.1.6 - node-fetch: 2.6.11 + node-fetch: 2.7.0 pluralize: 8.0.0 yaml-ast-parser: 0.0.43 transitivePeerDependencies: - encoding dev: false - /@rollup/plugin-alias@3.1.9(rollup@3.23.1): - resolution: {integrity: sha512-QI5fsEvm9bDzt32k39wpOwZhVzRcL5ydcffUHMyLVaVaLeC70I8TJZ17F1z1eMoLu4E/UOcH9BWVkKpIKdrfiw==} - engines: {node: '>=8.0.0'} + /@rollup/plugin-alias@5.0.0(rollup@3.28.1): + resolution: {integrity: sha512-l9hY5chSCjuFRPsnRm16twWBiSApl2uYFLsepQYwtBuAxNMQ/1dJqADld40P0Jkqm65GRTLy/AC6hnpVebtLsA==} + engines: {node: '>=14.0.0'} peerDependencies: - rollup: ^1.20.0||^2.0.0 + rollup: ^1.20.0||^2.0.0||^3.0.0 + peerDependenciesMeta: + rollup: + optional: true dependencies: - rollup: 3.23.1 - slash: 3.0.0 + rollup: 3.28.1 + slash: 4.0.0 dev: true - /@rollup/plugin-json@4.1.0(rollup@3.23.1): - resolution: {integrity: sha512-yfLbTdNS6amI/2OpmbiBoW12vngr5NW2jCJVZSBEz+H5KfUJZ2M7sDjk0U6GOOdCWFVScShte29o9NezJ53TPw==} + /@rollup/plugin-json@6.0.0(rollup@3.28.1): + resolution: {integrity: sha512-i/4C5Jrdr1XUarRhVu27EEwjt4GObltD7c+MkCIpO2QIbojw8MUs+CCTqOphQi3Qtg1FLmYt+l+6YeoIf51J7w==} + engines: {node: '>=14.0.0'} peerDependencies: - rollup: ^1.20.0 || ^2.0.0 + rollup: ^1.20.0||^2.0.0||^3.0.0 + peerDependenciesMeta: + rollup: + optional: true dependencies: - '@rollup/pluginutils': 3.1.0(rollup@3.23.1) - rollup: 3.23.1 + '@rollup/pluginutils': 5.0.4(rollup@3.28.1) + rollup: 3.28.1 dev: true - /@rollup/pluginutils@3.1.0(rollup@3.23.1): - resolution: {integrity: sha512-GksZ6pr6TpIjHm8h9lSQ8pi8BE9VeubNT0OMJ3B5uZJ8pz73NPiqOtCog/x2/QzM1ENChPKxMDhiQuRHsqc+lg==} - engines: {node: '>= 8.0.0'} + /@rollup/pluginutils@5.0.4(rollup@3.28.1): + resolution: {integrity: sha512-0KJnIoRI8A+a1dqOYLxH8vBf8bphDmty5QvIm2hqm7oFCFYKCAZWWd2hXgMibaPsNDhI0AtpYfQZJG47pt/k4g==} + engines: {node: '>=14.0.0'} peerDependencies: - rollup: ^1.20.0||^2.0.0 - dependencies: - '@types/estree': 0.0.39 - estree-walker: 1.0.1 - picomatch: 2.3.1 - rollup: 3.23.1 - dev: true - - /@rollup/pluginutils@4.2.1: - resolution: {integrity: sha512-iKnFXr7NkdZAIHiIWE+BX5ULi/ucVFYWD6TbAV+rZctiRTY2PL6tsIKhoIOaoskiWAkgu+VsbXgUVDNLHf+InQ==} - engines: {node: '>= 8.0.0'} + rollup: ^1.20.0||^2.0.0||^3.0.0 + peerDependenciesMeta: + rollup: + optional: true dependencies: + '@types/estree': 1.0.1 estree-walker: 2.0.2 picomatch: 2.3.1 + rollup: 3.28.1 dev: true - /@rometools/cli-darwin-arm64@12.1.3: - resolution: {integrity: sha512-AmFTUDYjBuEGQp/Wwps+2cqUr+qhR7gyXAUnkL5psCuNCz3807TrUq/ecOoct5MIavGJTH6R4aaSL6+f+VlBEg==} - cpu: [arm64] - os: [darwin] - requiresBuild: true - dev: true - optional: true - - /@rometools/cli-darwin-x64@12.1.3: - resolution: {integrity: sha512-k8MbWna8q4LRlb005N2X+JS1UQ+s3ZLBBvwk4fP8TBxlAJXUz17jLLu/Fi+7DTTEmMhM84TWj4FDKW+rNar28g==} - cpu: [x64] - os: [darwin] - requiresBuild: true - dev: true - optional: true - - /@rometools/cli-linux-arm64@12.1.3: - resolution: {integrity: sha512-X/uLhJ2/FNA3nu5TiyeNPqiD3OZoFfNfRvw6a3ut0jEREPvEn72NI7WPijH/gxSz55znfQ7UQ6iM4DZumUknJg==} - cpu: [arm64] - os: [linux] - requiresBuild: true - dev: true - optional: true - - /@rometools/cli-linux-x64@12.1.3: - resolution: {integrity: sha512-csP17q1eWiUXx9z6Jr/JJPibkplyKIwiWPYNzvPCGE8pHlKhwZj3YHRuu7Dm/4EOqx0XFIuqqWZUYm9bkIC8xg==} - cpu: [x64] - os: [linux] - requiresBuild: true - dev: true - optional: true - - /@rometools/cli-win32-arm64@12.1.3: - resolution: {integrity: sha512-RymHWeod57EBOJY4P636CgUwYA6BQdkQjh56XKk4pLEHO6X1bFyMet2XL7KlHw5qOTalzuzf5jJqUs+vf3jdXQ==} - cpu: [arm64] - os: [win32] - requiresBuild: true - dev: true - optional: true - - /@rometools/cli-win32-x64@12.1.3: - resolution: {integrity: sha512-yHSKYidqJMV9nADqg78GYA+cZ0hS1twANAjiFibQdXj9aGzD+s/IzIFEIi/U/OBLvWYg/SCw0QVozi2vTlKFDQ==} - cpu: [x64] - os: [win32] - requiresBuild: true - dev: true - optional: true - - /@rushstack/node-core-library@3.59.4(@types/node@20.3.1): - resolution: {integrity: sha512-YAKJDC6Mz/KA1D7bvB88WaRX3knt/ZuLzkRu5G9QADGSjLtvTWzCNCytRF2PCSaaHOZaZsWul4F1KQdgFgUDqA==} + /@rushstack/node-core-library@3.60.0(@types/node@20.3.1): + resolution: {integrity: sha512-PcyrqhILvzU+65wMFybQ2VeGNnU5JzhDq2OvUi3j6jPUxyllM7b2hrRUwCuVaYboewYzIbpzXFzgxe2K7ii1nw==} peerDependencies: '@types/node': '*' peerDependenciesMeta: @@ -2894,20 +3196,20 @@ packages: fs-extra: 7.0.1 import-lazy: 4.0.0 jju: 1.4.0 - resolve: 1.22.2 - semver: 7.3.8 + resolve: 1.22.6 + semver: 7.5.4 z-schema: 5.0.5 dev: true - /@rushstack/rig-package@0.4.0: - resolution: {integrity: sha512-FnM1TQLJYwSiurP6aYSnansprK5l8WUK8VG38CmAaZs29ZeL1msjK0AP1VS4ejD33G0kE/2cpsPsS9jDenBMxw==} + /@rushstack/rig-package@0.5.0: + resolution: {integrity: sha512-bGnOW4DWHOePDiABKy6qyqYJl9i7fKn4bRucExRVt5QzyPxuVHMl8CMmCabtoNSpXzgG3qymWOrMoa/W2PpJrw==} dependencies: - resolve: 1.22.2 + resolve: 1.22.6 strip-json-comments: 3.1.1 dev: true - /@rushstack/ts-command-line@4.15.1: - resolution: {integrity: sha512-EL4jxZe5fhb1uVL/P/wQO+Z8Rc8FMiWJ1G7VgnPDvdIt5GVjRfK7vwzder1CZQiX3x0PY6uxENYLNGTFd1InRQ==} + /@rushstack/ts-command-line@4.16.0: + resolution: {integrity: sha512-WJKhdR9ThK9Iy7t78O3at7I3X4Ssp5RRZay/IQa8NywqkFy/DQbT3iLouodMMdUwLZD9n8n++xLubVd3dkmpkg==} dependencies: '@types/argparse': 1.0.38 argparse: 1.0.10 @@ -2929,10 +3231,6 @@ packages: resolution: {integrity: sha512-RNiOoTPkptFtSVzQevY/yWtZwf/RxyVnPy/OcA9HBM3MlGDnBEYL5B41H0MTn0Uec8Hi+2qUtTfG2WWZBmMejQ==} dev: true - /@sinclair/typebox@0.25.24: - resolution: {integrity: sha512-XJfwUVUKDHF5ugKwIcxEgc9k8b7HbznCp6eUfWgu710hMPNIO4aw4/zB5RogDQz8nd6gyCDpU9O/m6qYEWY6yQ==} - dev: true - /@sinclair/typebox@0.27.8: resolution: {integrity: sha512-+Fj43pSMwJs4KRrH/938Uf+uAELIgVBmQzg/q1YG10djyfA3TnrU8N8XzqCh/okZdszqBQTZf96idMfE5lnwTA==} dev: true @@ -2941,8 +3239,8 @@ packages: resolution: {integrity: sha512-t09vSN3MdfsyCHoFcTRCH/iUtG7OJ0CsjzB8cjAmKc/va/kIgeDI/TxsigdncE/4be734m0cvIYwNaV4i2XqAw==} engines: {node: '>=10'} - /@sindresorhus/is@5.4.1: - resolution: {integrity: sha512-axlrvsHlHlFmKKMEg4VyvMzFr93JWJj4eIfXY1STVuO2fsImCa7ncaiG5gC8HKOX590AW5RtRsC41/B+OfrSqw==} + /@sindresorhus/is@5.6.0: + resolution: {integrity: sha512-TV7t8GKYaJWsn00tFDqBw8+Uqmr8A0fRU1tvTQhyZzGv0sJCGRQL3JGMI3ucuKo3XIZdUP+Lx7/gh2t3lewy7g==} engines: {node: '>=14.16'} dev: false @@ -2979,23 +3277,23 @@ packages: resolution: {integrity: sha512-Uy0+khmZqUrUGm5dmMqVlnvufZRSK0FbYzVgp0UMstm+F5+W2/jnEEQyc9vo1ZR/E5ZI/B1WjjoTqBqwJL6Krw==} dev: false - /@swc/cli@0.1.62(@swc/core@1.3.62)(chokidar@3.3.1): + /@swc/cli@0.1.62(@swc/core@1.3.82)(chokidar@3.5.3): resolution: {integrity: sha512-kOFLjKY3XH1DWLfXL1/B5MizeNorHR8wHKEi92S/Zi9Md/AK17KSqR8MgyRJ6C1fhKHvbBCl8wboyKAFXStkYw==} engines: {node: '>= 12.13'} hasBin: true peerDependencies: '@swc/core': ^1.2.66 - chokidar: ^3.5.1 + chokidar: ^3.3.1 peerDependenciesMeta: chokidar: optional: true dependencies: '@mole-inc/bin-wrapper': 8.0.1 - '@swc/core': 1.3.62 - chokidar: 3.3.1 + '@swc/core': 1.3.82 + chokidar: 3.5.3 commander: 7.2.0 - fast-glob: 3.2.12 - semver: 7.5.1 + fast-glob: 3.3.1 + semver: 7.5.4 slash: 3.0.0 source-map: 0.7.4 dev: true @@ -3005,92 +3303,91 @@ packages: engines: {node: '>=10'} cpu: [arm64] os: [android] - requiresBuild: true dependencies: '@swc/wasm': 1.2.130 - /@swc/core-darwin-arm64@1.3.62: - resolution: {integrity: sha512-MmGilibITz68LEje6vJlKzc2gUUSgzvB3wGLSjEORikTNeM7P8jXVxE4A8fgZqDeudJUm9HVWrxCV+pHDSwXhA==} + /@swc/core-darwin-arm64@1.3.82: + resolution: {integrity: sha512-JfsyDW34gVKD3uE0OUpUqYvAD3yseEaicnFP6pB292THtLJb0IKBBnK50vV/RzEJtc1bR3g1kNfxo2PeurZTrA==} engines: {node: '>=10'} cpu: [arm64] os: [darwin] requiresBuild: true optional: true - /@swc/core-darwin-x64@1.3.62: - resolution: {integrity: sha512-Xl93MMB3sCWVlYWuQIB+v6EQgzoiuQYK5tNt9lsHoIEVu2zLdkQjae+5FUHZb1VYqCXIiWcULFfVz0R4Sjb7JQ==} + /@swc/core-darwin-x64@1.3.82: + resolution: {integrity: sha512-ogQWgNMq7qTpITjcP3dnzkFNj7bh6SwMr859GvtOTrE75H7L7jDWxESfH4f8foB/LGxBKiDNmxKhitCuAsZK4A==} engines: {node: '>=10'} cpu: [x64] os: [darwin] requiresBuild: true optional: true - /@swc/core-linux-arm-gnueabihf@1.3.62: - resolution: {integrity: sha512-nJsp6O7kCtAjTTMcIjVB0g5y1JNiYAa5q630eiwrnaHUusEFoANDdORI3Z9vXeikMkng+6yIv9/V8Rb093xLjQ==} + /@swc/core-linux-arm-gnueabihf@1.3.82: + resolution: {integrity: sha512-7TMXG1lXlNhD0kUiEqs+YlGV4irAdBa2quuy+XI3oJf2fBK6dQfEq4xBy65B3khrorzQS3O0oDGQ+cmdpHExHA==} engines: {node: '>=10'} cpu: [arm] os: [linux] requiresBuild: true optional: true - /@swc/core-linux-arm64-gnu@1.3.62: - resolution: {integrity: sha512-XGsV93vpUAopDt5y6vPwbK1Nc/MlL55L77bAZUPIiosWD1cWWPHNtNSpriE6+I+JiMHe0pqtfS/SSTk6ZkFQVw==} + /@swc/core-linux-arm64-gnu@1.3.82: + resolution: {integrity: sha512-26JkOujbzcItPAmIbD5vHJxQVy5ihcSu3YHTKwope1h28sApZdtE7S3e2G3gsZRTIdsCQkXUtAQeqHxGWWR3pw==} engines: {node: '>=10'} cpu: [arm64] os: [linux] requiresBuild: true optional: true - /@swc/core-linux-arm64-musl@1.3.62: - resolution: {integrity: sha512-ESUmJjSlTTkoBy9dMG49opcNn8BmviqStMhwyeD1G8XRnmRVCZZgoBOKdvCXmJhw8bQXDhZumeaTUB+OFUKVXg==} + /@swc/core-linux-arm64-musl@1.3.82: + resolution: {integrity: sha512-8Izj9tuuMpoc3cqiPBRtwqpO1BZ/+sfZVsEhLxrbOFlcSb8LnKyMle1g3JMMUwI4EU75RGVIzZMn8A6GOKdJbA==} engines: {node: '>=10'} cpu: [arm64] os: [linux] requiresBuild: true optional: true - /@swc/core-linux-x64-gnu@1.3.62: - resolution: {integrity: sha512-wnHJkt3ZBrax3SFnUHDcncG6mrSg9ZZjMhQV9Mc3JL1x1s1Gy9rGZCoBNnV/BUZWTemxIBcQbANRSDut/WO+9A==} + /@swc/core-linux-x64-gnu@1.3.82: + resolution: {integrity: sha512-0GSrIBScQwTaPv46T2qB7XnDYxndRCpwH4HMjh6FN+I+lfPUhTSJKW8AonqrqT1TbpFIgvzQs7EnTsD7AnSCow==} engines: {node: '>=10'} cpu: [x64] os: [linux] requiresBuild: true optional: true - /@swc/core-linux-x64-musl@1.3.62: - resolution: {integrity: sha512-9oRbuTC/VshB66Rgwi3pTq3sPxSTIb8k9L1vJjES+dDMKa29DAjPtWCXG/pyZ00ufpFZgkGEuAHH5uqUcr1JQg==} + /@swc/core-linux-x64-musl@1.3.82: + resolution: {integrity: sha512-KJUnaaepDKNzrEbwz4jv0iC3/t9x0NSoe06fnkAlhh2+NFKWKKJhVCOBTrpds8n7eylBDIXUlK34XQafjVMUdg==} engines: {node: '>=10'} cpu: [x64] os: [linux] requiresBuild: true optional: true - /@swc/core-win32-arm64-msvc@1.3.62: - resolution: {integrity: sha512-zv14vlF2VRrxS061XkfzGjCYnOrEo5glKJjLK5PwUKysIoVrx/L8nAbFxjkX5cObdlyoqo+ekelyBPAO+4bS0w==} + /@swc/core-win32-arm64-msvc@1.3.82: + resolution: {integrity: sha512-TR3MHKhDYIyGyFcyl2d/p1ftceXcubAhX5wRSOdtOyr5+K/v3jbyCCqN7bbqO5o43wQVCwwR/drHleYyDZvg8Q==} engines: {node: '>=10'} cpu: [arm64] os: [win32] requiresBuild: true optional: true - /@swc/core-win32-ia32-msvc@1.3.62: - resolution: {integrity: sha512-8MC/PZQSsOP2iA/81tAfNRqMWyEqTS/8zKUI67vPuLvpx6NAjRn3E9qBv7iFqH79iqZNzqSMo3awnLrKZyFbcw==} + /@swc/core-win32-ia32-msvc@1.3.82: + resolution: {integrity: sha512-ZX4HzVVt6hs84YUg70UvyBJnBOIspmQQM0iXSzBvOikk3zRoN7BnDwQH4GScvevCEBuou60+i4I6d5kHLOfh8Q==} engines: {node: '>=10'} cpu: [ia32] os: [win32] requiresBuild: true optional: true - /@swc/core-win32-x64-msvc@1.3.62: - resolution: {integrity: sha512-GJSmUJ95HKHZXAxiuPUmrcm/S3ivQvEzXhOZaIqYBIwUsm02vFZkClsV7eIKzWjso1t0+I/8MjrnUNaSWqh1rQ==} + /@swc/core-win32-x64-msvc@1.3.82: + resolution: {integrity: sha512-4mJMnex21kbQoaHeAmHnVwQN9/XAfPszJ6n9HI7SVH+aAHnbBIR0M59/b50/CJMjTj5niUGk7EwQ3nhVNOG32g==} engines: {node: '>=10'} cpu: [x64] os: [win32] requiresBuild: true optional: true - /@swc/core@1.3.62: - resolution: {integrity: sha512-J58hWY+/G8vOr4J6ZH9hLg0lMSijZtqIIf4HofZezGog/pVX6sJyBJ40dZ1ploFkDIlWTWvJyqtpesBKS73gkQ==} + /@swc/core@1.3.82: + resolution: {integrity: sha512-jpC1a18HMH67018Ij2jh+hT7JBFu7ZKcQVfrZ8K6JuEY+kjXmbea07P9MbQUZbAe0FB+xi3CqEVCP73MebodJQ==} engines: {node: '>=10'} requiresBuild: true peerDependencies: @@ -3098,21 +3395,25 @@ packages: peerDependenciesMeta: '@swc/helpers': optional: true + dependencies: + '@swc/types': 0.1.4 optionalDependencies: - '@swc/core-darwin-arm64': 1.3.62 - '@swc/core-darwin-x64': 1.3.62 - '@swc/core-linux-arm-gnueabihf': 1.3.62 - '@swc/core-linux-arm64-gnu': 1.3.62 - '@swc/core-linux-arm64-musl': 1.3.62 - '@swc/core-linux-x64-gnu': 1.3.62 - '@swc/core-linux-x64-musl': 1.3.62 - '@swc/core-win32-arm64-msvc': 1.3.62 - '@swc/core-win32-ia32-msvc': 1.3.62 - '@swc/core-win32-x64-msvc': 1.3.62 + '@swc/core-darwin-arm64': 1.3.82 + '@swc/core-darwin-x64': 1.3.82 + '@swc/core-linux-arm-gnueabihf': 1.3.82 + '@swc/core-linux-arm64-gnu': 1.3.82 + '@swc/core-linux-arm64-musl': 1.3.82 + '@swc/core-linux-x64-gnu': 1.3.82 + '@swc/core-linux-x64-musl': 1.3.82 + '@swc/core-win32-arm64-msvc': 1.3.82 + '@swc/core-win32-ia32-msvc': 1.3.82 + '@swc/core-win32-x64-msvc': 1.3.82 + + /@swc/types@0.1.4: + resolution: {integrity: sha512-z/G02d+59gyyUb7KYhKi9jOhicek6QD2oMaotUyG+lUkybpXoV49dY9bj7Ah5Q+y7knK2jU67UTX9FyfGzaxQg==} /@swc/wasm@1.2.130: resolution: {integrity: sha512-rNcJsBxS70+pv8YUWwf5fRlWX6JoY/HJc25HD/F8m6Kv7XhJdqPPMhyX6TKkUBPAG7TWlZYoxa+rHAjPy4Cj3Q==} - requiresBuild: true /@syuilo/aiscript@0.11.1: resolution: {integrity: sha512-chwOIA3yLUKvOB0G611hjLArKTeOWNmTm3lHERSaDW1d+dS6do56naX6Lkwy2UpnwWC0qzeNSgg35elk6t2gZg==} @@ -3139,6 +3440,7 @@ packages: /@tensorflow/tfjs-backend-cpu@3.21.0(@tensorflow/tfjs-core@3.21.0): resolution: {integrity: sha512-88S21UAdzyK0CsLUrH17GPTD+26E85OP9CqmLZslaWjWUmBkeTQ5Zqyp6iK+gELnLxPx6q7JsNEeFuPv4254lQ==} engines: {yarn: '>= 1.3.2'} + requiresBuild: true peerDependencies: '@tensorflow/tfjs-core': 3.21.0 dependencies: @@ -3146,14 +3448,15 @@ packages: '@types/seedrandom': 2.4.30 seedrandom: 3.0.5 dev: false + optional: true - /@tensorflow/tfjs-backend-cpu@4.2.0(@tensorflow/tfjs-core@4.2.0): - resolution: {integrity: sha512-8HWg9J69m0Ovc6w8TVhhixMOcwA3t/NPXLblOA/sgJ+/JD5gsbpLWJk4QISQyb1RnpSVzw6PX3BSMTJU7hWVOg==} + /@tensorflow/tfjs-backend-cpu@4.11.0(@tensorflow/tfjs-core@4.11.0): + resolution: {integrity: sha512-2zmGX9MuR8AwscSGOybz4fBOFgQDnj+ZCWGkLxDzbKecy9GxuilukT46xB2zU0kSq7Mf3ncfE/9eUEy6a7ZDqQ==} engines: {yarn: '>= 1.3.2'} peerDependencies: - '@tensorflow/tfjs-core': 4.2.0 + '@tensorflow/tfjs-core': 4.11.0 dependencies: - '@tensorflow/tfjs-core': 4.2.0 + '@tensorflow/tfjs-core': 4.11.0 '@types/seedrandom': 2.4.30 seedrandom: 3.0.5 dev: false @@ -3161,6 +3464,7 @@ packages: /@tensorflow/tfjs-backend-webgl@3.21.0(@tensorflow/tfjs-core@3.21.0): resolution: {integrity: sha512-N4zitIAT9IX8B8oe489qM3f3VcESxGZIZvHmVP8varOQakTvTX859aaPo1s8hK1qCy4BjSGbweooZe4U8D4kTQ==} engines: {yarn: '>= 1.3.2'} + requiresBuild: true peerDependencies: '@tensorflow/tfjs-core': 3.21.0 dependencies: @@ -3172,40 +3476,43 @@ packages: '@types/webgl2': 0.0.6 seedrandom: 3.0.5 dev: false + optional: true - /@tensorflow/tfjs-backend-webgl@4.2.0(@tensorflow/tfjs-core@4.2.0): - resolution: {integrity: sha512-Qvf+hD5pSh+xi48kChSGzcDKJemkc4EKfoVVjuxl4k25ZUPwuEd7zZUAtinkLu1dzgHNyvePZY8k+9rVm59HJA==} + /@tensorflow/tfjs-backend-webgl@4.11.0(@tensorflow/tfjs-core@4.11.0): + resolution: {integrity: sha512-sM/B65u+1T3U+Ctiq1fn5j6VmiLEZW7BpuSa3ZXDXtIS07MoZ2FTuO8BMudxEY4xGpTyoOzqTOGT9BaGO3qrWg==} engines: {yarn: '>= 1.3.2'} peerDependencies: - '@tensorflow/tfjs-core': 4.2.0 + '@tensorflow/tfjs-core': 4.11.0 dependencies: - '@tensorflow/tfjs-backend-cpu': 4.2.0(@tensorflow/tfjs-core@4.2.0) - '@tensorflow/tfjs-core': 4.2.0 + '@tensorflow/tfjs-backend-cpu': 4.11.0(@tensorflow/tfjs-core@4.11.0) + '@tensorflow/tfjs-core': 4.11.0 '@types/offscreencanvas': 2019.3.0 '@types/seedrandom': 2.4.30 - '@types/webgl-ext': 0.0.30 seedrandom: 3.0.5 dev: false /@tensorflow/tfjs-converter@3.21.0(@tensorflow/tfjs-core@3.21.0): resolution: {integrity: sha512-12Y4zVDq3yW+wSjSDpSv4HnpL2sDZrNiGSg8XNiDE4HQBdjdA+a+Q3sZF/8NV9y2yoBhL5L7V4mMLDdbZBd9/Q==} + requiresBuild: true peerDependencies: '@tensorflow/tfjs-core': 3.21.0 dependencies: '@tensorflow/tfjs-core': 3.21.0 dev: false + optional: true - /@tensorflow/tfjs-converter@4.2.0(@tensorflow/tfjs-core@4.2.0): - resolution: {integrity: sha512-m+E2KJM6yGQdi8ElzWpChdD/JaqhWMCi9yK70v/ndkOaCL2q2UN48nYP2T5S15vkDvMIgzAQyZfh7hxQsMuvRQ==} + /@tensorflow/tfjs-converter@4.11.0(@tensorflow/tfjs-core@4.11.0): + resolution: {integrity: sha512-j2JEVwkqh+pyin+sxUiNUG7QOIU2S0+5SzN8LFXHlR90/bPvC2qiaaSPYdGG/BYidFc27QCHD3obBXrb1EE/ow==} peerDependencies: - '@tensorflow/tfjs-core': 4.2.0 + '@tensorflow/tfjs-core': 4.11.0 dependencies: - '@tensorflow/tfjs-core': 4.2.0 + '@tensorflow/tfjs-core': 4.11.0 dev: false /@tensorflow/tfjs-core@3.21.0: resolution: {integrity: sha512-YSfsswOqWfd+M4bXIhT3hwtAb+IV8+ODwIxwdFR/7jTAPZP1wMVnSlpKnXHAN64HFOiP+Tm3HmKusEZ0+09A0w==} engines: {yarn: '>= 1.3.2'} + requiresBuild: true dependencies: '@types/long': 4.0.2 '@types/offscreencanvas': 2019.3.0 @@ -3213,23 +3520,23 @@ packages: '@types/webgl-ext': 0.0.30 '@webgpu/types': 0.1.16 long: 4.0.0 - node-fetch: 2.6.11 + node-fetch: 2.6.13 seedrandom: 3.0.5 transitivePeerDependencies: - encoding dev: false + optional: true - /@tensorflow/tfjs-core@4.2.0: - resolution: {integrity: sha512-uuHkiWVC8b00ngFbHvAV7J7haRlN/9PEdeenCi0CzBjgKd7aN25wPWaoN0TSQcU+GT4FJ8mofMZ9VBYZ/s/WLg==} + /@tensorflow/tfjs-core@4.11.0: + resolution: {integrity: sha512-t0mCNIco8wg6aZdHWT1d6ZuKtbbdY5y871ELWLSUA1+grXDvvaroHYh5eeJexJYXeg+EQ0/hzB0G8nLsLjlyVQ==} engines: {yarn: '>= 1.3.2'} dependencies: '@types/long': 4.0.2 - '@types/offscreencanvas': 2019.7.0 + '@types/offscreencanvas': 2019.7.1 '@types/seedrandom': 2.4.30 - '@types/webgl-ext': 0.0.30 - '@webgpu/types': 0.1.21 + '@webgpu/types': 0.1.30 long: 4.0.0 - node-fetch: 2.6.11 + node-fetch: 2.6.13 seedrandom: 3.0.5 transitivePeerDependencies: - encoding @@ -3237,28 +3544,30 @@ packages: /@tensorflow/tfjs-data@3.21.0(@tensorflow/tfjs-core@3.21.0)(seedrandom@3.0.5): resolution: {integrity: sha512-eFLfw2wIcFNxnP2Iv/SnVlihehzKMumk1b5Prcx1ixk/SbkCo5u0Lt7OVOWaEOKVqvB2sT+dJcTjAh6lrCC/QA==} + requiresBuild: true peerDependencies: '@tensorflow/tfjs-core': 3.21.0 seedrandom: ^3.0.5 dependencies: '@tensorflow/tfjs-core': 3.21.0 - '@types/node-fetch': 2.6.4 - node-fetch: 2.6.11 + '@types/node-fetch': 2.6.5 + node-fetch: 2.6.13 seedrandom: 3.0.5 string_decoder: 1.3.0 transitivePeerDependencies: - encoding dev: false + optional: true - /@tensorflow/tfjs-data@4.2.0(@tensorflow/tfjs-core@4.2.0)(seedrandom@3.0.5): - resolution: {integrity: sha512-11t7Q+ikseduJgkd9iSeRrtor1aA3o5PVCFhC5yYvR3JLO55ic1+4Ryo0EJfhRoismS6zBUJrpzX4K0zlLbIfw==} + /@tensorflow/tfjs-data@4.11.0(@tensorflow/tfjs-core@4.11.0)(seedrandom@3.0.5): + resolution: {integrity: sha512-8E6CVpd7kxRFtVL7kvz6WF5jH18pNN2wEcm2yA87xq37JwcRsIPTkrmfyqCHlJZmiWn3RQbP59Sl05gbBnFo5w==} peerDependencies: - '@tensorflow/tfjs-core': 4.2.0 + '@tensorflow/tfjs-core': 4.11.0 seedrandom: ^3.0.5 dependencies: - '@tensorflow/tfjs-core': 4.2.0 - '@types/node-fetch': 2.6.4 - node-fetch: 2.6.11 + '@tensorflow/tfjs-core': 4.11.0 + '@types/node-fetch': 2.6.5 + node-fetch: 2.6.13 seedrandom: 3.0.5 string_decoder: 1.3.0 transitivePeerDependencies: @@ -3267,18 +3576,20 @@ packages: /@tensorflow/tfjs-layers@3.21.0(@tensorflow/tfjs-core@3.21.0): resolution: {integrity: sha512-CMVXsraakXgnXEnqD9QbtResA7nvV7Jz20pGmjFIodcQkClgmFFhdCG5N+zlVRHEz7VKG2OyfhltZ0dBq/OAhA==} + requiresBuild: true peerDependencies: '@tensorflow/tfjs-core': 3.21.0 dependencies: '@tensorflow/tfjs-core': 3.21.0 dev: false + optional: true - /@tensorflow/tfjs-layers@4.2.0(@tensorflow/tfjs-core@4.2.0): - resolution: {integrity: sha512-SO0KTmCFOjrW+PlP9nKYXz07XGFq6uE7am9yH2bRaRPWpEeaKT/+k0C9vFMxI/GzRwY8AK4sLe4U+jE1mhYxGw==} + /@tensorflow/tfjs-layers@4.11.0(@tensorflow/tfjs-core@4.11.0): + resolution: {integrity: sha512-ErVqwxjpu2YM3uJRj2o5GbBTYViUwnqOb0wKWuCVukVmGeWrUzf1X00Ky3dP4xfilfAvq+B26dg7QN4YNHeaKg==} peerDependencies: - '@tensorflow/tfjs-core': 4.2.0 + '@tensorflow/tfjs-core': 4.11.0 dependencies: - '@tensorflow/tfjs-core': 4.2.0 + '@tensorflow/tfjs-core': 4.11.0 dev: false /@tensorflow/tfjs-node@3.21.1(seedrandom@3.0.5): @@ -3304,6 +3615,7 @@ packages: /@tensorflow/tfjs@3.21.0(seedrandom@3.0.5): resolution: {integrity: sha512-khcARd3/872llL/oF4ouR40qlT71mylU66PGT8kHP/GJ5YKj44sv8lDRjU7lOVlJK7jsJFWEsNVHI3eMc/GWNQ==} hasBin: true + requiresBuild: true dependencies: '@tensorflow/tfjs-backend-cpu': 3.21.0(@tensorflow/tfjs-core@3.21.0) '@tensorflow/tfjs-backend-webgl': 3.21.0(@tensorflow/tfjs-core@3.21.0) @@ -3313,27 +3625,28 @@ packages: '@tensorflow/tfjs-layers': 3.21.0(@tensorflow/tfjs-core@3.21.0) argparse: 1.0.10 chalk: 4.1.2 - core-js: 3.31.0 + core-js: 3.32.2 regenerator-runtime: 0.13.11 yargs: 16.2.0 transitivePeerDependencies: - encoding - seedrandom dev: false + optional: true - /@tensorflow/tfjs@4.2.0(seedrandom@3.0.5): - resolution: {integrity: sha512-iZmtyGC9IJkx+TpFnkgDol8BHv2BU3zJ01HyNcuvnm1w1EqoNe+1n8bwvLzI/sxHMcHTqzuu7VugMaphryxE+A==} + /@tensorflow/tfjs@4.11.0(seedrandom@3.0.5): + resolution: {integrity: sha512-s6Vbz3IvMz2zNbH8/VptpRXzkwVjmuzT48esYLXJxMKtTcob4m5Srdxo7B+eJSDrWYkutXruiivaWmihFmu5rA==} hasBin: true dependencies: - '@tensorflow/tfjs-backend-cpu': 4.2.0(@tensorflow/tfjs-core@4.2.0) - '@tensorflow/tfjs-backend-webgl': 4.2.0(@tensorflow/tfjs-core@4.2.0) - '@tensorflow/tfjs-converter': 4.2.0(@tensorflow/tfjs-core@4.2.0) - '@tensorflow/tfjs-core': 4.2.0 - '@tensorflow/tfjs-data': 4.2.0(@tensorflow/tfjs-core@4.2.0)(seedrandom@3.0.5) - '@tensorflow/tfjs-layers': 4.2.0(@tensorflow/tfjs-core@4.2.0) + '@tensorflow/tfjs-backend-cpu': 4.11.0(@tensorflow/tfjs-core@4.11.0) + '@tensorflow/tfjs-backend-webgl': 4.11.0(@tensorflow/tfjs-core@4.11.0) + '@tensorflow/tfjs-converter': 4.11.0(@tensorflow/tfjs-core@4.11.0) + '@tensorflow/tfjs-core': 4.11.0 + '@tensorflow/tfjs-data': 4.11.0(@tensorflow/tfjs-core@4.11.0)(seedrandom@3.0.5) + '@tensorflow/tfjs-layers': 4.11.0(@tensorflow/tfjs-core@4.11.0) argparse: 1.0.10 chalk: 4.1.2 - core-js: 3.31.0 + core-js: 3.29.1 regenerator-runtime: 0.13.11 yargs: 16.2.0 transitivePeerDependencies: @@ -3373,12 +3686,12 @@ packages: /@types/accepts@1.3.5: resolution: {integrity: sha512-jOdnI/3qTpHABjM5cx1Hc0sKsPoYCp+DP/GJRGtDlPd7fiV9oXGGIcjW/ZOxLIvjGz8MA+uMZI9metHlgqbgwQ==} dependencies: - '@types/node': 20.3.1 + '@types/node': 20.5.8 - /@types/adm-zip@0.5.0: - resolution: {integrity: sha512-FCJBJq9ODsQZUNURo5ILAQueuA8WJhRvuihS3ke2iI25mJlfV2LK8jG2Qj2z2AWg8U0FtWWqBHVRetceLskSaw==} + /@types/adm-zip@0.5.1: + resolution: {integrity: sha512-3+psmbh60N5JXM2LMkujFqnjMf3KB0LZoIQO73NJvkv57q+384nK/A7pP0v+ZkB/Zrfqn+5xtAyt5OsY+GiYLQ==} dependencies: - '@types/node': 20.3.1 + '@types/node': 20.5.8 dev: true /@types/argparse@1.0.38: @@ -3389,94 +3702,78 @@ packages: resolution: {integrity: sha512-2+rYSaWrpdbQG3SA0LmMT6YxWLrI81AqpMlSkw3QtFc2HGDufkweQSn30Eiev7x9LL0oyFrBqk1PXOnB9IEgKg==} dev: true - /@types/babel__core@7.20.1: - resolution: {integrity: sha512-aACu/U/omhdk15O4Nfb+fHgH/z3QsfQzpnvRZhYhThms83ZnAOZz7zZAWO7mn2yyNQaA4xTO8GLK3uqFU4bYYw==} + /@types/babel__core@7.20.2: + resolution: {integrity: sha512-pNpr1T1xLUc2l3xJKuPtsEky3ybxN3m4fJkknfIpTCTfIZCDW57oAg+EfCgIIp2rvCe0Wn++/FfodDS4YXxBwA==} dependencies: - '@babel/parser': 7.22.5 - '@babel/types': 7.22.5 - '@types/babel__generator': 7.6.4 - '@types/babel__template': 7.4.1 - '@types/babel__traverse': 7.20.1 + '@babel/parser': 7.22.16 + '@babel/types': 7.22.19 + '@types/babel__generator': 7.6.5 + '@types/babel__template': 7.4.2 + '@types/babel__traverse': 7.20.2 dev: true - /@types/babel__generator@7.6.4: - resolution: {integrity: sha512-tFkciB9j2K755yrTALxD44McOrk+gfpIpvC3sxHjRawj6PfnQxrse4Clq5y/Rq+G3mrBurMax/lG8Qn2t9mSsg==} + /@types/babel__generator@7.6.5: + resolution: {integrity: sha512-h9yIuWbJKdOPLJTbmSpPzkF67e659PbQDba7ifWm5BJ8xTv+sDmS7rFmywkWOvXedGTivCdeGSIIX8WLcRTz8w==} dependencies: - '@babel/types': 7.22.5 + '@babel/types': 7.22.19 dev: true - /@types/babel__template@7.4.1: - resolution: {integrity: sha512-azBFKemX6kMg5Io+/rdGT0dkGreboUVR0Cdm3fz9QJWpaQGJRQXl7C+6hOTCZcMll7KFyEQpgbYI2lHdsS4U7g==} + /@types/babel__template@7.4.2: + resolution: {integrity: sha512-/AVzPICMhMOMYoSx9MoKpGDKdBRsIXMNByh1PXSZoa+v6ZoLa8xxtsT/uLQ/NJm0XVAWl/BvId4MlDeXJaeIZQ==} dependencies: - '@babel/parser': 7.22.5 - '@babel/types': 7.22.5 + '@babel/parser': 7.22.16 + '@babel/types': 7.22.19 dev: true - /@types/babel__traverse@7.20.1: - resolution: {integrity: sha512-MitHFXnhtgwsGZWtT68URpOvLN4EREih1u3QtQiN4VdAxWKRVvGCSvw/Qth0M0Qq3pJpnGOu5JaM/ydK7OGbqg==} + /@types/babel__traverse@7.20.2: + resolution: {integrity: sha512-ojlGK1Hsfce93J0+kn3H5R73elidKUaZonirN33GSmgTUMpzI/MIFfSpF3haANe3G1bEBS9/9/QEqwTzwqFsKw==} dependencies: - '@babel/types': 7.22.5 + '@babel/types': 7.22.19 dev: true /@types/bcryptjs@2.4.2: resolution: {integrity: sha512-LiMQ6EOPob/4yUL66SZzu6Yh77cbzJFYll+ZfaPiPPFswtIlA/Fs1MzdKYA7JApHU49zQTbJGX3PDmCpIdDBRQ==} dev: true - /@types/body-parser@1.19.2: - resolution: {integrity: sha512-ALYone6pm6QmwZoAgeyNksccT9Q4AWZQ6PvfwR37GT6r6FWUPguq6sUmNGSMV2Wr761oQoBxwGGa6DR5o1DC9g==} + /@types/body-parser@1.19.3: + resolution: {integrity: sha512-oyl4jvAfTGX9Bt6Or4H9ni1Z447/tQuxnZsytsCaExKlmJiU8sFgnIBRzJUpKwB5eWn9HuBYlUlVA74q/yN0eQ==} dependencies: - '@types/connect': 3.4.35 - '@types/node': 20.3.1 - - /@types/bull@3.15.9: - resolution: {integrity: sha512-MPUcyPPQauAmynoO3ezHAmCOhbB0pWmYyijr/5ctaCqhbKWsjW0YCod38ZcLzUBprosfZ9dPqfYIcfdKjk7RNQ==} - dependencies: - '@types/ioredis': 5.0.0 - '@types/redis': 2.8.32 - transitivePeerDependencies: - - supports-color - dev: true + '@types/connect': 3.4.36 + '@types/node': 20.5.8 /@types/cacheable-request@6.0.3: resolution: {integrity: sha512-IQ3EbTzGxIigb1I3qPZc1rWJnH0BmSKv5QYTalEwweFvyBDLSAe24zP0le/hyi7ecGfZVlIVAg4BZqb8WBwKqw==} dependencies: - '@types/http-cache-semantics': 4.0.1 + '@types/http-cache-semantics': 4.0.2 '@types/keyv': 3.1.4 - '@types/node': 20.3.1 + '@types/node': 20.5.8 '@types/responselike': 1.0.0 - /@types/cbor@6.0.0: - resolution: {integrity: sha512-mGQ1lbYOwVti5Xlarn1bTeBZqgY0kstsdjnkoEovgohYKdBjGejHyNGXHdMBeqyQazIv32Jjp33+5pBEaSRy2w==} - deprecated: This is a stub types definition. cbor provides its own type definitions, so you do not need this installed. + /@types/co-body@6.1.1: + resolution: {integrity: sha512-I9A1k7o4m8m6YPYJIGb1JyNTLqRWtSPg1JOZPWlE19w8Su2VRgRVp/SkKftQSwoxWHGUxGbON4jltONMumC8bQ==} dependencies: - cbor: 8.1.0 - dev: true - - /@types/co-body@6.1.0: - resolution: {integrity: sha512-3e0q2jyDAnx/DSZi0z2H0yoZ2wt5yRDZ+P7ymcMObvq0ufWRT4tsajyO+Q1VwVWiv9PRR4W3YEjEzBjeZlhF+w==} - dependencies: - '@types/node': 20.3.1 + '@types/node': 20.5.8 '@types/qs': 6.9.7 dev: false - /@types/connect@3.4.35: - resolution: {integrity: sha512-cdeYyv4KWoEgpBISTxWvqYsVy444DOqehiF3fM3ne10AmJ62RSyNkUnxMJXHQWRQQX2eR94m5y1IZyDwBjV9FQ==} + /@types/connect@3.4.36: + resolution: {integrity: sha512-P63Zd/JUGq+PdrM1lv0Wv5SBYeA2+CORvbrXbngriYY0jzLUWfQMQQxOhjONEz/wlHOAxOdY7CY65rgQdTjq2w==} dependencies: - '@types/node': 20.3.1 + '@types/node': 20.5.8 - /@types/content-disposition@0.5.5: - resolution: {integrity: sha512-v6LCdKfK6BwcqMo+wYW05rLS12S0ZO0Fl4w1h4aaZMD7bqT3gVUns6FvLJKGZHQmYn3SX55JWGpziwJRwVgutA==} + /@types/content-disposition@0.5.6: + resolution: {integrity: sha512-GmShTb4qA9+HMPPaV2+Up8tJafgi38geFi7vL4qAM7k8BwjoelgHZqEUKJZLvughUw22h6vD/wvwN4IUCaWpDA==} - /@types/cookies@0.7.7: - resolution: {integrity: sha512-h7BcvPUogWbKCzBR2lY4oqaZbO3jXZksexYJVFvkrFeLgbZjQkU4x8pRq6eg2MHXQhY0McQdqmmsxRWlVAHooA==} + /@types/cookies@0.7.8: + resolution: {integrity: sha512-y6KhF1GtsLERUpqOV+qZJrjUGzc0GE6UTa0b5Z/LZ7Nm2mKSdCXmS6Kdnl7fctPNnMSouHjxqEWI12/YqQfk5w==} dependencies: - '@types/connect': 3.4.35 + '@types/connect': 3.4.36 '@types/express': 4.17.17 - '@types/keygrip': 1.0.2 - '@types/node': 20.3.1 + '@types/keygrip': 1.0.3 + '@types/node': 20.5.8 - /@types/core-js@2.5.0: - resolution: {integrity: sha512-qjkHL3wF0JMHMqgm/kmL8Pf8rIiqvueEiZ0g6NVTcBX1WN46GWDr+V5z+gsHUeL0n8TfAmXnYmF7ajsxmBp4PQ==} + /@types/core-js@2.5.6: + resolution: {integrity: sha512-zLzoC7avO4EYUUYCSzDaahSP1QJEpZQcPxqs91mPeFdh2NS4hQBcnRoEc9RuXfJ8cdN/KXUWukMmZGcKaWeOvw==} dev: true /@types/disposable-email-domains@1.0.4: @@ -3490,7 +3787,7 @@ packages: /@types/eslint-scope@3.7.4: resolution: {integrity: sha512-9K4zoImiZc3HlIp6AVUDE4CWYx22a+lhSZMYNpbjW04+YF0KWj4pJXnEMjdnFTiQibFFmElcsasJXDbdI/EPhA==} dependencies: - '@types/eslint': 8.40.2 + '@types/eslint': 8.44.2 '@types/estree': 1.0.1 dev: true @@ -3498,18 +3795,14 @@ packages: resolution: {integrity: sha512-VNcvioYDH8/FxaeTKkM4/TiTwt6pBV9E3OfGmvaw8tPl0rrHCJ4Ll15HRT+pMiFAf/MLQvAzC+6RzUMEL9Ceng==} dependencies: '@types/estree': 1.0.1 - '@types/json-schema': 7.0.12 + '@types/json-schema': 7.0.13 dev: true - /@types/eslint@8.40.2: - resolution: {integrity: sha512-PRVjQ4Eh9z9pmmtaq8nTjZjQwKFk7YIHIud3lRoKRBgUQjgjRmoGxxGEPXQkF+lH7QkHJRNr5F4aBgYCW0lqpQ==} + /@types/eslint@8.44.2: + resolution: {integrity: sha512-sdPRb9K6iL5XZOmBubg8yiFp5yS/JdUDQsq5e6h95km91MCYMuvp7mh1fjPEYUhvHepKpZOjnEaMBR4PxjWDzg==} dependencies: '@types/estree': 1.0.1 - '@types/json-schema': 7.0.12 - dev: true - - /@types/estree@0.0.39: - resolution: {integrity: sha512-EYNwp3bU+98cpU4lAWYYL7Zz+2gryWH1qbdDTidVd6hkiR6weksdbMadyXKXNPEkQFhXM+hVO9ZygomHXp+AIw==} + '@types/json-schema': 7.0.13 dev: true /@types/estree@1.0.1: @@ -3520,10 +3813,10 @@ packages: resolution: {integrity: sha512-Q5Vn3yjTDyCMV50TB6VRIbQNxSE4OmZR86VSbGaNpfUolm0iePBB4KdEEHmxoY5sT2+2DIvXW0rvMDP2nHZ4Mg==} dev: true - /@types/express-serve-static-core@4.17.35: - resolution: {integrity: sha512-wALWQwrgiB2AWTT91CB62b6Yt0sNHpznUXeZEcnPU3DRdlDIz74x8Qg1UUYKSVFi+va5vKOLYRBI1bRKiLLKIg==} + /@types/express-serve-static-core@4.17.36: + resolution: {integrity: sha512-zbivROJ0ZqLAtMzgzIUC4oNqDG9iF0lSsAqpOD9kbs5xcIM3dTiyuHvBc7R8MtWBp3AAWGaovJa+wzWPjLYW7Q==} dependencies: - '@types/node': 20.3.1 + '@types/node': 20.5.8 '@types/qs': 6.9.7 '@types/range-parser': 1.2.4 '@types/send': 0.17.1 @@ -3531,15 +3824,15 @@ packages: /@types/express@4.17.17: resolution: {integrity: sha512-Q4FmmuLGBG58btUnfS1c1r/NQdlp3DMfGDGig8WhfpA2YRUtEkxAjkZb0yvplJGYdF1fsQ81iMDcH24sSCNC/Q==} dependencies: - '@types/body-parser': 1.19.2 - '@types/express-serve-static-core': 4.17.35 + '@types/body-parser': 1.19.3 + '@types/express-serve-static-core': 4.17.36 '@types/qs': 6.9.7 '@types/serve-static': 1.15.2 - /@types/fluent-ffmpeg@2.1.20: - resolution: {integrity: sha512-B+OvhCdJ3LgEq2PhvWNOiB/EfwnXLElfMCgc4Z1K5zXgSfo9I6uGKwR/lqmNPFQuebNnes7re3gqkV77SyypLg==} + /@types/fluent-ffmpeg@2.1.21: + resolution: {integrity: sha512-+n3dy/Tegt6n+YwGZUiGq6i8Jrnt8+MoyPiW1L6J5EWUl7GSt18a/VyReecfCsvTTNBXNMIKOMHDstiQM8nJLA==} dependencies: - '@types/node': 20.3.1 + '@types/node': 20.5.8 dev: true /@types/form-data@2.5.0: @@ -3552,13 +3845,13 @@ packages: /@types/formidable@2.0.6: resolution: {integrity: sha512-L4HcrA05IgQyNYJj6kItuIkXrInJvsXTPC5B1i64FggWKKqSL+4hgt7asiSNva75AoLQjq29oPxFfU4GAQ6Z2w==} dependencies: - '@types/node': 20.3.1 + '@types/node': 20.5.8 dev: false /@types/glob-stream@8.0.0: resolution: {integrity: sha512-fxTWwdQmX9LWSHD7ZLlv3BHR992mKcVcDnT/2v+l/QZZo7TfDdyasqlSYVzOnMGWhRbrWeWkbj/mgezFjKynhw==} dependencies: - '@types/node': 20.3.1 + '@types/node': 20.5.8 '@types/picomatch': 2.3.0 '@types/streamx': 2.9.1 dev: true @@ -3567,62 +3860,38 @@ packages: resolution: {integrity: sha512-IO+MJPVhoqz+28h1qLAcBEH2+xHMK6MTyHJc7MTnnYb6wsoLR29POVGJ7LycmVXIqyy/4/2ShP5sUwTXuOwb/w==} dependencies: '@types/minimatch': 5.1.2 - '@types/node': 20.3.1 + '@types/node': 20.5.8 dev: true /@types/graceful-fs@4.1.6: resolution: {integrity: sha512-Sig0SNORX9fdW+bQuTEovKj3uHcUL6LQKbCrrqb1X7J6/ReAbhCXRAhc+SMejhLELFj2QcyuxmUooZ4bt5ReSw==} dependencies: - '@types/node': 20.3.1 - dev: true - - /@types/gulp-rename@2.0.1: - resolution: {integrity: sha512-9ZjeS2RHEnmBmTcyi2+oeye3BgCsWhvi4uv3qCnAg8i6plOuRdaeNxjOves0ELysEXYLBl7bCl5fbVs7AZtgTA==} - dependencies: - '@types/node': 20.3.1 - '@types/vinyl': 2.0.7 + '@types/node': 20.5.8 dev: true /@types/gulp-rename@2.0.2: resolution: {integrity: sha512-CQsXqTVtAXqrPd4IbrrlJEEzRkUR3RXsyZbrVoOVqjlchDDmnyRDatAUisjpQjjCg/wjJrSiNg8T1uAbJ/7Qqg==} dependencies: - '@types/node': 20.3.1 + '@types/node': 20.5.8 '@types/vinyl': 2.0.7 dev: true - /@types/gulp@4.0.10: - resolution: {integrity: sha512-spgZHJFqiEJGwqGlf7T/k4nkBpBcLgP7T0EfN6G2vvnhUfvd4uO1h8RwpXOE8x/54DVYUs1XCAtBHkX/R3axAQ==} + /@types/gulp@4.0.13: + resolution: {integrity: sha512-Ms20Q2tZ3MpThZGn4Ag6e7ifz/oQJFxsuiopqz5oHmhE6q2ohnELgafi5K/pKX/4ntlpidS61v/TXAguYsVcaA==} dependencies: - '@types/undertaker': 1.2.8 + '@types/undertaker': 1.2.9 '@types/vinyl-fs': 3.0.2 - chokidar: 3.3.1 - dev: true - - /@types/gulp@4.0.11: - resolution: {integrity: sha512-jy0nfcsjiGqO1prNsYMK/bHkTblIBgG04sL2nxPpnP9MyNicHp1SUblomjOla6JoW1qkR67HjFHqIibpPoShNQ==} - dependencies: - '@types/undertaker': 1.2.8 - '@types/vinyl-fs': 3.0.2 - chokidar: 3.3.1 + chokidar: 3.5.3 dev: true /@types/http-assert@1.5.3: resolution: {integrity: sha512-FyAOrDuQmBi8/or3ns4rwPno7/9tJTijVW6aQQjK02+kOQ8zmoNg2XJtAuQhvQcy1ASJq38wirX5//9J1EqoUA==} - /@types/http-cache-semantics@4.0.1: - resolution: {integrity: sha512-SZs7ekbP8CN0txVG2xVRH6EgKmEm31BOxA07vkFaETzZz1xh+cbt8BcI0slpymvwhx5dlFnQG2rTlPVQn+iRPQ==} + /@types/http-cache-semantics@4.0.2: + resolution: {integrity: sha512-FD+nQWA2zJjh4L9+pFXqWOi0Hs1ryBCfI+985NjluQ1p8EYtoLvjLOKidXBtZ4/IcxDX4o8/E8qDS3540tNliw==} - /@types/http-errors@2.0.1: - resolution: {integrity: sha512-/K3ds8TRAfBvi5vfjuz8y6+GiAYBZ0x4tXv1Av6CWBWn0IlADc+ZX9pMq7oU0fNQPnBwIZl3rmeLp6SBApbxSQ==} - - /@types/ioredis@5.0.0: - resolution: {integrity: sha512-zJbJ3FVE17CNl5KXzdeSPtdltc4tMT3TzC6fxQS0sQngkbFZ6h+0uTafsRqu+eSLIugf6Yb0Ea0SUuRr42Nk9g==} - deprecated: This is a stub types definition. ioredis provides its own type definitions, so you do not need this installed. - dependencies: - ioredis: 5.3.2 - transitivePeerDependencies: - - supports-color - dev: true + /@types/http-errors@2.0.2: + resolution: {integrity: sha512-lPG6KlZs88gef6aD85z3HNkztpj7w2R7HmR3gygjfXCQmsLloWNARFkMuzKiiY8FGdh1XDpgBdrSf4aKDiA7Kg==} /@types/istanbul-lib-coverage@2.0.4: resolution: {integrity: sha512-z/QT1XN4K4KYuslS23k62yDIDLwLFkzxOuMplDtObz0+y7VqJCaO2o+SPwHCvLFZh7xazvvoor2tA/hPz9ee7g==} @@ -3640,106 +3909,98 @@ packages: '@types/istanbul-lib-report': 3.0.0 dev: true - /@types/jest@27.4.0: - resolution: {integrity: sha512-gHl8XuC1RZ8H2j5sHv/JqsaxXkDDM9iDOgu0Wp8sjs4u/snb2PVehyWXJPr+ORA0RPpgw231mnutWI1+0hgjIQ==} + /@types/jest@27.5.2: + resolution: {integrity: sha512-mpT8LJJ4CMeeahobofYWIjFo0xonRS/HfxnVEPMPFSQdGUt1uHCnoPT7Zhb+sjDU2wz0oKV0OLUR0WzrHNgfeA==} dependencies: - jest-diff: 27.5.1 + jest-matcher-utils: 27.5.1 pretty-format: 27.5.1 dev: true - /@types/jest@29.4.0: - resolution: {integrity: sha512-VaywcGQ9tPorCX/Jkkni7RWGFfI11whqzs8dvxF41P17Z+z872thvEvlIbznjPJ02kl1HMX3LmLOonsj2n7HeQ==} + /@types/jest@29.5.5: + resolution: {integrity: sha512-ebylz2hnsWR9mYvmBFbXJXr+33UPc4+ZdxyDXh5w0FlPBTfCVN3wPL+kuOiQt3xvrK419v7XWeAs+AeOksafXg==} dependencies: - expect: 29.6.0 - pretty-format: 29.5.0 + expect: 29.7.0 + pretty-format: 29.7.0 dev: true /@types/js-yaml@4.0.5: resolution: {integrity: sha512-FhpRzf927MNQdRZP0J5DLIdTXhjLYzeUTmLAu69mnVksLH9CJY3IuSeEgbKUki7GQZm0WqDkGzyxju2EZGD2wA==} dev: true - /@types/jsdom@20.0.1: - resolution: {integrity: sha512-d0r18sZPmMQr1eG35u12FZfhIXNrnsPU/g5wvRKCUf/tOGilKKwYMYGqh33BNR6ba+2gkHw1EUiHoN3mn7E5IQ==} - dependencies: - '@types/node': 20.3.1 - '@types/tough-cookie': 4.0.2 - parse5: 7.1.2 - dev: true - - /@types/json-schema@7.0.12: - resolution: {integrity: sha512-Hr5Jfhc9eYOQNPYO5WLDq/n4jqijdHNlDXjuAQkkt+mWdQR+XJToOHrsD4cPaMXpn6KO7y2+wM8AZEs8VpBLVA==} + /@types/json-schema@7.0.13: + resolution: {integrity: sha512-RbSSoHliUbnXj3ny0CNFOoxrIDV6SUGyStHsvDqosw6CkdPV8TtWGlfecuK4ToyMEAql6pzNxgCFKanovUzlgQ==} dev: true /@types/json5@0.0.29: resolution: {integrity: sha512-dRLjCWHYg4oaA77cxO64oO+7JwCwnIzkZPdrrC71jQmQtlhM556pwKo5bUzqvZndkVbeFLIIi+9TC40JNF5hNQ==} dev: true - /@types/jsonld@1.5.8: - resolution: {integrity: sha512-4l5t/jDnJpqZ+i7CLTTgPcT5BYXnAnwJupb07aAokPufCV0SjDHcwctUkSTuhIuSU9yHok+WOOngIGCtpL96gw==} + /@types/jsonld@1.5.9: + resolution: {integrity: sha512-K76ImkErPYL2wGPZpNFSKp6wE+h/APecZLJrU7UfDaGqt/f+D9Rrg1aR7VdRrQ6k5DUNRZ2vn9yACwmpOr9QcA==} dev: true - /@types/jsrsasign@10.5.4: - resolution: {integrity: sha512-05S2f4lGaWgCwFHsa3OEirc4VJf/sJRfhofzxUbuFbmm6NbffPXZrnJqquQAtS3g4C8Z0L9NHgW0znmtDxNoTQ==} + /@types/jsrsasign@10.5.8: + resolution: {integrity: sha512-1oZ3TbarAhKtKUpyrCIqXpbx3ZAfoSulleJs6/UzzyYty0ut+kjRX7zHLAaHwVIuw8CBjIymwW4J2LK944HoHQ==} dev: true - /@types/katex@0.16.0: - resolution: {integrity: sha512-hz+S3nV6Mym5xPbT9fnO8dDhBFQguMYpY0Ipxv06JMi1ORgnEM4M1ymWDUhUNer3ElLmT583opRo4RzxKmh9jw==} + /@types/katex@0.16.2: + resolution: {integrity: sha512-dHsSjSlU/EWEEbeNADr3FtZZOAXPkFPUO457QCnoNqcZQXNqNEu/svQd0Nritvd3wNff4vvC/f4e6xgX3Llt8A==} dev: true - /@types/keygrip@1.0.2: - resolution: {integrity: sha512-GJhpTepz2udxGexqos8wgaBx4I/zWIDPh/KOGEwAqtuGDkOUJu5eFvwmdBX4AmB8Odsr+9pHCQqiAqDL/yKMKw==} + /@types/keygrip@1.0.3: + resolution: {integrity: sha512-tfzBBb7OV2PbUfKbG6zRE5UbmtdLVCKT/XT364Z9ny6pXNbd9GnIB6aFYpq2A5lZ6mq9bhXgK6h5MFGNwhMmuQ==} /@types/keyv@3.1.4: resolution: {integrity: sha512-BQ5aZNSCpj7D6K2ksrRCTmKRLEpnPvWDiLPfoGyhZ++8YtiK9d/3DBKPJgry359X/P1PfruyYwvnvwFjuEiEIg==} dependencies: - '@types/node': 20.3.1 + '@types/node': 20.5.8 /@types/koa-bodyparser@4.3.10: resolution: {integrity: sha512-6ae05pjhmrmGhUR8GYD5qr5p9LTEMEGfGXCsK8VaSL+totwigm8+H/7MHW7K4854CMeuwRAubT8qcc/EagaeIA==} dependencies: - '@types/koa': 2.13.5 + '@types/koa': 2.13.8 dev: true - /@types/koa-compose@3.2.5: - resolution: {integrity: sha512-B8nG/OoE1ORZqCkBVsup/AKcvjdgoHnfi4pZMn5UwAPCbhk/96xyv284eBYW8JlQbQ7zDmnpFr68I/40mFoIBQ==} + /@types/koa-compose@3.2.6: + resolution: {integrity: sha512-PHiciWxH3NRyAaxUdEDE1NIZNfvhgtPlsdkjRPazHC6weqt90Jr0uLhIQs+SDwC8HQ/jnA7UQP6xOqGFB7ugWw==} dependencies: - '@types/koa': 2.13.5 + '@types/koa': 2.13.8 /@types/koa-cors@0.0.2: resolution: {integrity: sha512-uNaDY26HUVO+2C6arK8ZFODs9mBjYprD8mlvkVe2bYdX9wzEeKtycVXPafXpUkePhMh4sffIMkhRDyedokG/QA==} dependencies: - '@types/koa': 2.13.5 + '@types/koa': 2.13.8 dev: true /@types/koa-favicon@2.0.21: resolution: {integrity: sha512-paH1nheVhijx/VduoR/RCD/qTCiX+OI/6fHLi3mZae053Ts+gUBOrKtzl3pMTDbdEBqdLolfLje3PZbb6jW0jQ==} dependencies: - '@types/koa': 2.13.5 + '@types/koa': 2.13.8 dev: true /@types/koa-logger@3.1.2: resolution: {integrity: sha512-sioTA1xlKYiIgryANWPRHBkG3XGbWftw9slWADUPC+qvPIY/yRLSrhvX7zkJwMrntub5dPO0GuAoyGGf0yitfQ==} dependencies: - '@types/koa': 2.13.5 + '@types/koa': 2.13.8 dev: true /@types/koa-mount@4.0.2: resolution: {integrity: sha512-XnuGwV8bzw22nv2WqOs5a8wCHR2VgSnLLLuBQPzNTmhyiAvH0O6c+994rQVbMaBuwQJKefUInkvKoKuk+21uew==} dependencies: - '@types/koa': 2.13.5 + '@types/koa': 2.13.8 dev: true /@types/koa-send@4.1.3: resolution: {integrity: sha512-daaTqPZlgjIJycSTNjKpHYuKhXYP30atFc1pBcy6HHqB9+vcymDgYTguPdx9tO4HMOqNyz6bz/zqpxt5eLR+VA==} dependencies: - '@types/koa': 2.13.5 + '@types/koa': 2.13.8 dev: true - /@types/koa-views@7.0.0(@types/koa@2.13.5)(pug@3.0.2): + /@types/koa-views@7.0.0(@types/koa@2.13.8)(pug@3.0.2): resolution: {integrity: sha512-AB/NB+oFHcLOZJYFv3bG5Af8YbwYCD9/zK0WcKALsbjI/FRKrcXTUTC64RebDrkyOkBm3bpCgpGndhAH/3YQ2Q==} deprecated: This is a stub types definition. koa-views provides its own type definitions, so you do not need this installed. dependencies: - koa-views: 7.0.2(@types/koa@2.13.5)(ejs@3.1.9)(pug@3.0.2) + koa-views: 7.0.2(@types/koa@2.13.8)(ejs@3.1.9)(pug@3.0.2) transitivePeerDependencies: - '@types/koa' - arc-templates @@ -3798,42 +4059,48 @@ packages: - whiskers dev: true - /@types/koa@2.13.5: - resolution: {integrity: sha512-HSUOdzKz3by4fnqagwthW/1w/yJspTgppyyalPVbgZf8jQWvdIXcVW5h2DGtw4zYntOaeRGx49r1hxoPWrD4aA==} + /@types/koa@2.13.8: + resolution: {integrity: sha512-Ugmxmgk/yPRW3ptBTh9VjOLwsKWJuGbymo1uGX0qdaqqL18uJiiG1ZoV0rxCOYSaDGhvEp5Ece02Amx0iwaxQQ==} dependencies: '@types/accepts': 1.3.5 - '@types/content-disposition': 0.5.5 - '@types/cookies': 0.7.7 + '@types/content-disposition': 0.5.6 + '@types/cookies': 0.7.8 '@types/http-assert': 1.5.3 - '@types/http-errors': 2.0.1 - '@types/keygrip': 1.0.2 - '@types/koa-compose': 3.2.5 - '@types/node': 20.3.1 + '@types/http-errors': 2.0.2 + '@types/keygrip': 1.0.3 + '@types/koa-compose': 3.2.6 + '@types/node': 20.5.8 /@types/koa__cors@3.3.0: resolution: {integrity: sha512-FUN8YxcBakIs+walVe3+HcNP+Bxd0SB8BJHBWkglZ5C1XQWljlKcEFDG/dPiCIqwVCUbc5X0nYDlH62uEhdHMA==} dependencies: - '@types/koa': 2.13.5 + '@types/koa': 2.13.8 dev: true /@types/koa__multer@2.0.4: resolution: {integrity: sha512-WRkshXhE5rpYFUbbtAjyMhdOOSdbu1XX+2AQlRNM6AZtgxd0/WXMU4lrP7e9tk5HWVTWbx8DOOsVBmfHjSGJ4w==} dependencies: - '@types/koa': 2.13.5 + '@types/koa': 2.13.8 dev: true /@types/koa__router@8.0.11: resolution: {integrity: sha512-WXgKWpBsbS14kzmzD9LeFapOIa678h7zvUHxDwXwSx4ETKXhXLVUAToX6jZ/U7EihM7qwyD9W/BZvB0MRu7MTQ==} dependencies: - '@types/koa': 2.13.5 + '@types/koa': 2.13.8 dev: true /@types/long@4.0.2: resolution: {integrity: sha512-MqTGEo5bj5t157U6fA/BiDynNkn0YknVdh48CMPkTSpFTVmvao5UQmm7uEF6xBEo7qIMAlY/JSleYaE6VOdpaA==} dev: false - /@types/matter-js@0.18.2: - resolution: {integrity: sha512-W9UC9DOPNBRTUocqqPZmzX3cbHmlZBI9jLn6SuxZz0n5QrPk382Ig3hbBWHqYU8TRUmTCJJhuanXeyMTavF7Mg==} + /@types/matter-js@0.19.0: + resolution: {integrity: sha512-SqgYUc8j68n/R2p8rVgpxTVC6gwCby+93dd5eWqjQdpL3l3JUqxzhbEJH/X0NXv+pmoAeWheH1kPvFIgC904Bw==} + dev: true + + /@types/mdast@3.0.12: + resolution: {integrity: sha512-DT+iNIRNX884cx0/Q1ja7NyUPpZuv0KPyL5rGNxm1WC1OtHstl7n4Jb7nk+xacNShQMbczJjt8uFzznpp6kYBg==} + dependencies: + '@types/unist': 2.0.8 dev: true /@types/mime@1.3.2: @@ -3857,36 +4124,40 @@ packages: /@types/needle@3.2.0: resolution: {integrity: sha512-6XzvzEyJ2ozFNfPajFmqH9JOt0Hp+9TawaYpJT59iIP/zR0U37cfWCRwosyIeEBBZBi021Osq4jGAD3AOju5fg==} dependencies: - '@types/node': 20.3.1 + '@types/node': 20.5.8 dev: true - /@types/node-fetch@2.6.4: - resolution: {integrity: sha512-1ZX9fcN4Rvkvgv4E6PAY5WXUFWFcRWxZa3EW83UjycOB9ljJCedb2CupIP4RZMEwF/M3eTcCihbBRgwtGbg5Rg==} + /@types/node-fetch@2.6.5: + resolution: {integrity: sha512-OZsUlr2nxvkqUFLSaY2ZbA+P1q22q+KrlxWOn/38RX+u5kTkYL2mTujEpzUhGkS+K/QCYp9oagfXG39XOzyySg==} dependencies: - '@types/node': 20.3.1 - form-data: 3.0.1 + '@types/node': 20.5.8 + form-data: 4.0.0 dev: false /@types/node-fetch@3.0.3: resolution: {integrity: sha512-HhggYPH5N+AQe/OmN6fmhKmRRt2XuNJow+R3pQwJxOOF9GuwM7O2mheyGeIrs5MOIeNjDEdgdoyHBOrFeJBR3g==} deprecated: This is a stub types definition. node-fetch provides its own type definitions, so you do not need this installed. dependencies: - node-fetch: 3.3.1 + node-fetch: 3.3.2 dev: true - /@types/node@14.18.52: - resolution: {integrity: sha512-DGhiXKOHSFVVm+PJD+9Y0ObxXLeG6qwc0HoOn+ooQKeNNu+T2mEJCM5UBDUREKAggl9MHYjb5E71PAmx6MbzIg==} + /@types/node@14.18.61: + resolution: {integrity: sha512-1mFT4DqS4/s9tlZbdkwEB/EnSykA9MDeDLIk3FHApGvIMGY//qgstB2gu9GKGESWyW/qiRUO+jhlLJ9bBJ8j+Q==} /@types/node@18.11.18: resolution: {integrity: sha512-DHQpWGjyQKSHj3ebjFI/wRKcqQcdR+MoFBygntYOZytCqNfkd2ZC4ARDJ2DQqhjH5p85Nnd3jhUJIXrszFX/JA==} /@types/node@20.3.1: resolution: {integrity: sha512-EhcH/wvidPy1WeML3TtYFGR83UzjxeWRen9V402T8aUGYsCHOmfoisV3ZSg03gAFIbLq8TnWOJ0f4cALtnSEUg==} + dev: true - /@types/nodemailer@6.4.8: - resolution: {integrity: sha512-oVsJSCkqViCn8/pEu2hfjwVO+Gb3e+eTWjg3PcjeFKRItfKpKwHphQqbYmPQrlMk+op7pNNWPbsJIEthpFN/OQ==} + /@types/node@20.5.8: + resolution: {integrity: sha512-eajsR9aeljqNhK028VG0Wuw+OaY5LLxYmxeoXynIoE6jannr9/Ucd1LL0hSSoafk5LTYG+FfqsyGt81Q6Zkybw==} + + /@types/nodemailer@6.4.9: + resolution: {integrity: sha512-XYG8Gv+sHjaOtUpiuytahMy2mM3rectgroNbs6R3djZEKmPNiIJwe9KqOJBGzKKnNZNKvnuvmugBgpq3w/S0ig==} dependencies: - '@types/node': 20.3.1 + '@types/node': 20.5.8 dev: true /@types/normalize-package-data@2.4.1: @@ -3896,22 +4167,22 @@ packages: /@types/oauth@0.9.1: resolution: {integrity: sha512-a1iY62/a3yhZ7qH7cNUsxoI3U/0Fe9+RnuFrpTKr+0WVOzbKlSLojShCKe20aOD1Sppv+i8Zlq0pLDuTJnwS4A==} dependencies: - '@types/node': 20.3.1 + '@types/node': 20.5.8 - /@types/object-assign-deep@0.4.0: - resolution: {integrity: sha512-3D0F3rHRNDc8cQSXNzwF1jBrJi28Mdrhc10ZLlqbJWDPYRWTTWB9Tc8JoKrgBvLKioXoPoHT6Uzf3s2F7akCUg==} + /@types/object-assign-deep@0.4.1: + resolution: {integrity: sha512-uWJatOM1JKDdF6Fwa16124b76BtxvTz5Lv+ORGuI7dwqU4iqExXpeHrHOi1c8BU4FgSJ6PdH0skR9Zmz8+MUqQ==} dev: true /@types/offscreencanvas@2019.3.0: resolution: {integrity: sha512-esIJx9bQg+QYF0ra8GnvfianIY8qWB0GBx54PK5Eps6m+xTj86KLavHv6qDhzKcu5UUOgNfJ2pWaIIV7TRUd9Q==} dev: false - /@types/offscreencanvas@2019.7.0: - resolution: {integrity: sha512-PGcyveRIpL1XIqK8eBsmRBt76eFgtzuPiSTyKHZxnGemp2yzGzWpjYKAfK3wIMiU7eH+851yEpiuP8JZerTmWg==} + /@types/offscreencanvas@2019.7.1: + resolution: {integrity: sha512-+HSrJgjBW77ALieQdMJvXhRZUIRN1597L+BKvsyeiIlHHERnqjcuOLyodK3auJ3Y3zRezNKtKAhuQWYJfEgFHQ==} dev: false - /@types/parse-link-header@2.0.0: - resolution: {integrity: sha512-KbqcQLdRaawDOfXnwqr6nvhe1MV+Uv/Ww+ViSx7Ujgw9X5qCgObLP52B1ZSJqZD8FK1y/4o+bJQTUrZOynegcg==} + /@types/parse-link-header@2.0.1: + resolution: {integrity: sha512-BrKNSrRTqn3UkMXvdVtr/znJch0PMBpEvEP8oBkxDx7eEGntuFLI+WpA5HGsNHK4SlqyhaMa+Ks0ViwyixQB5w==} dev: true /@types/picomatch@2.3.0: @@ -3926,7 +4197,7 @@ packages: resolution: {integrity: sha512-R5H3vw62gHNHrn+JGZbKejb+Z2D/6E5UNVlhCzIaBBLroMQMOFqy5Pap2gM+ZZHdqBtVU0/cx/M6to+mOJcoew==} dependencies: '@types/needle': 3.2.0 - '@types/node': 20.3.1 + '@types/node': 20.5.8 dev: true /@types/pug@2.0.6: @@ -3937,10 +4208,10 @@ packages: resolution: {integrity: sha512-PG5aLpW6PJOeV2fHRslP4IOMWn+G+Uq8CfnyJ+PDS8ndCbU+soO+fB3NKCKo0p/Jh2Y4aPaiQZsrOXFdzpcA6g==} dev: true - /@types/qrcode@1.5.0: - resolution: {integrity: sha512-x5ilHXRxUPIMfjtM+1vf/GPTRWZ81nqscursm5gMznJeK9M0YnZ1c3bEvRLQ0zSSgedLx1J6MGL231ObQGGhaA==} + /@types/qrcode@1.5.1: + resolution: {integrity: sha512-HpSN675K0PmxIDRpjMI3Mc2GiKo3dNu+X/F5SoItiaDS1lVfgC6Wac1c5lQDfKWbTJUSHWiHKzpJpBZG7k9gaA==} dependencies: - '@types/node': 20.3.1 + '@types/node': 20.5.8 dev: true /@types/qs@6.9.7: @@ -3957,17 +4228,11 @@ packages: resolution: {integrity: sha512-GSMb93iSA8KKFDgVL2Wzs/kqrHMJcU8xhLdwI5omoACcj7K18SacklLtY1C4G02HC5drd6GygtsIaGbfxJSe0g==} dev: true - /@types/redis@2.8.32: - resolution: {integrity: sha512-7jkMKxcGq9p242exlbsVzuJb57KqHRhNl4dHoQu2Y5v9bCAbtIXXH0R3HleSQW4CTOqpHIYUW3t6tpUj4BVQ+w==} - dependencies: - '@types/node': 20.3.1 - dev: true - /@types/redis@4.0.11: resolution: {integrity: sha512-bI+gth8La8Wg/QCR1+V1fhrL9+LZUSWfcqpOj2Kc80ZQ4ffbdL173vQd5wovmoV9i071FU9oP2g6etLuEwb6Rg==} deprecated: This is a stub types definition. redis provides its own type definitions, so you do not need this installed. dependencies: - redis: 4.6.7 + redis: 4.6.8 dev: true /@types/rename@1.0.4: @@ -3977,7 +4242,7 @@ packages: /@types/responselike@1.0.0: resolution: {integrity: sha512-85Y2BjiufFzaMIlvJDvTTB8Fxl2xfLo4HgmHzVBz08w4wDePCTjYw66PdrolO0kzli3yam/YCgRufyo1DdQVTA==} dependencies: - '@types/node': 20.3.1 + '@types/node': 20.5.8 /@types/sanitize-html@2.9.0: resolution: {integrity: sha512-4fP/kEcKNj2u39IzrxWYuf/FnCCwwQCpif6wwY6ROUS1EPRIfWJjGkY3HIowY1EX/VbX5e86yq8AAE7UPMgATg==} @@ -4001,20 +4266,14 @@ packages: resolution: {integrity: sha512-Cwo8LE/0rnvX7kIIa3QHCkcuF21c05Ayb0ZfxPiv0W8VRiZiNW/WuRupHKpqqGVGf7SUA44QSOUKaEd9lIrd/Q==} dependencies: '@types/mime': 1.3.2 - '@types/node': 20.3.1 + '@types/node': 20.5.8 /@types/serve-static@1.15.2: resolution: {integrity: sha512-J2LqtvFYCzaj8pVYKw8klQXrLLk7TBZmQ4ShlcdkELFKGwGMfevMLneMMRkMgZxotOD9wg497LpC7O8PcvAmfw==} dependencies: - '@types/http-errors': 2.0.1 + '@types/http-errors': 2.0.2 '@types/mime': 3.0.1 - '@types/node': 20.3.1 - - /@types/sharp@0.31.1: - resolution: {integrity: sha512-5nWwamN9ZFHXaYEincMSuza8nNfOof8nmO+mcI+Agx1uMUk4/pQnNIcix+9rLPXzKrm1pS34+6WRDbDV0Jn7ag==} - dependencies: - '@types/node': 20.3.1 - dev: true + '@types/node': 20.5.8 /@types/sinonjs__fake-timers@8.1.1: resolution: {integrity: sha512-0kSuKjAS0TrGLJ0M/+8MaFkGsQhZpB6pxOmvS3K8FYI72K//YmdfoW9X2qPsAKh1mkwxGD5zib9s1FIFed6E8g==} @@ -4028,6 +4287,10 @@ packages: resolution: {integrity: sha512-JYM8x9EGF163bEyhdJBpR2QX1R5naCJHC8ucJylJ3w9/CVBaskdQ8WqBf8MmQrd1kRvp/a4TS8HJ+bxzR7ZJYQ==} dev: true + /@types/sortablejs@1.15.2: + resolution: {integrity: sha512-mOIv/EnPMzAZAVbuh9uGjOZ1BBdimP9Y6IPGntsvQJtko5yapSDKB7GwB3AOlF5N3bkpk4sBwQRpS3aEkiUbaA==} + dev: true + /@types/stack-utils@2.0.1: resolution: {integrity: sha512-Hl219/BT5fLAaz6NDkSuhzasy49dwQS/DSdu4MdggFB8zcXv7vflBI3xp7FEmkmdDkBUI2bPUNeMttp2knYdxw==} dev: true @@ -4035,7 +4298,7 @@ packages: /@types/streamx@2.9.1: resolution: {integrity: sha512-9bywzhouyedmci7WCIPFwJ8zASDnxt2gaVUy52X0p0Tt085IJSAEP0L6j4SSNeDMSLzpYu6cPz0GrJZ7kPJ6Bg==} dependencies: - '@types/node': 20.3.1 + '@types/node': 20.5.8 dev: true /@types/throttle-debounce@5.0.0: @@ -4050,35 +4313,35 @@ packages: resolution: {integrity: sha512-dDZH/tXzwjutnuk4UacGgFRwV+JSLaXL1ikvidfJprkb7L9Nx1njcRHHmi3Dsvt7pgqqTEeucQuOrWHPFgzVHA==} dev: true - /@types/tough-cookie@4.0.2: - resolution: {integrity: sha512-Q5vtl1W5ue16D+nIaW8JWebSSraJVlK+EthKn7e7UcD4KWsaSJ8BqGPXNaPghgtcn/fhvrN17Tv8ksUsQpiplw==} + /@types/undertaker-registry@1.0.2: + resolution: {integrity: sha512-O9CqcXYnCsHUSd71+hohlhEaP57dThYQQ8/cDwskhTCJ1kA3E5CVaK1sbEnukP2eWlpSgae/8KqgJBw3w/DmoQ==} dev: true - /@types/undertaker-registry@1.0.1: - resolution: {integrity: sha512-Z4TYuEKn9+RbNVk1Ll2SS4x1JeLHecolIbM/a8gveaHsW0Hr+RQMraZACwTO2VD7JvepgA6UO1A1VrbktQrIbQ==} - dev: true - - /@types/undertaker@1.2.8: - resolution: {integrity: sha512-gW3PRqCHYpo45XFQHJBhch7L6hytPsIe0QeLujlnFsjHPnXLhJcPdN6a9368d7aIQgH2I/dUTPFBlGeSNA3qOg==} + /@types/undertaker@1.2.9: + resolution: {integrity: sha512-rOGGHtWFP4jsSKXvW2BJn+hYIAJ4cvsJi5wscbfbBHQ0yLQvTUXKvL+i72cv+8biktveFLEqbMpsKmJQxYVPQw==} dependencies: - '@types/node': 20.3.1 - '@types/undertaker-registry': 1.0.1 + '@types/node': 20.5.8 + '@types/undertaker-registry': 1.0.2 async-done: 1.3.2 dev: true - /@types/uuid@8.3.4: - resolution: {integrity: sha512-c/I8ZRb51j+pYGAu5CrFMRxqZ2ke4y2grEBO5AUjgSkSk+qT2Ea+OdWElz/OiMf5MNpn2b17kuVBwZLQJXzihw==} + /@types/unist@2.0.8: + resolution: {integrity: sha512-d0XxK3YTObnWVp6rZuev3c49+j4Lo8g4L1ZRm9z5L0xpoZycUPshHgczK5gsUMaZOstjVYYi09p5gYvUtfChYw==} dev: true - /@types/uuid@9.0.0: - resolution: {integrity: sha512-kr90f+ERiQtKWMz5rP32ltJ/BtULDI5RVO0uavn1HQUOwjx0R1h0rnDYNL0CepF1zL5bSY6FISAfd9tOdDhU5Q==} + /@types/uuid@9.0.2: + resolution: {integrity: sha512-kNnC1GFBLuhImSnV7w4njQkUiJi0ZXUycu1rUaouPqiKlXkh77JKgdRnTAp1x5eBwcIwbtI+3otwzuIDEuDoxQ==} + dev: true + + /@types/uuid@9.0.3: + resolution: {integrity: sha512-taHQQH/3ZyI3zP8M/puluDEIEvtQHVYcC6y3N8ijFtAd28+Ey/G4sg1u2gB01S8MwybLOKAp9/yCMu/uR5l3Ug==} dev: true /@types/vinyl-fs@3.0.2: resolution: {integrity: sha512-ctNcmmzbMIKooXjRkyyUCOu2Z4AyqibL+RhXoF3pb7K7j+ezItnakmpm31LymkYHSIM5ey0tjIFzTvFOTSBCGw==} dependencies: '@types/glob-stream': 8.0.0 - '@types/node': 20.3.1 + '@types/node': 20.5.8 '@types/vinyl': 2.0.7 dev: true @@ -4086,33 +4349,37 @@ packages: resolution: {integrity: sha512-4UqPv+2567NhMQuMLdKAyK4yzrfCqwaTt6bLhHEs8PFcxbHILsrxaY63n4wgE/BRLDWDQeI+WcTmkXKExh9hQg==} dependencies: '@types/expect': 1.20.4 - '@types/node': 20.3.1 + '@types/node': 20.5.8 dev: true /@types/web-push@3.3.2: resolution: {integrity: sha512-JxWGVL/m7mWTIg4mRYO+A6s0jPmBkr4iJr39DqJpRJAc+jrPiEe1/asmkwerzRon8ZZDxaZJpsxpv0Z18Wo9gw==} dependencies: - '@types/node': 20.3.1 + '@types/node': 20.5.8 dev: true /@types/webgl-ext@0.0.30: resolution: {integrity: sha512-LKVgNmBxN0BbljJrVUwkxwRYqzsAEPcZOe6S2T6ZaBDIrFp0qu4FNlpc5sM1tGbXUYFgdVQIoeLk1Y1UoblyEg==} + requiresBuild: true dev: false + optional: true /@types/webgl2@0.0.6: resolution: {integrity: sha512-50GQhDVTq/herLMiqSQkdtRu+d5q/cWHn4VvKJtrj4DJAjo1MNkWYa2MA41BaBO1q1HgsUjuQvEOk0QHvlnAaQ==} + requiresBuild: true dev: false + optional: true /@types/websocket@1.0.5: resolution: {integrity: sha512-NbsqiNX9CnEfC1Z0Vf4mE1SgAJ07JnRYcNex7AJ9zAVzmiGHmjKFEk7O4TJIsgv2B1sLEb6owKFZrACwdYngsQ==} dependencies: - '@types/node': 20.3.1 + '@types/node': 20.5.8 dev: true - /@types/ws@8.5.4: - resolution: {integrity: sha512-zdQDHKUgcX/zBc4GrwsE/7dVdAD8JR4EuiAXiiUhhfyIJXXb2+PrGshFyeXWQPMmmZ2XxgaqclgpIC7eTXc1mg==} + /@types/ws@8.5.5: + resolution: {integrity: sha512-lwhs8hktwxSjf9UaZ9tG5M03PGogvFaH8gUgLNbN9HKIg0dvv6q+gkSuJ8HN4/VbyxkuLzCjlN7GquQ0gUJfIg==} dependencies: - '@types/node': 20.3.1 + '@types/node': 20.5.8 /@types/yargs-parser@21.0.0: resolution: {integrity: sha512-iO9ZQHkZxHn4mSakYV0vFHAVDyEOIJQrV2uZ06HxEPcx+mt8swXoZHIbaaJ2crJYFfErySgktuTZ3BeLz+XmFA==} @@ -4134,12 +4401,12 @@ packages: resolution: {integrity: sha512-Cn6WYCm0tXv8p6k+A8PvbDG763EDpBoTzHdA+Q/MF6H3sapGjCm9NzoaJncJS9tUKSuCoDs9XHxYYsQDgxR6kw==} requiresBuild: true dependencies: - '@types/node': 20.3.1 + '@types/node': 20.5.8 dev: true optional: true - /@typescript-eslint/eslint-plugin@5.49.0(@typescript-eslint/parser@5.49.0)(eslint@8.42.0)(typescript@4.9.4): - resolution: {integrity: sha512-IhxabIpcf++TBaBa1h7jtOWyon80SXPRLDq0dVz5SLFC/eW6tofkw/O7Ar3lkx5z5U6wzbKDrl2larprp5kk5Q==} + /@typescript-eslint/eslint-plugin@5.62.0(@typescript-eslint/parser@5.62.0)(eslint@8.49.0)(typescript@4.9.4): + resolution: {integrity: sha512-TiZzBSJja/LbhNPvk6yc0JrX9XqhQ0hdh6M2svYfsHGejaKFIAGd9MQ+ERIMzLGlN/kZoYIgdxFV0PuljTKXag==} engines: {node: ^12.22.0 || ^14.17.0 || >=16.0.0} peerDependencies: '@typescript-eslint/parser': ^5.0.0 @@ -4149,24 +4416,82 @@ packages: typescript: optional: true dependencies: - '@typescript-eslint/parser': 5.49.0(eslint@8.42.0)(typescript@4.9.4) - '@typescript-eslint/scope-manager': 5.49.0 - '@typescript-eslint/type-utils': 5.49.0(eslint@8.42.0)(typescript@4.9.4) - '@typescript-eslint/utils': 5.49.0(eslint@8.42.0)(typescript@4.9.4) + '@eslint-community/regexpp': 4.8.1 + '@typescript-eslint/parser': 5.62.0(eslint@8.49.0)(typescript@4.9.4) + '@typescript-eslint/scope-manager': 5.62.0 + '@typescript-eslint/type-utils': 5.62.0(eslint@8.49.0)(typescript@4.9.4) + '@typescript-eslint/utils': 5.62.0(eslint@8.49.0)(typescript@4.9.4) debug: 4.3.4(supports-color@8.1.1) - eslint: 8.42.0 + eslint: 8.49.0 + graphemer: 1.4.0 ignore: 5.2.4 natural-compare-lite: 1.4.0 - regexpp: 3.2.0 - semver: 7.5.1 + semver: 7.5.4 tsutils: 3.21.0(typescript@4.9.4) typescript: 4.9.4 transitivePeerDependencies: - supports-color dev: true - /@typescript-eslint/parser@5.49.0(eslint@8.42.0)(typescript@4.9.4): - resolution: {integrity: sha512-veDlZN9mUhGqU31Qiv2qEp+XrJj5fgZpJ8PW30sHU+j/8/e5ruAhLaVDAeznS7A7i4ucb/s8IozpDtt9NqCkZg==} + /@typescript-eslint/eslint-plugin@5.62.0(@typescript-eslint/parser@5.62.0)(eslint@8.49.0)(typescript@5.2.2): + resolution: {integrity: sha512-TiZzBSJja/LbhNPvk6yc0JrX9XqhQ0hdh6M2svYfsHGejaKFIAGd9MQ+ERIMzLGlN/kZoYIgdxFV0PuljTKXag==} + engines: {node: ^12.22.0 || ^14.17.0 || >=16.0.0} + peerDependencies: + '@typescript-eslint/parser': ^5.0.0 + eslint: ^6.0.0 || ^7.0.0 || ^8.0.0 + typescript: '*' + peerDependenciesMeta: + typescript: + optional: true + dependencies: + '@eslint-community/regexpp': 4.8.1 + '@typescript-eslint/parser': 5.62.0(eslint@8.49.0)(typescript@5.2.2) + '@typescript-eslint/scope-manager': 5.62.0 + '@typescript-eslint/type-utils': 5.62.0(eslint@8.49.0)(typescript@5.2.2) + '@typescript-eslint/utils': 5.62.0(eslint@8.49.0)(typescript@5.2.2) + debug: 4.3.4(supports-color@8.1.1) + eslint: 8.49.0 + graphemer: 1.4.0 + ignore: 5.2.4 + natural-compare-lite: 1.4.0 + semver: 7.5.4 + tsutils: 3.21.0(typescript@5.2.2) + typescript: 5.2.2 + transitivePeerDependencies: + - supports-color + dev: true + + /@typescript-eslint/eslint-plugin@6.7.0(@typescript-eslint/parser@6.7.0)(eslint@8.49.0)(typescript@5.2.2): + resolution: {integrity: sha512-gUqtknHm0TDs1LhY12K2NA3Rmlmp88jK9Tx8vGZMfHeNMLE3GH2e9TRub+y+SOjuYgtOmok+wt1AyDPZqxbNag==} + engines: {node: ^16.0.0 || >=18.0.0} + peerDependencies: + '@typescript-eslint/parser': ^6.0.0 || ^6.0.0-alpha + eslint: ^7.0.0 || ^8.0.0 + typescript: '*' + peerDependenciesMeta: + typescript: + optional: true + dependencies: + '@eslint-community/regexpp': 4.8.1 + '@typescript-eslint/parser': 6.7.0(eslint@8.49.0)(typescript@5.2.2) + '@typescript-eslint/scope-manager': 6.7.0 + '@typescript-eslint/type-utils': 6.7.0(eslint@8.49.0)(typescript@5.2.2) + '@typescript-eslint/utils': 6.7.0(eslint@8.49.0)(typescript@5.2.2) + '@typescript-eslint/visitor-keys': 6.7.0 + debug: 4.3.4(supports-color@8.1.1) + eslint: 8.49.0 + graphemer: 1.4.0 + ignore: 5.2.4 + natural-compare: 1.4.0 + semver: 7.5.4 + ts-api-utils: 1.0.3(typescript@5.2.2) + typescript: 5.2.2 + transitivePeerDependencies: + - supports-color + dev: true + + /@typescript-eslint/parser@5.62.0(eslint@8.49.0)(typescript@4.9.4): + resolution: {integrity: sha512-VlJEV0fOQ7BExOsHYAGrgbEiZoi8D+Bl2+f6V2RrXerRSylnp+ZBHmPvaIa8cz0Ajx7WO7Z5RqfgYg7ED1nRhA==} engines: {node: ^12.22.0 || ^14.17.0 || >=16.0.0} peerDependencies: eslint: ^6.0.0 || ^7.0.0 || ^8.0.0 @@ -4175,26 +4500,75 @@ packages: typescript: optional: true dependencies: - '@typescript-eslint/scope-manager': 5.49.0 - '@typescript-eslint/types': 5.49.0 - '@typescript-eslint/typescript-estree': 5.49.0(typescript@4.9.4) + '@typescript-eslint/scope-manager': 5.62.0 + '@typescript-eslint/types': 5.62.0 + '@typescript-eslint/typescript-estree': 5.62.0(typescript@4.9.4) debug: 4.3.4(supports-color@8.1.1) - eslint: 8.42.0 + eslint: 8.49.0 typescript: 4.9.4 transitivePeerDependencies: - supports-color dev: true - /@typescript-eslint/scope-manager@5.49.0: - resolution: {integrity: sha512-clpROBOiMIzpbWNxCe1xDK14uPZh35u4QaZO1GddilEzoCLAEz4szb51rBpdgurs5k2YzPtJeTEN3qVbG+LRUQ==} + /@typescript-eslint/parser@5.62.0(eslint@8.49.0)(typescript@5.2.2): + resolution: {integrity: sha512-VlJEV0fOQ7BExOsHYAGrgbEiZoi8D+Bl2+f6V2RrXerRSylnp+ZBHmPvaIa8cz0Ajx7WO7Z5RqfgYg7ED1nRhA==} engines: {node: ^12.22.0 || ^14.17.0 || >=16.0.0} + peerDependencies: + eslint: ^6.0.0 || ^7.0.0 || ^8.0.0 + typescript: '*' + peerDependenciesMeta: + typescript: + optional: true dependencies: - '@typescript-eslint/types': 5.49.0 - '@typescript-eslint/visitor-keys': 5.49.0 + '@typescript-eslint/scope-manager': 5.62.0 + '@typescript-eslint/types': 5.62.0 + '@typescript-eslint/typescript-estree': 5.62.0(typescript@5.2.2) + debug: 4.3.4(supports-color@8.1.1) + eslint: 8.49.0 + typescript: 5.2.2 + transitivePeerDependencies: + - supports-color dev: true - /@typescript-eslint/type-utils@5.49.0(eslint@8.42.0)(typescript@4.9.4): - resolution: {integrity: sha512-eUgLTYq0tR0FGU5g1YHm4rt5H/+V2IPVkP0cBmbhRyEmyGe4XvJ2YJ6sYTmONfjmdMqyMLad7SB8GvblbeESZA==} + /@typescript-eslint/parser@6.7.0(eslint@8.49.0)(typescript@5.2.2): + resolution: {integrity: sha512-jZKYwqNpNm5kzPVP5z1JXAuxjtl2uG+5NpaMocFPTNC2EdYIgbXIPImObOkhbONxtFTTdoZstLZefbaK+wXZng==} + engines: {node: ^16.0.0 || >=18.0.0} + peerDependencies: + eslint: ^7.0.0 || ^8.0.0 + typescript: '*' + peerDependenciesMeta: + typescript: + optional: true + dependencies: + '@typescript-eslint/scope-manager': 6.7.0 + '@typescript-eslint/types': 6.7.0 + '@typescript-eslint/typescript-estree': 6.7.0(typescript@5.2.2) + '@typescript-eslint/visitor-keys': 6.7.0 + debug: 4.3.4(supports-color@8.1.1) + eslint: 8.49.0 + typescript: 5.2.2 + transitivePeerDependencies: + - supports-color + dev: true + + /@typescript-eslint/scope-manager@5.62.0: + resolution: {integrity: sha512-VXuvVvZeQCQb5Zgf4HAxc04q5j+WrNAtNh9OwCsCgpKqESMTu3tF/jhZ3xG6T4NZwWl65Bg8KuS2uEvhSfLl0w==} + engines: {node: ^12.22.0 || ^14.17.0 || >=16.0.0} + dependencies: + '@typescript-eslint/types': 5.62.0 + '@typescript-eslint/visitor-keys': 5.62.0 + dev: true + + /@typescript-eslint/scope-manager@6.7.0: + resolution: {integrity: sha512-lAT1Uau20lQyjoLUQ5FUMSX/dS07qux9rYd5FGzKz/Kf8W8ccuvMyldb8hadHdK/qOI7aikvQWqulnEq2nCEYA==} + engines: {node: ^16.0.0 || >=18.0.0} + dependencies: + '@typescript-eslint/types': 6.7.0 + '@typescript-eslint/visitor-keys': 6.7.0 + dev: true + + /@typescript-eslint/type-utils@5.62.0(eslint@8.49.0)(typescript@4.9.4): + resolution: {integrity: sha512-xsSQreu+VnfbqQpW5vnCJdq1Z3Q0U31qiWmRhr98ONQmcp/yhiPJFPq8MXiJVLiksmOKSjIldZzkebzHuCGzew==} engines: {node: ^12.22.0 || ^14.17.0 || >=16.0.0} peerDependencies: eslint: '*' @@ -4203,23 +4577,68 @@ packages: typescript: optional: true dependencies: - '@typescript-eslint/typescript-estree': 5.49.0(typescript@4.9.4) - '@typescript-eslint/utils': 5.49.0(eslint@8.42.0)(typescript@4.9.4) + '@typescript-eslint/typescript-estree': 5.62.0(typescript@4.9.4) + '@typescript-eslint/utils': 5.62.0(eslint@8.49.0)(typescript@4.9.4) debug: 4.3.4(supports-color@8.1.1) - eslint: 8.42.0 + eslint: 8.49.0 tsutils: 3.21.0(typescript@4.9.4) typescript: 4.9.4 transitivePeerDependencies: - supports-color dev: true - /@typescript-eslint/types@5.49.0: - resolution: {integrity: sha512-7If46kusG+sSnEpu0yOz2xFv5nRz158nzEXnJFCGVEHWnuzolXKwrH5Bsf9zsNlOQkyZuk0BZKKoJQI+1JPBBg==} + /@typescript-eslint/type-utils@5.62.0(eslint@8.49.0)(typescript@5.2.2): + resolution: {integrity: sha512-xsSQreu+VnfbqQpW5vnCJdq1Z3Q0U31qiWmRhr98ONQmcp/yhiPJFPq8MXiJVLiksmOKSjIldZzkebzHuCGzew==} + engines: {node: ^12.22.0 || ^14.17.0 || >=16.0.0} + peerDependencies: + eslint: '*' + typescript: '*' + peerDependenciesMeta: + typescript: + optional: true + dependencies: + '@typescript-eslint/typescript-estree': 5.62.0(typescript@5.2.2) + '@typescript-eslint/utils': 5.62.0(eslint@8.49.0)(typescript@5.2.2) + debug: 4.3.4(supports-color@8.1.1) + eslint: 8.49.0 + tsutils: 3.21.0(typescript@5.2.2) + typescript: 5.2.2 + transitivePeerDependencies: + - supports-color + dev: true + + /@typescript-eslint/type-utils@6.7.0(eslint@8.49.0)(typescript@5.2.2): + resolution: {integrity: sha512-f/QabJgDAlpSz3qduCyQT0Fw7hHpmhOzY/Rv6zO3yO+HVIdPfIWhrQoAyG+uZVtWAIS85zAyzgAFfyEr+MgBpg==} + engines: {node: ^16.0.0 || >=18.0.0} + peerDependencies: + eslint: ^7.0.0 || ^8.0.0 + typescript: '*' + peerDependenciesMeta: + typescript: + optional: true + dependencies: + '@typescript-eslint/typescript-estree': 6.7.0(typescript@5.2.2) + '@typescript-eslint/utils': 6.7.0(eslint@8.49.0)(typescript@5.2.2) + debug: 4.3.4(supports-color@8.1.1) + eslint: 8.49.0 + ts-api-utils: 1.0.3(typescript@5.2.2) + typescript: 5.2.2 + transitivePeerDependencies: + - supports-color + dev: true + + /@typescript-eslint/types@5.62.0: + resolution: {integrity: sha512-87NVngcbVXUahrRTqIK27gD2t5Cu1yuCXxbLcFtCzZGlfyVWWh8mLHkoxzjsB6DDNnvdL+fW8MiwPEJyGJQDgQ==} engines: {node: ^12.22.0 || ^14.17.0 || >=16.0.0} dev: true - /@typescript-eslint/typescript-estree@5.49.0(typescript@4.9.4): - resolution: {integrity: sha512-PBdx+V7deZT/3GjNYPVQv1Nc0U46dAHbIuOG8AZ3on3vuEKiPDwFE/lG1snN2eUB9IhF7EyF7K1hmTcLztNIsA==} + /@typescript-eslint/types@6.7.0: + resolution: {integrity: sha512-ihPfvOp7pOcN/ysoj0RpBPOx3HQTJTrIN8UZK+WFd3/iDeFHHqeyYxa4hQk4rMhsz9H9mXpR61IzwlBVGXtl9Q==} + engines: {node: ^16.0.0 || >=18.0.0} + dev: true + + /@typescript-eslint/typescript-estree@5.62.0(typescript@4.9.4): + resolution: {integrity: sha512-CmcQ6uY7b9y694lKdRB8FEel7JbU/40iSAPomu++SjLMntB+2Leay2LO6i8VnJk58MtE9/nQSFIH6jpyRWyYzA==} engines: {node: ^12.22.0 || ^14.17.0 || >=16.0.0} peerDependencies: typescript: '*' @@ -4227,61 +4646,150 @@ packages: typescript: optional: true dependencies: - '@typescript-eslint/types': 5.49.0 - '@typescript-eslint/visitor-keys': 5.49.0 + '@typescript-eslint/types': 5.62.0 + '@typescript-eslint/visitor-keys': 5.62.0 debug: 4.3.4(supports-color@8.1.1) globby: 11.1.0 is-glob: 4.0.3 - semver: 7.5.1 + semver: 7.5.4 tsutils: 3.21.0(typescript@4.9.4) typescript: 4.9.4 transitivePeerDependencies: - supports-color dev: true - /@typescript-eslint/utils@5.49.0(eslint@8.42.0)(typescript@4.9.4): - resolution: {integrity: sha512-cPJue/4Si25FViIb74sHCLtM4nTSBXtLx1d3/QT6mirQ/c65bV8arBEebBJJizfq8W2YyMoPI/WWPFWitmNqnQ==} + /@typescript-eslint/typescript-estree@5.62.0(typescript@5.2.2): + resolution: {integrity: sha512-CmcQ6uY7b9y694lKdRB8FEel7JbU/40iSAPomu++SjLMntB+2Leay2LO6i8VnJk58MtE9/nQSFIH6jpyRWyYzA==} + engines: {node: ^12.22.0 || ^14.17.0 || >=16.0.0} + peerDependencies: + typescript: '*' + peerDependenciesMeta: + typescript: + optional: true + dependencies: + '@typescript-eslint/types': 5.62.0 + '@typescript-eslint/visitor-keys': 5.62.0 + debug: 4.3.4(supports-color@8.1.1) + globby: 11.1.0 + is-glob: 4.0.3 + semver: 7.5.4 + tsutils: 3.21.0(typescript@5.2.2) + typescript: 5.2.2 + transitivePeerDependencies: + - supports-color + dev: true + + /@typescript-eslint/typescript-estree@6.7.0(typescript@5.2.2): + resolution: {integrity: sha512-dPvkXj3n6e9yd/0LfojNU8VMUGHWiLuBZvbM6V6QYD+2qxqInE7J+J/ieY2iGwR9ivf/R/haWGkIj04WVUeiSQ==} + engines: {node: ^16.0.0 || >=18.0.0} + peerDependencies: + typescript: '*' + peerDependenciesMeta: + typescript: + optional: true + dependencies: + '@typescript-eslint/types': 6.7.0 + '@typescript-eslint/visitor-keys': 6.7.0 + debug: 4.3.4(supports-color@8.1.1) + globby: 11.1.0 + is-glob: 4.0.3 + semver: 7.5.4 + ts-api-utils: 1.0.3(typescript@5.2.2) + typescript: 5.2.2 + transitivePeerDependencies: + - supports-color + dev: true + + /@typescript-eslint/utils@5.62.0(eslint@8.49.0)(typescript@4.9.4): + resolution: {integrity: sha512-n8oxjeb5aIbPFEtmQxQYOLI0i9n5ySBEY/ZEHHZqKQSFnxio1rv6dthascc9dLuwrL0RC5mPCxB7vnAVGAYWAQ==} engines: {node: ^12.22.0 || ^14.17.0 || >=16.0.0} peerDependencies: eslint: ^6.0.0 || ^7.0.0 || ^8.0.0 dependencies: - '@types/json-schema': 7.0.12 + '@eslint-community/eslint-utils': 4.4.0(eslint@8.49.0) + '@types/json-schema': 7.0.13 '@types/semver': 7.5.0 - '@typescript-eslint/scope-manager': 5.49.0 - '@typescript-eslint/types': 5.49.0 - '@typescript-eslint/typescript-estree': 5.49.0(typescript@4.9.4) - eslint: 8.42.0 + '@typescript-eslint/scope-manager': 5.62.0 + '@typescript-eslint/types': 5.62.0 + '@typescript-eslint/typescript-estree': 5.62.0(typescript@4.9.4) + eslint: 8.49.0 eslint-scope: 5.1.1 - eslint-utils: 3.0.0(eslint@8.42.0) - semver: 7.5.1 + semver: 7.5.4 transitivePeerDependencies: - supports-color - typescript dev: true - /@typescript-eslint/visitor-keys@5.49.0: - resolution: {integrity: sha512-v9jBMjpNWyn8B6k/Mjt6VbUS4J1GvUlR4x3Y+ibnP1z7y7V4n0WRz+50DY6+Myj0UaXVSuUlHohO+eZ8IJEnkg==} + /@typescript-eslint/utils@5.62.0(eslint@8.49.0)(typescript@5.2.2): + resolution: {integrity: sha512-n8oxjeb5aIbPFEtmQxQYOLI0i9n5ySBEY/ZEHHZqKQSFnxio1rv6dthascc9dLuwrL0RC5mPCxB7vnAVGAYWAQ==} engines: {node: ^12.22.0 || ^14.17.0 || >=16.0.0} + peerDependencies: + eslint: ^6.0.0 || ^7.0.0 || ^8.0.0 dependencies: - '@typescript-eslint/types': 5.49.0 - eslint-visitor-keys: 3.4.1 + '@eslint-community/eslint-utils': 4.4.0(eslint@8.49.0) + '@types/json-schema': 7.0.13 + '@types/semver': 7.5.0 + '@typescript-eslint/scope-manager': 5.62.0 + '@typescript-eslint/types': 5.62.0 + '@typescript-eslint/typescript-estree': 5.62.0(typescript@5.2.2) + eslint: 8.49.0 + eslint-scope: 5.1.1 + semver: 7.5.4 + transitivePeerDependencies: + - supports-color + - typescript dev: true - /@vitejs/plugin-vue@4.2.3(vite@4.3.9)(vue@3.3.4): - resolution: {integrity: sha512-R6JDUfiZbJA9cMiguQ7jxALsgiprjBeHL5ikpXfJCH62pPHtI+JdJ5xWj6Ev73yXSlYl86+blXn1kZHQ7uElxw==} + /@typescript-eslint/utils@6.7.0(eslint@8.49.0)(typescript@5.2.2): + resolution: {integrity: sha512-MfCq3cM0vh2slSikQYqK2Gq52gvOhe57vD2RM3V4gQRZYX4rDPnKLu5p6cm89+LJiGlwEXU8hkYxhqqEC/V3qA==} + engines: {node: ^16.0.0 || >=18.0.0} + peerDependencies: + eslint: ^7.0.0 || ^8.0.0 + dependencies: + '@eslint-community/eslint-utils': 4.4.0(eslint@8.49.0) + '@types/json-schema': 7.0.13 + '@types/semver': 7.5.0 + '@typescript-eslint/scope-manager': 6.7.0 + '@typescript-eslint/types': 6.7.0 + '@typescript-eslint/typescript-estree': 6.7.0(typescript@5.2.2) + eslint: 8.49.0 + semver: 7.5.4 + transitivePeerDependencies: + - supports-color + - typescript + dev: true + + /@typescript-eslint/visitor-keys@5.62.0: + resolution: {integrity: sha512-07ny+LHRzQXepkGg6w0mFY41fVUNBrL2Roj/++7V1txKugfjm/Ci/qSND03r2RhlJhJYMcTn9AhhSSqQp0Ysyw==} + engines: {node: ^12.22.0 || ^14.17.0 || >=16.0.0} + dependencies: + '@typescript-eslint/types': 5.62.0 + eslint-visitor-keys: 3.4.3 + dev: true + + /@typescript-eslint/visitor-keys@6.7.0: + resolution: {integrity: sha512-/C1RVgKFDmGMcVGeD8HjKv2bd72oI1KxQDeY8uc66gw9R0OK0eMq48cA+jv9/2Ag6cdrsUGySm1yzYmfz0hxwQ==} + engines: {node: ^16.0.0 || >=18.0.0} + dependencies: + '@typescript-eslint/types': 6.7.0 + eslint-visitor-keys: 3.4.3 + dev: true + + /@vitejs/plugin-vue@4.3.4(vite@4.4.9)(vue@3.3.4): + resolution: {integrity: sha512-ciXNIHKPriERBisHFBvnTbfKa6r9SAesOYXeGDzgegcvy9Q4xdScSHAmKbNT0M3O0S9LKhIf5/G+UYG4NnnzYw==} engines: {node: ^14.18.0 || >=16.0.0} peerDependencies: vite: ^4.0.0 vue: ^3.2.25 dependencies: - vite: 4.3.9(@types/node@18.11.18)(sass@1.62.1) + vite: 4.4.9(@types/node@20.5.8)(sass@1.66.1) vue: 3.3.4 dev: true /@vue/compiler-core@3.3.4: resolution: {integrity: sha512-cquyDNvZ6jTbf/+x+AgM2Arrp6G4Dzbb0R64jiG804HRMfRiFXWI6kqUVqZ6ZR0bQhIoQjB4+2bhNtVwndW15g==} dependencies: - '@babel/parser': 7.22.5 + '@babel/parser': 7.22.16 '@vue/shared': 3.3.4 estree-walker: 2.0.2 source-map-js: 1.0.2 @@ -4297,23 +4805,23 @@ packages: /@vue/compiler-sfc@2.7.14: resolution: {integrity: sha512-aNmNHyLPsw+sVvlQFQ2/8sjNuLtK54TC6cuKnVzAY93ks4ZBrvwQSnkkIh7bsbNhum5hJBS00wSDipQ937f5DA==} dependencies: - '@babel/parser': 7.22.5 - postcss: 8.4.24 + '@babel/parser': 7.22.16 + postcss: 8.4.29 source-map: 0.6.1 dev: true /@vue/compiler-sfc@3.3.4: resolution: {integrity: sha512-6y/d8uw+5TkCuzBkgLS0v3lSM3hJDntFEiUORM11pQ/hKvkhSKZrXW6i69UyXlJQisJxuUEJKAWEqWbWsLeNKQ==} dependencies: - '@babel/parser': 7.22.5 + '@babel/parser': 7.22.16 '@vue/compiler-core': 3.3.4 '@vue/compiler-dom': 3.3.4 '@vue/compiler-ssr': 3.3.4 '@vue/reactivity-transform': 3.3.4 '@vue/shared': 3.3.4 estree-walker: 2.0.2 - magic-string: 0.30.0 - postcss: 8.4.24 + magic-string: 0.30.3 + postcss: 8.4.29 source-map-js: 1.0.2 dev: true @@ -4327,11 +4835,11 @@ packages: /@vue/reactivity-transform@3.3.4: resolution: {integrity: sha512-MXgwjako4nu5WFLAjpBnCj/ieqcjE2aJBINUNQzkZQfzIZA4xn+0fV1tIYBJvvva3N3OvKGofRLvQIwEQPpaXw==} dependencies: - '@babel/parser': 7.22.5 + '@babel/parser': 7.22.16 '@vue/compiler-core': 3.3.4 '@vue/shared': 3.3.4 estree-walker: 2.0.2 - magic-string: 0.30.0 + magic-string: 0.30.3 dev: true /@vue/reactivity@3.3.4: @@ -4477,35 +4985,37 @@ packages: /@webgpu/types@0.1.16: resolution: {integrity: sha512-9E61voMP4+Rze02jlTXud++Htpjyyk8vw5Hyw9FGRrmhHQg2GqbuOfwf5Klrb8vTxc2XWI3EfO7RUHMpxTj26A==} + requiresBuild: true + dev: false + optional: true + + /@webgpu/types@0.1.30: + resolution: {integrity: sha512-9AXJSmL3MzY8ZL//JjudA//q+2kBRGhLBFpkdGksWIuxrMy81nFrCzj2Am+mbh8WoU6rXmv7cY5E3rdlyru2Qg==} dev: false - /@webgpu/types@0.1.21: - resolution: {integrity: sha512-pUrWq3V5PiSGFLeLxoGqReTZmiiXwY3jRkIG5sLLKjyqNxrwm/04b4nw7LSmGWJcKk59XOM/YRTUwOzo4MMlow==} - dev: false - - /@webpack-cli/configtest@2.1.1(webpack-cli@5.1.3)(webpack@5.85.1): + /@webpack-cli/configtest@2.1.1(webpack-cli@5.1.4)(webpack@5.88.2): resolution: {integrity: sha512-wy0mglZpDSiSS0XHrVR+BAdId2+yxPSoJW8fsna3ZpYSlufjvxnP4YbKTCBZnNIcGN4r6ZPXV55X4mYExOfLmw==} engines: {node: '>=14.15.0'} peerDependencies: webpack: 5.x.x webpack-cli: 5.x.x dependencies: - webpack: 5.85.1(@swc/core@1.3.62)(webpack-cli@5.1.3) - webpack-cli: 5.1.3(webpack@5.85.1) + webpack: 5.88.2(@swc/core@1.3.82)(webpack-cli@5.1.4) + webpack-cli: 5.1.4(webpack@5.88.2) dev: true - /@webpack-cli/info@2.0.2(webpack-cli@5.1.3)(webpack@5.85.1): + /@webpack-cli/info@2.0.2(webpack-cli@5.1.4)(webpack@5.88.2): resolution: {integrity: sha512-zLHQdI/Qs1UyT5UBdWNqsARasIA+AaF8t+4u2aS2nEpBQh2mWIVb8qAklq0eUENnC5mOItrIB4LiS9xMtph18A==} engines: {node: '>=14.15.0'} peerDependencies: webpack: 5.x.x webpack-cli: 5.x.x dependencies: - webpack: 5.85.1(@swc/core@1.3.62)(webpack-cli@5.1.3) - webpack-cli: 5.1.3(webpack@5.85.1) + webpack: 5.88.2(@swc/core@1.3.82)(webpack-cli@5.1.4) + webpack-cli: 5.1.4(webpack@5.88.2) dev: true - /@webpack-cli/serve@2.0.5(webpack-cli@5.1.3)(webpack@5.85.1): + /@webpack-cli/serve@2.0.5(webpack-cli@5.1.4)(webpack@5.88.2): resolution: {integrity: sha512-lqaoKnRYBdo1UgDX8uF24AfGMifWK19TxPmM5FHc2vAGxrJ/qtyUyFBWoY1tISZdelsQ5fBcOusifo5o5wSJxQ==} engines: {node: '>=14.15.0'} peerDependencies: @@ -4516,8 +5026,8 @@ packages: webpack-dev-server: optional: true dependencies: - webpack: 5.85.1(@swc/core@1.3.62)(webpack-cli@5.1.3) - webpack-cli: 5.1.3(webpack@5.85.1) + webpack: 5.88.2(@swc/core@1.3.82)(webpack-cli@5.1.4) + webpack-cli: 5.1.4(webpack@5.88.2) dev: true /@xtuc/ieee754@1.2.0: @@ -4530,6 +5040,7 @@ packages: /abab@2.0.6: resolution: {integrity: sha512-j2afSsaIENvHZN2B8GOpF566vZ5WVk5opAiMTvWgaQT8DkbOqsTfvNAvHoRGU2zzP8cPoqys+xHTRDWW8L+/BA==} + dev: true /abbrev@1.1.1: resolution: {integrity: sha512-nne9/IiQ/hzIhY6pdDnbBtz7DjPTKrY00P/zvPSm5pOFkl6xuGrGnXn/VtTNNfNtAfZ9/1RtehkszU9qcTii0Q==} @@ -4556,27 +5067,21 @@ packages: acorn-walk: 7.2.0 dev: true - /acorn-globals@7.0.1: - resolution: {integrity: sha512-umOSDSDrfHbTNPuNpC2NSnnA3LUrqpevPb4T9jRx4MagXNS0rs+gwiTcAvqCRmsD6utzsrzNt+ebm00SNWiC3Q==} - dependencies: - acorn: 8.9.0 - acorn-walk: 8.2.0 - dev: false - - /acorn-import-assertions@1.9.0(acorn@8.9.0): + /acorn-import-assertions@1.9.0(acorn@8.10.0): resolution: {integrity: sha512-cmMwop9x+8KFhxvKrKfPYmN6/pKTYYHBqLa0DfvVZcKMJWNyWLnaqND7dx/qn66R7ewM1UX5XMaDVP5wlVTaVA==} peerDependencies: acorn: ^8 dependencies: - acorn: 8.9.0 + acorn: 8.10.0 dev: true - /acorn-jsx@5.3.2(acorn@8.9.0): + /acorn-jsx@5.3.2(acorn@8.10.0): resolution: {integrity: sha512-rq9s+JNhf0IChjtDXxllJ7g41oZk5SlXtp0LHwyA5cejwn7vKmKp4pPri6YEePv2PU65sAsegbXtIinmDFDXgQ==} peerDependencies: acorn: ^6.0.0 || ^7.0.0 || ^8.0.0 dependencies: - acorn: 8.9.0 + acorn: 8.10.0 + dev: true /acorn-walk@7.2.0: resolution: {integrity: sha512-OPdCF6GsMIP+Az+aWfAAOEt2/+iVDKE7oy6lJ098aoe59oAmK76qV6Gw60SbZ8jHuG2wH058GF4pLFbYamYrVA==} @@ -4592,11 +5097,15 @@ packages: engines: {node: '>=0.4.0'} hasBin: true - /acorn@8.9.0: - resolution: {integrity: sha512-jaVNAFBHNLXspO543WnNNPZFRtavh3skAkITqD0/2aeMkKZTN+254PyhwxFYrk3vQ1xfY+2wbesJMs/JC8/PwQ==} + /acorn@8.10.0: + resolution: {integrity: sha512-F0SAmZ8iUtS//m8DmCTA0jlh6TDKkHQyK6xc6V4KDTyZKA9dnvX9/3sRTVQrWm79glUAZbnmmNcdYwUIHWVybw==} engines: {node: '>=0.4.0'} hasBin: true + /add@2.0.6: + resolution: {integrity: sha512-j5QzrmsokwWWp6kUcJQySpbG+xfOBqqKnup3OIk1pz+kB/80SLorZ9V8zHFLO92Lcd+hbvq8bT+zOGoPkmBV0Q==} + dev: true + /adm-zip@0.5.10: resolution: {integrity: sha512-x0HvcHqVJNTPk/Bw8JbLWlWoo6Wwnsug0fnYYro1HBrjxZ3G7/AZk7Ahv8JwDe1uIcz8eBqvu86FuF1POiG7vQ==} engines: {node: '>=6.0'} @@ -4605,6 +5114,7 @@ packages: /agent-base@4.3.0: resolution: {integrity: sha512-salcGninV0nPrwpGNn4VTXBb1SOuXQBiqbrNXoeizJsHrsL6ERFM2Ne3JUSBWRE6aeNJI2ROP/WEEIDUiDe3cg==} engines: {node: '>= 4.0.0'} + requiresBuild: true dependencies: es6-promisify: 5.0.0 dev: false @@ -4618,17 +5128,22 @@ packages: transitivePeerDependencies: - supports-color - /agentkeepalive@4.3.0: - resolution: {integrity: sha512-7Epl1Blf4Sy37j4v9f9FjICCh4+KAQOyXgHEwlyBiAQLbhKdq/i2QQU3amQalS/wPhdPzDXPL5DMR5bkn+YeWg==} - engines: {node: '>= 8.0.0'} + /agent-base@7.1.0: + resolution: {integrity: sha512-o/zjMZRhJxny7OyEF+Op8X+efiELC7k7yOjMzgfzVqOzXqkBkWI79YoTdOtsuWd5BWhAGAuOY/Xa6xpiaWXiNg==} + engines: {node: '>= 14'} dependencies: debug: 4.3.4(supports-color@8.1.1) - depd: 2.0.0 - humanize-ms: 1.2.1 transitivePeerDependencies: - supports-color dev: false + /agentkeepalive@4.5.0: + resolution: {integrity: sha512-5GG/5IbQQpC9FpkRGsSvZI5QYeSCzlJHdpBQntCsuTOxhKD8lqKhrleg2Yi7yvMIf82Ycmmqln9U8V9qwEiJew==} + engines: {node: '>= 8.0.0'} + dependencies: + humanize-ms: 1.2.1 + dev: false + /aggregate-error@3.1.0: resolution: {integrity: sha512-4I7Td01quW/RpocfNayFdFVk1qSuoh0E7JrbRJ16nH01HhKFQ88INq9Sd+nd72zqRySlr9BmDA8xlEJ6vJMrYA==} engines: {node: '>=8'} @@ -4717,6 +5232,10 @@ packages: resolution: {integrity: sha512-n5M855fKb2SsfMIiFFoVrABHJC8QtHwVx+mHWP3QcEqBHYienj5dHSgjbxtC0WEZXYt4wcD6zrQElDPhFuZgfA==} engines: {node: '>=12'} + /ansi-sequence-parser@1.1.1: + resolution: {integrity: sha512-vJXt3yiaUL4UU546s3rPXlsry/RnM730G1+HkpKE012AN0sx1eOrxSu95oKDIonskeLTijMgqWZ3uDEe3NFvyg==} + dev: true + /ansi-styles@2.2.1: resolution: {integrity: sha512-kmCevFghRiWM7HB5zTPULl4r9bVFSWjz62MhqizDGUrq2NWuNMQyuv4tHHoKJHs69M/MF64lEcHdYIocrdWQYA==} engines: {node: '>=0.10.0'} @@ -4791,9 +5310,9 @@ packages: resolution: {integrity: sha512-Of/R0wqp83cgHozfIYLbBMnej79U/SVGOOyuB3VVFv1NRM/PSFMK12x9KVtiYzJqmnU5WR2qp0Z5rHb7sWGnFQ==} dev: true - /archiver-utils@2.1.0: - resolution: {integrity: sha512-bEL/yUb/fNNiNTuUz979Z0Yg5L+LzLxGJz8x79lYmR54fmTIb6ob/hNQgkQnIUDWIFjZVQwl9Xs356I6BAMHfw==} - engines: {node: '>= 6'} + /archiver-utils@3.0.4: + resolution: {integrity: sha512-KVgf4XQVrTjhyWmx6cte4RxonPLR9onExufI1jhvw/MQ4BB6IsZD5gT8Lq+u/+pRkWna/6JoHpiQioaqFP5Rzw==} + engines: {node: '>= 10'} dependencies: glob: 7.2.3 graceful-fs: 4.2.11 @@ -4804,26 +5323,31 @@ packages: lodash.isplainobject: 4.0.6 lodash.union: 4.6.0 normalize-path: 3.0.0 - readable-stream: 2.3.8 + readable-stream: 3.6.2 dev: false - /archiver@5.3.1: - resolution: {integrity: sha512-8KyabkmbYrH+9ibcTScQ1xCJC/CGcugdVIwB+53f5sZziXgwUh3iXlAlANMxcZyDEfTHMe6+Z5FofV8nopXP7w==} - engines: {node: '>= 10'} + /archiver@6.0.0: + resolution: {integrity: sha512-EPGa+bYaxaMiCT8DCbEDqFz8IjeBSExrJzyUOJx2FBkFJ/OZzJuso3lMSk901M50gMqXxTQcumlGajOFlXhVhw==} + engines: {node: '>= 12.0.0'} dependencies: - archiver-utils: 2.1.0 + archiver-utils: 3.0.4 async: 3.2.4 buffer-crc32: 0.2.13 readable-stream: 3.6.2 readdir-glob: 1.1.3 tar-stream: 2.2.0 - zip-stream: 4.1.0 + zip-stream: 4.1.1 dev: false /archy@1.0.0: resolution: {integrity: sha512-Xg+9RwCg/0p32teKdGMPTPnVXKD0w3DfHnFTficozsAgsvq2XenPJq/MYpzzQ/v8zrOyJn6Ds39VA4JIDwFfqw==} dev: true + /are-docs-informative@0.0.2: + resolution: {integrity: sha512-ixiS0nLNNG5jNQzgZJNoUpBKdo9yTYZMGJ+QgT2jmjR7G7+QHRCc4v6LQ3NgE7EBJq+o0ams3waJwkrlBom8Ig==} + engines: {node: '>=14'} + dev: true + /are-we-there-yet@2.0.0: resolution: {integrity: sha512-Ci/qENmwHnsYo9xKIcUJN5LeDKdJ6R1Z1j9V/J5wyq8nh/mYPEpIKJbBZXtZjG04HiK7zV/p6Vs9952MrMeUIw==} engines: {node: '>=10'} @@ -4847,14 +5371,14 @@ packages: resolution: {integrity: sha512-PYjyFOLKQ9y57JvQ6QLo8dAgNqswh8M1RMJYdQduT6xbWSgK36P/Z/v+p888pM69jMMfS8Xd8F6I1kQ/I9HUGg==} dev: true - /argon2@0.30.3: - resolution: {integrity: sha512-DoH/kv8c9127ueJSBxAVJXinW9+EuPA3EMUxoV2sAY1qDE5H9BjTyVF/aD2XyHqbqUWabgBkIfcP3ZZuGhbJdg==} + /argon2@0.31.1: + resolution: {integrity: sha512-ik2xnJrLXazya7m4Nz1XfBSRjXj8Koq8qF9PsQC8059p20ifWc9zx/hgU3ItZh/3TnwXkv0RbhvjodPkmFf0bg==} engines: {node: '>=14.0.0'} requiresBuild: true dependencies: - '@mapbox/node-pre-gyp': 1.0.10 + '@mapbox/node-pre-gyp': 1.0.11 '@phc/format': 1.0.0 - node-addon-api: 5.1.0 + node-addon-api: 7.0.0 transitivePeerDependencies: - encoding - supports-color @@ -4914,13 +5438,13 @@ packages: engines: {node: '>=0.10.0'} dev: true - /array-includes@3.1.6: - resolution: {integrity: sha512-sgTbLvL6cNnw24FnbaDyjmvddQ2ML8arZsgaJhoABMoplz/4QRhtrYS+alr1BUM1Bwp6dhx8vVCBSLG+StwOFw==} + /array-includes@3.1.7: + resolution: {integrity: sha512-dlcsNBIiWhPkHdOEEKnehA+RNUWDc4UqFtnIXU4uuYDPtA4LDkr7qip2p0VvFAEXNDr0yWZ9PJyIRiGjRLQzwQ==} engines: {node: '>= 0.4'} dependencies: call-bind: 1.0.2 - define-properties: 1.2.0 - es-abstract: 1.21.2 + define-properties: 1.2.1 + es-abstract: 1.22.2 get-intrinsic: 1.2.1 is-string: 1.0.7 dev: true @@ -4964,26 +5488,50 @@ packages: engines: {node: '>=0.10.0'} dev: true - /array.prototype.flat@1.3.1: - resolution: {integrity: sha512-roTU0KWIOmJ4DRLmwKd19Otg0/mT3qPNt0Qb3GWW8iObuZXxrjB/pzn0R3hqpRSWg4HCwqx+0vwOnWnvlOyeIA==} + /array.prototype.findlastindex@1.2.3: + resolution: {integrity: sha512-LzLoiOMAxvy+Gd3BAq3B7VeIgPdo+Q8hthvKtXybMvRV0jrXfJM/t8mw7nNlpEcVlVUnCnM2KSX4XU5HmpodOA==} engines: {node: '>= 0.4'} dependencies: call-bind: 1.0.2 - define-properties: 1.2.0 - es-abstract: 1.21.2 + define-properties: 1.2.1 + es-abstract: 1.22.2 + es-shim-unscopables: 1.0.0 + get-intrinsic: 1.2.1 + dev: true + + /array.prototype.flat@1.3.2: + resolution: {integrity: sha512-djYB+Zx2vLewY8RWlNCUdHjDXs2XOgm602S9E7P/UpHgfeHL00cRiIF+IN/G/aUJ7kGPb6yO/ErDI5V2s8iycA==} + engines: {node: '>= 0.4'} + dependencies: + call-bind: 1.0.2 + define-properties: 1.2.1 + es-abstract: 1.22.2 es-shim-unscopables: 1.0.0 dev: true - /array.prototype.flatmap@1.3.1: - resolution: {integrity: sha512-8UGn9O1FDVvMNB0UlLv4voxRMze7+FpHyF5mSMRjWHUMlpoDViniy05870VlxhfgTnLbpuwTzvD76MTtWxB/mQ==} + /array.prototype.flatmap@1.3.2: + resolution: {integrity: sha512-Ewyx0c9PmpcsByhSW4r+9zDU7sGjFc86qf/kKtuSCRdhfbk0SNLLkaT5qvcHnRGgc5NP/ly/y+qkXkqONX54CQ==} engines: {node: '>= 0.4'} dependencies: call-bind: 1.0.2 - define-properties: 1.2.0 - es-abstract: 1.21.2 + define-properties: 1.2.1 + es-abstract: 1.22.2 es-shim-unscopables: 1.0.0 dev: true + /arraybuffer.prototype.slice@1.0.2: + resolution: {integrity: sha512-yMBKppFur/fbHu9/6USUe03bZ4knMYiwFBcyiaXB8Go0qNehwX6inYPzK9U0NeQvGxKthcmHcaR8P5MStSRBAw==} + engines: {node: '>= 0.4'} + dependencies: + array-buffer-byte-length: 1.0.0 + call-bind: 1.0.2 + define-properties: 1.2.1 + es-abstract: 1.22.2 + get-intrinsic: 1.2.1 + is-array-buffer: 3.0.2 + is-shared-array-buffer: 1.0.2 + dev: true + /arrgv@1.0.2: resolution: {integrity: sha512-a4eg4yhp7mmruZDQFqVMlxNRFGi/i1r87pt8SDHy0/I8PqSXoUTlWZRdAZo0VXgvEARcujbtTk8kiZRi1uDGRw==} engines: {node: '>=8.0.0'} @@ -5078,22 +5626,22 @@ packages: /autolinker@4.0.0: resolution: {integrity: sha512-fl5Kh6BmEEZx+IWBfEirnRUU5+cOiV0OK7PEt0RBKvJMJ8GaRseIOeDU3FKf4j3CE5HVefcjHmhYPOcaVt0bZw==} dependencies: - tslib: 2.6.0 + tslib: 2.6.2 dev: false /autoprefixer@6.7.7: resolution: {integrity: sha512-WKExI/eSGgGAkWAO+wMVdFObZV7hQen54UpD1kCCTN3tvlL3W1jL4+lPP/M7MwoP7Q4RHzKtO3JQ4HxYEcd+xQ==} dependencies: browserslist: 1.7.7 - caniuse-db: 1.0.30001509 + caniuse-db: 1.0.30001534 normalize-range: 0.1.2 num2fraction: 1.2.2 postcss: 5.2.18 postcss-value-parser: 3.3.1 dev: true - /autosize@5.0.2: - resolution: {integrity: sha512-FPVt5ynkqUAA9gcMZnJHka1XfQgr1WNd/yRfIjmj5WGmjua+u5Hl9hn8M2nU5CNy2bEIcj1ZUwXq7IOHsfZG9w==} + /autosize@6.0.1: + resolution: {integrity: sha512-f86EjiUKE6Xvczc4ioP1JBlWG7FKrE13qe/DxBCpe8GCipCq2nFw73aO8QEBKHfSbYGDN5eB9jXWKen7tspDqQ==} dev: true /autwh@0.1.0: @@ -5112,15 +5660,15 @@ packages: '@ava/typescript': optional: true dependencies: - acorn: 8.9.0 + acorn: 8.10.0 acorn-walk: 8.2.0 ansi-styles: 6.2.1 arrgv: 1.0.2 arrify: 3.0.0 - callsites: 4.0.0 + callsites: 4.1.0 cbor: 8.1.0 - chalk: 5.2.0 - chokidar: 3.3.1 + chalk: 5.3.0 + chokidar: 3.5.3 chunkd: 2.0.1 ci-info: 3.8.0 ci-parallel-vars: 1.0.1 @@ -5131,10 +5679,10 @@ packages: concordance: 5.0.4 currently-unhandled: 0.4.1 debug: 4.3.4(supports-color@8.1.1) - del: 7.0.0 + del: 7.1.0 emittery: 1.0.1 figures: 5.0.0 - globby: 13.2.0 + globby: 13.2.2 ignore-by-default: 2.1.0 indent-string: 5.0.0 is-error: 2.2.2 @@ -5165,8 +5713,8 @@ packages: resolution: {integrity: sha512-DMD0KiN46eipeziST1LPP/STfDU0sufISXmjSgvVsoU2tqxctQeASejWcfNtxYKqETM1UxQ8sp2OrSBWpHY6sw==} engines: {node: '>= 0.4'} - /aws-sdk@2.1277.0: - resolution: {integrity: sha512-cEZ0rg0j3STtLX6rba5tHMrV/KrhXKLtSleleF2IdTFzUjqRvxI54Pqc51w2D7tgAPUgEhMB4Q/ruKPqB8w+2Q==} + /aws-sdk@2.1413.0: + resolution: {integrity: sha512-vKpjC7iRwOhgv7P0xw90mVGO//2rqVPJKyYIs7uxLzSV0JzriVD+yqktOu/Hz6/phOmAd1cMIeFgpEC9ynrppg==} engines: {node: '>= 10.0.0'} dependencies: buffer: 4.9.2 @@ -5178,7 +5726,7 @@ packages: url: 0.10.3 util: 0.12.5 uuid: 8.0.0 - xml2js: 0.4.19 + xml2js: 0.5.0 dev: false /aws-sign2@0.7.0: @@ -5213,8 +5761,8 @@ packages: - debug dev: false - /axios@1.4.0: - resolution: {integrity: sha512-S4XCWMEmzvo64T9GfvQDOXgYRDJ/wsSZc7Jvdgx5u1sd0JwsuPLqb3SYmusag+edF6ziyMensPVqLTSc1PiSEA==} + /axios@1.5.0: + resolution: {integrity: sha512-D4DdjDo5CY50Qms0qGQTTw6Q44jl7zRwY7bthds06pUGfChBCTcQs+N743eFWGEd6pRTMd6A+I87aWyFV5wiZQ==} dependencies: follow-redirects: 1.15.2(debug@4.3.4) form-data: 4.0.0 @@ -5223,36 +5771,22 @@ packages: - debug dev: false - /babel-eslint@10.1.0(eslint@8.42.0): - resolution: {integrity: sha512-ifWaTHQ0ce+448CYop8AdrQiBsGrnC+bMgfyKFdi6EsPLTAWG+QfyDeM6OH+FmWnKvEq5NnBMLvlBUPKQZoDSg==} - engines: {node: '>=6'} - deprecated: babel-eslint is now @babel/eslint-parser. This package will no longer receive updates. - peerDependencies: - eslint: '>= 4.12.1' - dependencies: - '@babel/code-frame': 7.22.5 - '@babel/parser': 7.22.5 - '@babel/traverse': 7.22.5 - '@babel/types': 7.22.5 - eslint: 8.42.0 - eslint-visitor-keys: 1.3.0 - resolve: 1.22.2 - transitivePeerDependencies: - - supports-color + /b4a@1.6.4: + resolution: {integrity: sha512-fpWrvyVHEKyeEvbKZTVOeZF3VSKKWtJxFIxX/jaVPf+cLbGUSitjb49pHLqPV2BUNNZ0LcoeEGfE/YCpyDYHIw==} dev: false - /babel-jest@27.5.1(@babel/core@7.22.5): + /babel-jest@27.5.1(@babel/core@7.22.20): resolution: {integrity: sha512-cdQ5dXjGRd0IBRATiQ4mZGlGlRE8kJpjPOixdNRdT+m3UcNqmYWN6rK6nvtXYfY3D76cb8s/O1Ss8ea24PIwcg==} engines: {node: ^10.13.0 || ^12.13.0 || ^14.15.0 || >=15.0.0} peerDependencies: '@babel/core': ^7.8.0 dependencies: - '@babel/core': 7.22.5 + '@babel/core': 7.22.20 '@jest/transform': 27.5.1 '@jest/types': 27.5.1 - '@types/babel__core': 7.20.1 + '@types/babel__core': 7.20.2 babel-plugin-istanbul: 6.1.1 - babel-preset-jest: 27.5.1(@babel/core@7.22.5) + babel-preset-jest: 27.5.1(@babel/core@7.22.20) chalk: 4.1.2 graceful-fs: 4.2.11 slash: 3.0.0 @@ -5260,17 +5794,17 @@ packages: - supports-color dev: true - /babel-jest@29.6.0(@babel/core@7.22.5): - resolution: {integrity: sha512-Jj8Bq2yKsk11XLk06Nm8SdvYkAcecH+GuhxB8DnK5SncjHnJ88TQjSnGgE7jpajpnSvz9DZ6X8hXrDkD/6/TPQ==} + /babel-jest@29.7.0(@babel/core@7.22.20): + resolution: {integrity: sha512-BrvGY3xZSwEcCzKvKsCi2GgHqDqsYkOP4/by5xCgIwGXQxIEh+8ew3gmrE1y7XRR6LHZIj6yLYnUi/mm2KXKBg==} engines: {node: ^14.15.0 || ^16.10.0 || >=18.0.0} peerDependencies: '@babel/core': ^7.8.0 dependencies: - '@babel/core': 7.22.5 - '@jest/transform': 29.6.0 - '@types/babel__core': 7.20.1 + '@babel/core': 7.22.20 + '@jest/transform': 29.7.0 + '@types/babel__core': 7.20.2 babel-plugin-istanbul: 6.1.1 - babel-preset-jest: 29.5.0(@babel/core@7.22.5) + babel-preset-jest: 29.6.3(@babel/core@7.22.20) chalk: 4.1.2 graceful-fs: 4.2.11 slash: 3.0.0 @@ -5295,69 +5829,69 @@ packages: resolution: {integrity: sha512-50wCwD5EMNW4aRpOwtqzyZHIewTYNxLA4nhB+09d8BIssfNfzBRhkBIHiaPv1Si226TQSvp8gxAJm2iY2qs2hQ==} engines: {node: ^10.13.0 || ^12.13.0 || ^14.15.0 || >=15.0.0} dependencies: - '@babel/template': 7.22.5 - '@babel/types': 7.22.5 - '@types/babel__core': 7.20.1 - '@types/babel__traverse': 7.20.1 + '@babel/template': 7.22.15 + '@babel/types': 7.22.19 + '@types/babel__core': 7.20.2 + '@types/babel__traverse': 7.20.2 dev: true - /babel-plugin-jest-hoist@29.5.0: - resolution: {integrity: sha512-zSuuuAlTMT4mzLj2nPnUm6fsE6270vdOfnpbJ+RmruU75UhLFvL0N2NgI7xpeS7NaB6hGqmd5pVpGTDYvi4Q3w==} + /babel-plugin-jest-hoist@29.6.3: + resolution: {integrity: sha512-ESAc/RJvGTFEzRwOTT4+lNDk/GNHMkKbNzsvT0qKRfDyyYTskxB5rnU2njIDYVxXCBHHEI1c0YwHob3WaYujOg==} engines: {node: ^14.15.0 || ^16.10.0 || >=18.0.0} dependencies: - '@babel/template': 7.22.5 - '@babel/types': 7.22.5 - '@types/babel__core': 7.20.1 - '@types/babel__traverse': 7.20.1 + '@babel/template': 7.22.15 + '@babel/types': 7.22.19 + '@types/babel__core': 7.20.2 + '@types/babel__traverse': 7.20.2 dev: true - /babel-preset-current-node-syntax@1.0.1(@babel/core@7.22.5): + /babel-preset-current-node-syntax@1.0.1(@babel/core@7.22.20): resolution: {integrity: sha512-M7LQ0bxarkxQoN+vz5aJPsLBn77n8QgTFmo8WK0/44auK2xlCXrYcUxHFxgU7qW5Yzw/CjmLRK2uJzaCd7LvqQ==} peerDependencies: '@babel/core': ^7.0.0 dependencies: - '@babel/core': 7.22.5 - '@babel/plugin-syntax-async-generators': 7.8.4(@babel/core@7.22.5) - '@babel/plugin-syntax-bigint': 7.8.3(@babel/core@7.22.5) - '@babel/plugin-syntax-class-properties': 7.12.13(@babel/core@7.22.5) - '@babel/plugin-syntax-import-meta': 7.10.4(@babel/core@7.22.5) - '@babel/plugin-syntax-json-strings': 7.8.3(@babel/core@7.22.5) - '@babel/plugin-syntax-logical-assignment-operators': 7.10.4(@babel/core@7.22.5) - '@babel/plugin-syntax-nullish-coalescing-operator': 7.8.3(@babel/core@7.22.5) - '@babel/plugin-syntax-numeric-separator': 7.10.4(@babel/core@7.22.5) - '@babel/plugin-syntax-object-rest-spread': 7.8.3(@babel/core@7.22.5) - '@babel/plugin-syntax-optional-catch-binding': 7.8.3(@babel/core@7.22.5) - '@babel/plugin-syntax-optional-chaining': 7.8.3(@babel/core@7.22.5) - '@babel/plugin-syntax-top-level-await': 7.14.5(@babel/core@7.22.5) + '@babel/core': 7.22.20 + '@babel/plugin-syntax-async-generators': 7.8.4(@babel/core@7.22.20) + '@babel/plugin-syntax-bigint': 7.8.3(@babel/core@7.22.20) + '@babel/plugin-syntax-class-properties': 7.12.13(@babel/core@7.22.20) + '@babel/plugin-syntax-import-meta': 7.10.4(@babel/core@7.22.20) + '@babel/plugin-syntax-json-strings': 7.8.3(@babel/core@7.22.20) + '@babel/plugin-syntax-logical-assignment-operators': 7.10.4(@babel/core@7.22.20) + '@babel/plugin-syntax-nullish-coalescing-operator': 7.8.3(@babel/core@7.22.20) + '@babel/plugin-syntax-numeric-separator': 7.10.4(@babel/core@7.22.20) + '@babel/plugin-syntax-object-rest-spread': 7.8.3(@babel/core@7.22.20) + '@babel/plugin-syntax-optional-catch-binding': 7.8.3(@babel/core@7.22.20) + '@babel/plugin-syntax-optional-chaining': 7.8.3(@babel/core@7.22.20) + '@babel/plugin-syntax-top-level-await': 7.14.5(@babel/core@7.22.20) dev: true - /babel-preset-jest@27.5.1(@babel/core@7.22.5): + /babel-preset-jest@27.5.1(@babel/core@7.22.20): resolution: {integrity: sha512-Nptf2FzlPCWYuJg41HBqXVT8ym6bXOevuCTbhxlUpjwtysGaIWFvDEjp4y+G7fl13FgOdjs7P/DmErqH7da0Ag==} engines: {node: ^10.13.0 || ^12.13.0 || ^14.15.0 || >=15.0.0} peerDependencies: '@babel/core': ^7.0.0 dependencies: - '@babel/core': 7.22.5 + '@babel/core': 7.22.20 babel-plugin-jest-hoist: 27.5.1 - babel-preset-current-node-syntax: 1.0.1(@babel/core@7.22.5) + babel-preset-current-node-syntax: 1.0.1(@babel/core@7.22.20) dev: true - /babel-preset-jest@29.5.0(@babel/core@7.22.5): - resolution: {integrity: sha512-JOMloxOqdiBSxMAzjRaH023/vvcaSaec49zvg+2LmNsktC7ei39LTJGw02J+9uUtTZUq6xbLyJ4dxe9sSmIuAg==} + /babel-preset-jest@29.6.3(@babel/core@7.22.20): + resolution: {integrity: sha512-0B3bhxR6snWXJZtR/RliHTDPRgn1sNHOR0yVtq/IiQFyuOVjFS+wuio/R4gSNkyYmKmJB4wGZv2NZanmKmTnNA==} engines: {node: ^14.15.0 || ^16.10.0 || >=18.0.0} peerDependencies: '@babel/core': ^7.0.0 dependencies: - '@babel/core': 7.22.5 - babel-plugin-jest-hoist: 29.5.0 - babel-preset-current-node-syntax: 1.0.1(@babel/core@7.22.5) + '@babel/core': 7.22.20 + babel-plugin-jest-hoist: 29.6.3 + babel-preset-current-node-syntax: 1.0.1(@babel/core@7.22.20) dev: true /babel-walk@3.0.0-canary-5: resolution: {integrity: sha512-GAwkz0AihzY5bkwIY5QDR+LvsRQgB/B+1foMPvi0FZPMl5fjD7ICiznUiBdLYMH1QYe6vqu4gWYytZOccLouFw==} engines: {node: '>= 10.0.0'} dependencies: - '@babel/types': 7.22.5 + '@babel/types': 7.22.19 /bach@1.2.0: resolution: {integrity: sha512-bZOOfCb3gXBXbTFXq3OZtGR88LwGeJvzu6szttaIzymOTS4ZttBNOWSv7aLZja2EMycKtRYV0Oa8SNKH/zkxvg==} @@ -5406,6 +5940,11 @@ packages: resolution: {integrity: sha512-V/Hy/X9Vt7f3BbPJEi8BdVFMByHi+jNXrYkW3huaybV/kQ0KJg0Y6PkEMbn+zeT+i+SiKZ/HMqJGIIt4LZDqNQ==} dev: false + /big-integer@1.6.51: + resolution: {integrity: sha512-GPEid2Y9QU1Exl1rpO9B2IPJGHPSupF5GnVIP0blYvNOMer2bTvSWs1jGOUg04hTmu67nmLsQ9TBo1puaotBHg==} + engines: {node: '>=0.6'} + dev: true + /big.js@5.2.2: resolution: {integrity: sha512-vyL2OymJxmarO8gxMr0mhChsO9QGwhynfuu4+MHTAW6czfq9humCB7rKpUjDd9YUiDPU4mzpyupFSvOClAwbmQ==} dev: true @@ -5423,7 +5962,7 @@ packages: engines: {node: '>=12'} dependencies: bin-version: 6.0.0 - semver: 7.5.3 + semver: 7.5.4 semver-truncate: 3.0.0 dev: true @@ -5444,13 +5983,19 @@ packages: engines: {node: '>=0.8'} dev: true + /bl@1.2.3: + resolution: {integrity: sha512-pvcNpa0UU69UT341rO6AYy4FVAIkUHuZXRIWbq+zHnsVcRzDDjIAhGuuYoi0d//cwIwtt4pkpKycWEfjdV+vww==} + dependencies: + readable-stream: 2.3.8 + safe-buffer: 5.2.1 + dev: false + /bl@4.1.0: resolution: {integrity: sha512-1W07cM9gS6DcLperZfFSj+bWLtaPGSOHWhPiGzXmvVJbRLdG82sH/Kn8EtW1VqWVA54AKf2h5k5BbnIbwF3h6w==} dependencies: buffer: 5.7.1 inherits: 2.0.4 readable-stream: 3.6.2 - dev: false /blob-util@2.0.2: resolution: {integrity: sha512-T7JQa+zsXXEa6/8ZhHcQEW1UFfVM49Ts65uBkFL6fz2QmrElqmbajIDJvuA0tEhRe5eIjpV9ZF+0RfZR9voJFQ==} @@ -5463,8 +6008,8 @@ packages: resolution: {integrity: sha512-DRQrD6gJyy8FbiE4s+bDoXS9hiW3Vbx5uCdwvcCf3zLHL+Iv7LtGHLpr+GZV8rHG8tK766FGYBwRbu8pELTt+w==} dev: true - /blurhash@1.1.5: - resolution: {integrity: sha512-a+LO3A2DfxTaTztsmkbLYmUzUeApi0LZuKalwbNmqAHR6HhJGMt1qSV/R3wc+w4DL28holjqO3Bg74aUGavGjg==} + /blurhash@2.0.5: + resolution: {integrity: sha512-cRygWd7kGBQO3VEhPiTgq4Wc43ctsM+o46urrmPOiuAe+07fzlSB9OJVdpgDL0jPqXUVQ9ht7aq7kxOeJHRK+w==} /bmp-js@0.1.0: resolution: {integrity: sha512-vHdS19CnY3hwiNdkaqk93DvjVLfbEcI8mys4UjuWrlX1haDmroo8o4xCzh4wD6DGV6HxRCyauwhHRqMTfERtjw==} @@ -5476,7 +6021,13 @@ packages: /boolbase@1.0.0: resolution: {integrity: sha512-JZOSA7Mo9sNGB8+UjSgzdLtokWAky1zbztM3WRLCbZ70/3cTANmQmOdR7y2g+J0e2WXywy1yS468tY+IruqEww==} - dev: false + + /bplist-parser@0.2.0: + resolution: {integrity: sha512-z0M+byMThzQmD9NILRniCUXYsYpjwnlO8N5uCFaCqIOpqRsJCrQL9NK3JsD67CN5a08nF5oIL2bD6loTdHOuKw==} + engines: {node: '>= 5.10.0'} + dependencies: + big-integer: 1.6.51 + dev: true /brace-expansion@1.1.11: resolution: {integrity: sha512-iCuPHDFgrHX7H2vEI/5xpz07zSHB00TpugqhmYtVmMO6518mCuRMoOYFldEBl0g187ufozdaHgWKcYFb61qGiA==} @@ -5513,13 +6064,12 @@ packages: dependencies: fill-range: 7.0.1 - /broadcast-channel@4.19.1: - resolution: {integrity: sha512-CroDV8L4QdMuCHtjs0AATaN2w1rA5e6ca9a3yZATmAs3lbFu3q3QkITkuMS4sQ/NjtZwkVANXLlhgyQfiukBuw==} + /broadcast-channel@5.3.0: + resolution: {integrity: sha512-0PmDYc/iUGZ4QbnCnV7u+WleygiS1bZ4oV6t4rANXYtSgEFtGhB5jimJPLOVpPtce61FVxrH8CYylfO5g7OLKw==} dependencies: - '@babel/runtime': 7.20.7 + '@babel/runtime': 7.22.10 oblivious-set: 1.1.1 p-queue: 6.6.2 - rimraf: 3.0.2 unload: 2.4.1 dev: true @@ -5531,24 +6081,30 @@ packages: resolution: {integrity: sha512-qhAVI1+Av2X7qelOfAIYwXONood6XlZE/fXaBSmW/T5SzLAmCgzi+eiWE7fUvbHaeNBQH13UftjpXxsfLkMpgw==} dev: true + /browserify-zlib@0.1.4: + resolution: {integrity: sha512-19OEpq7vWgsH6WkvkBJQDFvJS1uPcbFOQ4v9CU839dO+ZZXUZO6XpE6hNCqvlIIj+4fZvRiJ6DsAQ382GwiyTQ==} + dependencies: + pako: 0.2.9 + dev: false + /browserslist@1.7.7: resolution: {integrity: sha512-qHJblDE2bXVRYzuDetv/wAeHOJyO97+9wxC1cdCtyzgNuSozOyRCiiLaCR1f71AN66lQdVVBipWm63V+a7bPOw==} deprecated: Browserslist 2 could fail on reading Browserslist >3.0 config used in other tools. hasBin: true dependencies: - caniuse-db: 1.0.30001509 - electron-to-chromium: 1.4.442 + caniuse-db: 1.0.30001534 + electron-to-chromium: 1.4.523 dev: true - /browserslist@4.21.9: - resolution: {integrity: sha512-M0MFoZzbUrRU4KNfCrDLnvyE7gub+peetoTid3TBIqtunaDJyXlwhakT+/VkvSXcfIzFfK/nkCs4nmyTmxdNSg==} + /browserslist@4.21.10: + resolution: {integrity: sha512-bipEBdZfVH5/pwrvqc+Ub0kUPVfGUhlKxbvfD+z1BDnPEO/X98ruXGA1WP5ASpAFKan7Qr6j736IacbZQuAlKQ==} engines: {node: ^6 || ^7 || ^8 || ^9 || ^10 || ^11 || ^12 || >=13.7} hasBin: true dependencies: - caniuse-lite: 1.0.30001509 - electron-to-chromium: 1.4.442 - node-releases: 2.0.12 - update-browserslist-db: 1.0.11(browserslist@4.21.9) + caniuse-lite: 1.0.30001534 + electron-to-chromium: 1.4.523 + node-releases: 2.0.13 + update-browserslist-db: 1.0.11(browserslist@4.21.10) /bs-logger@0.2.6: resolution: {integrity: sha512-pd8DCoxmbgc7hyPKOvxtqNcjYoOsABPQdcCUjGp3d42VR2CX1ORhk2A87oqqu5R1kk+76nsxZupkmyd+MVtCog==} @@ -5563,6 +6119,17 @@ packages: node-int64: 0.4.0 dev: true + /buffer-alloc-unsafe@1.1.0: + resolution: {integrity: sha512-TEM2iMIEQdJ2yjPJoSIsldnleVaAk1oW3DBVUykyOLsEsFmEc9kn+SFFPz+gl54KQNxlDnAwCXosOS9Okx2xAg==} + dev: false + + /buffer-alloc@1.2.0: + resolution: {integrity: sha512-CFsHQgjtW1UChdXgbyJGtnm+O/uLQeZdtbDo8mfUgYXCHSM1wgrVxXm6bSyrUuErEb+4sYVGCzASBRot7zyrow==} + dependencies: + buffer-alloc-unsafe: 1.1.0 + buffer-fill: 1.0.0 + dev: false + /buffer-crc32@0.2.13: resolution: {integrity: sha512-VO9Ht/+p3SN7SKWqcrgEzjGbRSJYTx+Q1pTQC0wrWqHx0vpJraQ6GtHx8tvcg1rlK1byhU5gccxgOgj7B0TDkQ==} @@ -5575,6 +6142,10 @@ packages: engines: {node: '>=0.4'} dev: true + /buffer-fill@1.0.0: + resolution: {integrity: sha512-T7zexNBwiiaCOGDg9xNX9PBmjrubblRkENuptryuI64URkXDFum9il/JGL8Lm8wYfAXpredVXXZz7eMHilimiQ==} + dev: false + /buffer-from@1.1.2: resolution: {integrity: sha512-E+XQCRwSbaaiChtv6k6Dwgc+bx+Bs6vuKJHHl5kox/BaKbhiXzqQOwK4cO22yElGp2OCmjwVhT3HmxgyPGnJfQ==} @@ -5609,25 +6180,42 @@ packages: engines: {node: '>=6.14.2'} requiresBuild: true dependencies: - node-gyp-build: 4.6.0 + node-gyp-build: 4.6.1 dev: false - /bull@4.10.4: - resolution: {integrity: sha512-o9m/7HjS/Or3vqRd59evBlWCXd9Lp+ALppKseoSKHaykK46SmRjAilX98PgmOz1yeVaurt8D5UtvEt4bUjM3eA==} + /builtin-modules@3.3.0: + resolution: {integrity: sha512-zhaCDicdLuWN5UbN5IMnFqNMhNfo919sH85y2/ea+5Yg9TsTkeZxpL+JLbp6cgYFS4sRLp3YV4S6yDuqVWHYOw==} + engines: {node: '>=6'} + dev: true + + /builtins@5.0.1: + resolution: {integrity: sha512-qwVpFEHNfhYJIzNRBvd2C1kyo6jz3ZSMPyyuR47OPdiKWlbYnZNyDWuyR175qDnAJLiCo5fBBqPb3RiXgWlkOQ==} + dependencies: + semver: 7.5.4 + dev: true + + /bull@4.11.3: + resolution: {integrity: sha512-DhS0XtiAuejkAY08iGOdDK35eex/yGNoezlWqGJTu9FqWFF/oBjUhpsusE9SXiI4culyDbOoFs+l3ar0VXhFqQ==} engines: {node: '>=12'} dependencies: - cron-parser: 4.8.1 - debuglog: 1.0.1 + cron-parser: 4.9.0 get-port: 5.1.1 ioredis: 5.3.2 lodash: 4.17.21 - msgpackr: 1.9.5 - semver: 7.5.1 + msgpackr: 1.9.7 + semver: 7.5.4 uuid: 8.3.2 transitivePeerDependencies: - supports-color dev: false + /bundle-name@3.0.0: + resolution: {integrity: sha512-PKA4BeSvBpQKQ8iPOGCSiell+N8P+Tf1DlwqmYhpe2gAhKPHn8EYOxVT+ShuGmhg8lN8XiSlS80yiExKXrURlw==} + engines: {node: '>=12'} + dependencies: + run-applescript: 5.0.0 + dev: true + /busboy@1.6.0: resolution: {integrity: sha512-8SFQbg/0hQ9xy3UNTB0YEnsNBbWfhf7RtnzpL7TkBiTBRfrQ9Fxcnz7VJsleJpyp6rVLvXiuORqjlHi5q+PYuA==} engines: {node: '>=10.16.0'} @@ -5640,21 +6228,21 @@ packages: engines: {node: '>= 0.8'} dev: false - /cacache@17.1.3: - resolution: {integrity: sha512-jAdjGxmPxZh0IipMdR7fK/4sDSrHMLUV0+GvVUsjwyGNKHsh79kW/otg+GkbXwl6Uzvy9wsvHOX4nUoWldeZMg==} + /cacache@17.1.4: + resolution: {integrity: sha512-/aJwG2l3ZMJ1xNAnqbMpA40of9dj/pIH3QfiuQSqjfPJF747VR0J/bHn+/KdNnHKc6XQcWt/AfRSBft82W1d2A==} engines: {node: ^14.17.0 || ^16.13.0 || >=18.0.0} dependencies: '@npmcli/fs': 3.1.0 - fs-minipass: 3.0.2 - glob: 10.3.1 + fs-minipass: 3.0.3 + glob: 10.3.4 lru-cache: 7.18.3 - minipass: 5.0.0 + minipass: 7.0.3 minipass-collect: 1.0.2 minipass-flush: 1.0.5 minipass-pipeline: 1.2.4 p-map: 4.0.0 - ssri: 10.0.4 - tar: 6.1.15 + ssri: 10.0.5 + tar: 6.2.0 unique-filename: 3.0.0 dev: false @@ -5690,14 +6278,14 @@ packages: engines: {node: '>=14.16'} dev: false - /cacheable-request@10.2.12: - resolution: {integrity: sha512-qtWGB5kn2OLjx47pYUkWicyOpK1vy9XZhq8yRTXOy+KAmjjESSRLx6SiExnnaGGUP1NM6/vmygMu0fGylNh9tw==} + /cacheable-request@10.2.13: + resolution: {integrity: sha512-3SD4rrMu1msNGEtNSt8Od6enwdo//U9s4ykmXfA2TD58kcLkCobtCDiby7kNyj7a/Q7lz/mAesAFI54rTdnvBA==} engines: {node: '>=14.16'} dependencies: - '@types/http-cache-semantics': 4.0.1 + '@types/http-cache-semantics': 4.0.2 get-stream: 6.0.1 http-cache-semantics: 4.1.1 - keyv: 4.5.2 + keyv: 4.5.3 mimic-response: 4.0.0 normalize-url: 8.0.0 responselike: 3.0.0 @@ -5710,13 +6298,13 @@ packages: clone-response: 1.0.3 get-stream: 5.2.0 http-cache-semantics: 4.1.1 - keyv: 4.5.2 + keyv: 4.5.3 lowercase-keys: 2.0.0 normalize-url: 6.1.0 responselike: 2.0.1 - /cachedir@2.3.0: - resolution: {integrity: sha512-A+Fezp4zxnit6FanDmv9EqXNAi3vt9DWp51/71UEhXukb7QUuvtv9344h91dyAxuTLoSYJFU299qzR3tzwPAhw==} + /cachedir@2.4.0: + resolution: {integrity: sha512-9EtFOZR8g22CL7BWjJ9BUx1+A/djkofnyW3aOXZORNW2kxoUpx2h+uN2cOqwPmFhnpVmxg+KW2OjOSgChTEvsQ==} engines: {node: '>=6'} dev: true @@ -5729,9 +6317,10 @@ packages: /callsites@3.1.0: resolution: {integrity: sha512-P8BjAsXvZS+VIDUI11hHCQEv74YT67YUi5JJFNWIqL235sBmjX4+qx9Muvls5ivyNENctx46xQLQ3aTuE7ssaQ==} engines: {node: '>=6'} + dev: true - /callsites@4.0.0: - resolution: {integrity: sha512-y3jRROutgpKdz5vzEhWM34TidDU8vkJppF8dszITeb1PQmSqV3DTxyV8G/lyO/DNvtE1YTedehmw9MPZsCBHxQ==} + /callsites@4.1.0: + resolution: {integrity: sha512-aBMbD1Xxay75ViYezwT40aQONfr+pSXTHwNKvIXhXD6+LY3F1dLIcceoC5OZKBVHbXcysz1hL9D2w0JJIMXpUw==} engines: {node: '>=12.20'} dev: true @@ -5762,17 +6351,17 @@ packages: resolution: {integrity: sha512-SBTl70K0PkDUIebbkXrxWqZlHNs0wRgRD6QZ8guctShjbh63gEPfF+Wj0Yw+75f5Y8tSzqAI/NcisYv/cCah2Q==} dependencies: browserslist: 1.7.7 - caniuse-db: 1.0.30001509 + caniuse-db: 1.0.30001534 lodash.memoize: 4.1.2 lodash.uniq: 4.5.0 dev: true - /caniuse-db@1.0.30001509: - resolution: {integrity: sha512-Gf3pFp97loixG5w83NVb09DMI+WzkVXLn4H2abxv7DXxHUyKYbZc5qpEqAQy/mDFO6bAnNQh4hZ8lLeGlPTZQg==} + /caniuse-db@1.0.30001534: + resolution: {integrity: sha512-c9MwxCx5880yBLBOUg0iMq65f/0MimUwFS5YqXN+bksCsfZBLbGN/lFyr9rcbAnJZZrBD55fh/zU0uZounCDLg==} dev: true - /caniuse-lite@1.0.30001509: - resolution: {integrity: sha512-2uDDk+TRiTX5hMcUYT/7CSyzMZxjfGu0vAUjS2g0LSD8UoXOv0LtpH4LxGMemsiPq6LCVIUjNwVM0erkOkGCDA==} + /caniuse-lite@1.0.30001534: + resolution: {integrity: sha512-vlPVrhsCS7XaSh2VvWluIQEzVhefrUQcEsQWSS5A5V+dM07uv1qHeQzAOTGIMy9i3e9bH15+muvI/UHojVgS/Q==} /canonicalize@1.0.8: resolution: {integrity: sha512-0CNTVCLZggSh7bc5VkX5WWPWO+cyZbNd07IHIsSXLia/eAq+r836hgk+8BKoEh7949Mda87VUOitx5OddVj64A==} @@ -5786,6 +6375,7 @@ packages: engines: {node: '>=12.19'} dependencies: nofilter: 3.1.0 + dev: true /chalk-template@0.4.0: resolution: {integrity: sha512-/ghrgmhfY8RaSdeo43hNXxpoHAtxdbskUHjPpfqUWGttFgycUhYPGx3YZBCnUCvOa7Doivn1IZec3DEGFoMgLg==} @@ -5827,62 +6417,74 @@ packages: ansi-styles: 4.3.0 supports-color: 7.2.0 - /chalk@5.2.0: - resolution: {integrity: sha512-ree3Gqw/nazQAPuJJEy+avdl7QfZMcUvmHIKgEZkGL+xOBzRvup5Hxo6LHuMceSxOabuJLJm5Yp/92R9eMmMvA==} + /chalk@5.3.0: + resolution: {integrity: sha512-dLitG79d+GV1Nb/VYcCDFivJeK1hiukt9QjRNVOsUtTy1rR1YJsmpGGTZ3qJos+uw7WmWF4wUwBd9jxjocFC2w==} engines: {node: ^12.17.0 || ^14.13 || >=16.0.0} /char-regex@1.0.2: resolution: {integrity: sha512-kWWXztvZ5SBQV+eRgKFeh8q5sLuZY2+8WUIzlxWVTg+oGwY14qylx1KbKzHd8P6ZYkAg0xyIDU9JMHhyJMZ1jw==} engines: {node: '>=10'} + /character-entities-legacy@1.1.4: + resolution: {integrity: sha512-3Xnr+7ZFS1uxeiUDvV02wQ+QDbc55o97tIV5zHScSPJpcLm/r0DFPcoY3tYRp+VZukxuMeKgXYmsXQHO05zQeA==} + dev: true + + /character-entities@1.2.4: + resolution: {integrity: sha512-iBMyeEHxfVnIakwOuDXpVkc54HijNgCyQB2w0VfGQThle6NXn50zU6V/u+LDhxHcDUPojn6Kpga3PTAD8W1bQw==} + dev: true + /character-parser@2.2.0: resolution: {integrity: sha512-+UqJQjFEFaTAs3bNsF2j2kEN1baG/zghZbdqoYEDxGZtJo9LBzl1A+m0D4n3qKx8N2FNv8/Xp6yV9mQmBuptaw==} dependencies: is-regex: 1.1.4 + /character-reference-invalid@1.1.4: + resolution: {integrity: sha512-mKKUkUbhPpQlCOfIuZkvSEgktjPFIsZKRRbC6KWVEMvlzblj3i3asQv5ODsrwt0N3pHAEvjP8KTQPHkp0+6jOg==} + dev: true + /charenc@0.0.2: resolution: {integrity: sha512-yrLQ/yVUFXkzg7EDQsPieE/53+0RlaWTs+wBrvW36cyilJ2SaDWfl4Yj7MtLTXleV9uEKefbAGUPv2/iWSooRA==} dev: true - /chart.js@4.3.0: - resolution: {integrity: sha512-ynG0E79xGfMaV2xAHdbhwiPLczxnNNnasrmPEXriXsPJGjmhOBYzFVEsB65w2qMDz+CaBJJuJD0inE/ab/h36g==} + /chart.js@4.4.0: + resolution: {integrity: sha512-vQEj6d+z0dcsKLlQvbKIMYFHd3t8W/7L2vfJIbYcfyPcRx92CsHqECpueN8qVGNlKyDcr5wBrYAYKnfu/9Q1hQ==} engines: {pnpm: '>=7'} dependencies: '@kurkle/color': 0.3.2 dev: true - /chartjs-adapter-date-fns@3.0.0(chart.js@4.3.0)(date-fns@2.30.0): + /chartjs-adapter-date-fns@3.0.0(chart.js@4.4.0)(date-fns@2.30.0): resolution: {integrity: sha512-Rs3iEB3Q5pJ973J93OBTpnP7qoGwvq3nUnoMdtxO+9aoJof7UFcRbWcIDteXuYd1fgAvct/32T9qaLyLuZVwCg==} peerDependencies: chart.js: '>=2.8.0' date-fns: '>=2.0.0' dependencies: - chart.js: 4.3.0 + chart.js: 4.4.0 date-fns: 2.30.0 dev: true - /chartjs-chart-matrix@2.0.1(chart.js@4.3.0): + /chartjs-chart-matrix@2.0.1(chart.js@4.4.0): resolution: {integrity: sha512-BGfeY+/PHnITyDlc7WfnKJ1RyOfgOzIqWp/gxzzl7pUjyoGzHDcw51qd2xJF9gdT9Def7ZwOnOMm8GJUXDxI0w==} peerDependencies: chart.js: '>=3.0.0' dependencies: - chart.js: 4.3.0 + chart.js: 4.4.0 dev: true - /chartjs-plugin-gradient@0.6.1(chart.js@4.3.0): + /chartjs-plugin-gradient@0.6.1(chart.js@4.4.0): resolution: {integrity: sha512-TGHNIh8KqQMLdb+UfY80cBHYRyOC47eeokmgkeajRdKGbFt462lJiyiq4ZJ25fiM7BGsmzoBLhmVyEw4B3gQxw==} peerDependencies: chart.js: '>=2.6.0' dependencies: - chart.js: 4.3.0 + chart.js: 4.4.0 dev: true - /chartjs-plugin-zoom@2.0.1(chart.js@4.3.0): + /chartjs-plugin-zoom@2.0.1(chart.js@4.4.0): resolution: {integrity: sha512-ogOmLu6e+Q7E1XWOCOz9YwybMslz9qNfGV2a+qjfmqJYpsw5ZMoRHZBUyW+NGhkpQ5PwwPA/+rikHpBZb7PZuA==} peerDependencies: chart.js: '>=3.2.0' dependencies: - chart.js: 4.3.0 + chart.js: 4.4.0 hammerjs: 2.0.8 dev: true @@ -5913,8 +6515,8 @@ packages: lodash.some: 4.6.0 dev: false - /chokidar@3.3.1: - resolution: {integrity: sha512-4QYCEWOcK3OJrxwvyyAOxFuhpvOVCYkr33LPfFNBjAD/w3sEzWsp2BUOkI4l9bHvWioAd0rc6NlHUOEaWkTeqg==} + /chokidar@3.5.3: + resolution: {integrity: sha512-Dr3sfKRP6oTcjf2JmUmFJfeVMvXBdegxB0iVQ5eb2V10uFJUCAS8OByZdVAyVb8xXNz3GjjTgj9kLWsZTqE6kw==} engines: {node: '>= 8.10.0'} dependencies: anymatch: 3.1.3 @@ -5923,9 +6525,9 @@ packages: is-binary-path: 2.1.0 is-glob: 4.0.3 normalize-path: 3.0.0 - readdirp: 3.3.0 + readdirp: 3.6.0 optionalDependencies: - fsevents: 2.1.3 + fsevents: 2.3.3 /chownr@1.1.4: resolution: {integrity: sha512-jJ0bqzaylmJtVnNgzTeSOs8DPavpbYgEr/b0YL8/2GO3xJEhInFmhKMUnEJQjZumK7KXGFhUy89PrsJWlakBVg==} @@ -5981,6 +6583,13 @@ packages: static-extend: 0.1.2 dev: true + /clean-regexp@1.0.0: + resolution: {integrity: sha512-GfisEZEJvzKrmGWkvfhgzcz/BllN1USeqD2V6tg14OAOgaCD2Z/PUEuxnAZ/nPvmaHRG7a8y77p1T/IRQ4D1Hw==} + engines: {node: '>=4'} + dependencies: + escape-string-regexp: 1.0.5 + dev: true + /clean-stack@2.2.0: resolution: {integrity: sha512-4diC9HaTE+KRAMWhDhrGOECgWZxoevMc5TlkObMqNSsVU62PYzXZ/SMTjzyGAFF1YusgxGcSWTEXBhp0CPwQ1A==} engines: {node: '>=6'} @@ -6017,6 +6626,11 @@ packages: yargs: 16.2.0 dev: false + /cli-spinners@2.9.1: + resolution: {integrity: sha512-jHgecW0pxkonBJdrKsqxgRX9AcG+u/5k0Q7WPDfi8AogLAdwxEkyYYNWwZ5GvVFoFx2uiY1eNcSK00fh+1+FyQ==} + engines: {node: '>=6'} + dev: true + /cli-table3@0.6.3: resolution: {integrity: sha512-w5Jac5SykAeZJKntOxJCrm63Eg5/4dhMWIcuTbo9rpE+brgaSZo0RuNJZeOyMgsUdhDeojvgyQLmjI+K50ZGyg==} engines: {node: 10.* || >= 12.*} @@ -6159,8 +6773,8 @@ packages: engines: {node: '>=0.10.0'} dev: true - /collect-v8-coverage@1.0.1: - resolution: {integrity: sha512-iBPtljfCNcTKNAto0KEtDfZ3qzjJvqE3aTGZsbhjSBlorqpXJlaWWtPO35D+ZImoC3KWejX64o+yPGxhWSTzfg==} + /collect-v8-coverage@1.0.2: + resolution: {integrity: sha512-lHl4d5/ONEbLlJvaJNtsF/Lz+WvB07u2ycqTYbdrq7UypDXailES4valYb2eWiJFxZlVmpGekfqoxQhzyFdT4Q==} dev: true /collection-map@1.0.0: @@ -6265,7 +6879,6 @@ packages: /commander@10.0.1: resolution: {integrity: sha512-y4Mg2tXshplEbSGzx7amzPwKKOCGuoSRP/CjEdwwk0FOGlUbq6lKuoyDZTNZkmxHdJtp54hdfY/JUrdL7Xfdug==} engines: {node: '>=14'} - dev: true /commander@2.20.3: resolution: {integrity: sha512-GpVkmM8vF2vQUkj2LvZmD35JxeJOLCwJ9cUkugyk2nuhbv3+mJvpLYYt+0+USMxE+oj+ey/lJEnhZw75x/OMcQ==} @@ -6290,6 +6903,11 @@ packages: engines: {node: ^12.20.0 || >=14} dev: true + /comment-parser@1.4.0: + resolution: {integrity: sha512-QLyTNiZ2KDOibvFPlZ6ZngVsZ/0gYnE6uTXi5aoDg8ed3AkJAz4sEje3Y8a29hQ1s6A99MZXe47fLAXQ1rTqaw==} + engines: {node: '>= 12.0.0'} + dev: true + /common-path-prefix@3.0.0: resolution: {integrity: sha512-QE33hToZseCH3jS0qN96O/bSh3kaw/h+Tq7ngyY9eWDUnTlTNUyqfqvCXioLe5Na5jFsL78ra/wuBU4iuEgd4w==} dev: true @@ -6299,20 +6917,20 @@ packages: engines: {node: '>=4.0.0'} dev: true - /compare-versions@5.0.3: - resolution: {integrity: sha512-4UZlZP8Z99MGEY+Ovg/uJxJuvoXuN4M6B3hKaiackiHrgzQFEe3diJi1mf1PNHbFujM7FvLrK2bpgIaImbtZ1A==} + /compare-versions@6.1.0: + resolution: {integrity: sha512-LNZQXhqUvqUTotpZ00qLSaify3b4VFD588aRr8MKFw4CMUr98ytzCW5wDH5qx/DEY5kCDXcbcRuCqL0szEf2tg==} dev: true /component-emitter@1.3.0: resolution: {integrity: sha512-Rd3se6QB+sO1TwqZjscQrurpEPIfO0/yYnSin6Q/rD3mOutHvUrCAhJub3r90uNb+SESBuE0QYoB90YdfatsRg==} dev: true - /compress-commons@4.1.1: - resolution: {integrity: sha512-QLdDLCKNV2dtoTorqgxngQCMA+gWXkM/Nwu7FpeBhk/RdkzimqC3jueb/FDmaZeXh+uby1jkBqE3xArsLBE5wQ==} + /compress-commons@4.1.2: + resolution: {integrity: sha512-D3uMHtGc/fcO1Gt1/L7i1e33VOvD4A9hfQLP+6ewd+BvG/gQ84Yh4oftEhAdjSMgBgwGL+jsppT7JYNpo6MHHg==} engines: {node: '>= 10'} dependencies: buffer-crc32: 0.2.13 - crc32-stream: 4.0.2 + crc32-stream: 4.0.3 normalize-path: 3.0.0 readable-stream: 3.6.2 dev: false @@ -6339,7 +6957,7 @@ packages: js-string-escape: 1.0.1 lodash: 4.17.21 md5-hex: 3.0.1 - semver: 7.5.1 + semver: 7.5.4 well-known-symbols: 2.0.0 dev: true @@ -6534,8 +7152,8 @@ packages: /constantinople@4.0.1: resolution: {integrity: sha512-vCrqcSIq4//Gx74TXXCGnHpulY1dskqLTFGDmhrGxzeXL8lF8kvXv6mpNWlJj1uD4DW23D4ljAqbY4RRaaUZIw==} dependencies: - '@babel/parser': 7.22.5 - '@babel/types': 7.22.5 + '@babel/parser': 7.22.16 + '@babel/types': 7.22.19 /content-disposition@0.5.4: resolution: {integrity: sha512-FveZTNuGw04cxlAiWbzi6zTAL/lhehaWbTtgluJh4/E95DqMwTmha3KZN1aAWA8cFIhHzMZUvLevkw5Rqk+tSQ==} @@ -6584,8 +7202,13 @@ packages: resolution: {integrity: sha512-3DdaFaU/Zf1AnpLiFDeNCD4TOWe3Zl2RZaTzUvWiIk5ERzcCodOE20Vqq4fzCbNoHURFHT4/us/Lfq+S2zyY4w==} dev: false - /core-js@3.31.0: - resolution: {integrity: sha512-NIp2TQSGfR6ba5aalZD+ZQ1fSxGhDo/s1w0nx3RYzf2pnJxt7YynxFlFScP6eV7+GZsKO95NSjGxyJsU3DZgeQ==} + /core-js@3.29.1: + resolution: {integrity: sha512-+jwgnhg6cQxKYIIjGtAHq2nwUOolo9eoFZ4sHfUH09BLXBgxnH4gA0zEd+t+BO2cNB8idaBtZFcFTRjQJRJmAw==} + requiresBuild: true + dev: false + + /core-js@3.32.2: + resolution: {integrity: sha512-pxXSw1mYZPDGvTQqEc5vgIb83jGQKFGYWY76z4a7weZXUolw3G+OvpZqSRcfYOoOVUQJYEPsWeQK8pKEnUtWxQ==} requiresBuild: true /core-util-is@1.0.2: @@ -6600,29 +7223,48 @@ packages: hasBin: true dev: false - /crc32-stream@4.0.2: - resolution: {integrity: sha512-DxFZ/Hk473b/muq1VJ///PMNLj0ZMnzye9thBpmjpJKCc5eMgB95aK8zCGrGfQ90cWo561Te6HK9D+j4KPdM6w==} + /crc32-stream@4.0.3: + resolution: {integrity: sha512-NT7w2JVU7DFroFdYkeq8cywxrgjPHWkdX1wjpRQXPX5Asews3tA+Ght6lddQO5Mkumffp3X7GEqku3epj2toIw==} engines: {node: '>= 10'} dependencies: crc-32: 1.2.2 readable-stream: 3.6.2 dev: false + /create-jest@29.7.0(@types/node@18.11.18): + resolution: {integrity: sha512-Adz2bdH0Vq3F53KEMJOoftQFutWCukm6J24wbPWRO4k1kMY7gS7ds/uoJkNuV8wDCtWWnuwGcJwpWcih+zEW1Q==} + engines: {node: ^14.15.0 || ^16.10.0 || >=18.0.0} + hasBin: true + dependencies: + '@jest/types': 29.6.3 + chalk: 4.1.2 + exit: 0.1.2 + graceful-fs: 4.2.11 + jest-config: 29.7.0(@types/node@18.11.18) + jest-util: 29.7.0 + prompts: 2.4.2 + transitivePeerDependencies: + - '@types/node' + - babel-plugin-macros + - supports-color + - ts-node + dev: true + /create-require@1.1.1: resolution: {integrity: sha512-dcKFX3jn0MpIaXjisoRvexIJVEKzaq7z2rZKxf+MSr9TkdmHmsU4m2lcLojrj/FHl8mk5VxMmYA+ftRkP/3oKQ==} - /cron-parser@4.8.1: - resolution: {integrity: sha512-jbokKWGcyU4gl6jAfX97E1gDpY12DJ1cLJZmoDzaAln/shZ+S3KBFBuA2Q6WeUN4gJf/8klnV1EfvhA2lK5IRQ==} + /cron-parser@4.9.0: + resolution: {integrity: sha512-p0SaNjrHOnQeR8/VnfGbmg9te2kfyYSQ7Sc/j/6DtPL3JQvKxmjO9TSjNFpujqV3vEYYBvNNvXSxzyksBWAx1Q==} engines: {node: '>=12.0.0'} dependencies: - luxon: 3.3.0 + luxon: 3.4.3 dev: false /cropperjs@2.0.0-beta.2: resolution: {integrity: sha512-jDRSODDGKmi9vp3p/+WXkxMqV/AE+GpSld1U3cHZDRdLy9UykRzurSe8k1dR0TExn45ygCMrv31qkg+K3EeXXw==} dependencies: - '@cropper/elements': 2.0.0-beta.3 - '@cropper/utils': 2.0.0-beta.3 + '@cropper/elements': 2.0.0-beta.4 + '@cropper/utils': 2.0.0-beta.4 dev: true /cross-env@7.0.3: @@ -6633,10 +7275,10 @@ packages: cross-spawn: 7.0.3 dev: true - /cross-fetch@3.1.6: - resolution: {integrity: sha512-riRvo06crlE8HiqOwIpQhxwdOk4fOeR7FVM/wXoxchFEqMNUjvbs3bfo4OTgMEMHzppd4DxFBDbyySj8Cv781g==} + /cross-fetch@3.1.8: + resolution: {integrity: sha512-cvA+JwZoU0Xq+h6WkMvAUqPEYy92Obet6UdKLfW60qn99ftItKjB5T+BkyWOFWe2pUyfQ+IJHmpOTznqk1M6Kg==} dependencies: - node-fetch: 2.6.11 + node-fetch: 2.7.0 transitivePeerDependencies: - encoding @@ -6677,6 +7319,24 @@ packages: resolution: {integrity: sha512-a+EPoD+uZiNfh+5fxw2nO9QwFa6nJe2Or35fGY6Ipw1R3R4AGz1d1TEZrCegvw2YTmZ0jXirGYlzxxpYSHwpEg==} dev: false + /css.escape@1.5.1: + resolution: {integrity: sha512-YUifsXXuknHlUsmlgyY0PKzgPOr7/FjCePfHNt0jxm83wHZi44VDMQ7/fGNkjY3/jV1MC+1CmZbaHzugyeRtpg==} + dev: false + + /css@3.0.0: + resolution: {integrity: sha512-DG9pFfwOrzc+hawpmqX/dHYHJG+Bsdb0klhyi1sDneOgGOXy9wQIC8hzyVp1e4NRYDBdxcylvywPkkXCHAzTyQ==} + dependencies: + inherits: 2.0.4 + source-map: 0.6.1 + source-map-resolve: 0.6.0 + dev: true + + /cssesc@3.0.0: + resolution: {integrity: sha512-/Tb/JcjK111nNScGob5MNtsntNM1aCNUDipB/TkwZFhyDrrE47SOx/18wF2bbjgc3ZzCSKW1T5nt5EbFoAz/Vg==} + engines: {node: '>=4'} + hasBin: true + dev: true + /cssnano@3.10.0: resolution: {integrity: sha512-0o0IMQE0Ezo4b41Yrm8U6Rp9/Ag81vNXY1gZMnT1XhO4DpjEf2utKERqWJbOoz3g1Wdc1d3QSta/cIuJ1wSTEg==} dependencies: @@ -6725,20 +7385,18 @@ packages: /cssom@0.3.8: resolution: {integrity: sha512-b0tGHbfegbhPJpxpiBPU2sCkigAqtM9O121le6bbOlgyV+NyGyCmVfJ6QW9eRjz8CpNfWEOYBIMIGRYkLwsIYg==} + dev: true /cssom@0.4.4: resolution: {integrity: sha512-p3pvU7r1MyyqbTk+WbNJIgJjG2VmTIaB10rI93LzVPrmDJKkzKYMtxxyAvQXR/NS6otuzveI7+7BBq3SjBS2mw==} dev: true - /cssom@0.5.0: - resolution: {integrity: sha512-iKuQcq+NdHqlAcwUY0o/HL69XQrUaQdMjmStJ8JFmUaiiQErlhrmuigkg/CU4E2J0IyUKUrMAgl36TvN67MqTw==} - dev: false - /cssstyle@2.3.0: resolution: {integrity: sha512-AZL67abkUzIuvcHqk7c09cezpGNcxUxU4Ioi/05xHk4DQeTkWmGYftIE6ctU6AEt+Gn4n1lDStOtj7FKycP71A==} engines: {node: '>=8'} dependencies: cssom: 0.3.8 + dev: true /csstype@3.1.2: resolution: {integrity: sha512-I7K1Uu0MBPzaFKg4nI5Q7Vs2t+3gWWW648spaF+Rg7pI9ds18Ugn+lvg4SHczUdKlHI5LWBXyqfS8+DufyBsgQ==} @@ -6767,25 +7425,25 @@ packages: hasBin: true requiresBuild: true dependencies: - '@cypress/request': 2.88.11 + '@cypress/request': 2.88.12 '@cypress/xvfb': 1.2.4(supports-color@8.1.1) - '@types/node': 14.18.52 + '@types/node': 14.18.61 '@types/sinonjs__fake-timers': 8.1.1 '@types/sizzle': 2.3.3 arch: 2.2.0 blob-util: 2.0.2 bluebird: 3.7.2 buffer: 5.7.1 - cachedir: 2.3.0 + cachedir: 2.4.0 chalk: 4.1.2 check-more-types: 2.24.0 cli-cursor: 3.1.0 cli-table3: 0.6.3 commander: 5.1.0 common-tags: 1.8.2 - dayjs: 1.11.8 + dayjs: 1.11.9 debug: 4.3.4(supports-color@8.1.1) - enquirer: 2.3.6 + enquirer: 2.4.1 eventemitter2: 6.4.7 execa: 4.1.0 executable: 4.1.1 @@ -6796,7 +7454,7 @@ packages: is-ci: 3.0.1 is-installed-globally: 0.4.0 lazy-ass: 1.6.0 - listr2: 3.14.0(enquirer@2.3.6) + listr2: 3.14.0(enquirer@2.4.1) lodash: 4.17.21 log-symbols: 4.1.0 minimist: 1.2.8 @@ -6804,7 +7462,7 @@ packages: pretty-bytes: 5.6.0 proxy-from-env: 1.0.0 request-progress: 3.0.0 - semver: 7.5.1 + semver: 7.5.4 supports-color: 8.1.1 tmp: 0.2.1 untildify: 4.0.0 @@ -6840,20 +7498,11 @@ packages: whatwg-url: 8.7.0 dev: true - /data-urls@3.0.2: - resolution: {integrity: sha512-Jy/tj3ldjZJo63sVAvg6LHt2mHvl4V6AgRAmNDtLdm7faqtsx+aJG42rsyCo9JCoRVKwPFzKlIPx3DIibwSIaQ==} - engines: {node: '>=12'} - dependencies: - abab: 2.0.6 - whatwg-mimetype: 3.0.0 - whatwg-url: 11.0.0 - dev: false - /date-fns@2.30.0: resolution: {integrity: sha512-fnULvOpxnC5/Vg3NCiWelDsLiUc9bRwAPs/+LfTLNvetFCtCTN+yQz15C/fs4AwX1R9K5GLtLfn8QW+dWisaAw==} engines: {node: '>=0.11'} dependencies: - '@babel/runtime': 7.22.5 + '@babel/runtime': 7.22.15 /date-time@3.1.0: resolution: {integrity: sha512-uqCUKXE5q1PNBXjPqvwhwJf9SwMoAHBgWJ6DcrnS5o+W2JOiIILl0JEdVD8SGujrNS02GGxgwAg2PN2zONgtjg==} @@ -6862,8 +7511,8 @@ packages: time-zone: 1.0.0 dev: true - /dayjs@1.11.8: - resolution: {integrity: sha512-LcgxzFoWMEPO7ggRv1Y2N31hUf2R0Vj7fuy/m+Bg1K8rr+KAs1AEy4y9jd5DXe8pbHgX+srkHNS7TH6Q6ZhYeQ==} + /dayjs@1.11.9: + resolution: {integrity: sha512-QvzAURSbQ0pKdIye2txOzNaHmxtUBXerpY0FJsFXUMKbIZeFm5ht1LS/jFsrncjnmtv8HsG0W2g6c0zUjZWmpA==} /debug@2.6.9: resolution: {integrity: sha512-bC7ElrdJaJnPbAP+1EotYvqZsb3ecl5wi6Bfi6BJTUcNowp6cvspg0jXznRTKDjm/E7AdgFBVeAPVMNcKGsHMA==} @@ -6910,10 +7559,6 @@ packages: ms: 2.1.2 supports-color: 8.1.1 - /debuglog@1.0.1: - resolution: {integrity: sha512-syBZ+rnAK3EgMsH2aYEOLUW7mZSY9Gb+0wUMCFsZvcmiz+HigA0LOcq/HoQqVuGG+EKykunc7QG2bzrponfaSw==} - dev: false - /decamelize-keys@1.1.1: resolution: {integrity: sha512-WiPxgEirIV0/eIOMcnFBA3/IJZAZqKnwAwWyvvdi4lsr1WCN22nhdf/3db3DoZcUjTV2SqfzIwNyp6y2xs3nmg==} engines: {node: '>=0.10.0'} @@ -6933,6 +7578,7 @@ packages: /decimal.js@10.4.3: resolution: {integrity: sha512-VBBaLc1MgL5XpzgIP7ny5Z6Nx3UrRkIViUkPUdtl9aya5amy3De1gsUUSB1g3+3sExYNjCAsAznmukyxCb1GRA==} + dev: true /decode-uri-component@0.2.2: resolution: {integrity: sha512-FqUYQ+8o158GyGTrMFJms9qh3CqTKvAqgqsTnkLI8sKu0028orqBhxNMFkFen0zGyg6epACD32pjVk58ngIErQ==} @@ -6945,10 +7591,72 @@ packages: dependencies: mimic-response: 3.1.0 + /decompress-tar@4.1.1: + resolution: {integrity: sha512-JdJMaCrGpB5fESVyxwpCx4Jdj2AagLmv3y58Qy4GE6HMVjWz1FeVQk1Ct4Kye7PftcdOo/7U7UKzYBJgqnGeUQ==} + engines: {node: '>=4'} + dependencies: + file-type: 5.2.0 + is-stream: 1.1.0 + tar-stream: 1.6.2 + dev: false + + /decompress-tarbz2@4.1.1: + resolution: {integrity: sha512-s88xLzf1r81ICXLAVQVzaN6ZmX4A6U4z2nMbOwobxkLoIIfjVMBg7TeguTUXkKeXni795B6y5rnvDw7rxhAq9A==} + engines: {node: '>=4'} + dependencies: + decompress-tar: 4.1.1 + file-type: 6.2.0 + is-stream: 1.1.0 + seek-bzip: 1.0.6 + unbzip2-stream: 1.4.3 + dev: false + + /decompress-targz@4.1.1: + resolution: {integrity: sha512-4z81Znfr6chWnRDNfFNqLwPvm4db3WuZkqV+UgXQzSngG3CEKdBkw5jrv3axjjL96glyiiKjsxJG3X6WBZwX3w==} + engines: {node: '>=4'} + dependencies: + decompress-tar: 4.1.1 + file-type: 5.2.0 + is-stream: 1.1.0 + dev: false + + /decompress-unzip@4.0.1: + resolution: {integrity: sha512-1fqeluvxgnn86MOh66u8FjbtJpAFv5wgCT9Iw8rcBqQcCo5tO8eiJw7NNTrvt9n4CRBVq7CstiS922oPgyGLrw==} + engines: {node: '>=4'} + dependencies: + file-type: 3.9.0 + get-stream: 2.3.1 + pify: 2.3.0 + yauzl: 2.10.0 + dev: false + + /decompress@4.2.1: + resolution: {integrity: sha512-e48kc2IjU+2Zw8cTb6VZcJQ3lgVbS4uuB1TfCHbiZIP/haNXm+SVyhu+87jts5/3ROpd82GSVCoNs/z8l4ZOaQ==} + engines: {node: '>=4'} + dependencies: + decompress-tar: 4.1.1 + decompress-tarbz2: 4.1.1 + decompress-targz: 4.1.1 + decompress-unzip: 4.0.1 + graceful-fs: 4.2.11 + make-dir: 1.3.0 + pify: 2.3.0 + strip-dirs: 2.1.0 + dev: false + /dedent@0.7.0: resolution: {integrity: sha512-Q6fKUPqnAHAyhiUgFU7BUzLiv0kd8saH9al7tnu5Q/okj6dnupxyTgFIBjVzJATdfIAm9NAsvXNzjaKa+bxVyA==} dev: true + /dedent@1.5.1: + resolution: {integrity: sha512-+LxW+KLWxu3HW3M2w2ympwtqPrqYRzU8fqi6Fhd18fBALe15blJPI/I4+UHveMVG6lJqB4JNd4UG0S5cnVHwIg==} + peerDependencies: + babel-plugin-macros: ^3.1.0 + peerDependenciesMeta: + babel-plugin-macros: + optional: true + dev: true + /deep-email-validator@0.1.21: resolution: {integrity: sha512-DBAmMzbr+MAubXQ+TS9tZuPwLcdKscb8YzKZiwoLqF3NmaeEgXvSSHhZ0EXOFeKFE2FNWC4mNXCyiQ/JdFXUwg==} dependencies: @@ -6971,11 +7679,30 @@ packages: /deep-is@0.1.4: resolution: {integrity: sha512-oIPzksmTg4/MriiaYGO+okXDT7ztn/w3Eptv/+gSIdMdKsJo0u4CfYNFJPy+4SKMuCqGw2wxnA+URMg3t8a/bQ==} + dev: true /deepmerge@4.3.1: resolution: {integrity: sha512-3sUqbMEc77XqpdNO7FRyRog+eW3ph+GYCbj+rK+uYyRMuwsVy0rMiVtPn+QJlKFvWP/1PYpapqYn0Me2knFn+A==} engines: {node: '>=0.10.0'} + /default-browser-id@3.0.0: + resolution: {integrity: sha512-OZ1y3y0SqSICtE8DE4S8YOE9UZOJ8wO16fKWVP5J1Qz42kV9jcnMVFrEE/noXb/ss3Q4pZIH79kxofzyNNtUNA==} + engines: {node: '>=12'} + dependencies: + bplist-parser: 0.2.0 + untildify: 4.0.0 + dev: true + + /default-browser@4.0.0: + resolution: {integrity: sha512-wX5pXO1+BrhMkSbROFsyxUm0i/cJEScyNhA4PPxc41ICuv05ZZB/MX28s8aZx6xjmatvebIapF6hLEKEcpneUA==} + engines: {node: '>=14.16'} + dependencies: + bundle-name: 3.0.0 + default-browser-id: 3.0.0 + execa: 7.2.0 + titleize: 3.0.0 + dev: true + /default-compare@1.0.0: resolution: {integrity: sha512-QWfXlM0EkAbqOCbD/6HjdwT19j7WCkMyiRhWilc4H9/5h/RzTF9gv5LYh1+CmDV5d1rki6KAWLtQale0xt20eQ==} engines: {node: '>=0.10.0'} @@ -6988,14 +7715,35 @@ packages: engines: {node: '>= 0.10'} dev: true + /defaults@1.0.4: + resolution: {integrity: sha512-eFuaLoy/Rxalv2kr+lqMlUnrDWV+3j4pljOIJgLIhI058IQfWJ7vXhyEIHu+HtC738klGALYxOKDO0bQP3tg8A==} + dependencies: + clone: 1.0.4 + dev: true + /defer-to-connect@2.0.1: resolution: {integrity: sha512-4tvttepXG1VaYGrRibk5EwJd1t4udunSOVMdLSAL6mId1ix438oPwPZMALY41FCijukO1L0twNcGsdzS7dHgDg==} engines: {node: '>=10'} - /define-properties@1.2.0: - resolution: {integrity: sha512-xvqAVKGfT1+UAvPwKTVw/njhdQ8ZhXK4lI0bCIuCMrp2up9nPnaDftrLtmpTazqd1o+UY4zgzU+avtMbDP+ldA==} + /define-data-property@1.1.0: + resolution: {integrity: sha512-UzGwzcjyv3OtAvolTj1GoyNYzfFR+iqbGjcnBEENZVCpM4/Ng1yhGNvS3lR/xDS74Tb2wGG9WzNSNIOS9UVb2g==} engines: {node: '>= 0.4'} dependencies: + get-intrinsic: 1.2.1 + gopd: 1.0.1 + has-property-descriptors: 1.0.0 + dev: true + + /define-lazy-prop@3.0.0: + resolution: {integrity: sha512-N+MeXYoqr3pOgn8xfyRPREN7gHakLYjhsHhWGT3fWAiL4IkAt0iDw14QiiEm2bE30c5XX5q0FtAA3CK5f9/BUg==} + engines: {node: '>=12'} + dev: true + + /define-properties@1.2.1: + resolution: {integrity: sha512-8QmQKqEASLd5nx0U1B1okLElbUuuttJ/AnYmRXbbbGDWh6uS208EjD4Xqq/I9wK7u0v6O08XhTWnt5XtEbR6Dg==} + engines: {node: '>= 0.4'} + dependencies: + define-data-property: 1.1.0 has-property-descriptors: 1.0.0 object-keys: 1.1.1 dev: true @@ -7026,11 +7774,11 @@ packages: resolution: {integrity: sha512-hsBd2qSVCRE+5PmNdHt1uzyrFu5d3RwmFDKzyNZMFq/EwDNJF7Ee5+D5oEKF0hU6LhtoUF1macFvOe4AskQC1Q==} dev: true - /del@7.0.0: - resolution: {integrity: sha512-tQbV/4u5WVB8HMJr08pgw0b6nG4RGt/tj+7Numvq+zqcvUFeMaIWWOUFltiU+6go8BSO2/ogsB4EasDaj0y68Q==} + /del@7.1.0: + resolution: {integrity: sha512-v2KyNk7efxhlyHpjEvfyxaAihKKK0nWCuf6ZtqZcFFpQRG0bJ12Qsr0RpvsICMjAAZ8DOVCxrlqpxISlMHC4Kg==} engines: {node: '>=14.16'} dependencies: - globby: 13.2.0 + globby: 13.2.2 graceful-fs: 4.2.11 is-glob: 4.0.3 is-path-cwd: 3.0.0 @@ -7051,6 +7799,7 @@ packages: /denque@2.1.0: resolution: {integrity: sha512-HVQE3AAb/pxF8fQAoiqpvg9i3evqug3hoiwakOyZAwJm+6vZehbkYXZ0l4JxS+I3QxM97v5aaRNhj8v5oBhekw==} engines: {node: '>=0.10'} + dev: false /depd@1.1.2: resolution: {integrity: sha512-7emPTl6Dpo6JRXOXjLRxck+FlLRX5847cLKEn00PLAgc3g2hTZZgr+e4c2v6QpSmLeFP3n5yUo7ft6avBK/5jQ==} @@ -7071,8 +7820,8 @@ packages: engines: {node: '>=0.10.0'} dev: true - /detect-libc@2.0.1: - resolution: {integrity: sha512-463v3ZeIrcWtdgIg6vI6XUncguvr2TnGl4SzDXinkt9mSLpBJKXT3mW6xT3VQdDN11+WVs29pgvivTc4Lp8v+w==} + /detect-libc@2.0.2: + resolution: {integrity: sha512-UX6sGumvvqSaXgdKGUsgZWqcUyIXZ/vZTrlRT/iobiKhGL0zL4d3osHj3uqllWJK+i+sixDS/3COVEOFbupFyw==} engines: {node: '>=8'} dev: false @@ -7093,8 +7842,8 @@ packages: engines: {node: ^10.13.0 || ^12.13.0 || ^14.15.0 || >=15.0.0} dev: true - /diff-sequences@29.4.3: - resolution: {integrity: sha512-ofrBgwpPhCD85kMKtE9RYFFq6OC1A89oW2vvgWZNCwxrUpRUILopY7lsYyMDSjc8g6U6aiO0Qubg6r4Wgt5ZnA==} + /diff-sequences@29.6.3: + resolution: {integrity: sha512-EjePK1srD3P08o2j4f0ExnylqRs5B9tJjcp9t1krH2qRi8CCdsYfwe9JgSLurFBWwq4uOlipzfk5fHNvwFKr8Q==} engines: {node: ^14.15.0 || ^16.10.0 || >=18.0.0} dev: true @@ -7134,6 +7883,7 @@ packages: engines: {node: '>=6.0.0'} dependencies: esutils: 2.0.3 + dev: true /doctypes@1.1.0: resolution: {integrity: sha512-LLBi6pEqS6Do3EKQ3J0NqHWV5hhb78Pi8vvESYwyOy2c31ZEZVdtitdzsQsKb7878PEERhzUk0ftqGhG6Mz+pQ==} @@ -7166,13 +7916,6 @@ packages: webidl-conversions: 5.0.0 dev: true - /domexception@4.0.0: - resolution: {integrity: sha512-A2is4PLG+eeSfoTMA95/s4pvAoSo2mKtiM5jlHkAVewmiO8ISFTFKZjH7UAM1Atli/OT/7JHOrJRJiMKUZKYBw==} - engines: {node: '>=12'} - dependencies: - webidl-conversions: 7.0.0 - dev: false - /domhandler@2.4.2: resolution: {integrity: sha512-JiK04h0Ht5u/80fdLMCEmV4zkNh2BcoMFBmZ/91WtYZ8qVXSKjiw7fXMgFPnHcSZgOo3XdinHvmnDUeMf5R4wA==} dependencies: @@ -7222,7 +7965,6 @@ packages: inherits: 2.0.4 readable-stream: 2.3.8 stream-shift: 1.0.1 - dev: true /each-props@1.3.2: resolution: {integrity: sha512-vV0Hem3zAGkJAyU7JSjixeU66rwdynTAa1vofCrSA5fEln+m67Az9CcnkVD776/fsN/UjIWmBDoNRS6t6G9RfA==} @@ -7246,14 +7988,15 @@ packages: safe-buffer: 5.2.1 dev: false - /editorconfig@0.15.3: - resolution: {integrity: sha512-M9wIMFx96vq0R4F+gRpY3o2exzb8hEj/n9S8unZtHSvYjibBp/iMufSzvmOcV/laG0ZtuTVGtiJggPOSW2r93g==} + /editorconfig@1.0.4: + resolution: {integrity: sha512-L9Qe08KWTlqYMVvMcTIvMAdl1cDUubzRNYL+WfA4bLDMHe4nemKkpmYzkznE1FwLKu0EEmy6obgQKzMJrg4x9Q==} + engines: {node: '>=14'} hasBin: true dependencies: - commander: 2.20.3 - lru-cache: 4.1.5 - semver: 5.7.1 - sigmund: 1.0.1 + '@one-ini/wasm': 0.1.1 + commander: 10.0.1 + minimatch: 9.0.1 + semver: 7.5.4 /ee-first@1.1.1: resolution: {integrity: sha512-WMwm9LhRUo+WUaRN+vRuETqG89IgZphVSNkdFgeb6sS/E4OrDIN7t48CAewSHXc6C8lefD8KKfr5vY61brQlow==} @@ -7266,8 +8009,8 @@ packages: dependencies: jake: 10.8.7 - /electron-to-chromium@1.4.442: - resolution: {integrity: sha512-RkrZF//Ya+0aJq2NM3OdisNh5ZodZq1rdXOS96G8DdDgpDKqKE81yTbbQ3F/4CKm1JBPsGu1Lp/akkna2xO06Q==} + /electron-to-chromium@1.4.523: + resolution: {integrity: sha512-9AreocSUWnzNtvLcbpng6N+GkXnCcBR80IQkxRC9Dfdyg4gaWNUPBujAHUpKkiUkoSoR9UlhA4zD/IgBklmhzg==} /emittery@0.13.1: resolution: {integrity: sha512-DeWwawk6r5yR9jFgnDKYt4sLS0LmHJJi3ZOnb5/JdbYwj3nW+FxQnHIjhBKz8YLC7oRNPVM9NQ47I3CVx34eqQ==} @@ -7325,11 +8068,12 @@ packages: tapable: 2.2.1 dev: true - /enquirer@2.3.6: - resolution: {integrity: sha512-yjNnPr315/FjS4zIsUxYguYUPP2e1NK4d7E7ZOLiyYCcbFBiTMyID+2wvm2w6+pZ/odMA7cRkjhsPbltwBOrLg==} + /enquirer@2.4.1: + resolution: {integrity: sha512-rRqJg/6gd538VHvR3PSrdRBb/1Vy2YfzHqzvbhGIQpDRKIa4FgV/54b5Q1xYSxOOwKvjXweS26E0Q+nAMwp2pQ==} engines: {node: '>=8.6'} dependencies: ansi-colors: 4.1.3 + strip-ansi: 6.0.1 dev: true /entities@1.1.2: @@ -7365,16 +8109,17 @@ packages: is-arrayish: 0.2.1 dev: true - /es-abstract@1.21.2: - resolution: {integrity: sha512-y/B5POM2iBnIxCiernH1G7rC9qQoM77lLIMQLuob0zhp8C56Po81+2Nj0WFKnd0pNReDTnkYryc+zhOzpEIROg==} + /es-abstract@1.22.2: + resolution: {integrity: sha512-YoxfFcDmhjOgWPWsV13+2RNjq1F6UQnfs+8TftwNqtzlmFzEXvlUwdrNrYeaizfjQzRMxkZ6ElWMOJIFKdVqwA==} engines: {node: '>= 0.4'} dependencies: array-buffer-byte-length: 1.0.0 + arraybuffer.prototype.slice: 1.0.2 available-typed-arrays: 1.0.5 call-bind: 1.0.2 es-set-tostringtag: 2.0.1 es-to-primitive: 1.2.1 - function.prototype.name: 1.1.5 + function.prototype.name: 1.1.6 get-intrinsic: 1.2.1 get-symbol-description: 1.0.0 globalthis: 1.0.3 @@ -7390,23 +8135,27 @@ packages: is-regex: 1.1.4 is-shared-array-buffer: 1.0.2 is-string: 1.0.7 - is-typed-array: 1.1.10 + is-typed-array: 1.1.12 is-weakref: 1.0.2 object-inspect: 1.12.3 object-keys: 1.1.1 object.assign: 4.1.4 - regexp.prototype.flags: 1.5.0 + regexp.prototype.flags: 1.5.1 + safe-array-concat: 1.0.1 safe-regex-test: 1.0.0 - string.prototype.trim: 1.2.7 - string.prototype.trimend: 1.0.6 - string.prototype.trimstart: 1.0.6 + string.prototype.trim: 1.2.8 + string.prototype.trimend: 1.0.7 + string.prototype.trimstart: 1.0.7 + typed-array-buffer: 1.0.0 + typed-array-byte-length: 1.0.0 + typed-array-byte-offset: 1.0.0 typed-array-length: 1.0.4 unbox-primitive: 1.0.2 - which-typed-array: 1.1.9 + which-typed-array: 1.1.11 dev: true - /es-module-lexer@1.3.0: - resolution: {integrity: sha512-vZK7T0N2CBmBOixhmjdqx2gWVbFZ4DXZ/NyRMZVlJXPa7CyFS+/a4QQsDGDQy9ZfEzxFuNEsMLeQJnKP2p5/JA==} + /es-module-lexer@1.3.1: + resolution: {integrity: sha512-JUFAyicQV9mXc3YRxPnDlrfBKpqt6hUYzz9/boprUJHs4e4KVr3XwOF70doO6gwXUor6EWZJAyWAfKki84t20Q==} dev: true /es-set-tostringtag@2.0.1: @@ -7451,11 +8200,13 @@ packages: /es6-promise@4.2.8: resolution: {integrity: sha512-HJDGx5daxeIvxdBxvG2cb9g4tEvwIk3i8+nhX0yGrYmZUzbkdg8QbDevheDB8gd0//uPj4c1EQua8Q+MViT0/w==} + requiresBuild: true dev: false optional: true /es6-promisify@5.0.0: resolution: {integrity: sha512-C+d6UdsYDk0lMebHNR4S2NybQMMngAOnOwYBQjTOiv0MkoJMP0Myw2mgpDLBcpfCmRLxyFqYhS/CfOENq4SJhQ==} + requiresBuild: true dependencies: es6-promise: 4.2.8 dev: false @@ -7476,34 +8227,34 @@ packages: es6-symbol: 3.1.3 dev: true - /esbuild@0.17.19: - resolution: {integrity: sha512-XQ0jAPFkK/u3LcVRcvVHQcTIqD6E2H1fvZMA5dQPSOWb3suUbWbfbRf94pjc0bNzRYLfIrDRQXr7X+LHIm5oHw==} + /esbuild@0.18.20: + resolution: {integrity: sha512-ceqxoedUrcayh7Y7ZX6NdbbDzGROiyVBgC4PriJThBKSVPWnnFHZAkfI1lJT8QFkOwH4qOS2SJkS4wvpGl8BpA==} engines: {node: '>=12'} hasBin: true requiresBuild: true optionalDependencies: - '@esbuild/android-arm': 0.17.19 - '@esbuild/android-arm64': 0.17.19 - '@esbuild/android-x64': 0.17.19 - '@esbuild/darwin-arm64': 0.17.19 - '@esbuild/darwin-x64': 0.17.19 - '@esbuild/freebsd-arm64': 0.17.19 - '@esbuild/freebsd-x64': 0.17.19 - '@esbuild/linux-arm': 0.17.19 - '@esbuild/linux-arm64': 0.17.19 - '@esbuild/linux-ia32': 0.17.19 - '@esbuild/linux-loong64': 0.17.19 - '@esbuild/linux-mips64el': 0.17.19 - '@esbuild/linux-ppc64': 0.17.19 - '@esbuild/linux-riscv64': 0.17.19 - '@esbuild/linux-s390x': 0.17.19 - '@esbuild/linux-x64': 0.17.19 - '@esbuild/netbsd-x64': 0.17.19 - '@esbuild/openbsd-x64': 0.17.19 - '@esbuild/sunos-x64': 0.17.19 - '@esbuild/win32-arm64': 0.17.19 - '@esbuild/win32-ia32': 0.17.19 - '@esbuild/win32-x64': 0.17.19 + '@esbuild/android-arm': 0.18.20 + '@esbuild/android-arm64': 0.18.20 + '@esbuild/android-x64': 0.18.20 + '@esbuild/darwin-arm64': 0.18.20 + '@esbuild/darwin-x64': 0.18.20 + '@esbuild/freebsd-arm64': 0.18.20 + '@esbuild/freebsd-x64': 0.18.20 + '@esbuild/linux-arm': 0.18.20 + '@esbuild/linux-arm64': 0.18.20 + '@esbuild/linux-ia32': 0.18.20 + '@esbuild/linux-loong64': 0.18.20 + '@esbuild/linux-mips64el': 0.18.20 + '@esbuild/linux-ppc64': 0.18.20 + '@esbuild/linux-riscv64': 0.18.20 + '@esbuild/linux-s390x': 0.18.20 + '@esbuild/linux-x64': 0.18.20 + '@esbuild/netbsd-x64': 0.18.20 + '@esbuild/openbsd-x64': 0.18.20 + '@esbuild/sunos-x64': 0.18.20 + '@esbuild/win32-arm64': 0.18.20 + '@esbuild/win32-ia32': 0.18.20 + '@esbuild/win32-x64': 0.18.20 dev: true /escalade@3.1.1: @@ -7535,28 +8286,37 @@ packages: engines: {node: '>=12'} dev: true - /escodegen@2.0.0: - resolution: {integrity: sha512-mmHKys/C8BFUGI+MAWNcSYoORYLMdPzjrknd2Vc+bUsjN5bXcr8EhrNB+UTqfL1y3I9c4fw2ihgtMPQLBRiQxw==} + /escodegen@2.1.0: + resolution: {integrity: sha512-2NlIDTwUWJN0mRPQOdtQBzbUHvdGY2P1VXSyU83Q3xKxM7WHX2Ql8dKq782Q9TgQUNOLEzEYu9bzLNj1q88I5w==} engines: {node: '>=6.0'} hasBin: true dependencies: esprima: 4.0.1 estraverse: 5.3.0 esutils: 2.0.3 - optionator: 0.8.3 optionalDependencies: source-map: 0.6.1 + dev: true - /eslint-config-prettier@8.6.0(eslint@8.42.0): - resolution: {integrity: sha512-bAF0eLpLVqP5oEVUFKpMA+NnRFICwn9X8B5jrR9FcqnYBuPbqWEjTEspPWMj5ye6czoSLDweCzSo3Ko7gGrZaA==} + /eslint-config-prettier@8.10.0(eslint@8.49.0): + resolution: {integrity: sha512-SM8AMJdeQqRYT9O9zguiruQZaN7+z+E4eAP9oiLNGKMtomwaB1E9dcgUD6ZAn/eQAb52USbvezbiljfZUhbJcg==} hasBin: true peerDependencies: eslint: '>=7.0.0' dependencies: - eslint: 8.42.0 + eslint: 8.49.0 dev: true - /eslint-config-standard@16.0.3(eslint-plugin-import@2.27.5)(eslint-plugin-node@11.0.0)(eslint-plugin-promise@6.1.1)(eslint@8.42.0): + /eslint-config-prettier@9.0.0(eslint@8.49.0): + resolution: {integrity: sha512-IcJsTkJae2S35pRsRAwoCE+925rJJStOdkKnLVgtE+tEpqU0EVVM7OqrwxqgptKdX29NUwC82I5pXsGFIgSevw==} + hasBin: true + peerDependencies: + eslint: '>=7.0.0' + dependencies: + eslint: 8.49.0 + dev: true + + /eslint-config-standard@16.0.3(eslint-plugin-import@2.28.1)(eslint-plugin-node@11.1.0)(eslint-plugin-promise@6.1.1)(eslint@8.49.0): resolution: {integrity: sha512-x4fmJL5hGqNJKGHSjnLdgA6U6h1YW/G2dW9fA+cyVur4SK6lyue8+UgNKWlZtUDTXvgKDD/Oa3GQjmB5kjtVvg==} peerDependencies: eslint: ^7.12.1 @@ -7564,10 +8324,10 @@ packages: eslint-plugin-node: ^11.1.0 eslint-plugin-promise: ^4.2.1 || ^5.0.0 dependencies: - eslint: 8.42.0 - eslint-plugin-import: 2.27.5(@typescript-eslint/parser@5.49.0)(eslint@8.42.0) - eslint-plugin-node: 11.0.0(eslint@8.42.0) - eslint-plugin-promise: 6.1.1(eslint@8.42.0) + eslint: 8.49.0 + eslint-plugin-import: 2.28.1(@typescript-eslint/parser@5.62.0)(eslint@8.49.0) + eslint-plugin-node: 11.1.0(eslint@8.49.0) + eslint-plugin-promise: 6.1.1(eslint@8.49.0) dev: true /eslint-formatter-pretty@4.1.0: @@ -7584,17 +8344,17 @@ packages: supports-hyperlinks: 2.3.0 dev: true - /eslint-import-resolver-node@0.3.7: - resolution: {integrity: sha512-gozW2blMLJCeFpBwugLTGyvVjNoeo1knonXAcatC6bjPBZitotxdWf7Gimr25N4c0AAOo4eOUfaG82IJPDpqCA==} + /eslint-import-resolver-node@0.3.9: + resolution: {integrity: sha512-WFj2isz22JahUv+B788TlO3N6zL3nNJGU8CcZbPZvVEkBPaJdCV4vy5wyghty5ROFbCRnm132v8BScu5/1BQ8g==} dependencies: debug: 3.2.7(supports-color@8.1.1) - is-core-module: 2.12.1 - resolve: 1.22.2 + is-core-module: 2.13.0 + resolve: 1.22.6 transitivePeerDependencies: - supports-color dev: true - /eslint-module-utils@2.8.0(@typescript-eslint/parser@5.49.0)(eslint-import-resolver-node@0.3.7)(eslint@8.42.0): + /eslint-module-utils@2.8.0(@typescript-eslint/parser@5.62.0)(eslint-import-resolver-node@0.3.9)(eslint@8.49.0): resolution: {integrity: sha512-aWajIYfsqCKRDgUfjEXNN/JlrzauMuSEy5sbd7WXbtW3EH6A6MpwEh42c7qD+MqQo9QMJ6fWLAeIJynx0g6OAw==} engines: {node: '>=4'} peerDependencies: @@ -7615,27 +8375,105 @@ packages: eslint-import-resolver-webpack: optional: true dependencies: - '@typescript-eslint/parser': 5.49.0(eslint@8.42.0)(typescript@4.9.4) + '@typescript-eslint/parser': 5.62.0(eslint@8.49.0)(typescript@4.9.4) debug: 3.2.7(supports-color@8.1.1) - eslint: 8.42.0 - eslint-import-resolver-node: 0.3.7 + eslint: 8.49.0 + eslint-import-resolver-node: 0.3.9 transitivePeerDependencies: - supports-color dev: true - /eslint-plugin-es@3.0.1(eslint@8.42.0): + /eslint-module-utils@2.8.0(@typescript-eslint/parser@6.7.0)(eslint-import-resolver-node@0.3.9)(eslint@8.49.0): + resolution: {integrity: sha512-aWajIYfsqCKRDgUfjEXNN/JlrzauMuSEy5sbd7WXbtW3EH6A6MpwEh42c7qD+MqQo9QMJ6fWLAeIJynx0g6OAw==} + engines: {node: '>=4'} + peerDependencies: + '@typescript-eslint/parser': '*' + eslint: '*' + eslint-import-resolver-node: '*' + eslint-import-resolver-typescript: '*' + eslint-import-resolver-webpack: '*' + peerDependenciesMeta: + '@typescript-eslint/parser': + optional: true + eslint: + optional: true + eslint-import-resolver-node: + optional: true + eslint-import-resolver-typescript: + optional: true + eslint-import-resolver-webpack: + optional: true + dependencies: + '@typescript-eslint/parser': 6.7.0(eslint@8.49.0)(typescript@5.2.2) + debug: 3.2.7(supports-color@8.1.1) + eslint: 8.49.0 + eslint-import-resolver-node: 0.3.9 + transitivePeerDependencies: + - supports-color + dev: true + + /eslint-plugin-es-x@7.2.0(eslint@8.49.0): + resolution: {integrity: sha512-9dvv5CcvNjSJPqnS5uZkqb3xmbeqRLnvXKK7iI5+oK/yTusyc46zbBZKENGsOfojm/mKfszyZb+wNqNPAPeGXA==} + engines: {node: ^14.18.0 || >=16.0.0} + peerDependencies: + eslint: '>=8' + dependencies: + '@eslint-community/eslint-utils': 4.4.0(eslint@8.49.0) + '@eslint-community/regexpp': 4.8.1 + eslint: 8.49.0 + dev: true + + /eslint-plugin-es@3.0.1(eslint@8.49.0): resolution: {integrity: sha512-GUmAsJaN4Fc7Gbtl8uOBlayo2DqhwWvEzykMHSCZHU3XdJ+NSzzZcVhXh3VxX5icqQ+oQdIEawXX8xkR3mIFmQ==} engines: {node: '>=8.10.0'} peerDependencies: eslint: '>=4.19.1' dependencies: - eslint: 8.42.0 + eslint: 8.49.0 eslint-utils: 2.1.0 regexpp: 3.2.0 dev: true - /eslint-plugin-import@2.27.5(@typescript-eslint/parser@5.49.0)(eslint@8.42.0): - resolution: {integrity: sha512-LmEt3GVofgiGuiE+ORpnvP+kAm3h6MLZJ4Q5HCyHADofsb4VzXFsRiWj3c0OFiV+3DWFh0qg3v9gcPlfc3zRow==} + /eslint-plugin-es@4.1.0(eslint@8.49.0): + resolution: {integrity: sha512-GILhQTnjYE2WorX5Jyi5i4dz5ALWxBIdQECVQavL6s7cI76IZTDWleTHkxz/QT3kvcs2QlGHvKLYsSlPOlPXnQ==} + engines: {node: '>=8.10.0'} + peerDependencies: + eslint: '>=4.19.1' + dependencies: + eslint: 8.49.0 + eslint-utils: 2.1.0 + regexpp: 3.2.0 + dev: true + + /eslint-plugin-eslint-comments@3.2.0(eslint@8.49.0): + resolution: {integrity: sha512-0jkOl0hfojIHHmEHgmNdqv4fmh7300NdpA9FFpF7zaoLvB/QeXOGNLIo86oAveJFrfB1p05kC8hpEMHM8DwWVQ==} + engines: {node: '>=6.5.0'} + peerDependencies: + eslint: '>=4.19.1' + dependencies: + escape-string-regexp: 1.0.5 + eslint: 8.49.0 + ignore: 5.2.4 + dev: true + + /eslint-plugin-file-progress@1.3.0(eslint@8.49.0): + resolution: {integrity: sha512-LncpnGHU26KPvCrvDC2Sl9PfjdrsG8qltgiK6BR7KybWtfqrdlsu1ax3+hyPMn5OkKBTF3Wki3oqK1MSMeOtQw==} + peerDependencies: + eslint: ^7.0.0 || ^8.0.0 + dependencies: + chalk: 4.1.2 + eslint: 8.49.0 + ora: 5.4.1 + dev: true + + /eslint-plugin-html@7.1.0: + resolution: {integrity: sha512-fNLRraV/e6j8e3XYOC9xgND4j+U7b1Rq+OygMlLcMg+wI/IpVbF+ubQa3R78EjKB9njT6TQOlcK5rFKBVVtdfg==} + dependencies: + htmlparser2: 8.0.2 + dev: true + + /eslint-plugin-import@2.28.1(@typescript-eslint/parser@5.62.0)(eslint@8.49.0): + resolution: {integrity: sha512-9I9hFlITvOV55alzoKBI+K9q74kv0iKMeY6av5+umsNwayt59fz692daGyjR+oStBQgx6nwR9rXldDev3Clw+A==} engines: {node: '>=4'} peerDependencies: '@typescript-eslint/parser': '*' @@ -7644,22 +8482,24 @@ packages: '@typescript-eslint/parser': optional: true dependencies: - '@typescript-eslint/parser': 5.49.0(eslint@8.42.0)(typescript@4.9.4) - array-includes: 3.1.6 - array.prototype.flat: 1.3.1 - array.prototype.flatmap: 1.3.1 + '@typescript-eslint/parser': 5.62.0(eslint@8.49.0)(typescript@4.9.4) + array-includes: 3.1.7 + array.prototype.findlastindex: 1.2.3 + array.prototype.flat: 1.3.2 + array.prototype.flatmap: 1.3.2 debug: 3.2.7(supports-color@8.1.1) doctrine: 2.1.0 - eslint: 8.42.0 - eslint-import-resolver-node: 0.3.7 - eslint-module-utils: 2.8.0(@typescript-eslint/parser@5.49.0)(eslint-import-resolver-node@0.3.7)(eslint@8.42.0) + eslint: 8.49.0 + eslint-import-resolver-node: 0.3.9 + eslint-module-utils: 2.8.0(@typescript-eslint/parser@5.62.0)(eslint-import-resolver-node@0.3.9)(eslint@8.49.0) has: 1.0.3 - is-core-module: 2.12.1 + is-core-module: 2.13.0 is-glob: 4.0.3 minimatch: 3.1.2 - object.values: 1.1.6 - resolve: 1.22.2 - semver: 6.3.0 + object.fromentries: 2.0.7 + object.groupby: 1.0.1 + object.values: 1.1.7 + semver: 6.3.1 tsconfig-paths: 3.14.2 transitivePeerDependencies: - eslint-import-resolver-typescript @@ -7667,22 +8507,136 @@ packages: - supports-color dev: true - /eslint-plugin-node@11.0.0(eslint@8.42.0): - resolution: {integrity: sha512-chUs/NVID+sknFiJzxoN9lM7uKSOEta8GC8365hw1nDfwIPIjjpRSwwPvQanWv8dt/pDe9EV4anmVSwdiSndNg==} + /eslint-plugin-import@2.28.1(@typescript-eslint/parser@6.7.0)(eslint@8.49.0): + resolution: {integrity: sha512-9I9hFlITvOV55alzoKBI+K9q74kv0iKMeY6av5+umsNwayt59fz692daGyjR+oStBQgx6nwR9rXldDev3Clw+A==} + engines: {node: '>=4'} + peerDependencies: + '@typescript-eslint/parser': '*' + eslint: ^2 || ^3 || ^4 || ^5 || ^6 || ^7.2.0 || ^8 + peerDependenciesMeta: + '@typescript-eslint/parser': + optional: true + dependencies: + '@typescript-eslint/parser': 6.7.0(eslint@8.49.0)(typescript@5.2.2) + array-includes: 3.1.7 + array.prototype.findlastindex: 1.2.3 + array.prototype.flat: 1.3.2 + array.prototype.flatmap: 1.3.2 + debug: 3.2.7(supports-color@8.1.1) + doctrine: 2.1.0 + eslint: 8.49.0 + eslint-import-resolver-node: 0.3.9 + eslint-module-utils: 2.8.0(@typescript-eslint/parser@6.7.0)(eslint-import-resolver-node@0.3.9)(eslint@8.49.0) + has: 1.0.3 + is-core-module: 2.13.0 + is-glob: 4.0.3 + minimatch: 3.1.2 + object.fromentries: 2.0.7 + object.groupby: 1.0.1 + object.values: 1.1.7 + semver: 6.3.1 + tsconfig-paths: 3.14.2 + transitivePeerDependencies: + - eslint-import-resolver-typescript + - eslint-import-resolver-webpack + - supports-color + dev: true + + /eslint-plugin-jsdoc@46.8.1(eslint@8.49.0): + resolution: {integrity: sha512-uTce7IBluPKXIQMWJkIwFsI1gv7sZRmLjctca2K5DIxPi8fSBj9f4iru42XmGwuiMyH2f3nfc60sFmnSGv4Z/A==} + engines: {node: '>=16'} + peerDependencies: + eslint: ^7.0.0 || ^8.0.0 + dependencies: + '@es-joy/jsdoccomment': 0.40.1 + are-docs-informative: 0.0.2 + comment-parser: 1.4.0 + debug: 4.3.4(supports-color@8.1.1) + escape-string-regexp: 4.0.0 + eslint: 8.49.0 + esquery: 1.5.0 + is-builtin-module: 3.2.1 + semver: 7.5.4 + spdx-expression-parse: 3.0.1 + transitivePeerDependencies: + - supports-color + dev: true + + /eslint-plugin-jsonc@2.9.0(eslint@8.49.0): + resolution: {integrity: sha512-RK+LeONVukbLwT2+t7/OY54NJRccTXh/QbnXzPuTLpFMVZhPuq1C9E07+qWenGx7rrQl0kAalAWl7EmB+RjpGA==} + engines: {node: ^12.22.0 || ^14.17.0 || >=16.0.0} + peerDependencies: + eslint: '>=6.0.0' + dependencies: + '@eslint-community/eslint-utils': 4.4.0(eslint@8.49.0) + eslint: 8.49.0 + jsonc-eslint-parser: 2.3.0 + natural-compare: 1.4.0 + dev: true + + /eslint-plugin-markdown@3.0.1(eslint@8.49.0): + resolution: {integrity: sha512-8rqoc148DWdGdmYF6WSQFT3uQ6PO7zXYgeBpHAOAakX/zpq+NvFYbDA/H7PYzHajwtmaOzAwfxyl++x0g1/N9A==} + engines: {node: ^12.22.0 || ^14.17.0 || >=16.0.0} + peerDependencies: + eslint: ^6.0.0 || ^7.0.0 || ^8.0.0 + dependencies: + eslint: 8.49.0 + mdast-util-from-markdown: 0.8.5 + transitivePeerDependencies: + - supports-color + dev: true + + /eslint-plugin-n@15.7.0(eslint@8.49.0): + resolution: {integrity: sha512-jDex9s7D/Qial8AGVIHq4W7NswpUD5DPDL2RH8Lzd9EloWUuvUkHfv4FRLMipH5q2UtyurorBkPeNi1wVWNh3Q==} + engines: {node: '>=12.22.0'} + peerDependencies: + eslint: '>=7.0.0' + dependencies: + builtins: 5.0.1 + eslint: 8.49.0 + eslint-plugin-es: 4.1.0(eslint@8.49.0) + eslint-utils: 3.0.0(eslint@8.49.0) + ignore: 5.2.4 + is-core-module: 2.13.0 + minimatch: 3.1.2 + resolve: 1.22.6 + semver: 7.5.4 + dev: true + + /eslint-plugin-n@16.1.0(eslint@8.49.0): + resolution: {integrity: sha512-3wv/TooBst0N4ND+pnvffHuz9gNPmk/NkLwAxOt2JykTl/hcuECe6yhTtLJcZjIxtZwN+GX92ACp/QTLpHA3Hg==} + engines: {node: '>=16.0.0'} + peerDependencies: + eslint: '>=7.0.0' + dependencies: + '@eslint-community/eslint-utils': 4.4.0(eslint@8.49.0) + builtins: 5.0.1 + eslint: 8.49.0 + eslint-plugin-es-x: 7.2.0(eslint@8.49.0) + get-tsconfig: 4.7.0 + ignore: 5.2.4 + is-core-module: 2.13.0 + minimatch: 3.1.2 + resolve: 1.22.6 + semver: 7.5.4 + dev: true + + /eslint-plugin-node@11.1.0(eslint@8.49.0): + resolution: {integrity: sha512-oUwtPJ1W0SKD0Tr+wqu92c5xuCeQqB3hSCHasn/ZgjFdA9iDGNkNf2Zi9ztY7X+hNuMib23LNGRm6+uN+KLE3g==} engines: {node: '>=8.10.0'} peerDependencies: eslint: '>=5.16.0' dependencies: - eslint: 8.42.0 - eslint-plugin-es: 3.0.1(eslint@8.42.0) + eslint: 8.49.0 + eslint-plugin-es: 3.0.1(eslint@8.49.0) eslint-utils: 2.1.0 ignore: 5.2.4 minimatch: 3.1.2 - resolve: 1.22.2 - semver: 6.3.0 + resolve: 1.22.6 + semver: 6.3.1 dev: true - /eslint-plugin-prettier@4.2.1(eslint-config-prettier@8.6.0)(eslint@8.42.0)(prettier@2.8.8): + /eslint-plugin-prettier@4.2.1(eslint-config-prettier@8.10.0)(eslint@8.49.0)(prettier@2.8.8): resolution: {integrity: sha512-f/0rXLXUt0oFYs8ra4w49wYZBG5GKZpAYsJSm6rnYL5uVDjd+zowwMwVZHnAjf4edNrKpCDYfXDgmRE/Ak7QyQ==} engines: {node: '>=12.0.0'} peerDependencies: @@ -7693,28 +8647,187 @@ packages: eslint-config-prettier: optional: true dependencies: - eslint: 8.42.0 - eslint-config-prettier: 8.6.0(eslint@8.42.0) + eslint: 8.49.0 + eslint-config-prettier: 8.10.0(eslint@8.49.0) prettier: 2.8.8 prettier-linter-helpers: 1.0.0 dev: true - /eslint-plugin-promise@6.1.1(eslint@8.42.0): + /eslint-plugin-prettier@4.2.1(eslint-config-prettier@8.10.0)(eslint@8.49.0)(prettier@3.0.3): + resolution: {integrity: sha512-f/0rXLXUt0oFYs8ra4w49wYZBG5GKZpAYsJSm6rnYL5uVDjd+zowwMwVZHnAjf4edNrKpCDYfXDgmRE/Ak7QyQ==} + engines: {node: '>=12.0.0'} + peerDependencies: + eslint: '>=7.28.0' + eslint-config-prettier: '*' + prettier: '>=2.0.0' + peerDependenciesMeta: + eslint-config-prettier: + optional: true + dependencies: + eslint: 8.49.0 + eslint-config-prettier: 8.10.0(eslint@8.49.0) + prettier: 3.0.3 + prettier-linter-helpers: 1.0.0 + dev: true + + /eslint-plugin-prettier@5.0.0(eslint-config-prettier@9.0.0)(eslint@8.49.0)(prettier@3.0.3): + resolution: {integrity: sha512-AgaZCVuYDXHUGxj/ZGu1u8H8CYgDY3iG6w5kUFw4AzMVXzB7VvbKgYR4nATIN+OvUrghMbiDLeimVjVY5ilq3w==} + engines: {node: ^14.18.0 || >=16.0.0} + peerDependencies: + '@types/eslint': '>=8.0.0' + eslint: '>=8.0.0' + eslint-config-prettier: '*' + prettier: '>=3.0.0' + peerDependenciesMeta: + '@types/eslint': + optional: true + eslint-config-prettier: + optional: true + dependencies: + eslint: 8.49.0 + eslint-config-prettier: 9.0.0(eslint@8.49.0) + prettier: 3.0.3 + prettier-linter-helpers: 1.0.0 + synckit: 0.8.5 + dev: true + + /eslint-plugin-promise@5.2.0(eslint@8.49.0): + resolution: {integrity: sha512-SftLb1pUG01QYq2A/hGAWfDRXqYD82zE7j7TopDOyNdU+7SvvoXREls/+PRTY17vUXzXnZA/zfnyKgRH6x4JJw==} + engines: {node: ^10.12.0 || >=12.0.0} + peerDependencies: + eslint: ^7.0.0 + dependencies: + eslint: 8.49.0 + dev: true + + /eslint-plugin-promise@6.1.1(eslint@8.49.0): resolution: {integrity: sha512-tjqWDwVZQo7UIPMeDReOpUgHCmCiH+ePnVT+5zVapL0uuHnegBUs2smM13CzOs2Xb5+MHMRFTs9v24yjba4Oig==} engines: {node: ^12.22.0 || ^14.17.0 || >=16.0.0} peerDependencies: eslint: ^7.0.0 || ^8.0.0 dependencies: - eslint: 8.42.0 + eslint: 8.49.0 dev: true - /eslint-plugin-standard@5.0.0(eslint@8.42.0): + /eslint-plugin-standard@5.0.0(eslint@8.49.0): resolution: {integrity: sha512-eSIXPc9wBM4BrniMzJRBm2uoVuXz2EPa+NXPk2+itrVt+r5SbKFERx/IgrK/HmfjddyKVz2f+j+7gBRvu19xLg==} deprecated: 'standard 16.0.0 and eslint-config-standard 16.0.0 no longer require the eslint-plugin-standard package. You can remove it from your dependencies with ''npm rm eslint-plugin-standard''. More info here: https://github.com/standard/standard/issues/1316' peerDependencies: eslint: '>=5.0.0' dependencies: - eslint: 8.42.0 + eslint: 8.49.0 + dev: true + + /eslint-plugin-tsdoc@0.2.17: + resolution: {integrity: sha512-xRmVi7Zx44lOBuYqG8vzTXuL6IdGOeF9nHX17bjJ8+VE6fsxpdGem0/SBTmAwgYMKYB1WBkqRJVQ+n8GK041pA==} + dependencies: + '@microsoft/tsdoc': 0.14.2 + '@microsoft/tsdoc-config': 0.16.2 + dev: true + + /eslint-plugin-unicorn@40.1.0(eslint@8.49.0): + resolution: {integrity: sha512-y5doK2DF9Sr5AqKEHbHxjFllJ167nKDRU01HDcWyv4Tnmaoe9iNxMrBnaybZvWZUaE3OC5Unu0lNIevYamloig==} + engines: {node: '>=12'} + peerDependencies: + eslint: '>=7.32.0' + dependencies: + '@babel/helper-validator-identifier': 7.22.20 + ci-info: 3.8.0 + clean-regexp: 1.0.0 + eslint: 8.49.0 + eslint-utils: 3.0.0(eslint@8.49.0) + esquery: 1.5.0 + indent-string: 4.0.0 + is-builtin-module: 3.2.1 + lodash: 4.17.21 + pluralize: 8.0.0 + read-pkg-up: 7.0.1 + regexp-tree: 0.1.27 + safe-regex: 2.1.1 + semver: 7.5.4 + strip-indent: 3.0.0 + dev: true + + /eslint-plugin-unicorn@45.0.2(eslint@8.49.0): + resolution: {integrity: sha512-Y0WUDXRyGDMcKLiwgL3zSMpHrXI00xmdyixEGIg90gHnj0PcHY4moNv3Ppje/kDivdAy5vUeUr7z211ImPv2gw==} + engines: {node: '>=14.18'} + peerDependencies: + eslint: '>=8.28.0' + dependencies: + '@babel/helper-validator-identifier': 7.22.20 + '@eslint-community/eslint-utils': 4.4.0(eslint@8.49.0) + ci-info: 3.8.0 + clean-regexp: 1.0.0 + eslint: 8.49.0 + esquery: 1.5.0 + indent-string: 4.0.0 + is-builtin-module: 3.2.1 + jsesc: 3.0.2 + lodash: 4.17.21 + pluralize: 8.0.0 + read-pkg-up: 7.0.1 + regexp-tree: 0.1.27 + regjsparser: 0.9.1 + safe-regex: 2.1.1 + semver: 7.5.4 + strip-indent: 3.0.0 + dev: true + + /eslint-plugin-vitest-globals@1.4.0: + resolution: {integrity: sha512-WE+YlK9X9s4vf5EaYRU0Scw7WItDZStm+PapFSYlg2ABNtaQ4zIG7wEqpoUB3SlfM+SgkhgmzR0TeJOO5k3/Nw==} + dev: true + + /eslint-plugin-vue-scoped-css@2.5.0(eslint@8.49.0)(vue-eslint-parser@9.3.1): + resolution: {integrity: sha512-vR+raYNE1aQ69lS1lZGiKoz8rXFI3MWf2fxrfns/XCQ0XT5sIguhDtQS+9JmUQJClenLDEe2CQx7P+eeSdF4cA==} + engines: {node: ^12.22 || ^14.17 || >=16} + peerDependencies: + eslint: '>=5.0.0' + vue-eslint-parser: '>=7.1.0' + dependencies: + eslint: 8.49.0 + eslint-utils: 3.0.0(eslint@8.49.0) + lodash: 4.17.21 + postcss: 8.4.29 + postcss-safe-parser: 6.0.0(postcss@8.4.29) + postcss-scss: 4.0.8(postcss@8.4.29) + postcss-selector-parser: 6.0.13 + postcss-styl: 0.12.3 + vue-eslint-parser: 9.3.1(eslint@8.49.0) + transitivePeerDependencies: + - supports-color + dev: true + + /eslint-plugin-vue@9.17.0(eslint@8.49.0): + resolution: {integrity: sha512-r7Bp79pxQk9I5XDP0k2dpUC7Ots3OSWgvGZNu3BxmKK6Zg7NgVtcOB6OCna5Kb9oQwJPl5hq183WD0SY5tZtIQ==} + engines: {node: ^14.17.0 || >=16.0.0} + peerDependencies: + eslint: ^6.2.0 || ^7.0.0 || ^8.0.0 + dependencies: + '@eslint-community/eslint-utils': 4.4.0(eslint@8.49.0) + eslint: 8.49.0 + natural-compare: 1.4.0 + nth-check: 2.1.1 + postcss-selector-parser: 6.0.13 + semver: 7.5.4 + vue-eslint-parser: 9.3.1(eslint@8.49.0) + xml-name-validator: 4.0.0 + transitivePeerDependencies: + - supports-color + dev: true + + /eslint-plugin-yml@1.9.0(eslint@8.49.0): + resolution: {integrity: sha512-ayuC57WyVQ5+QZ02y62GiB//5+zsiyzUGxUX/mrhLni+jfsKA4KoITjkbR65iUdjjhWpyTJHPcAIFLKQIOwgsw==} + engines: {node: ^14.17.0 || >=16.0.0} + peerDependencies: + eslint: '>=6.0.0' + dependencies: + debug: 4.3.4(supports-color@8.1.1) + eslint: 8.49.0 + lodash: 4.17.21 + natural-compare: 1.4.0 + yaml-eslint-parser: 1.2.2 + transitivePeerDependencies: + - supports-color dev: true /eslint-rule-docs@1.1.235: @@ -7729,12 +8842,13 @@ packages: estraverse: 4.3.0 dev: true - /eslint-scope@7.2.0: - resolution: {integrity: sha512-DYj5deGlHBfMt15J7rdtyKNq/Nqlv5KfU4iodrQ019XESsRnwXH9KAE0y3cwtUHDo2ob7CypAnCqefh6vioWRw==} + /eslint-scope@7.2.2: + resolution: {integrity: sha512-dOt21O7lTMhDM+X9mB4GX+DZrZtCUJPL/wlcTqxyrx5IvO0IYtILdtrQGQp+8n5S0gwSVmOf9NQrjMOgfQZlIg==} engines: {node: ^12.22.0 || ^14.17.0 || >=16.0.0} dependencies: esrecurse: 4.3.0 estraverse: 5.3.0 + dev: true /eslint-utils@2.1.0: resolution: {integrity: sha512-w94dQYoauyvlDc43XnGB8lU3Zt713vNChgt4EWwhXAP2XkBvndfxF0AgIqKOOasjPIPzj9JqgwkwbCYD0/V3Zg==} @@ -7743,39 +8857,41 @@ packages: eslint-visitor-keys: 1.3.0 dev: true - /eslint-utils@3.0.0(eslint@8.42.0): + /eslint-utils@3.0.0(eslint@8.49.0): resolution: {integrity: sha512-uuQC43IGctw68pJA1RgbQS8/NP7rch6Cwd4j3ZBtgo4/8Flj4eGE7ZYSZRN3iq5pVUv6GPdW5Z1RFleo84uLDA==} engines: {node: ^10.0.0 || ^12.0.0 || >= 14.0.0} peerDependencies: eslint: '>=5' dependencies: - eslint: 8.42.0 + eslint: 8.49.0 eslint-visitor-keys: 2.1.0 dev: true /eslint-visitor-keys@1.3.0: resolution: {integrity: sha512-6J72N8UNa462wa/KFODt/PJ3IU60SDpC3QXC1Hjc1BXXpfL2C9R5+AU7jhe0F6GREqVMh4Juu+NY7xn+6dipUQ==} engines: {node: '>=4'} + dev: true /eslint-visitor-keys@2.1.0: resolution: {integrity: sha512-0rSmRBzXgDzIsD6mGdJgevzgezI534Cer5L/vyMX0kHzT/jiB43jRhd9YUlMGYLQy2zprNmoT8qasCGtY+QaKw==} engines: {node: '>=10'} dev: true - /eslint-visitor-keys@3.4.1: - resolution: {integrity: sha512-pZnmmLwYzf+kWaM/Qgrvpen51upAktaaiI01nsJD/Yr3lMOdNtq0cxkrrg16w64VtisN6okbs7Q8AfGqj4c9fA==} + /eslint-visitor-keys@3.4.3: + resolution: {integrity: sha512-wpc+LXeiyiisxPlEkUzU6svyS1frIO3Mgxj1fdy7Pm8Ygzguax2N3Fa/D/ag1WqbOprdI+uY6wMUl8/a2G+iag==} engines: {node: ^12.22.0 || ^14.17.0 || >=16.0.0} + dev: true - /eslint@8.42.0: - resolution: {integrity: sha512-ulg9Ms6E1WPf67PHaEY4/6E2tEn5/f7FXGzr3t9cBMugOmf1INYvuUwwh1aXQN4MfJ6a5K2iNwP3w4AColvI9A==} + /eslint@8.49.0: + resolution: {integrity: sha512-jw03ENfm6VJI0jA9U+8H5zfl5b+FvuU3YYvZRdZHOlU2ggJkxrlkJH4HcDrZpj6YwD8kuYqvQM8LyesoazrSOQ==} engines: {node: ^12.22.0 || ^14.17.0 || >=16.0.0} hasBin: true dependencies: - '@eslint-community/eslint-utils': 4.4.0(eslint@8.42.0) - '@eslint-community/regexpp': 4.5.1 - '@eslint/eslintrc': 2.0.3 - '@eslint/js': 8.42.0 - '@humanwhocodes/config-array': 0.11.10 + '@eslint-community/eslint-utils': 4.4.0(eslint@8.49.0) + '@eslint-community/regexpp': 4.8.1 + '@eslint/eslintrc': 2.1.2 + '@eslint/js': 8.49.0 + '@humanwhocodes/config-array': 0.11.11 '@humanwhocodes/module-importer': 1.0.1 '@nodelib/fs.walk': 1.2.8 ajv: 6.12.6 @@ -7784,19 +8900,18 @@ packages: debug: 4.3.4(supports-color@8.1.1) doctrine: 3.0.0 escape-string-regexp: 4.0.0 - eslint-scope: 7.2.0 - eslint-visitor-keys: 3.4.1 - espree: 9.5.2 + eslint-scope: 7.2.2 + eslint-visitor-keys: 3.4.3 + espree: 9.6.1 esquery: 1.5.0 esutils: 2.0.3 fast-deep-equal: 3.1.3 file-entry-cache: 6.0.1 find-up: 5.0.0 glob-parent: 6.0.2 - globals: 13.20.0 + globals: 13.21.0 graphemer: 1.4.0 ignore: 5.2.4 - import-fresh: 3.3.0 imurmurhash: 0.1.4 is-glob: 4.0.3 is-path-inside: 3.0.3 @@ -7808,18 +8923,19 @@ packages: natural-compare: 1.4.0 optionator: 0.9.3 strip-ansi: 6.0.1 - strip-json-comments: 3.1.1 text-table: 0.2.0 transitivePeerDependencies: - supports-color + dev: true - /espree@9.5.2: - resolution: {integrity: sha512-7OASN1Wma5fum5SrNhFMAMJxOUAbhyfQ8dQ//PJaJbNw0URTPWqIghHWt1MmAANKhHZIYOHruW4Kw4ruUWOdGw==} + /espree@9.6.1: + resolution: {integrity: sha512-oruZaFkjorTpF32kDSI5/75ViwGeZginGGy2NoOSg3Q9bnwlnmDm4HLnkl0RE3n+njDXR037aY1+x58Z/zFdwQ==} engines: {node: ^12.22.0 || ^14.17.0 || >=16.0.0} dependencies: - acorn: 8.9.0 - acorn-jsx: 5.3.2(acorn@8.9.0) - eslint-visitor-keys: 3.4.1 + acorn: 8.10.0 + acorn-jsx: 5.3.2(acorn@8.10.0) + eslint-visitor-keys: 3.4.3 + dev: true /esprima@2.7.3: resolution: {integrity: sha512-OarPfz0lFCiW4/AV2Oy1Rp9qu0iusTKqykwTspGCZtPxmF81JR4MmIebvF1F9+UOKth2ZubLQ4XGGaU+hSn99A==} @@ -7831,18 +8947,21 @@ packages: resolution: {integrity: sha512-eGuFFw7Upda+g4p+QHvnW0RyTX/SVeJBDM/gCtMARO0cLuT2HcEKnTPvhjV6aGeqrCB/sbNop0Kszm0jsaWU4A==} engines: {node: '>=4'} hasBin: true + dev: true /esquery@1.5.0: resolution: {integrity: sha512-YQLXUplAwJgCydQ78IMJywZCceoqk1oH01OERdSAJc/7U2AylwjhSCLDEtqwg811idIS/9fIU5GjG73IgjKMVg==} engines: {node: '>=0.10'} dependencies: estraverse: 5.3.0 + dev: true /esrecurse@4.3.0: resolution: {integrity: sha512-KmfKL3b6G+RXvP8N1vr3Tq1kL/oCFgn2NYXEtqP8/L3pKapUA4G8cFVaoF3SU323CD4XypR/ffioHmkti6/Tag==} engines: {node: '>=4.0'} dependencies: estraverse: 5.3.0 + dev: true /estraverse@4.3.0: resolution: {integrity: sha512-39nnKffWz8xN1BU/2c79n9nB9HDzo0niYUqx6xyqUnyoAnQyyWpOTdZEeiCch8BBu515t4wp9ZmgVfVhn9EBpw==} @@ -7852,9 +8971,6 @@ packages: /estraverse@5.3.0: resolution: {integrity: sha512-MMdARuVEQziNTeJD8DgMqmhwR11BRQ/cBP+pLtYdSTnf3MIO8fFeiINEbX36ZdNlfU/7A9f3gUw49B3oQsvwBA==} engines: {node: '>=4.0'} - - /estree-walker@1.0.1: - resolution: {integrity: sha512-1fMXF3YP4pZZVozF8j/ZLfvnR8NSIljt56UhbZ5PeeDmmGHpgpdwQt7ITlGvYaQukCvuBRMLEiKiYC+oeIg4cg==} dev: true /estree-walker@2.0.2: @@ -7864,6 +8980,7 @@ packages: /esutils@2.0.3: resolution: {integrity: sha512-kVscqXk4OCp68SZ0dkgEKVi6/8ij300KBWTJq32P/dYeWTSwK41WyTxalN1eRmA5Z9UU/LX9D7FWSmV9SAYx6g==} engines: {node: '>=0.10.0'} + dev: true /event-stream@3.3.4: resolution: {integrity: sha512-QHpkERcGsR0T7Qm3HNJSyXKEEj8AHNxkY3PK8TS2KJvQ7NiSHe3DDpwVKKtoYprL/AreyzFBeIkBIWChAqn60g==} @@ -7889,6 +9006,10 @@ packages: /eventemitter3@4.0.7: resolution: {integrity: sha512-8guHBZCwKnFhYdHr2ysuRWErTwhoN2X8XELRlrRwpmfeY2jjuUN4taQMsULKUVo1K4DvZl+0pgfyoysHxvmvEw==} + /eventemitter3@5.0.1: + resolution: {integrity: sha512-GWkBvjiSZK87ELrYOSESUYeVIc9mvLLf/nXalMOS5dYrgZq9o5OVkbZAVM06CVxYsCwH9BDZFPlQTlPA1j4ahA==} + dev: true + /events@1.1.1: resolution: {integrity: sha512-kEcvvCBByWXGnZy6JUlgAp2gBIUjfCAV6P6TgT1/aaQKcmuAEC4OZTV1I4EWQLz2gxZw76atuVyvHhTxvi0Flw==} engines: {node: '>=0.4.x'} @@ -7957,6 +9078,21 @@ packages: strip-final-newline: 3.0.0 dev: true + /execa@7.2.0: + resolution: {integrity: sha512-UduyVP7TLB5IcAQl+OzLyLcS/l32W/GLg+AhHJ+ow40FOk2U3SAllPwR44v4vmdFwIWqpdwxxpQbF1n5ta9seA==} + engines: {node: ^14.18.0 || ^16.14.0 || >=18.0.0} + dependencies: + cross-spawn: 7.0.3 + get-stream: 6.0.1 + human-signals: 4.3.1 + is-stream: 3.0.0 + merge-stream: 2.0.0 + npm-run-path: 5.1.0 + onetime: 6.0.0 + signal-exit: 3.0.7 + strip-final-newline: 3.0.0 + dev: true + /executable@4.1.1: resolution: {integrity: sha512-8iA79xD3uAch729dUG8xaaBBFGaEa0wdD2VkYLFHwlqosEj/jT66AzcreRDSgV7ehnNLBW2WR5jIXwGKjVdTLg==} engines: {node: '>=4'} @@ -8012,16 +9148,15 @@ packages: jest-message-util: 27.5.1 dev: true - /expect@29.6.0: - resolution: {integrity: sha512-AV+HaBtnDJ2YEUhPPo25HyUHBLaetM+y/Dq6pEC8VPQyt1dK+k8MfGkMy46djy2bddcqESc1kl4/K1uLWSfk9g==} + /expect@29.7.0: + resolution: {integrity: sha512-2Zks0hf1VLFYI1kbh0I5jP3KHHyCHpkfyHBzsSXRFgl/Bg9mWYfMW8oD+PdMPlEwy5HNsR9JutYy6pMeOh61nw==} engines: {node: ^14.15.0 || ^16.10.0 || >=18.0.0} dependencies: - '@jest/expect-utils': 29.6.0 - '@types/node': 20.3.1 - jest-get-type: 29.4.3 - jest-matcher-utils: 29.6.0 - jest-message-util: 29.6.0 - jest-util: 29.6.0 + '@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 dev: true /exponential-backoff@3.1.1: @@ -8109,6 +9244,10 @@ packages: time-stamp: 1.1.0 dev: true + /fast-blurhash@1.1.2: + resolution: {integrity: sha512-lJVOgYSlahqkRhrKumNx/SGB2F/qS0D1z7xjGYjb5EZJRtlzySGMniZjkQ9h9Rv8sPmM/V9orEgRiMwazDNH6A==} + dev: true + /fast-deep-equal@3.1.3: resolution: {integrity: sha512-f3qQ9oQy9j2AhBe/H9VC91wLmKBCCU/gDOnKNAYG5hswO7BLKj09Hc5HYNz9cGI++xlpDCIgDaitVs03ATR84Q==} @@ -8116,8 +9255,12 @@ packages: resolution: {integrity: sha512-VxPP4NqbUjj6MaAOafWeUn2cXWLcCtljklUtZf0Ind4XQ+QPtmA0b18zZy0jIQx+ExRVCR/ZQpBmik5lXshNsw==} dev: true - /fast-glob@3.2.12: - resolution: {integrity: sha512-DVj4CQIYYow0BlaelwK1pHl5n5cRSJfM60UA0zK891sVInoPri2Ekj7+e1CT3/3qxXenpI+nBBmQAcJPJgaj4w==} + /fast-fifo@1.3.2: + resolution: {integrity: sha512-/d9sfos4yxzpwkDkuN7k2SqFKtYNmCTzgfEpz82x34IM9/zc8KGxQoXg1liNC/izpRM/MBdt44Nmx41ZWqk+FQ==} + dev: false + + /fast-glob@3.3.1: + resolution: {integrity: sha512-kNFPyjhh5cKjrUltxs+wFx+ZkbRaxxmZ+X0ZU31SOsxCEtP9VPgtq2teZw1DebupL5GmDaNQ6yKMMVcM41iqDg==} engines: {node: '>=8.6.0'} dependencies: '@nodelib/fs.stat': 2.0.5 @@ -8136,9 +9279,10 @@ packages: /fast-levenshtein@2.0.6: resolution: {integrity: sha512-DCXu6Ifhqcks7TZKY3Hxp3y6qphY5SJZmrWMDrKcERSOXWQdMhU9Ig/PYrzyw/ul9jOIyh0N4M0tbC5hodg8dw==} + dev: true - /fast-xml-parser@3.21.1: - resolution: {integrity: sha512-FTFVjYoBOZTJekiUsawGsSYV9QL0A+zDYCRj7y34IO6Jg+2IMYEtQa+bbictpdpV8dHxXywqU7C0gRDEOFtBFg==} + /fast-xml-parser@4.2.7: + resolution: {integrity: sha512-J8r6BriSLO1uj2miOk1NW0YVm8AGOOu3Si2HQp/cSmo6EA4m3fcwu2WKjJ4RK9wMLBtg69y1kS8baDiQBR41Ig==} hasBin: true dependencies: strnum: 1.0.5 @@ -8153,6 +9297,7 @@ packages: resolution: {integrity: sha512-wBrocU2LCXXa+lWBt8RoIRD89Fi8OdABODa/kEnyeyjS5aZO5/GNvI5sEINADqP/h8M29UHTHUb53sUu5Ihqdw==} dependencies: reusify: 1.0.4 + dev: true /fb-watchman@2.0.2: resolution: {integrity: sha512-p5161BqbuCaSnB8jIbzQHOlpgsPmK5rJVDfDKO91Axs5NC1uu3HRQm6wt9cd9/+GtQQIO53JdGXXoyDpTAsgYA==} @@ -8164,7 +9309,6 @@ packages: resolution: {integrity: sha512-cE1qsB/VwyQozZ+q1dGxR8LBYNZeofhEdUNGSMbQD3Gw2lAzX9Zb3uIU6Ebc/Fmyjo9AWWfnn0AUCHqtevs/8g==} dependencies: pend: 1.2.0 - dev: true /feed@4.2.2: resolution: {integrity: sha512-u5/sxGfiMfZNtJ3OvQpXcvotFpYkL0n9u9mM2vkui2nGo8b4wvDkJ8gAkYqbA8QpGyFCv3RK0Z+Iv+9veCS9bQ==} @@ -8199,12 +9343,8 @@ packages: resolution: {integrity: sha512-7Gps/XWymbLk2QLYK4NzpMOrYjMhdIxXuIvy2QBsLE6ljuodKvdkWs/cpyJJ3CVIVpH0Oi1Hvg1ovbMzLdFBBg==} engines: {node: ^10.12.0 || >=12.0.0} dependencies: - flat-cache: 3.0.4 - - /file-type@12.4.2: - resolution: {integrity: sha512-UssQP5ZgIOKelfsaB5CuGAL+Y+q7EmONuiwF3N5HAH0t27rvrttgi6Ra9k/+DVaY9UF6+ybxu5pOXLUdA8N7Vg==} - engines: {node: '>=8'} - dev: false + flat-cache: 3.1.0 + dev: true /file-type@17.1.6: resolution: {integrity: sha512-hlDw5Ev+9e883s0pwUsuuYNu4tD7GgpUnOvykjv1Gya0ZIjuKumthDRua90VUn6/nlRKAjcxLUnHNTIUWwWIiw==} @@ -8213,6 +9353,31 @@ packages: readable-web-to-node-stream: 3.0.2 strtok3: 7.0.0 token-types: 5.0.1 + dev: true + + /file-type@18.5.0: + resolution: {integrity: sha512-yvpl5U868+V6PqXHMmsESpg6unQ5GfnPssl4dxdJudBrr9qy7Fddt7EVX1VLlddFfe8Gj9N7goCZH22FXuSQXQ==} + engines: {node: '>=14.16'} + dependencies: + readable-web-to-node-stream: 3.0.2 + strtok3: 7.0.0 + token-types: 5.0.1 + dev: false + + /file-type@3.9.0: + resolution: {integrity: sha512-RLoqTXE8/vPmMuTI88DAzhMYC99I8BWv7zYP4A1puo5HIjEJ5EX48ighy4ZyKMG9EDXxBgW6e++cn7d1xuFghA==} + engines: {node: '>=0.10.0'} + dev: false + + /file-type@5.2.0: + resolution: {integrity: sha512-Iq1nJ6D2+yIO4c8HHg4fyVb8mAJieo1Oloy1mLLaB2PvezNedhBVm+QU7g0qM42aiMbRXTxKKwGD17rjKNJYVQ==} + engines: {node: '>=4'} + dev: false + + /file-type@6.2.0: + resolution: {integrity: sha512-YPcTBDV+2Tm0VqjybVd32MHdlEGAtuxS3VAYsumFokDSMG+ROT5wawGlnHDoz7bfMcMDt9hxuXvXwoKUx2fkOg==} + engines: {node: '>=4'} + dev: false /filelist@1.0.4: resolution: {integrity: sha512-w1cEuf3S+DrLCQL7ET6kz+gmlJdbq9J7yXCSjK/OZCPA+qEN1WyF4ZAf0YYJa4/shHJra2t/d/r8SV4Ji+x+8Q==} @@ -8270,6 +9435,7 @@ packages: dependencies: locate-path: 6.0.0 path-exists: 4.0.0 + dev: true /find-up@6.3.0: resolution: {integrity: sha512-v2ZsoEuVHYy8ZIlYqwPe/39Cy+cFDzp4dXPaxNvkEuouymu+2Jbz0PxpKarJHYJTmv2HWT3O382qY8l4jMWthw==} @@ -8324,9 +9490,9 @@ packages: /fix-esm@1.0.1: resolution: {integrity: sha512-EZtb7wPXZS54GaGxaWxMlhd1DUDCnAg5srlYdu/1ZVeW+7wwR3Tp59nu52dXByFs3MBRq+SByx1wDOJpRvLEXw==} dependencies: - '@babel/core': 7.22.5 - '@babel/plugin-proposal-export-namespace-from': 7.18.9(@babel/core@7.22.5) - '@babel/plugin-transform-modules-commonjs': 7.22.5(@babel/core@7.22.5) + '@babel/core': 7.22.20 + '@babel/plugin-proposal-export-namespace-from': 7.18.9(@babel/core@7.22.20) + '@babel/plugin-transform-modules-commonjs': 7.22.15(@babel/core@7.22.20) transitivePeerDependencies: - supports-color dev: false @@ -8336,20 +9502,23 @@ packages: engines: {node: '>= 0.10'} dev: true - /flat-cache@3.0.4: - resolution: {integrity: sha512-dm9s5Pw7Jc0GvMYbshN6zchCA9RgQlzzEZX3vylR9IqFfS8XciblUXOKfW6SiuJ0e13eDYZoZV5wdrev7P3Nwg==} - engines: {node: ^10.12.0 || >=12.0.0} + /flat-cache@3.1.0: + resolution: {integrity: sha512-OHx4Qwrrt0E4jEIcI5/Xb+f+QmJYNj2rrK8wiIdQOIrB9WrrJL8cjZvXdXuBTkkEwEqLycb5BeZDV1o2i9bTew==} + engines: {node: '>=12.0.0'} dependencies: - flatted: 3.2.7 + flatted: 3.2.9 + keyv: 4.5.3 rimraf: 3.0.2 + dev: true /flat@5.0.2: resolution: {integrity: sha512-b6suED+5/3rTpUBdG1gupIl8MPFCAMA0QXwmljLhvCUKcUvdE4gWky9zpuGCcXHOsz4J9wPGNWq6OKpmIzz3hQ==} hasBin: true dev: true - /flatted@3.2.7: - resolution: {integrity: sha512-5nqDSxl8nn5BSNxyR3n4I6eDmbolI6WT+QqR547RwxQapgjQBmtktdP+HTBb/a/zLsbzERTONyUB5pefh5TtjQ==} + /flatted@3.2.9: + resolution: {integrity: sha512-36yxDn5H7OFZQla0/jFJmbIKTdZAQHngCedGxiMmpNfEZM0sdEeT+WczLQrjK6D7o2aiyLYDnkw0R3JK0Qv1RQ==} + dev: true /flatten@1.0.3: resolution: {integrity: sha512-dVsPA/UwQ8+2uoFe5GHtiBMu48dWLTdsuEd7CKGlZlD78r1TTWBvDuFaFGKCo/ZfEr95Uk56vZoX86OsHkUeIg==} @@ -8371,18 +9540,18 @@ packages: readable-stream: 2.3.8 dev: true - /focus-trap-vue@4.0.2(focus-trap@7.4.3)(vue@3.3.4): + /focus-trap-vue@4.0.2(focus-trap@7.5.2)(vue@3.3.4): resolution: {integrity: sha512-2iQN2xKCSCzyhcD90VpueQcTIAhaCRxxo67fkz7RSqLmEd16QKjfGslCr3KxvBx0LfpVN9j0IAyKKuJKw3Intg==} peerDependencies: focus-trap: ^7.0.0 vue: ^3.0.0 dependencies: - focus-trap: 7.4.3 + focus-trap: 7.5.2 vue: 3.3.4 dev: true - /focus-trap@7.4.3: - resolution: {integrity: sha512-BgSSbK4GPnS2VbtZ50VtOv1Sti6DIkj3+LkVjiWMNjLeAp1SH1UlLx3ULu/DCu4vq5R4/uvTm+zrvsMsuYmGLg==} + /focus-trap@7.5.2: + resolution: {integrity: sha512-p6vGNNWLDGwJCiEjkSK6oERj/hEyI9ITsSwIUICBoKLlWiTWXJRfQibCwcoi50rTZdbi87qDtUlMCmQwsGSgPw==} dependencies: tabbable: 6.2.0 dev: true @@ -8420,7 +9589,7 @@ packages: engines: {node: '>=14'} dependencies: cross-spawn: 7.0.3 - signal-exit: 4.0.2 + signal-exit: 4.1.0 dev: false /forever-agent@0.6.1: @@ -8446,6 +9615,7 @@ packages: asynckit: 0.4.0 combined-stream: 1.0.8 mime-types: 2.1.35 + dev: true /form-data@4.0.0: resolution: {integrity: sha512-ETEklSGi5t0QMZuiXoA/Q6vcnxcLQP5vdugSpuAyi6SVGi2clPPp+xgEhuMaHC+zGgn31Kd235W35f7Hykkaww==} @@ -8528,6 +9698,7 @@ packages: /fs-minipass@1.2.7: resolution: {integrity: sha512-GWSSJGFy4e9GUeCcbIkED+bgAoFyj7XF1mV8rma3QW4NIqX9Kyx79N/PF61H5udOV3aY1IaMLs6pGbH71nlCTA==} + requiresBuild: true dependencies: minipass: 2.9.0 dev: false @@ -8540,11 +9711,11 @@ packages: minipass: 3.3.6 dev: false - /fs-minipass@3.0.2: - resolution: {integrity: sha512-2GAfyfoaCDRrM6jaOS3UsBts8yJ55VioXdWcOL7dK9zdAuKT71+WBA4ifnNYqVjYv+4SsPxjK0JT4yIIn4cA/g==} + /fs-minipass@3.0.3: + resolution: {integrity: sha512-XUBA9XClHbnJWSfBzjkm6RvPsyg3sryZt06BEQoXcF7EK/xpGaQYJgQKDJSUH5SGZ76Y7pFx1QBnXz09rU5Fbw==} engines: {node: ^14.17.0 || ^16.13.0 || >=18.0.0} dependencies: - minipass: 5.0.0 + minipass: 7.0.3 dev: false /fs-mkdirp-stream@1.0.0: @@ -8558,20 +9729,11 @@ packages: /fs.realpath@1.0.0: resolution: {integrity: sha512-OO0pH2lK6a0hZnAdau5ItzHPI6pUlvI7jMVnxUQRtw4owF2wk8lOSabtGDCTP4Ggrg2MbGnWO9X8K1t4+fGMDw==} - /fsevents@2.1.3: - resolution: {integrity: sha512-Auw9a4AxqWpa9GUfj370BMPzzyncfBABW8Mab7BGWBYDj4Isgq+cDKtx0i6u9jcX9pQDnswsaaOTgTmA5pEjuQ==} - engines: {node: ^8.16.0 || ^10.6.0 || >=11.0.0} - os: [darwin] - deprecated: '"Please update to latest v2.3 or v2.2"' - requiresBuild: true - optional: true - - /fsevents@2.3.2: - resolution: {integrity: sha512-xiqMQR4xAeHTuB9uWm+fFRcIOgKBMiOBP+eXiyT7jsgVCq1bkVygt00oASowB7EdtpOHaaPgKt812P9ab+DDKA==} + /fsevents@2.3.3: + resolution: {integrity: sha512-5xoDfX+fL7faATnagmWPpbFtwh/R77WmMMqqHGS65C3vvB0YHrgF+B1YmZ3441tMj5n63k0212XNoJwzlhffQw==} engines: {node: ^8.16.0 || ^10.6.0 || >=11.0.0} os: [darwin] requiresBuild: true - dev: true optional: true /fulcon@1.0.2: @@ -8582,13 +9744,13 @@ packages: /function-bind@1.1.1: resolution: {integrity: sha512-yIovAzMX49sF8Yl58fSCWJ5svSLuaibPxXQJFLmBObTuCr0Mf1KiPopGM9NiFjiYBCbfaa2Fh6breQ6ANVTI0A==} - /function.prototype.name@1.1.5: - resolution: {integrity: sha512-uN7m/BzVKQnCUF/iW8jYea67v++2u7m5UgENbHRtdDVclOUP+FMPlCNdmk0h/ysGyo2tavMJEDqJAkJdRa1vMA==} + /function.prototype.name@1.1.6: + resolution: {integrity: sha512-Z5kx79swU5P27WEayXM1tBi5Ze/lbIyiNgU3qyXUOf9b2rgXYyF9Dy9Cx+IQv/Lc8WCG6L82zwUPpSS9hGehIg==} engines: {node: '>= 0.4'} dependencies: call-bind: 1.0.2 - define-properties: 1.2.0 - es-abstract: 1.21.2 + define-properties: 1.2.1 + es-abstract: 1.22.2 functions-have-names: 1.2.3 dev: true @@ -8682,6 +9844,14 @@ packages: engines: {node: '>=8'} dev: false + /get-stream@2.3.1: + resolution: {integrity: sha512-AUGhbbemXxrZJRD5cDvKtQxLuYaIbNtDTK8YqupCI393Q2KSTreEsLUN3ZxAWFGiKTzL6nKuzfcIvieflUX9qA==} + engines: {node: '>=0.10.0'} + dependencies: + object-assign: 4.1.1 + pinkie-promise: 2.0.1 + dev: false + /get-stream@3.0.0: resolution: {integrity: sha512-GlhdIUuVakc8SJ6kK0zAFbiGzRFzNnY4jUuEbV9UROo4Y+0Ny4fjvcZFVTeDA4odpFyOQzaw6hXukJSq/f28sQ==} engines: {node: '>=4'} @@ -8705,6 +9875,12 @@ packages: get-intrinsic: 1.2.1 dev: true + /get-tsconfig@4.7.0: + resolution: {integrity: sha512-pmjiZ7xtB8URYm74PlGJozDNyhvsVLUcpBa8DZBG3bWHwaHa9bPiRpiSfovw+fjhwONSCWKRyk+JQHEGZmMrzw==} + dependencies: + resolve-pkg-maps: 1.0.0 + dev: true + /get-value@2.0.6: resolution: {integrity: sha512-Ln0UQDlxH1BapMu3GPtf7CuYNwRZf2gwCuPqbyG6pB8WfmFpzqcy4xtAaAMUhnNqjMKTiCPZG2oMT3YSx8U2NA==} engines: {node: '>=0.10.0'} @@ -8750,6 +9926,7 @@ packages: engines: {node: '>=10.13.0'} dependencies: is-glob: 4.0.3 + dev: true /glob-stream@6.1.0: resolution: {integrity: sha512-uMbLGAP3S2aDOHUDfdoYcdIePUCfysbAd0IAoWVZbeGU/oNQ8asHVSshLDJUPWxfzj8zsCG7/XeHPHTtow0nsw==} @@ -8777,7 +9954,7 @@ packages: dependencies: anymatch: 2.0.0 async-done: 1.3.2 - chokidar: 3.3.1 + chokidar: 3.5.3 is-negated-glob: 1.0.0 just-debounce: 1.1.0 normalize-path: 3.0.0 @@ -8786,16 +9963,16 @@ packages: - supports-color dev: true - /glob@10.3.1: - resolution: {integrity: sha512-9BKYcEeIs7QwlCYs+Y3GBvqAMISufUS0i2ELd11zpZjxI5V9iyRj0HgzB5/cLf2NY4vcYBTYzJ7GIui7j/4DOw==} + /glob@10.3.4: + resolution: {integrity: sha512-6LFElP3A+i/Q8XQKEvZjkEWEOTgAIALR9AO2rwT8bgPhDd1anmqDJDZ6lLddI4ehxxxR1S5RIqKe1uapMQfYaQ==} engines: {node: '>=16 || 14 >=14.17'} hasBin: true dependencies: foreground-child: 3.1.1 - jackspeak: 2.2.1 - minimatch: 9.0.2 - minipass: 5.0.0 - path-scurry: 1.10.0 + jackspeak: 2.3.3 + minimatch: 9.0.3 + minipass: 7.0.3 + path-scurry: 1.10.1 dev: false /glob@7.2.0: @@ -8860,17 +10037,18 @@ packages: resolution: {integrity: sha512-WOBp/EEGUiIsJSp7wcv/y6MO+lV9UoncWqxuFfm8eBwzWNgyfBd6Gz+IeKQ9jCmyhoH99g15M3T+QaVHFjizVA==} engines: {node: '>=4'} - /globals@13.20.0: - resolution: {integrity: sha512-Qg5QtVkCy/kv3FUSlu4ukeZDVf9ee0iXLAUYX13gbR17bnejFTzr4iS9bY7kwCf1NztRNm1t91fjOiyx4CSwPQ==} + /globals@13.21.0: + resolution: {integrity: sha512-ybyme3s4yy/t/3s35bewwXKOf7cvzfreG2lH0lZl0JB7I4GxRP2ghxOK/Nb9EkRXdbBXZLfq/p/0W2JUONB/Gg==} engines: {node: '>=8'} dependencies: type-fest: 0.20.2 + dev: true /globalthis@1.0.3: resolution: {integrity: sha512-sFdI5LyBiNTHjRd7cGPWapiHWMOXKyuBNX/cWJ3NfzrZQVa8GI/8cofCl74AOVqq9W5kNmguTIzJ/1s2gyI9wA==} engines: {node: '>= 0.4'} dependencies: - define-properties: 1.2.0 + define-properties: 1.2.1 dev: true /globby@11.1.0: @@ -8879,18 +10057,18 @@ packages: dependencies: array-union: 2.1.0 dir-glob: 3.0.1 - fast-glob: 3.2.12 + fast-glob: 3.3.1 ignore: 5.2.4 merge2: 1.4.1 slash: 3.0.0 dev: true - /globby@13.2.0: - resolution: {integrity: sha512-jWsQfayf13NvqKUIL3Ta+CIqMnvlaIDFveWE/dpOZ9+3AMEJozsxDvKA02zync9UuvOM8rOXzsD5GqKP4OnWPQ==} + /globby@13.2.2: + resolution: {integrity: sha512-Y1zNGV+pzQdh7H39l9zgB4PJqjRNqydvdYCDG4HFXM4XuvSaQQlEc91IU1yALL8gUTDomgBAfz3XJdmUS+oo0w==} engines: {node: ^12.20.0 || ^14.13.1 || >=16.0.0} dependencies: dir-glob: 3.0.1 - fast-glob: 3.2.12 + fast-glob: 3.3.1 ignore: 5.2.4 merge2: 1.4.1 slash: 4.0.0 @@ -8905,6 +10083,7 @@ packages: /google-protobuf@3.21.2: resolution: {integrity: sha512-3MSOYFO5U9mPGikIYCzK0SaThypfGgS6bHqrUGXG3DPHCrb+txNqeEcns1W0lkGfk0rCyNXm7xB9rMxnCiZOoA==} + requiresBuild: true dev: false optional: true @@ -8928,15 +10107,33 @@ packages: lowercase-keys: 2.0.0 p-cancelable: 2.1.1 responselike: 2.0.1 + dev: false - /got@12.5.3: - resolution: {integrity: sha512-8wKnb9MGU8IPGRIo+/ukTy9XLJBwDiCpIf5TVzQ9Cpol50eMTpBq2GAuDsuDIz7hTYmZgMgC1e9ydr6kSDWs3w==} - engines: {node: '>=14.16'} + /got@11.8.6: + resolution: {integrity: sha512-6tfZ91bOr7bOXnK7PRDCGBLa1H4U080YHNaAQ2KsMGlLEzRbk44nsZF2E1IeRc3vtJHPVbKCYgdFbaGO2ljd8g==} + engines: {node: '>=10.19.0'} dependencies: - '@sindresorhus/is': 5.4.1 + '@sindresorhus/is': 4.6.0 + '@szmarczak/http-timer': 4.0.6 + '@types/cacheable-request': 6.0.3 + '@types/responselike': 1.0.0 + cacheable-lookup: 5.0.4 + cacheable-request: 7.0.4 + decompress-response: 6.0.0 + http2-wrapper: 1.0.3 + lowercase-keys: 2.0.0 + p-cancelable: 2.1.1 + responselike: 2.0.1 + dev: true + + /got@13.0.0: + resolution: {integrity: sha512-XfBk1CxOOScDcMr9O1yKkNaQyy865NbYs+F7dr4H0LZMVgCj2Le59k6PqbNHoL5ToeaEQUYh6c6yMfVcc6SJxA==} + engines: {node: '>=16'} + dependencies: + '@sindresorhus/is': 5.6.0 '@szmarczak/http-timer': 5.0.1 cacheable-lookup: 7.0.0 - cacheable-request: 10.2.12 + cacheable-request: 10.2.13 decompress-response: 6.0.0 form-data-encoder: 2.1.4 get-stream: 6.0.1 @@ -8951,9 +10148,10 @@ packages: /graphemer@1.4.0: resolution: {integrity: sha512-EtKwoO6kxCL9WO5xipiHTZlSzBm7WLT627TqC/uVRd0HKmq8NXyebnNYxDoBi7wt8eTWrUrKXCOVaFq9x1kgag==} + dev: true - /gsap@3.11.5: - resolution: {integrity: sha512-Q89nKCLgoX5xUjznh9LcaIUkz54k1voNucT1Rpf9SJNFIQznBwFqt5qUUQbeVInFyN/n18OUJkpeI6CNEDt74w==} + /gsap@3.12.2: + resolution: {integrity: sha512-EkYnpG8qHgYBFAwsgsGEqvT1WUidX0tt/ijepx7z8EUJHElykg91RvW1XbkT59T0gZzzszOpjQv7SE41XuIXyQ==} dev: true /gulp-cli@2.3.0: @@ -9002,7 +10200,7 @@ packages: resolution: {integrity: sha512-SVSF7ikuWKhpAW4l4wapAqPPSToJoiNKsbDoUnRrSgwZHH7lH8pbPeQj1aOVYQrbZKhfSVBxVW+Py7vtulRktw==} engines: {node: '>=10'} dependencies: - '@types/node': 20.3.1 + '@types/node': 20.5.8 '@types/vinyl': 2.0.7 istextorbinary: 3.3.0 replacestream: 4.0.3 @@ -9014,7 +10212,7 @@ packages: engines: {node: '>=10'} dependencies: plugin-error: 1.0.1 - terser: 5.18.2 + terser: 5.19.4 through2: 4.0.2 vinyl-sourcemaps-apply: 0.2.1 dev: true @@ -9039,11 +10237,34 @@ packages: glogg: 1.0.2 dev: true + /gunzip-maybe@1.4.2: + resolution: {integrity: sha512-4haO1M4mLO91PW57BMsDFf75UmwoRX0GkdD+Faw+Lr+r/OZrOCS0pIBwOL1xCKQqnQzbNFGgK2V2CpBUPeFNTw==} + hasBin: true + dependencies: + browserify-zlib: 0.1.4 + is-deflate: 1.0.0 + is-gzip: 1.0.0 + peek-stream: 1.1.3 + pumpify: 1.5.1 + through2: 2.0.5 + dev: false + /hammerjs@2.0.8: resolution: {integrity: sha512-tSQXBXS/MWQOn/RKckawJ61vvsDpCom87JgxiYdGwHdOa0ht0vzUWDlfioofFCRU0L+6NGDt6XzbgoJvZkMeRQ==} engines: {node: '>=0.8.0'} dev: true + /happy-dom@11.2.0: + resolution: {integrity: sha512-z4PshcYIIH6SkymSNRcDFwYUJOENe+FOQDx5BbHgg/wQUgxF5p9I9/BN45Jff34bbhXV8yJgkC5N99eyOzXK3w==} + dependencies: + css.escape: 1.5.1 + entities: 4.5.0 + iconv-lite: 0.6.3 + webidl-conversions: 7.0.0 + whatwg-encoding: 2.0.0 + whatwg-mimetype: 3.0.0 + dev: false + /har-schema@2.0.0: resolution: {integrity: sha512-Oqluz6zhGX8cyRaTQlFMPw80bSJVG2x/cFb8ZPhUILGgHka9SsokCCOQgpveePerqidZOrT14ipqfJb7ILcW5Q==} engines: {node: '>=4'} @@ -9184,6 +10405,11 @@ packages: resolution: {integrity: sha512-ePqFXHtSQWAFXYmj+JtOTHr84iNrII4/QRlAAPPE+zqnKy4xJo7Ie1Y4kC7AdB+LxLxSTTzBMASsEcy0q8YyvQ==} dev: false + /hpagent@1.2.0: + resolution: {integrity: sha512-A91dYTeIB6NoXG+PxTQpCCDDnfHsW9kc06Lvpu1TEe9gnd6ZFeiBoRO9JvzEv6xK7EX97/dUE8g/vBMTqTS3CA==} + engines: {node: '>=14'} + dev: false + /html-comment-regex@1.1.2: resolution: {integrity: sha512-P+M65QY2JQ5Y0G9KKdlDpo0zK+/OHptU5AaBwUfAIDJZk1MYf32Frm84EcOytfJE0t5JvkAnKlmjsXDnWzCJmQ==} dev: true @@ -9195,13 +10421,6 @@ packages: whatwg-encoding: 1.0.5 dev: true - /html-encoding-sniffer@3.0.0: - resolution: {integrity: sha512-oWv4T4yJ52iKrufjnyZPkrN0CH3QnrUqdB6In1g5Fe1mia8GmF36gnfNySxoZtxD5+NmYw1EElVXiBk93UeskA==} - engines: {node: '>=12'} - dependencies: - whatwg-encoding: 2.0.0 - dev: false - /html-entities@2.3.2: resolution: {integrity: sha512-c3Ab/url5ksaT0WyleslpBEthOzWhrjQbg75y7XUsfSzi3Dgzt0l8w5e7DylRn15MTlMMD58dTfzddNS2kcAjQ==} dev: false @@ -9335,6 +10554,7 @@ packages: /https-proxy-agent@2.2.4: resolution: {integrity: sha512-OmvfoQ53WLjtA9HeYP9RNrWMJzzAz1JGaSFr1nijg0PVR1JaD/xbJq1mdEIIlxGpXp9eSe/O2LgU9DJmTPd0Eg==} engines: {node: '>= 4.5.0'} + requiresBuild: true dependencies: agent-base: 4.3.0 debug: 3.2.7(supports-color@8.1.1) @@ -9352,6 +10572,16 @@ packages: transitivePeerDependencies: - supports-color + /https-proxy-agent@7.0.2: + resolution: {integrity: sha512-NmLNjm6ucYwtcUmL7JQC1ZQ57LmHP4lT15FQ8D61nak1rO6DH+fz5qNK2Ap5UN4ZapYICE3/0KodcLYSPsPbaA==} + engines: {node: '>= 14'} + dependencies: + agent-base: 7.1.0 + debug: 4.3.4(supports-color@8.1.1) + transitivePeerDependencies: + - supports-color + dev: false + /human-signals@1.1.1: resolution: {integrity: sha512-SEQu7vl8KjNL2eoGBLF3+wAjpsNfA9XMlXAYj/3EdaNfAlxKthD1xjEQfGOUhllCGGJVNY34bRr6lPINhNjyZw==} engines: {node: '>=8.12.0'} @@ -9367,6 +10597,11 @@ packages: engines: {node: '>=12.20.0'} dev: true + /human-signals@4.3.1: + resolution: {integrity: sha512-nZXjEF2nbo7lIw3mgYjItAfgQXog3OjJogSbKa2CQIIvSGWcKgeJnQlNXip6NglNzYH45nSRiEVimMvYL8DDqQ==} + engines: {node: '>=14.18.0'} + dev: true + /humanize-ms@1.2.1: resolution: {integrity: sha512-Fl70vYtsAFb/C06PTS9dZBo7ihau+Tu/DNCk/OyHhea07S+aeMWpFFkUaXRa8fI+ScZbEI8dfSxwY7gxZ9SAVQ==} dependencies: @@ -9390,13 +10625,8 @@ packages: safer-buffer: 2.1.2 dev: false - /idb-keyval@3.2.0: - resolution: {integrity: sha512-slx8Q6oywCCSfKgPgL0sEsXtPVnSbTLWpyiDcu6msHOyKOLari1TD1qocXVCft80umnkk3/Qqh3lwoFt8T/BPQ==} - dev: false - /idb-keyval@6.2.1: resolution: {integrity: sha512-8Sb3veuYCyrZL+VBt9LJfZjLUPWVvqn8tG28VqYNFCo43KHcKuq+b4EiXGeuaLAQWL2YmyDgMp2aSpH9JHsEQg==} - dev: true /ieee754@1.1.13: resolution: {integrity: sha512-4vf7I2LYV/HaWerSo3XmlMkp5eZ83i+/CDluXi/IGTs/O1sejBNhTtnxzmRZfvOUqj7lZjqHkeTvpgSFDlWZTg==} @@ -9413,9 +10643,10 @@ packages: /ignore@5.2.4: resolution: {integrity: sha512-MAb38BcSbH0eHNBxn7ql2NH/kX33OkB3lZ1BNdh7ENeRChHTYsTvWrMubiIAMNS2llXEEgZ1MUOBtXChP3kaFQ==} engines: {node: '>= 4'} + dev: true - /immutable@4.3.0: - resolution: {integrity: sha512-0AOCmOip+xgJwEVTQj1EfiDDOkPmuyllDuTuEX+DDXUgapLAsBIfkg3sxCYyCEA8mQqZrrxPUGjcOQ2JS3WLkg==} + /immutable@4.3.4: + resolution: {integrity: sha512-fsXeu4J4i6WNWSikpI88v/PcVflZz+6kMhUfIwc5SY+poQRPnaf5V7qds6SUyUN3cVxEzuCab7QIoLOQ+DQ1wA==} dev: true /import-fresh@3.3.0: @@ -9424,6 +10655,7 @@ packages: dependencies: parent-module: 1.0.1 resolve-from: 4.0.0 + dev: true /import-lazy@4.0.0: resolution: {integrity: sha512-rKtvo6a868b5Hu3heneU+L4yEQ4jYKLtjpnPeUdK7h0yzXGmyBTypknlkCvHFBqfX9YlorEiMM6Dnq/5atfHkw==} @@ -9536,6 +10768,7 @@ packages: standard-as-callback: 2.1.0 transitivePeerDependencies: - supports-color + dev: false /iota-array@1.0.0: resolution: {integrity: sha512-pZ2xT+LOHckCatGQ3DcG/a+QuEqvoxqkiL7tvE8nn3uuu+f6i1TtpB5/FtWFbxUuVr5PZCx8KskuGatbJDXOWA==} @@ -9549,8 +10782,8 @@ packages: sprintf-js: 1.1.2 dev: false - /ip-cidr@3.0.11: - resolution: {integrity: sha512-6pf3APV0cRWy7vk0ealQt7UeWPqpT4RQM0bR0miVY/XRiBV8hIkPSkEHctv1+GAUPIwT9qpUL57deYlYca9UEA==} + /ip-cidr@3.1.0: + resolution: {integrity: sha512-HUCn4snshEX1P8cja/IyU3qk8FVDW8T5zZcegDFbu4w7NojmAhk5NcOgj3M8+0fmumo1afJTPDtJlzsxLdOjtg==} engines: {node: '>=10.0.0'} dependencies: ip-address: 7.1.0 @@ -9562,6 +10795,11 @@ packages: engines: {node: '>=8'} dev: false + /ip-regex@5.0.0: + resolution: {integrity: sha512-fOCG6lhoKKakwv+C6KdsOnGvgXnmgfmp0myi3bcNwj3qfwPAxRKWEuFhvEFF7ceYIz6+1jRZ+yguLFAmUNPEfw==} + engines: {node: ^12.20.0 || ^14.13.1 || >=16.0.0} + dev: false + /ip@2.0.0: resolution: {integrity: sha512-WKa+XuLG1A1R0UWhl2+1XQSi+fZWMsYKffMZTTYsiZaUD8k2yDAj5atimTUD2TZkyCkNEeYE5NhFZmupOGtjYQ==} dev: false @@ -9603,6 +10841,17 @@ packages: kind-of: 6.0.3 dev: true + /is-alphabetical@1.0.4: + resolution: {integrity: sha512-DwzsA04LQ10FHTZuL0/grVDk4rFoVH1pjAToYwBrHSxcrBIGQuXrQMtD5U1b0U2XVgKZCTLLP8u2Qxqhy3l2Vg==} + dev: true + + /is-alphanumerical@1.0.4: + resolution: {integrity: sha512-UzoZUr+XfVz3t3v4KyGEniVL9BDRoQtY7tOyrRybkVNjDFWyo1yhXNGrrBTQxp3ib9BLAWs7k2YKBQsFRkZG9A==} + dependencies: + is-alphabetical: 1.0.4 + is-decimal: 1.0.4 + dev: true + /is-arguments@1.1.1: resolution: {integrity: sha512-8Q7EARjzEnKpt/PCD7e1cgUS0a6X8u5tdSiMqXhojOdoV9TsMsiO+9VLC5vAmO8N7/GmXn7yjR8qnA6bVAEzfA==} engines: {node: '>= 0.4'} @@ -9616,7 +10865,7 @@ packages: dependencies: call-bind: 1.0.2 get-intrinsic: 1.2.1 - is-typed-array: 1.1.10 + is-typed-array: 1.1.12 dev: true /is-arrayish@0.2.1: @@ -9650,6 +10899,13 @@ packages: /is-buffer@1.1.6: resolution: {integrity: sha512-NcdALwpXkTm5Zvvbk7owOUSvVvBKDgKP5/ewfXEznmQFfs4ZRmanOeKBTjRVjka3QFoN6XJ+9F3USqfHqTaU5w==} + /is-builtin-module@3.2.1: + resolution: {integrity: sha512-BSLE3HnV2syZ0FK0iMA/yUGplUeMmNz4AW5fnTunbCIqZi4vG3WjJT9FHMy5D69xmAYBHXQhJdALdpwVxV501A==} + engines: {node: '>=6'} + dependencies: + builtin-modules: 3.3.0 + dev: true + /is-callable@1.2.7: resolution: {integrity: sha512-1BC0BVFhS/p0qtw6enp8e+8OD0UrK0oFLztSjNzhcKA3WDuJxxAPXzPuPtKkjEY9UUoEWlX/8fgKeu2S8i9JTA==} engines: {node: '>= 0.4'} @@ -9661,8 +10917,8 @@ packages: ci-info: 3.8.0 dev: true - /is-core-module@2.12.1: - resolution: {integrity: sha512-Q4ZuBAe2FUsKtyQJoQHlvP8OvBERxO3jEmy1I7hcRXcJBGGHFh/aJBswbXuS9sgrDH2QUO8ilkwNPHvHMd8clg==} + /is-core-module@2.13.0: + resolution: {integrity: sha512-Z7dk6Qo8pOCp3l4tsX2C5ZVas4V+UxwQodwZhLopL91TX8UyyHEXafPcyoeeWuLrwzHcr3igO78wNLwHJHsMCQ==} dependencies: has: 1.0.3 @@ -9687,6 +10943,14 @@ packages: has-tostringtag: 1.0.0 dev: true + /is-decimal@1.0.4: + resolution: {integrity: sha512-RGdriMmQQvZ2aqaQq3awNA6dCGtKpiDFcOzrTWrDAT2MiWrKQVPmxLGHl7Y2nNu6led0kEyoX0enY0qXYsv9zw==} + dev: true + + /is-deflate@1.0.0: + resolution: {integrity: sha512-YDoFpuZWu1VRXlsnlYMzKyVRITXj7Ej/V9gXQ2/pAe7X1J7M/RNOqaIYi6qUn+B7nGyB9pDXrv02dsB58d2ZAQ==} + dev: false + /is-descriptor@0.1.6: resolution: {integrity: sha512-avDYr0SB3DwO9zsMov0gKCESFYqCnE4hq/4z3TdUlukEy5t9C0YRq7HLrsN52NAcqXKaepeCD0n+B0arnVG3Hg==} engines: {node: '>=0.10.0'} @@ -9705,6 +10969,18 @@ packages: kind-of: 6.0.3 dev: true + /is-docker@2.2.1: + resolution: {integrity: sha512-F+i2BKsFrH66iaUFc0woD8sLy8getkwTwtOBjvs56Cx4CgJDeKQeqfz8wAYiSb8JOprWhHH5p77PbmYCvvUuXQ==} + engines: {node: '>=8'} + hasBin: true + dev: true + + /is-docker@3.0.0: + resolution: {integrity: sha512-eljcgEDlEns/7AXFosB5K/2nCM4P7FQPkGc/DWLy5rmFEWvZayGrik1d9/QIY5nJ4f9YsVvBkA6kJpHn9rISdQ==} + engines: {node: ^12.20.0 || ^14.13.1 || >=16.0.0} + hasBin: true + dev: true + /is-electron@2.2.2: resolution: {integrity: sha512-FO/Rhvz5tuw4MCWkpMzHFKWD2LsfHzIb7i6MdPYZ/KW7AlxawyLkqdy+jPZP1WubqEADE3O4FUENlJHDfQASRg==} dev: false @@ -9775,6 +11051,23 @@ packages: dependencies: is-extglob: 2.1.1 + /is-gzip@1.0.0: + resolution: {integrity: sha512-rcfALRIb1YewtnksfRIHGcIY93QnK8BIQ/2c9yDYcG/Y6+vRoJuTWBmmSEbyLLYtXm7q35pHOHbZFQBaLrhlWQ==} + engines: {node: '>=0.10.0'} + dev: false + + /is-hexadecimal@1.0.4: + resolution: {integrity: sha512-gyPJuv83bHMpocVYoqof5VDiZveEoGoFL8m3BXNb2VW8Xs+rz9kqO8LOQ5DH6EsuvilT1ApazU0pyl+ytbPtlw==} + dev: true + + /is-inside-container@1.0.0: + resolution: {integrity: sha512-KIYLCCJghfHZxqjYBE7rEy0OBuTd5xCHS7tHVgvCLkx7StIoaxwNW3hCALgEUjFfeRk+MG/Qxmp/vtETEF3tRA==} + engines: {node: '>=14.16'} + hasBin: true + dependencies: + is-docker: 3.0.0 + dev: true + /is-installed-globally@0.4.0: resolution: {integrity: sha512-iwGqO3J21aaSkC7jWnHP/difazwS7SFeIqxv6wEtLU8Y5KlzFTjyqcSIT0d8s4+dDhKytsk9PJZ2BkS5eZwQRQ==} engines: {node: '>=10'} @@ -9783,6 +11076,11 @@ packages: is-path-inside: 3.0.3 dev: true + /is-interactive@1.0.0: + resolution: {integrity: sha512-2HvIEKRoqS62guEC+qBjpvRubdX910WCMuJTZ+I9yvqKU2/12eSL549HMwtabb4oupdj2sMP50k+XJfB/8JE6w==} + engines: {node: '>=8'} + dev: true + /is-ip@3.1.0: resolution: {integrity: sha512-35vd5necO7IitFPjd/YBeqwWnyDWbuLH9ZXQdMfDA8TEo7pv5X8yfrvVO3xbJbLUlERCMvf6X0hTUamQxCYJ9Q==} engines: {node: '>=8'} @@ -9794,6 +11092,10 @@ packages: resolution: {integrity: sha512-z7CMFGNrENq5iFB9Bqo64Xk6Y9sg+epq1myIcdHaGnbMTYOxvzsEtdYqQUylB7LxfkvgrrjP32T6Ywciio9UIQ==} dev: false + /is-natural-number@4.0.1: + resolution: {integrity: sha512-Y4LTamMe0DDQIIAlaer9eKebAlDSV6huy+TWhJVPlzZh2o4tRP5SQWFlLn5N0To4mDD22/qdOq+veo1cSISLgQ==} + dev: false + /is-negated-glob@1.0.0: resolution: {integrity: sha512-czXVVn/QEmgvej1f50BZ648vUI+em0xqMq2Sn+QncCLN4zj1UAxlT+kw/6ggQTOaZPd1HqKQGEqbpQVtJucWug==} engines: {node: '>=0.10.0'} @@ -9835,6 +11137,7 @@ packages: /is-path-inside@3.0.3: resolution: {integrity: sha512-Fd4gABb+ycGAmKou8eMftCupSir5lRxqf4aD/vd0cD2qc4HL07OjCeuHMr8Ro4CoMaeCKDB0/ECBOVWjTwUvPQ==} engines: {node: '>=8'} + dev: true /is-path-inside@4.0.0: resolution: {integrity: sha512-lJJV/5dYS+RcL8uQdBDW9c9uWFLLBNRyFhnAKXw5tVqLlKZ4RMGZKv+YQ/IA3OhD+RpbJa1LLFM1FQPGyIXvOA==} @@ -9864,6 +11167,7 @@ packages: /is-potential-custom-element-name@1.0.1: resolution: {integrity: sha512-bCYeRA2rVibKZd+s2625gGnGF/t7DSqDs4dP7CrLA1m7jKWz6pps0LpYLJN8Q64HtmPKJ1hrN3nzPNKFEKOUiQ==} + dev: true /is-promise@2.2.2: resolution: {integrity: sha512-+lP4/6lKUBfQjZ2pdxThZvLUAafmZb8OAxFb8XXtiQmS35INgr85hdOGoEs124ez1FCnZJt6jau/T+alh58QFQ==} @@ -9895,7 +11199,6 @@ packages: /is-stream@1.1.0: resolution: {integrity: sha512-uQPm8kcs47jx38atAcWTVxyltQYoPT68y9aWYdV6yWXSyW8mzSat0TL6CiWdZeCdF3KrAvpVtnHbTv4RN+rqdQ==} engines: {node: '>=0.10.0'} - dev: true /is-stream@2.0.1: resolution: {integrity: sha512-hFoiJiTl63nn+kstHGBtewWSKnQLpyb155KHheA1l39uvtO9nWIop1p3udqPcUd/xbF1VLMO4n7OI6p7RbngDg==} @@ -9921,11 +11224,11 @@ packages: html-comment-regex: 1.1.2 dev: true - /is-svg@4.3.2: - resolution: {integrity: sha512-mM90duy00JGMyjqIVHu9gNTjywdZV+8qNasX8cm/EEYZ53PHDgajvbBwNVvty5dwSAxLUD3p3bdo+7sR/UMrpw==} - engines: {node: '>=6'} + /is-svg@5.0.0: + resolution: {integrity: sha512-sRl7J0oX9yUNamSdc8cwgzh9KBLnQXNzGmW0RVHwg/jEYjGNYHC6UvnYD8+hAeut9WwxRvhG9biK7g/wDGxcMw==} + engines: {node: '>=14.16'} dependencies: - fast-xml-parser: 3.21.1 + fast-xml-parser: 4.2.7 dev: false /is-symbol@1.0.4: @@ -9935,15 +11238,11 @@ packages: has-symbols: 1.0.3 dev: true - /is-typed-array@1.1.10: - resolution: {integrity: sha512-PJqgEHiWZvMpaFZ3uTc8kHPM4+4ADTlDniuQL7cU/UDA0Ql7F70yGfHph3cLNe+c9toaigv+DFzTJKhc2CtO6A==} + /is-typed-array@1.1.12: + resolution: {integrity: sha512-Z14TF2JNG8Lss5/HMqt0//T9JeHXttXy5pH/DBU4vi98ozO2btxzq9MwYDZYnKwU8nRsz/+GVFVRDq3DkVuSPg==} engines: {node: '>= 0.4'} dependencies: - available-typed-arrays: 1.0.5 - call-bind: 1.0.2 - for-each: 0.3.3 - gopd: 1.0.1 - has-tostringtag: 1.0.0 + which-typed-array: 1.1.11 /is-typedarray@1.0.0: resolution: {integrity: sha512-cyA56iCMHAh5CdzjJIa4aohJyeO1YbwLi3Jc35MmRU6poroFjIGZzUzupGiRPOjgHg9TLu43xbpwXk523fMxKA==} @@ -9993,6 +11292,13 @@ packages: engines: {node: '>=0.10.0'} dev: true + /is-wsl@2.2.0: + resolution: {integrity: sha512-fKzAra0rGJUUBwGBgNkHZuToZcn+TtXHpeCgmkMJMMYx1sQDYaCSyjJBSCa2nH1DGm7s3n1oBnohoVTBaN7Lww==} + engines: {node: '>=8'} + dependencies: + is-docker: 2.2.1 + dev: true + /isarray@0.0.1: resolution: {integrity: sha512-D2S+3GLxWH+uhrNEcoh/fnmYeP8E8/zHl644d/jdA0g2uyXvy3sb0qxotE+ne0LtccHknQzWwZEzhak7oJ0COQ==} dev: false @@ -10000,6 +11306,10 @@ packages: /isarray@1.0.0: resolution: {integrity: sha512-VLghIWNM6ELQzo7zwmcg0NmTVyWKYjvIeM83yjp0wRDTmUnrM678fQbcKBo6n2CJEF0szoG//ytg+TKla89ALQ==} + /isarray@2.0.5: + resolution: {integrity: sha512-xHjhDr3cNBK0BzdUJSPXZntQUx/mwMS5Rw4A7lPJ90XGAO6ISP/ePDNuo0vhqOZU+UD5JoodwCAAoZQd3FeAKw==} + dev: true + /isexe@2.0.0: resolution: {integrity: sha512-RHxMLp9lnKHGHRng9QFhRCMbYAcVpn69smSGcq3f36xjgVVWThj4qqLbTLlq7Ssj8B+fIQ1EuCEGI2lKsyQeIw==} @@ -10027,21 +11337,34 @@ packages: resolution: {integrity: sha512-pzqtp31nLv/XFOzXGuvhCb8qhjmTVo5vjVk19XE4CRlSWz0KoeJ3bw9XsA7nOp9YBf4qHjwBxkDzKcME/J29Yg==} engines: {node: '>=8'} dependencies: - '@babel/core': 7.22.5 - '@babel/parser': 7.22.5 + '@babel/core': 7.22.20 + '@babel/parser': 7.22.16 '@istanbuljs/schema': 0.1.3 istanbul-lib-coverage: 3.2.0 - semver: 6.3.0 + semver: 6.3.1 transitivePeerDependencies: - supports-color dev: true - /istanbul-lib-report@3.0.0: - resolution: {integrity: sha512-wcdi+uAKzfiGT2abPpKZ0hSU1rGQjUQnLvtY5MpQ7QCTahD3VODhcu4wcfY1YtkGaDD5yuydOLINXsfbus9ROw==} - engines: {node: '>=8'} + /istanbul-lib-instrument@6.0.0: + resolution: {integrity: sha512-x58orMzEVfzPUKqlbLd1hXCnySCxKdDKa6Rjg97CwuLLRI4g3FHTdnExu1OqffVFay6zeMW+T6/DowFLndWnIw==} + engines: {node: '>=10'} + dependencies: + '@babel/core': 7.22.20 + '@babel/parser': 7.22.16 + '@istanbuljs/schema': 0.1.3 + istanbul-lib-coverage: 3.2.0 + semver: 7.5.4 + transitivePeerDependencies: + - supports-color + dev: true + + /istanbul-lib-report@3.0.1: + resolution: {integrity: sha512-GCfE1mtsHGOELCU8e/Z7YWzpmybrx/+dSTfLrvY8qRmaY6zXTKWn6WQIjaAFw069icm6GVMNkgu0NzI4iPZUNw==} + engines: {node: '>=10'} dependencies: istanbul-lib-coverage: 3.2.0 - make-dir: 3.1.0 + make-dir: 4.0.0 supports-color: 7.2.0 dev: true @@ -10056,12 +11379,12 @@ packages: - supports-color dev: true - /istanbul-reports@3.1.5: - resolution: {integrity: sha512-nUsEMa9pBt/NOHqbcbeJEgqIlY/K7rVWUX6Lql2orY5e9roQOthbR3vtY4zzf2orPELg80fnxxk9zUyPlgwD1w==} + /istanbul-reports@3.1.6: + resolution: {integrity: sha512-TLgnMkKg3iTDsQ9PbPTdpfAK2DzjF9mqUG7RMgcQl8oFjad8ob4laGxv5XV5U9MAfx8D6tSJiUyuAwzLicaxlg==} engines: {node: '>=8'} dependencies: html-escaper: 2.0.2 - istanbul-lib-report: 3.0.0 + istanbul-lib-report: 3.0.1 dev: true /istextorbinary@3.3.0: @@ -10072,8 +11395,8 @@ packages: textextensions: 3.3.0 dev: true - /jackspeak@2.2.1: - resolution: {integrity: sha512-MXbxovZ/Pm42f6cDIDkl3xpwv1AGwObKwfmjs2nQePiy85tP3fatofl3FC1aBsOtP/6fq5SbtgHwWcMsLP+bDw==} + /jackspeak@2.3.3: + resolution: {integrity: sha512-R2bUw+kVZFS/h1AZqBKrSgDmdmjApzgY0AlCPumopFiAlbUxE2gf+SCuBzQ0cP5hHmUmFYF5yw55T97Th5Kstg==} engines: {node: '>=14'} dependencies: '@isaacs/cliui': 8.0.2 @@ -10100,11 +11423,12 @@ packages: throat: 6.0.2 dev: true - /jest-changed-files@29.5.0: - resolution: {integrity: sha512-IFG34IUMUaNBIxjQXF/iu7g6EcdMrGRRxaUSw92I/2g2YC6vCdTltl4nHvt7Ci5nSJwXIkCu8Ka1DKF+X7Z1Ag==} + /jest-changed-files@29.7.0: + resolution: {integrity: sha512-fEArFiwf1BpQ+4bXSprcDc3/x4HSzL4al2tozwVpDFpsxALjLYdyiIK4e5Vz66GQJIbXJ82+35PtysofptNX2w==} engines: {node: ^14.15.0 || ^16.10.0 || >=18.0.0} dependencies: execa: 5.1.1 + jest-util: 29.7.0 p-limit: 3.1.0 dev: true @@ -10115,7 +11439,7 @@ packages: '@jest/environment': 27.5.1 '@jest/test-result': 27.5.1 '@jest/types': 27.5.1 - '@types/node': 20.3.1 + '@types/node': 20.5.8 chalk: 4.1.2 co: 4.6.0 dedent: 0.7.0 @@ -10135,31 +11459,32 @@ packages: - supports-color dev: true - /jest-circus@29.6.0: - resolution: {integrity: sha512-LtG45qEKhse2Ws5zNR4DnZATReLGQXzBZGZnJ0DU37p6d4wDhu41vvczCQ3Ou+llR6CRYDBshsubV7H4jZvIkw==} + /jest-circus@29.7.0: + resolution: {integrity: sha512-3E1nCMgipcTkCocFwM90XXQab9bS+GMsjdpmPrlelaxwD93Ad8iVEjX/vvHPdLPnFf+L40u+5+iutRdA1N9myw==} engines: {node: ^14.15.0 || ^16.10.0 || >=18.0.0} dependencies: - '@jest/environment': 29.6.0 - '@jest/expect': 29.6.0 - '@jest/test-result': 29.6.0 - '@jest/types': 29.6.0 - '@types/node': 20.3.1 + '@jest/environment': 29.7.0 + '@jest/expect': 29.7.0 + '@jest/test-result': 29.7.0 + '@jest/types': 29.6.3 + '@types/node': 20.5.8 chalk: 4.1.2 co: 4.6.0 - dedent: 0.7.0 + dedent: 1.5.1 is-generator-fn: 2.1.0 - jest-each: 29.6.0 - jest-matcher-utils: 29.6.0 - jest-message-util: 29.6.0 - jest-runtime: 29.6.0 - jest-snapshot: 29.6.0 - jest-util: 29.6.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.6.0 - pure-rand: 6.0.2 + pretty-format: 29.7.0 + pure-rand: 6.0.3 slash: 3.0.0 stack-utils: 2.0.6 transitivePeerDependencies: + - babel-plugin-macros - supports-color dev: true @@ -10193,8 +11518,8 @@ packages: - utf-8-validate dev: true - /jest-cli@29.6.0(@types/node@18.11.18): - resolution: {integrity: sha512-WvZIaanK/abkw6s01924DQ2QLwM5Q4Y4iPbSDb9Zg6smyXGqqcPQ7ft9X8D7B0jICz312eSzM6UlQNxuZJBrMw==} + /jest-cli@29.7.0(@types/node@18.11.18): + resolution: {integrity: sha512-OVVobw2IubN/GSYsxETi+gOe7Ka59EFMR/twOU3Jb2GnKKeMGJB5SGUUrEz3SFVmJASUdZUzy83sLNNQ2gZslg==} engines: {node: ^14.15.0 || ^16.10.0 || >=18.0.0} hasBin: true peerDependencies: @@ -10203,20 +11528,20 @@ packages: node-notifier: optional: true dependencies: - '@jest/core': 29.6.0 - '@jest/test-result': 29.6.0 - '@jest/types': 29.6.0 + '@jest/core': 29.7.0 + '@jest/test-result': 29.7.0 + '@jest/types': 29.6.3 chalk: 4.1.2 + create-jest: 29.7.0(@types/node@18.11.18) exit: 0.1.2 - graceful-fs: 4.2.11 import-local: 3.1.0 - jest-config: 29.6.0(@types/node@18.11.18) - jest-util: 29.6.0 - jest-validate: 29.6.0 - prompts: 2.4.2 + jest-config: 29.7.0(@types/node@18.11.18) + jest-util: 29.7.0 + jest-validate: 29.7.0 yargs: 17.7.2 transitivePeerDependencies: - '@types/node' + - babel-plugin-macros - supports-color - ts-node dev: true @@ -10230,10 +11555,10 @@ packages: ts-node: optional: true dependencies: - '@babel/core': 7.22.5 + '@babel/core': 7.22.20 '@jest/test-sequencer': 27.5.1 '@jest/types': 27.5.1 - babel-jest: 27.5.1(@babel/core@7.22.5) + babel-jest: 27.5.1(@babel/core@7.22.20) chalk: 4.1.2 ci-info: 3.8.0 deepmerge: 4.3.1 @@ -10254,7 +11579,7 @@ packages: pretty-format: 27.5.1 slash: 3.0.0 strip-json-comments: 3.1.1 - ts-node: 10.4.0(@swc/core@1.3.62)(@types/node@20.3.1)(typescript@5.1.3) + ts-node: 10.4.0(@swc/core@1.3.82)(@types/node@20.3.1)(typescript@5.1.3) transitivePeerDependencies: - bufferutil - canvas @@ -10262,8 +11587,8 @@ packages: - utf-8-validate dev: true - /jest-config@29.6.0(@types/node@18.11.18): - resolution: {integrity: sha512-fKA4jM91PDqWVkMpb1FVKxIuhg3hC6hgaen57cr1rRZkR96dCatvJZsk3ik7/GNu9ERj9wgAspOmyvkFoGsZhA==} + /jest-config@29.7.0(@types/node@18.11.18): + resolution: {integrity: sha512-uXbpfeQ7R6TZBqI3/TxCU4q4ttk3u0PJeC+E0zbfSoSjq6bJ7buBPxzQPL0ifrkY4DNu4JUdk0ImlBUYi840eQ==} engines: {node: ^14.15.0 || ^16.10.0 || >=18.0.0} peerDependencies: '@types/node': '*' @@ -10274,35 +11599,36 @@ packages: ts-node: optional: true dependencies: - '@babel/core': 7.22.5 - '@jest/test-sequencer': 29.6.0 - '@jest/types': 29.6.0 + '@babel/core': 7.22.20 + '@jest/test-sequencer': 29.7.0 + '@jest/types': 29.6.3 '@types/node': 18.11.18 - babel-jest: 29.6.0(@babel/core@7.22.5) + babel-jest: 29.7.0(@babel/core@7.22.20) chalk: 4.1.2 ci-info: 3.8.0 deepmerge: 4.3.1 glob: 7.2.3 graceful-fs: 4.2.11 - jest-circus: 29.6.0 - jest-environment-node: 29.6.0 - jest-get-type: 29.4.3 - jest-regex-util: 29.4.3 - jest-resolve: 29.6.0 - jest-runner: 29.6.0 - jest-util: 29.6.0 - jest-validate: 29.6.0 + 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.5 parse-json: 5.2.0 - pretty-format: 29.6.0 + pretty-format: 29.7.0 slash: 3.0.0 strip-json-comments: 3.1.1 transitivePeerDependencies: + - babel-plugin-macros - supports-color dev: true - /jest-config@29.6.0(@types/node@20.3.1): - resolution: {integrity: sha512-fKA4jM91PDqWVkMpb1FVKxIuhg3hC6hgaen57cr1rRZkR96dCatvJZsk3ik7/GNu9ERj9wgAspOmyvkFoGsZhA==} + /jest-config@29.7.0(@types/node@20.5.8): + resolution: {integrity: sha512-uXbpfeQ7R6TZBqI3/TxCU4q4ttk3u0PJeC+E0zbfSoSjq6bJ7buBPxzQPL0ifrkY4DNu4JUdk0ImlBUYi840eQ==} engines: {node: ^14.15.0 || ^16.10.0 || >=18.0.0} peerDependencies: '@types/node': '*' @@ -10313,30 +11639,31 @@ packages: ts-node: optional: true dependencies: - '@babel/core': 7.22.5 - '@jest/test-sequencer': 29.6.0 - '@jest/types': 29.6.0 - '@types/node': 20.3.1 - babel-jest: 29.6.0(@babel/core@7.22.5) + '@babel/core': 7.22.20 + '@jest/test-sequencer': 29.7.0 + '@jest/types': 29.6.3 + '@types/node': 20.5.8 + babel-jest: 29.7.0(@babel/core@7.22.20) chalk: 4.1.2 ci-info: 3.8.0 deepmerge: 4.3.1 glob: 7.2.3 graceful-fs: 4.2.11 - jest-circus: 29.6.0 - jest-environment-node: 29.6.0 - jest-get-type: 29.4.3 - jest-regex-util: 29.4.3 - jest-resolve: 29.6.0 - jest-runner: 29.6.0 - jest-util: 29.6.0 - jest-validate: 29.6.0 + 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.5 parse-json: 5.2.0 - pretty-format: 29.6.0 + pretty-format: 29.7.0 slash: 3.0.0 strip-json-comments: 3.1.1 transitivePeerDependencies: + - babel-plugin-macros - supports-color dev: true @@ -10350,24 +11677,14 @@ packages: pretty-format: 27.5.1 dev: true - /jest-diff@29.5.0: - resolution: {integrity: sha512-LtxijLLZBduXnHSniy0WMdaHjmQnt3g5sa16W4p0HqukYTTsyTW3GD1q41TyGl5YFXj/5B2U6dlh5FM1LIMgxw==} + /jest-diff@29.7.0: + resolution: {integrity: sha512-LMIgiIrhigmPrs03JHpxUh2yISK3vLFPkAodPeo0+BuF7wA2FoQbkEg1u8gBYBThncu7e1oEDUfIXVuTqLRUjw==} engines: {node: ^14.15.0 || ^16.10.0 || >=18.0.0} dependencies: chalk: 4.1.2 - diff-sequences: 29.4.3 - jest-get-type: 29.4.3 - pretty-format: 29.5.0 - dev: true - - /jest-diff@29.6.0: - resolution: {integrity: sha512-ZRm7cd2m9YyZ0N3iMyuo1iUiprxQ/MFpYWXzEEj7hjzL3WnDffKW8192XBDcrAI8j7hnrM1wed3bL/oEnYF/8w==} - engines: {node: ^14.15.0 || ^16.10.0 || >=18.0.0} - dependencies: - chalk: 4.1.2 - diff-sequences: 29.4.3 - jest-get-type: 29.4.3 - pretty-format: 29.6.0 + diff-sequences: 29.6.3 + jest-get-type: 29.6.3 + pretty-format: 29.7.0 dev: true /jest-docblock@27.5.1: @@ -10377,8 +11694,8 @@ packages: detect-newline: 3.1.0 dev: true - /jest-docblock@29.4.3: - resolution: {integrity: sha512-fzdTftThczeSD9nZ3fzA/4KkHtnmllawWrXO69vtI+L9WjEIuXWs4AmyME7lN5hU7dB0sHhuPfcKofRsUb/2Fg==} + /jest-docblock@29.7.0: + resolution: {integrity: sha512-q617Auw3A612guyaFgsbFeYpNP5t2aoUNLwBUbc/0kD1R4t9ixDbyFTHd1nok4epoVFpr7PmeWHrhvuV3XaJ4g==} engines: {node: ^14.15.0 || ^16.10.0 || >=18.0.0} dependencies: detect-newline: 3.1.0 @@ -10395,15 +11712,15 @@ packages: pretty-format: 27.5.1 dev: true - /jest-each@29.6.0: - resolution: {integrity: sha512-d0Jem4RBAlFUyV6JSXPSHVUpNo5RleSj+iJEy1G3+ZCrzHDjWs/1jUfrbnJKHdJdAx5BCEce/Ju379WqHhQk4w==} + /jest-each@29.7.0: + resolution: {integrity: sha512-gns+Er14+ZrEoC5fhOfYCY1LOHHr0TI+rQUHZS8Ttw2l7gl+80eHc/gFf2Ktkw0+SIACDTeWvpFcv3B04VembQ==} engines: {node: ^14.15.0 || ^16.10.0 || >=18.0.0} dependencies: - '@jest/types': 29.6.0 + '@jest/types': 29.6.3 chalk: 4.1.2 - jest-get-type: 29.4.3 - jest-util: 29.6.0 - pretty-format: 29.6.0 + jest-get-type: 29.6.3 + jest-util: 29.7.0 + pretty-format: 29.7.0 dev: true /jest-environment-jsdom@27.5.1: @@ -10413,7 +11730,7 @@ packages: '@jest/environment': 27.5.1 '@jest/fake-timers': 27.5.1 '@jest/types': 27.5.1 - '@types/node': 20.3.1 + '@types/node': 20.5.8 jest-mock: 27.5.1 jest-util: 27.5.1 jsdom: 16.7.0 @@ -10431,27 +11748,27 @@ packages: '@jest/environment': 27.5.1 '@jest/fake-timers': 27.5.1 '@jest/types': 27.5.1 - '@types/node': 20.3.1 + '@types/node': 20.5.8 jest-mock: 27.5.1 jest-util: 27.5.1 dev: true - /jest-environment-node@29.6.0: - resolution: {integrity: sha512-BOf5Q2/nFCdBOnyBM5c5/6DbdQYgc+0gyUQ8l8qhUAB8O7pM+4QJXIXJsRZJaxd5SHV6y5VArTVhOfogoqcP8Q==} + /jest-environment-node@29.7.0: + resolution: {integrity: sha512-DOSwCRqXirTOyheM+4d5YZOrWcdu0LNZ87ewUoywbcb2XR4wKgqiG8vNeYwhjFMbEkfju7wx2GYH0P2gevGvFw==} engines: {node: ^14.15.0 || ^16.10.0 || >=18.0.0} dependencies: - '@jest/environment': 29.6.0 - '@jest/fake-timers': 29.6.0 - '@jest/types': 29.6.0 - '@types/node': 20.3.1 - jest-mock: 29.6.0 - jest-util: 29.6.0 + '@jest/environment': 29.7.0 + '@jest/fake-timers': 29.7.0 + '@jest/types': 29.6.3 + '@types/node': 20.5.8 + jest-mock: 29.7.0 + jest-util: 29.7.0 dev: true /jest-fetch-mock@3.0.3: resolution: {integrity: sha512-Ux1nWprtLrdrH4XwE7O7InRY6psIi3GOsqNESJgMJ+M5cv4A8Lh7SN9d2V2kKRZ8ebAfcd1LNyZguAOb6JiDqw==} dependencies: - cross-fetch: 3.1.6 + cross-fetch: 3.1.8 promise-polyfill: 8.3.0 transitivePeerDependencies: - encoding @@ -10462,8 +11779,8 @@ packages: engines: {node: ^10.13.0 || ^12.13.0 || ^14.15.0 || >=15.0.0} dev: true - /jest-get-type@29.4.3: - resolution: {integrity: sha512-J5Xez4nRRMjk8emnTpWrlkyb9pfRQQanDrvWHhsR1+VUfbwxi30eVcZFlcdGInRibU4G5LwHXpI7IRHU0CY+gg==} + /jest-get-type@29.6.3: + resolution: {integrity: sha512-zrteXnqYxfQh7l5FHyL38jL39di8H8rHoecLH3JNxH3BwOrBsNeabdap5e0I23lD4HHI8W5VFBZqG4Eaq5LNcw==} engines: {node: ^14.15.0 || ^16.10.0 || >=18.0.0} dev: true @@ -10473,7 +11790,7 @@ packages: dependencies: '@jest/types': 27.5.1 '@types/graceful-fs': 4.1.6 - '@types/node': 20.3.1 + '@types/node': 20.5.8 anymatch: 3.1.3 fb-watchman: 2.0.2 graceful-fs: 4.2.11 @@ -10484,26 +11801,26 @@ packages: micromatch: 4.0.5 walker: 1.0.8 optionalDependencies: - fsevents: 2.3.2 + fsevents: 2.3.3 dev: true - /jest-haste-map@29.6.0: - resolution: {integrity: sha512-dY1DKufptj7hcJSuhpqlYPGcnN3XjlOy/g0jinpRTMsbb40ivZHiuIPzeminOZkrek8C+oDxC54ILGO3vMLojg==} + /jest-haste-map@29.7.0: + resolution: {integrity: sha512-fP8u2pyfqx0K1rGn1R9pyE0/KTn+G7PxktWidOBTqFPLYX0b9ksaMFkhK5vrS3DVun09pckLdlx90QthlW7AmA==} engines: {node: ^14.15.0 || ^16.10.0 || >=18.0.0} dependencies: - '@jest/types': 29.6.0 + '@jest/types': 29.6.3 '@types/graceful-fs': 4.1.6 - '@types/node': 20.3.1 + '@types/node': 20.5.8 anymatch: 3.1.3 fb-watchman: 2.0.2 graceful-fs: 4.2.11 - jest-regex-util: 29.4.3 - jest-util: 29.6.0 - jest-worker: 29.6.0 + jest-regex-util: 29.6.3 + jest-util: 29.7.0 + jest-worker: 29.7.0 micromatch: 4.0.5 walker: 1.0.8 optionalDependencies: - fsevents: 2.3.2 + fsevents: 2.3.3 dev: true /jest-jasmine2@27.5.1: @@ -10514,7 +11831,7 @@ packages: '@jest/source-map': 27.5.1 '@jest/test-result': 27.5.1 '@jest/types': 27.5.1 - '@types/node': 20.3.1 + '@types/node': 20.5.8 chalk: 4.1.2 co: 4.6.0 expect: 27.5.1 @@ -10539,12 +11856,12 @@ packages: pretty-format: 27.5.1 dev: true - /jest-leak-detector@29.6.0: - resolution: {integrity: sha512-JdV6EZOPxHR1gd6ccxjNowuROkT2jtGU5G/g58RcJX1xe5mrtLj0g6/ZkyMoXF4cs+tTkHMFX6pcIrB1QPQwCw==} + /jest-leak-detector@29.7.0: + resolution: {integrity: sha512-kYA8IJcSYtST2BY9I+SMC32nDpBT3J2NvWJx8+JCuCdl/CR1I4EKUJROiP8XtCcxqgTTBGJNdbB1A8XRKbTetw==} engines: {node: ^14.15.0 || ^16.10.0 || >=18.0.0} dependencies: - jest-get-type: 29.4.3 - pretty-format: 29.6.0 + jest-get-type: 29.6.3 + pretty-format: 29.7.0 dev: true /jest-matcher-utils@27.5.1: @@ -10557,21 +11874,21 @@ packages: pretty-format: 27.5.1 dev: true - /jest-matcher-utils@29.6.0: - resolution: {integrity: sha512-oSlqfGN+sbkB2Q5um/zL7z80w84FEAcLKzXBZIPyRk2F2Srg1ubhrHVKW68JCvb2+xKzAeGw35b+6gciS24PHw==} + /jest-matcher-utils@29.7.0: + resolution: {integrity: sha512-sBkD+Xi9DtcChsI3L3u0+N0opgPYnCRPtGcQYrgXmR+hmt/fYfWAL0xRXYU8eWOdfuLgBe0YCW3AFtnRLagq/g==} engines: {node: ^14.15.0 || ^16.10.0 || >=18.0.0} dependencies: chalk: 4.1.2 - jest-diff: 29.6.0 - jest-get-type: 29.4.3 - pretty-format: 29.6.0 + jest-diff: 29.7.0 + jest-get-type: 29.6.3 + pretty-format: 29.7.0 dev: true /jest-message-util@27.5.1: resolution: {integrity: sha512-rMyFe1+jnyAAf+NHwTclDz0eAaLkVDdKVHHBFWsBWHnnh5YeJMNWWsv7AbFYXfK3oTqvL7VTWkhNLu1jX24D+g==} engines: {node: ^10.13.0 || ^12.13.0 || ^14.15.0 || >=15.0.0} dependencies: - '@babel/code-frame': 7.22.5 + '@babel/code-frame': 7.22.13 '@jest/types': 27.5.1 '@types/stack-utils': 2.0.1 chalk: 4.1.2 @@ -10582,17 +11899,17 @@ packages: stack-utils: 2.0.6 dev: true - /jest-message-util@29.6.0: - resolution: {integrity: sha512-mkCp56cETbpoNtsaeWVy6SKzk228mMi9FPHSObaRIhbR2Ujw9PqjW/yqVHD2tN1bHbC8ol6h3UEo7dOPmIYwIA==} + /jest-message-util@29.7.0: + resolution: {integrity: sha512-GBEV4GRADeP+qtB2+6u61stea8mGcOT4mCtrYISZwfu9/ISHFJ/5zOMXYbpBE9RsS5+Gb63DW4FgmnKJ79Kf6w==} engines: {node: ^14.15.0 || ^16.10.0 || >=18.0.0} dependencies: - '@babel/code-frame': 7.22.5 - '@jest/types': 29.6.0 + '@babel/code-frame': 7.22.13 + '@jest/types': 29.6.3 '@types/stack-utils': 2.0.1 chalk: 4.1.2 graceful-fs: 4.2.11 micromatch: 4.0.5 - pretty-format: 29.6.0 + pretty-format: 29.7.0 slash: 3.0.0 stack-utils: 2.0.6 dev: true @@ -10602,16 +11919,16 @@ packages: engines: {node: ^10.13.0 || ^12.13.0 || ^14.15.0 || >=15.0.0} dependencies: '@jest/types': 27.5.1 - '@types/node': 20.3.1 + '@types/node': 20.5.8 dev: true - /jest-mock@29.6.0: - resolution: {integrity: sha512-2Pb7R2w24Q0aUVn+2/vdRDL6CqGqpheDZy7zrXav8FotOpSGw/4bS2hyVoKHMEx4xzOn6EyCAGwc5czWxXeN7w==} + /jest-mock@29.7.0: + resolution: {integrity: sha512-ITOMZn+UkYS4ZFh83xYAOzWStloNzJFO2s8DWrE4lhtGD+AorgnbkiKERe4wQVBydIGPx059g6riW5Btp6Llnw==} engines: {node: ^14.15.0 || ^16.10.0 || >=18.0.0} dependencies: - '@jest/types': 29.6.0 - '@types/node': 20.3.1 - jest-util: 29.6.0 + '@jest/types': 29.6.3 + '@types/node': 20.5.8 + jest-util: 29.7.0 dev: true /jest-pnp-resolver@1.2.3(jest-resolve@27.5.1): @@ -10626,7 +11943,7 @@ packages: jest-resolve: 27.5.1 dev: true - /jest-pnp-resolver@1.2.3(jest-resolve@29.6.0): + /jest-pnp-resolver@1.2.3(jest-resolve@29.7.0): resolution: {integrity: sha512-+3NpwQEnRoIBtx4fyhblQDPgJI0H1IEIkX7ShLUjPGA7TtUTvI1oiKi3SR4oBR0hQhQR80l4WAe5RrXBwWMA8w==} engines: {node: '>=6'} peerDependencies: @@ -10635,7 +11952,7 @@ packages: jest-resolve: optional: true dependencies: - jest-resolve: 29.6.0 + jest-resolve: 29.7.0 dev: true /jest-regex-util@27.5.1: @@ -10643,8 +11960,8 @@ packages: engines: {node: ^10.13.0 || ^12.13.0 || ^14.15.0 || >=15.0.0} dev: true - /jest-regex-util@29.4.3: - resolution: {integrity: sha512-O4FglZaMmWXbGHSQInfXewIsd1LMn9p3ZXB/6r4FOkyhX2/iP/soMG98jGvk/A3HAN78+5VWcBGO0BJAPRh4kg==} + /jest-regex-util@29.6.3: + resolution: {integrity: sha512-KJJBsRCyyLNWCNBOvZyRDnAIfUiRJ8v+hOBQYGn8gDyF3UegwiP4gwRR3/SDa42g1YbVycTidUF3rKjyLFDWbg==} engines: {node: ^14.15.0 || ^16.10.0 || >=18.0.0} dev: true @@ -10659,12 +11976,12 @@ packages: - supports-color dev: true - /jest-resolve-dependencies@29.6.0: - resolution: {integrity: sha512-eOfPog9K3hJdJk/3i6O6bQhXS+3uXhMDkLJGX+xmMPp7T1d/zdcFofbDnHgNoEkhD/mSimC5IagLEP7lpLLu/A==} + /jest-resolve-dependencies@29.7.0: + resolution: {integrity: sha512-un0zD/6qxJ+S0et7WxeI3H5XSe9lTBBR7bOHCHXkKR6luG5mwDDlIzVQ0V5cZCuoTgEdcdwzTghYkTWfubi+nA==} engines: {node: ^14.15.0 || ^16.10.0 || >=18.0.0} dependencies: - jest-regex-util: 29.4.3 - jest-snapshot: 29.6.0 + jest-regex-util: 29.6.3 + jest-snapshot: 29.7.0 transitivePeerDependencies: - supports-color dev: true @@ -10680,22 +11997,22 @@ packages: jest-pnp-resolver: 1.2.3(jest-resolve@27.5.1) jest-util: 27.5.1 jest-validate: 27.5.1 - resolve: 1.22.2 + resolve: 1.22.6 resolve.exports: 1.1.1 slash: 3.0.0 dev: true - /jest-resolve@29.6.0: - resolution: {integrity: sha512-+hrpY4LzAONoZA/rvB6rnZLkOSA6UgJLpdCWrOZNSgGxWMumzRLu7dLUSCabAHzoHIDQ9qXfr3th1zYNJ0E8sQ==} + /jest-resolve@29.7.0: + resolution: {integrity: sha512-IOVhZSrg+UvVAshDSDtHyFCCBUl/Q3AAJv8iZ6ZjnZ74xzvwuzLXid9IIIPgTnY62SJjfuupMKZsZQRsCvxEgA==} engines: {node: ^14.15.0 || ^16.10.0 || >=18.0.0} dependencies: chalk: 4.1.2 graceful-fs: 4.2.11 - jest-haste-map: 29.6.0 - jest-pnp-resolver: 1.2.3(jest-resolve@29.6.0) - jest-util: 29.6.0 - jest-validate: 29.6.0 - resolve: 1.22.2 + jest-haste-map: 29.7.0 + jest-pnp-resolver: 1.2.3(jest-resolve@29.7.0) + jest-util: 29.7.0 + jest-validate: 29.7.0 + resolve: 1.22.6 resolve.exports: 2.0.2 slash: 3.0.0 dev: true @@ -10709,7 +12026,7 @@ packages: '@jest/test-result': 27.5.1 '@jest/transform': 27.5.1 '@jest/types': 27.5.1 - '@types/node': 20.3.1 + '@types/node': 20.5.8 chalk: 4.1.2 emittery: 0.8.1 graceful-fs: 4.2.11 @@ -10732,29 +12049,29 @@ packages: - utf-8-validate dev: true - /jest-runner@29.6.0: - resolution: {integrity: sha512-4fZuGV2lOxS2BiqEG9/AI8E6O+jo+QZjMVcgi1x5E6aDql0Gd/EFIbUQ0pSS09y8cya1vJB/qC2xsE468jqtSg==} + /jest-runner@29.7.0: + resolution: {integrity: sha512-fsc4N6cPCAahybGBfTRcq5wFR6fpLznMg47sY5aDpsoejOcVYFb07AHuSnR0liMcPTgBsA3ZJL6kFOjPdoNipQ==} engines: {node: ^14.15.0 || ^16.10.0 || >=18.0.0} dependencies: - '@jest/console': 29.6.0 - '@jest/environment': 29.6.0 - '@jest/test-result': 29.6.0 - '@jest/transform': 29.6.0 - '@jest/types': 29.6.0 - '@types/node': 20.3.1 + '@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': 20.5.8 chalk: 4.1.2 emittery: 0.13.1 graceful-fs: 4.2.11 - jest-docblock: 29.4.3 - jest-environment-node: 29.6.0 - jest-haste-map: 29.6.0 - jest-leak-detector: 29.6.0 - jest-message-util: 29.6.0 - jest-resolve: 29.6.0 - jest-runtime: 29.6.0 - jest-util: 29.6.0 - jest-watcher: 29.6.0 - jest-worker: 29.6.0 + 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 transitivePeerDependencies: @@ -10774,7 +12091,7 @@ packages: '@jest/types': 27.5.1 chalk: 4.1.2 cjs-module-lexer: 1.2.3 - collect-v8-coverage: 1.0.1 + collect-v8-coverage: 1.0.2 execa: 5.1.1 glob: 7.2.3 graceful-fs: 4.2.11 @@ -10791,30 +12108,30 @@ packages: - supports-color dev: true - /jest-runtime@29.6.0: - resolution: {integrity: sha512-5FavYo3EeXLHIvnJf+r7Cj0buePAbe4mzRB9oeVxDS0uVmouSBjWeGgyRjZkw7ArxOoZI8gO6f8SGMJ2HFlwwg==} + /jest-runtime@29.7.0: + resolution: {integrity: sha512-gUnLjgwdGqW7B4LvOIkbKs9WGbn+QLqRQQ9juC6HndeDiezIwhDP+mhMwHWCEcfQ5RUXa6OPnFF8BJh5xegwwQ==} engines: {node: ^14.15.0 || ^16.10.0 || >=18.0.0} dependencies: - '@jest/environment': 29.6.0 - '@jest/fake-timers': 29.6.0 - '@jest/globals': 29.6.0 - '@jest/source-map': 29.6.0 - '@jest/test-result': 29.6.0 - '@jest/transform': 29.6.0 - '@jest/types': 29.6.0 - '@types/node': 20.3.1 + '@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': 20.5.8 chalk: 4.1.2 cjs-module-lexer: 1.2.3 - collect-v8-coverage: 1.0.1 + collect-v8-coverage: 1.0.2 glob: 7.2.3 graceful-fs: 4.2.11 - jest-haste-map: 29.6.0 - jest-message-util: 29.6.0 - jest-mock: 29.6.0 - jest-regex-util: 29.4.3 - jest-resolve: 29.6.0 - jest-snapshot: 29.6.0 - jest-util: 29.6.0 + 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 transitivePeerDependencies: @@ -10825,7 +12142,7 @@ packages: resolution: {integrity: sha512-jZCyo6iIxO1aqUxpuBlwTDMkzOAJS4a3eYz3YzgxxVQFwLeSA7Jfq5cbqCY+JLvTDrWirgusI/0KwxKMgrdf7w==} engines: {node: ^10.13.0 || ^12.13.0 || ^14.15.0 || >=15.0.0} dependencies: - '@types/node': 20.3.1 + '@types/node': 20.5.8 graceful-fs: 4.2.11 dev: true @@ -10833,16 +12150,16 @@ packages: resolution: {integrity: sha512-yYykXI5a0I31xX67mgeLw1DZ0bJB+gpq5IpSuCAoyDi0+BhgU/RIrL+RTzDmkNTchvDFWKP8lp+w/42Z3us5sA==} engines: {node: ^10.13.0 || ^12.13.0 || ^14.15.0 || >=15.0.0} dependencies: - '@babel/core': 7.22.5 - '@babel/generator': 7.22.5 - '@babel/plugin-syntax-typescript': 7.22.5(@babel/core@7.22.5) - '@babel/traverse': 7.22.5 - '@babel/types': 7.22.5 + '@babel/core': 7.22.20 + '@babel/generator': 7.22.15 + '@babel/plugin-syntax-typescript': 7.22.5(@babel/core@7.22.20) + '@babel/traverse': 7.22.20 + '@babel/types': 7.22.19 '@jest/transform': 27.5.1 '@jest/types': 27.5.1 - '@types/babel__traverse': 7.20.1 + '@types/babel__traverse': 7.20.2 '@types/prettier': 2.7.3 - babel-preset-current-node-syntax: 1.0.1(@babel/core@7.22.5) + babel-preset-current-node-syntax: 1.0.1(@babel/core@7.22.20) chalk: 4.1.2 expect: 27.5.1 graceful-fs: 4.2.11 @@ -10854,36 +12171,35 @@ packages: jest-util: 27.5.1 natural-compare: 1.4.0 pretty-format: 27.5.1 - semver: 7.5.1 + semver: 7.5.4 transitivePeerDependencies: - supports-color dev: true - /jest-snapshot@29.6.0: - resolution: {integrity: sha512-H3kUE9NwWDEDoutcOSS921IqdlkdjgnMdj1oMyxAHNflscdLc9dB8OudZHV6kj4OHJxbMxL8CdI5DlwYrs4wQg==} + /jest-snapshot@29.7.0: + resolution: {integrity: sha512-Rm0BMWtxBcioHr1/OX5YCP8Uov4riHvKPknOGs804Zg9JGZgmIBkbtlxJC/7Z4msKYVbIJtfU+tKb8xlYNfdkw==} engines: {node: ^14.15.0 || ^16.10.0 || >=18.0.0} dependencies: - '@babel/core': 7.22.5 - '@babel/generator': 7.22.5 - '@babel/plugin-syntax-jsx': 7.22.5(@babel/core@7.22.5) - '@babel/plugin-syntax-typescript': 7.22.5(@babel/core@7.22.5) - '@babel/types': 7.22.5 - '@jest/expect-utils': 29.6.0 - '@jest/transform': 29.6.0 - '@jest/types': 29.6.0 - '@types/prettier': 2.7.3 - babel-preset-current-node-syntax: 1.0.1(@babel/core@7.22.5) + '@babel/core': 7.22.20 + '@babel/generator': 7.22.15 + '@babel/plugin-syntax-jsx': 7.22.5(@babel/core@7.22.20) + '@babel/plugin-syntax-typescript': 7.22.5(@babel/core@7.22.20) + '@babel/types': 7.22.19 + '@jest/expect-utils': 29.7.0 + '@jest/transform': 29.7.0 + '@jest/types': 29.6.3 + babel-preset-current-node-syntax: 1.0.1(@babel/core@7.22.20) chalk: 4.1.2 - expect: 29.6.0 + expect: 29.7.0 graceful-fs: 4.2.11 - jest-diff: 29.6.0 - jest-get-type: 29.4.3 - jest-matcher-utils: 29.6.0 - jest-message-util: 29.6.0 - jest-util: 29.6.0 + 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.6.0 - semver: 7.5.3 + pretty-format: 29.7.0 + semver: 7.5.4 transitivePeerDependencies: - supports-color dev: true @@ -10893,19 +12209,19 @@ packages: engines: {node: ^10.13.0 || ^12.13.0 || ^14.15.0 || >=15.0.0} dependencies: '@jest/types': 27.5.1 - '@types/node': 20.3.1 + '@types/node': 20.5.8 chalk: 4.1.2 ci-info: 3.8.0 graceful-fs: 4.2.11 picomatch: 2.3.1 dev: true - /jest-util@29.6.0: - resolution: {integrity: sha512-S0USx9YwcvEm4pQ5suisVm/RVxBmi0GFR7ocJhIeaCuW5AXnAnffXbaVKvIFodyZNOc9ygzVtTxmBf40HsHXaA==} + /jest-util@29.7.0: + resolution: {integrity: sha512-z6EbKajIpqGKU56y5KBUgy1dt1ihhQJgWzUlZHArA/+X2ad7Cb5iF+AK1EWVL/Bo7Rz9uurpqw6SiBCefUbCGA==} engines: {node: ^14.15.0 || ^16.10.0 || >=18.0.0} dependencies: - '@jest/types': 29.6.0 - '@types/node': 20.3.1 + '@jest/types': 29.6.3 + '@types/node': 20.5.8 chalk: 4.1.2 ci-info: 3.8.0 graceful-fs: 4.2.11 @@ -10924,16 +12240,16 @@ packages: pretty-format: 27.5.1 dev: true - /jest-validate@29.6.0: - resolution: {integrity: sha512-MLTrAJsb1+W7svbeZ+A7pAnyXMaQrjvPDKCy7OlfsfB6TMVc69v7WjUWfiR6r3snULFWZASiKgvNVDuATta1dg==} + /jest-validate@29.7.0: + resolution: {integrity: sha512-ZB7wHqaRGVw/9hST/OuFUReG7M8vKeq0/J2egIGLdvjHCmYqGARhzXmtgi+gVeZ5uXFF219aOc3Ls2yLg27tkw==} engines: {node: ^14.15.0 || ^16.10.0 || >=18.0.0} dependencies: - '@jest/types': 29.6.0 + '@jest/types': 29.6.3 camelcase: 6.3.0 chalk: 4.1.2 - jest-get-type: 29.4.3 + jest-get-type: 29.6.3 leven: 3.1.0 - pretty-format: 29.6.0 + pretty-format: 29.7.0 dev: true /jest-watcher@27.5.1: @@ -10942,67 +12258,55 @@ packages: dependencies: '@jest/test-result': 27.5.1 '@jest/types': 27.5.1 - '@types/node': 20.3.1 + '@types/node': 20.5.8 ansi-escapes: 4.3.2 chalk: 4.1.2 jest-util: 27.5.1 string-length: 4.0.2 dev: true - /jest-watcher@29.6.0: - resolution: {integrity: sha512-LdsQqFNX60mRdRRe+zsELnYRH1yX6KL+ukbh+u6WSQeTheZZe1TlLJNKRQiZ7e0VbvMkywmMWL/KV35noOJCcw==} + /jest-watcher@29.7.0: + resolution: {integrity: sha512-49Fg7WXkU3Vl2h6LbLtMQ/HyB6rXSIX7SqvBLQmssRBGN9I0PNvPmAmCWSOY6SOvrjhI/F7/bGAv9RtnsPA03g==} engines: {node: ^14.15.0 || ^16.10.0 || >=18.0.0} dependencies: - '@jest/test-result': 29.6.0 - '@jest/types': 29.6.0 - '@types/node': 20.3.1 + '@jest/test-result': 29.7.0 + '@jest/types': 29.6.3 + '@types/node': 20.5.8 ansi-escapes: 4.3.2 chalk: 4.1.2 emittery: 0.13.1 - jest-util: 29.6.0 + jest-util: 29.7.0 string-length: 4.0.2 dev: true - /jest-websocket-mock@2.2.1(mock-socket@9.0.8): - resolution: {integrity: sha512-fhsGLXrPfs06PhHoxqOSA9yZ6Rb4qYrf4Wcm7/nfRzjlrf1gIeuhYUkzMRjjE0TMQ37SwkmeLanwrZY4ZaNp8g==} - peerDependencies: - mock-socket: ^8||^9 + /jest-websocket-mock@2.5.0: + resolution: {integrity: sha512-a+UJGfowNIWvtIKIQBHoEWIUqRxxQHFx4CXT+R5KxxKBtEQ5rS3pPOV/5299sHzqbmeCzxxY5qE4+yfXePePig==} dependencies: - jest-diff: 27.5.1 - mock-socket: 9.0.8 + jest-diff: 29.7.0 + mock-socket: 9.3.1 dev: true /jest-worker@27.5.1: resolution: {integrity: sha512-7vuh85V5cdDofPyxn58nrPjBktZo0u9x1g8WtjQol+jZDaE+fhN+cIvTj11GndBnMnyfrUOG1sZQxCdjKh+DKg==} engines: {node: '>= 10.13.0'} dependencies: - '@types/node': 20.3.1 + '@types/node': 20.5.8 merge-stream: 2.0.0 supports-color: 8.1.1 dev: true - /jest-worker@29.4.0: - resolution: {integrity: sha512-dICMQ+Q4W0QVMsaQzWlA1FVQhKNz7QcDCOGtbk1GCAd0Lai+wdkQvfmQwL4MjGumineh1xz+6M5oMj3rfWS02A==} + /jest-worker@29.7.0: + resolution: {integrity: sha512-eIz2msL/EzL9UFTFFx7jBTkeZfku0yUAyZZZmJ93H2TYEiroIx2PQjEXcwYtYl8zXCxb+PAmA2hLIt/6ZEkPHw==} engines: {node: ^14.15.0 || ^16.10.0 || >=18.0.0} dependencies: - '@types/node': 20.3.1 - jest-util: 29.6.0 + '@types/node': 20.5.8 + jest-util: 29.7.0 merge-stream: 2.0.0 supports-color: 8.1.1 dev: true - /jest-worker@29.6.0: - resolution: {integrity: sha512-oiQHH1SnKmZIwwPnpOrXTq4kHBk3lKGY/07DpnH0sAu+x7J8rXlbLDROZsU6vy9GwB0hPiZeZpu6YlJ48QoKcA==} - engines: {node: ^14.15.0 || ^16.10.0 || >=18.0.0} - dependencies: - '@types/node': 20.3.1 - jest-util: 29.6.0 - merge-stream: 2.0.0 - supports-color: 8.1.1 - dev: true - - /jest@27.4.5(ts-node@10.4.0): - resolution: {integrity: sha512-uT5MiVN3Jppt314kidCk47MYIRilJjA/l2mxwiuzzxGUeJIvA8/pDaJOAX5KWvjAo7SCydcW0/4WEtgbLMiJkg==} + /jest@27.5.1(ts-node@10.4.0): + resolution: {integrity: sha512-Yn0mADZB89zTtjkPJEXwrac3LHudkQMR+Paqa8uxJHCBr9agxztUifWCyiYrjhMPBoUVBjyny0I7XH6ozDr7QQ==} engines: {node: ^10.13.0 || ^12.13.0 || ^14.15.0 || >=15.0.0} hasBin: true peerDependencies: @@ -11022,8 +12326,8 @@ packages: - utf-8-validate dev: true - /jest@29.4.0(@types/node@18.11.18): - resolution: {integrity: sha512-Zfd4UzNxPkSoHRBkg225rBjQNa6pVqbh20MGniAzwaOzYLd+pQUcAwH+WPxSXxKFs+QWYfPYIq9hIVSmdVQmPA==} + /jest@29.7.0(@types/node@18.11.18): + resolution: {integrity: sha512-NIy3oAFp9shda19hy4HK0HRTWKtPJmGdnvywu01nOqNC2vZg+Z+fvJDxpMQA88eb2I9EcafcdjYgsDthnYTvGw==} engines: {node: ^14.15.0 || ^16.10.0 || >=18.0.0} hasBin: true peerDependencies: @@ -11032,12 +12336,13 @@ packages: node-notifier: optional: true dependencies: - '@jest/core': 29.6.0 - '@jest/types': 29.6.0 + '@jest/core': 29.7.0 + '@jest/types': 29.6.3 import-local: 3.1.0 - jest-cli: 29.6.0(@types/node@18.11.18) + jest-cli: 29.7.0(@types/node@18.11.18) transitivePeerDependencies: - '@types/node' + - babel-plugin-macros - supports-color - ts-node dev: true @@ -11051,8 +12356,8 @@ packages: engines: {node: '>= 0.6.0'} dev: false - /joi@17.9.2: - resolution: {integrity: sha512-Itk/r+V4Dx0V3c7RLFdRh12IOjySm2/WGPMubBT92cQvRfYZhPM2W0hZlctjj72iES8jsRCwp7S/cRmWBnJ4nw==} + /joi@17.10.2: + resolution: {integrity: sha512-hcVhjBxRNW/is3nNLdGLIjkgXetkeGc2wyhydhz8KumG23Aerk4HPjU5zaPAMRqXQFc0xNqXTC7+zQjxr0GlKA==} dependencies: '@hapi/hoek': 9.3.0 '@hapi/topo': 5.1.0 @@ -11073,13 +12378,13 @@ packages: resolution: {integrity: sha512-pZe//GGmwJndub7ZghVHz7vjb2LgC1m8B07Au3eYqeqv9emhESByMXxaEgkUkEqJe87oBbSniGYoQNIBklc7IQ==} dev: true - /js-beautify@1.14.8: - resolution: {integrity: sha512-4S7HFeI9YfRvRgKnEweohs0tgJj28InHVIj4Nl8Htf96Y6pHg3+tJrmo4ucAM9f7l4SHbFI3IvFAZ2a1eQPbyg==} + /js-beautify@1.14.9: + resolution: {integrity: sha512-coM7xq1syLcMyuVGyToxcj2AlzhkDjmfklL8r0JgJ7A76wyGMpJ1oA35mr4APdYNO/o/4YY8H54NQIJzhMbhBg==} engines: {node: '>=12'} hasBin: true dependencies: config-chain: 1.1.13 - editorconfig: 0.15.3 + editorconfig: 1.0.4 glob: 8.1.0 nopt: 6.0.0 @@ -11141,6 +12446,11 @@ packages: engines: {node: '>=0.1.90'} dev: false + /jsdoc-type-pratt-parser@4.0.0: + resolution: {integrity: sha512-YtOli5Cmzy3q4dP26GraSOeAhqecewG04hoO8DY56CH4KJ9Fvv5qKWUCCo3HZob7esJQHCv6/+bnTy72xZZaVQ==} + engines: {node: '>=12.0.0'} + dev: true + /jsdom@16.7.0: resolution: {integrity: sha512-u9Smc2G1USStM+s/x1ru5Sxrl6mPYCbByG1U/hUmqaVsm4tbNyS7CicOSRyuGQYZhTu0h84qkZZQ/I+dzizSVw==} engines: {node: '>=10'} @@ -11151,20 +12461,20 @@ packages: optional: true dependencies: abab: 2.0.6 - acorn: 8.9.0 + acorn: 8.10.0 acorn-globals: 6.0.0 cssom: 0.4.4 cssstyle: 2.3.0 data-urls: 2.0.0 decimal.js: 10.4.3 domexception: 2.0.1 - escodegen: 2.0.0 + escodegen: 2.1.0 form-data: 3.0.1 html-encoding-sniffer: 2.0.1 http-proxy-agent: 4.0.1 https-proxy-agent: 5.0.1 is-potential-custom-element-name: 1.0.1 - nwsapi: 2.2.5 + nwsapi: 2.2.7 parse5: 6.0.1 saxes: 5.0.1 symbol-tree: 3.2.4 @@ -11183,52 +12493,22 @@ packages: - utf-8-validate dev: true - /jsdom@20.0.3: - resolution: {integrity: sha512-SYhBvTh89tTfCD/CRdSOm13mOBa42iTaTyfyEWBdKcGdPxPtLFBXuHR8XHb33YNYaP+lLbmSvBTsnoesCNJEsQ==} - engines: {node: '>=14'} - peerDependencies: - canvas: ^2.5.0 - peerDependenciesMeta: - canvas: - optional: true - dependencies: - abab: 2.0.6 - acorn: 8.9.0 - acorn-globals: 7.0.1 - cssom: 0.5.0 - cssstyle: 2.3.0 - data-urls: 3.0.2 - decimal.js: 10.4.3 - domexception: 4.0.0 - escodegen: 2.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.5 - parse5: 7.1.2 - saxes: 6.0.0 - symbol-tree: 3.2.4 - tough-cookie: 4.1.3 - w3c-xmlserializer: 4.0.0 - webidl-conversions: 7.0.0 - whatwg-encoding: 2.0.0 - whatwg-mimetype: 3.0.0 - whatwg-url: 11.0.0 - ws: 8.13.0 - xml-name-validator: 4.0.0 - transitivePeerDependencies: - - bufferutil - - supports-color - - utf-8-validate - dev: false + /jsesc@0.5.0: + resolution: {integrity: sha512-uZz5UnB7u4T9LvwmFqXii7pZSouaRPorGs5who1Ip7VO0wxanFvBL7GkM6dTHlgX+jhBApRetaWpnDabOeTcnA==} + hasBin: true + dev: true /jsesc@2.5.2: resolution: {integrity: sha512-OYu7XEzjkCQ3C5Ps3QIZsQfNpqoJyZZA99wd9aWd05NCtC5pWOkShK2mkL6HXQR6/Cy2lbNdPlZBpuQHXE63gA==} engines: {node: '>=4'} hasBin: true + /jsesc@3.0.2: + resolution: {integrity: sha512-xKqzzWXDttJuOcawBt4KnKHHIf5oQ/Cxax+0PWFG+DFDgHNAdi+TXECADI+RYiFUMmx8792xsMbbgXj4CwnP4g==} + engines: {node: '>=6'} + hasBin: true + dev: true + /json-buffer@3.0.1: resolution: {integrity: sha512-4bV5BfR2mqfQTJm+V5tPPdf+ZpuhiIvTuAB5g8kcrXOZpTT/QwwVRWBywX1ozr6lEuPdbHxwaJlm9G6mI2sfSQ==} @@ -11248,11 +12528,12 @@ packages: /json-stable-stringify-without-jsonify@1.0.1: resolution: {integrity: sha512-Bdboy+l7tA3OGW6FjyFHWkP5LuByj1Tk33Ljyq0axyzdk9//JSi2u3fP1QSmd1KNwq6VOKYGlAu87CisVir6Pw==} + dev: true /json-stringify-safe@5.0.1: resolution: {integrity: sha512-ZClg6AaYvamvYEE82d3Iyd3vSSIjQ+odgjaTzRuO3s7toCdFKczob2i0zCh7JE8kWn17yvAWhUVxvqGwUalsRA==} - /json5-loader@4.0.1(webpack@5.85.1): + /json5-loader@4.0.1(webpack@5.88.2): resolution: {integrity: sha512-c9viNZlZTz0MTIcf/4qvek5Dz1/PU3DNCB4PwUhlEZIV3qb1bSD6vQQymlV17/Wm6ncra1aCvmIPsuRj+KfEEg==} engines: {node: '>= 10.13.0'} peerDependencies: @@ -11261,7 +12542,7 @@ packages: json5: 2.2.3 loader-utils: 2.0.4 schema-utils: 3.3.0 - webpack: 5.85.1(@swc/core@1.3.62)(webpack-cli@5.1.3) + webpack: 5.88.2(@swc/core@1.3.82)(webpack-cli@5.1.4) dev: true /json5@1.0.2: @@ -11276,6 +12557,16 @@ packages: engines: {node: '>=6'} hasBin: true + /jsonc-eslint-parser@2.3.0: + resolution: {integrity: sha512-9xZPKVYp9DxnM3sd1yAsh/d59iIaswDkai8oTxbursfKYbg/ibjX0IzFt35+VZ8iEW453TVTXztnRvYUQlAfUQ==} + engines: {node: ^12.22.0 || ^14.17.0 || >=16.0.0} + dependencies: + acorn: 8.10.0 + eslint-visitor-keys: 3.4.3 + espree: 9.6.1 + semver: 7.5.4 + dev: true + /jsonc-parser@3.2.0: resolution: {integrity: sha512-gfFQZrcTc8CnKXp6Y4/CBT3fTc0OVuDofpre4aEeEpSBPV5X5v4+Vmx+8snU7RLPrNHPKSgLxGo9YuQzz20o+w==} dev: true @@ -11300,8 +12591,8 @@ packages: graceful-fs: 4.2.11 dev: true - /jsonld@8.2.0: - resolution: {integrity: sha512-qHUa9pn3/cdAZw26HY1Jmy9+sHOxaLrveTRWUcrSDx5apTa20bBTe+X4nzI7dlqc+M5GkwQW6RgRdqO6LF5nkw==} + /jsonld@8.2.1: + resolution: {integrity: sha512-hCnY98LwTp0gJ0oEp41wytYYbU96ZX6SR3QwE8A+1V9dKVCSXrOR1WXF21Vq/Bgx46l2baPRvJ5cix5Gd4EX5A==} engines: {node: '>=14'} dependencies: '@digitalbazaar/http-client': 3.4.1 @@ -11332,12 +12623,12 @@ packages: verror: 1.10.0 dev: true - /jsrsasign@10.6.1: - resolution: {integrity: sha512-emiQ05haY9CRj1Ho/LiuCqr/+8RgJuWdiHYNglIg2Qjfz0n+pnUq9I2QHplXuOMO2EnAW1oCGC1++aU5VoWSlw==} + /jsrsasign@10.8.6: + resolution: {integrity: sha512-bQmbVtsfbgaKBTWCKiDCPlUPbdlRIK/FzSwT3BzIgZl/cU6TqXu6pZJsCI/dJVrZ9Gir5GC4woqw9shH/v7MBw==} dev: false - /jssha@3.3.0: - resolution: {integrity: sha512-w9OtT4ALL+fbbwG3gw7erAO0jvS5nfvrukGPMWIAoea359B26ALXGpzy4YJSp9yGnpUvuvOw1nSjSoHDfWSr1w==} + /jssha@3.3.1: + resolution: {integrity: sha512-VCMZj12FCFMQYcFLPRm/0lOBbLi8uM2BhXPTqw3U4YAfs4AZfiApOoBLoN8cQE60Z50m1MYMTQVCfgF/KaCVhQ==} dev: false /jstransformer@1.0.0: @@ -11365,8 +12656,8 @@ packages: safe-buffer: 5.2.1 dev: false - /katex@0.16.7: - resolution: {integrity: sha512-Xk9C6oGKRwJTfqfIbtr0Kes9OSv6IFsuhFGc7tW4urlpMJtuh+7YhzU6YEG9n8gmWKcMAFzkp7nr+r69kV0zrA==} + /katex@0.16.8: + resolution: {integrity: sha512-ftuDnJbcbOckGY11OO+zg3OofESlbR5DRl2cmN8HeWeeFIV7wTXvAOx8kEjZjobhA+9wh2fbKeO6cdcA9Mnovg==} hasBin: true dependencies: commander: 8.3.0 @@ -11379,8 +12670,8 @@ packages: tsscmp: 1.0.6 dev: false - /keyv@4.5.2: - resolution: {integrity: sha512-5MHbFaKn8cNSmVW7BYnijeAVlE4cYA/SVkifVgrh7yotnfhKmjuXpDKjrABLnT0SfHWV21P8ow07OGfRrNDg8g==} + /keyv@4.5.3: + resolution: {integrity: sha512-QCiSav9WaX1PgETJ+SpNnx2PRRapJ/oRSXM4VO5OGYGSjrxbKPVFVhB3l2OCbLCk329N8qyAtsJjSjvVBWzEug==} dependencies: json-buffer: 3.0.1 @@ -11415,20 +12706,21 @@ packages: /koa-body@6.0.1: resolution: {integrity: sha512-M8ZvMD8r+kPHy28aWP9VxL7kY8oPWA+C7ZgCljrCMeaU7uX6wsIQgDHskyrAr9sw+jqnIXyv4Mlxri5R4InIJg==} dependencies: - '@types/co-body': 6.1.0 + '@types/co-body': 6.1.1 '@types/formidable': 2.0.6 - '@types/koa': 2.13.5 + '@types/koa': 2.13.8 co-body: 6.1.0 formidable: 2.1.2 - zod: 3.21.4 + zod: 3.22.2 dev: false - /koa-bodyparser@4.3.0: - resolution: {integrity: sha512-uyV8G29KAGwZc4q/0WUAjH+Tsmuv9ImfBUF2oZVyZtaeo0husInagyn/JH85xMSxM0hEk/mbCII5ubLDuqW/Rw==} + /koa-bodyparser@4.4.1: + resolution: {integrity: sha512-kBH3IYPMb+iAXnrxIhXnW+gXV8OTzCu8VPDqvcDHW9SQrbkHmqPQtiZwrltNmSq6/lpipHnT7k7PsjlVD7kK0w==} engines: {node: '>=8.0.0'} dependencies: co-body: 6.1.0 copy-to: 2.0.1 + type-is: 1.6.18 dev: false /koa-compose@4.1.0: @@ -11521,7 +12813,7 @@ packages: - supports-color dev: false - /koa-views@7.0.2(@types/koa@2.13.5)(ejs@3.1.9)(pug@3.0.2): + /koa-views@7.0.2(@types/koa@2.13.8)(ejs@3.1.9)(pug@3.0.2): resolution: {integrity: sha512-dvx3mdVeSVuIPEaKAoGbxLcenudvhl821xxyuRbcoA+bOJ2dvN8wlGjkLu0ZFMlkCscXZV6lzxy28rafeazI/w==} deprecated: This package is deprecated, please use the new fork @ladjs/koa-views. Maintenance is supported by Forward Email at https://forwardemail.net ; follow/watch https://github.com/ladjs/koa-views for updates and release changelog peerDependencies: @@ -11530,7 +12822,7 @@ packages: '@types/koa': optional: true dependencies: - '@types/koa': 2.13.5 + '@types/koa': 2.13.8 consolidate: 0.16.0(ejs@3.1.9)(pug@3.0.2) debug: 4.3.4(supports-color@8.1.1) get-paths: 0.0.7 @@ -11597,6 +12889,37 @@ packages: /koa@2.13.4: resolution: {integrity: sha512-43zkIKubNbnrULWlHdN5h1g3SEKXOEzoAlRsHOTFpnlDu8JlAOZSMJBLULusuXRequboiwJcj5vtYXKB3k7+2g==} engines: {node: ^4.8.4 || ^6.10.1 || ^7.10.1 || >= 8.1.4} + dependencies: + accepts: 1.3.8 + cache-content-type: 1.0.1 + content-disposition: 0.5.4 + content-type: 1.0.5 + cookies: 0.8.0 + debug: 4.3.3 + delegates: 1.0.0 + depd: 2.0.0 + destroy: 1.2.0 + encodeurl: 1.0.2 + escape-html: 1.0.3 + fresh: 0.5.2 + http-assert: 1.5.0 + http-errors: 1.8.1 + is-generator-function: 1.0.10 + koa-compose: 4.1.0 + koa-convert: 2.0.0 + on-finished: 2.4.1 + only: 0.0.2 + parseurl: 1.3.3 + statuses: 1.5.0 + type-is: 1.6.18 + vary: 1.1.2 + transitivePeerDependencies: + - supports-color + dev: false + + /koa@2.14.2: + resolution: {integrity: sha512-VFI2bpJaodz6P7x2uyLiX6RLYpZmOJqNmoCst/Yyd7hQlszyPwG/I9CQJ63nOtKSxpt5M7NH67V6nJL2BwCl7g==} + engines: {node: ^4.8.4 || ^6.10.1 || ^7.10.1 || >= 8.1.4} dependencies: accepts: 1.3.8 cache-content-type: 1.0.1 @@ -11637,7 +12960,7 @@ packages: dependencies: abort-controller: 3.0.0 ky: 0.33.3 - node-fetch: 3.3.1 + node-fetch: 3.3.2 dev: false /ky@0.33.3: @@ -11683,19 +13006,13 @@ packages: engines: {node: '>=6'} dev: true - /levn@0.3.0: - resolution: {integrity: sha512-0OO4y2iOHix2W6ujICbKIaEQXvFQHue65vUG3pb5EUomzPI90z9hsA1VsO/dbIIpC53J8gxM9Q4Oho0jrCM/yA==} - engines: {node: '>= 0.8.0'} - dependencies: - prelude-ls: 1.1.2 - type-check: 0.3.2 - /levn@0.4.1: resolution: {integrity: sha512-+bT2uH4E5LGE7h/n3evcS/sQlJXCpIp6ym8OWJ5eV6+67Dsql/LaaT7qJBAt2rzfoa/5QBGBhxDix1dMt2kQKQ==} engines: {node: '>= 0.8.0'} dependencies: prelude-ls: 1.2.1 type-check: 0.4.0 + dev: true /liftoff@3.1.0: resolution: {integrity: sha512-DlIPlJUkCV0Ips2zf2pJP0unEoT1kwYhiiPUGF3s/jtxTCjziNLoiVVh+jqWOWeFi6mmwQ5fNxvAUyPad4Dfog==} @@ -11708,7 +13025,7 @@ packages: is-plain-object: 2.0.4 object.map: 1.0.1 rechoir: 0.6.2 - resolve: 1.22.2 + resolve: 1.22.6 transitivePeerDependencies: - supports-color dev: true @@ -11717,7 +13034,7 @@ packages: resolution: {integrity: sha512-7ylylesZQ/PV29jhEDl3Ufjo6ZX7gCqJr5F7PKrqc93v7fzSymt1BpwEU8nAUXs8qzzvqhbjhK5QZg6Mt/HkBg==} dev: true - /listr2@3.14.0(enquirer@2.3.6): + /listr2@3.14.0(enquirer@2.4.1): resolution: {integrity: sha512-TyWI8G99GX9GjE54cJ+RrNMcIFBfwMPxc3XTFiAYGN4s10hWROGtOg7+O6u6LE3mNkyld7RSLE6nrKBvTfcs3g==} engines: {node: '>=10.0.0'} peerDependencies: @@ -11728,7 +13045,7 @@ packages: dependencies: cli-truncate: 2.1.0 colorette: 2.0.20 - enquirer: 2.3.6 + enquirer: 2.4.1 log-update: 4.0.0 p-map: 4.0.0 rfdc: 1.3.0 @@ -11771,6 +13088,11 @@ packages: resolution: {integrity: sha512-AgQGZisAlTPbTEzrHPb6q+NYBMD+DP9uvGSIjSUM5uG+0jG15cb8axWpxuOIqrmQjn6scaaH8JwloiP27b2KXA==} dev: true + /local-pkg@0.4.3: + resolution: {integrity: sha512-SFppqq5p42fe2qcZQqqEOiVRXl+WCP1MdT6k7BDEW1j++sp5fIY+/fdRQitvKgB5BrBcmrs5m/L0v2FrU5MY1g==} + engines: {node: '>=14'} + dev: true + /locate-path@5.0.0: resolution: {integrity: sha512-t7hw9pI+WvuwNJXwk5zVHpyhIqzg2qTlklJOf0mVxGSbe3Fp2VieZcduNYjaLDoy6p9uGpQEGWG87WpMKlNq8g==} engines: {node: '>=8'} @@ -11782,6 +13104,7 @@ packages: engines: {node: '>=10'} dependencies: p-locate: 5.0.0 + dev: true /locate-path@7.2.0: resolution: {integrity: sha512-gvVijfZvn7R+2qyPX8mAuKcFGDf6Nc61GdvGafQsHL0sBIxfKzA+usWn4GFC/bk+QdwPUD4kWFJLhElipq+0VA==} @@ -11800,6 +13123,7 @@ packages: /lodash.defaults@4.2.0: resolution: {integrity: sha512-qjxPLHd3r5DnsdGacqOMU6pb/avJzdh9tFX2ymgoZE27BmjXrNy/y4LoaiTeAb+O3gL8AfpJGtqfX/ae2leYYQ==} + dev: false /lodash.difference@4.5.0: resolution: {integrity: sha512-dS2j+W26TQ7taQBGN8Lbbq04ssV3emRw4NY58WErlTO29pIqS0HmoT5aJ9+TUQ1N3G+JOZSji4eugsWwGp9yPA==} @@ -11823,6 +13147,7 @@ packages: /lodash.isarguments@3.1.0: resolution: {integrity: sha512-chi4NHZlZqZD18a0imDHnZPrDeBbTtVN7GXMwuGdRH9qotxAjYs3aVLKc7zNOG9eddR5Ksd8rvFEBc9SsggPpg==} + dev: false /lodash.isequal@4.5.0: resolution: {integrity: sha512-pDo3lu8Jhfjqls6GkMgpahsF9kCyayhgykjyLMNFTKWrpVdAQtYyB4muAMWozBB4ig/dtWAmsMxLEI8wuz+DYQ==} @@ -11866,6 +13191,10 @@ packages: resolution: {integrity: sha512-j7MJE+TuT51q9ggt4fSgVqro163BEFjAt3u97IqU+JA2DkWl80nFTrowzLpZ/BnpN7rrl0JA/593NAdd8p/scQ==} dev: false + /lodash.sortedlastindex@4.1.0: + resolution: {integrity: sha512-s8xEQdsp2Tu5zUqVdFSe9C0kR8YlnAJYLqMdkh+pIRBRxF6/apWseLdHl3/+jv2I61dhPwtI/Ff+EqvCpc+N8w==} + dev: true + /lodash.union@4.6.0: resolution: {integrity: sha512-c4pB2CdGrGdjMKYLA+XiRDO7Y0PRQbm/Gzg8qMj+QH+pFVAoTp5sBpO0odL3FjoPCGjK96p6qsP+yQoiLoOBcw==} dev: false @@ -11908,8 +13237,8 @@ packages: engines: {node: ^12.20.0 || ^14.13.1 || >=16.0.0} dev: false - /lru-cache@10.0.0: - resolution: {integrity: sha512-svTf/fzsKHffP42sujkO/Rjs37BCIsQVRCeNYIm9WN8rgT7ffoUnRtZCqU+6BqcSBdv8gwJeTz8knJpgACeQMw==} + /lru-cache@10.0.1: + resolution: {integrity: sha512-IJ4uwUTi2qCccrioU6g9g/5rvvVl13bsdczUUcqbciD9iLr095yj8DQKdObriEvuNSx325N1rV1O0sJFszx75g==} engines: {node: 14 || >=16.14} dev: false @@ -11918,6 +13247,7 @@ packages: dependencies: pseudomap: 1.0.2 yallist: 2.1.2 + dev: true /lru-cache@5.1.1: resolution: {integrity: sha512-KpNARQA3Iwv+jTA0utUVVbrh+Jlrr1Fv0e56GGzAFOXN7dk/FviaDW8LHmK52DlcH4WP2n6gI8vN1aesBFgo9w==} @@ -11939,13 +13269,13 @@ packages: resolution: {integrity: sha512-zTU3DaZaF3Rt9rhN3uBMGQD3dD2/vFQqnvZCDv4dl5iOzq2IZQqTxu90r4E5J+nP70J3ilqVCrbho2eWaeW8Ow==} dev: true - /luxon@3.3.0: - resolution: {integrity: sha512-An0UCfG/rSiqtAIiBPO0Y9/zAnHUZxAMiCpTd5h2smgsj7GGmcenvrvww2cqNA8/4A5ZrD1gJpHN2mIHZQF+Mg==} + /luxon@3.4.3: + resolution: {integrity: sha512-tFWBiv3h7z+T/tDaoxA8rqTxy1CHV6gHS//QdaH4pulbq/JuBSGgQspQQqcgnwdAx6pNI7cmvz5Sv/addzHmUg==} engines: {node: '>=12'} dev: false - /magic-string@0.30.0: - resolution: {integrity: sha512-LA+31JYDJLs82r2ScLrlz1GjSgu66ZV518eyWT+S8VhyQn/JL0u9MeBOvQMGYiPk1DBiSN9DDMOcXvigJZaViQ==} + /magic-string@0.30.3: + resolution: {integrity: sha512-B7xGbll2fG/VjP+SWg4sX3JynwIU0mjoTc6MPpKNuIvftk6u6vqhDnk1R80b8C2GBR6ywqy+1DcKBrevBg+bmw==} engines: {node: '>=12'} dependencies: '@jridgewell/sourcemap-codec': 1.4.15 @@ -11955,11 +13285,26 @@ packages: resolution: {integrity: sha512-3WjL8+ZDouZwKlyJBMp/4LeziLFXgleOdsYu87piGcMLqhBzCsy2QFdbtAwv757TFC/rtqd738fgJw1tFQCSgA==} dev: false + /make-dir@1.3.0: + resolution: {integrity: sha512-2w31R7SJtieJJnQtGc7RVL2StM2vGYVfqUOvUDxH6bC6aJTxPxTF0GnIgCyu7tjockiUWAYQRbxa7vKn34s5sQ==} + engines: {node: '>=4'} + dependencies: + pify: 3.0.0 + dev: false + /make-dir@3.1.0: resolution: {integrity: sha512-g3FeP20LNwhALb/6Cz6Dd4F2ngze0jz7tbzrD2wAV+o9FeNHe4rL+yK2md0J/fiSf1sa1ADhXqi5+oVwOM/eGw==} engines: {node: '>=8'} dependencies: - semver: 6.3.0 + semver: 6.3.1 + dev: false + + /make-dir@4.0.0: + resolution: {integrity: sha512-hXdUTZYIVOt1Ex//jAQi+wTZZpUpwBj/0QsOzqegb3rGMMeJiSEu5xLHnYfBrRV4RH2+OCSOO95Is/7x1WJ4bw==} + engines: {node: '>=10'} + dependencies: + semver: 7.5.4 + dev: true /make-error@1.3.6: resolution: {integrity: sha512-s8UhlNe7vPKomQhC1qFelMokr/Sc3AgNbso3n74mVPA5LTZwkB9NlXf4XPamLxJE8h0gh73rM94xvwRT2CVInw==} @@ -11968,21 +13313,21 @@ packages: resolution: {integrity: sha512-rLWS7GCSTcEujjVBs2YqG7Y4643u8ucvCJeSRqiLYhesrDuzeuFIk37xREzAsfQaqzl8b9rNCE4m6J8tvX4Q8w==} engines: {node: ^14.17.0 || ^16.13.0 || >=18.0.0} dependencies: - agentkeepalive: 4.3.0 - cacache: 17.1.3 + agentkeepalive: 4.5.0 + cacache: 17.1.4 http-cache-semantics: 4.1.1 http-proxy-agent: 5.0.0 https-proxy-agent: 5.0.1 is-lambda: 1.0.1 lru-cache: 7.18.3 minipass: 5.0.0 - minipass-fetch: 3.0.3 + minipass-fetch: 3.0.4 minipass-flush: 1.0.5 minipass-pipeline: 1.2.4 negotiator: 0.6.3 promise-retry: 2.0.1 socks-proxy-agent: 7.0.0 - ssri: 10.0.4 + ssri: 10.0.5 transitivePeerDependencies: - supports-color dev: false @@ -12045,7 +13390,7 @@ packages: dependencies: findup-sync: 2.0.0 micromatch: 3.1.10 - resolve: 1.22.2 + resolve: 1.22.6 stack-trace: 0.0.10 transitivePeerDependencies: - supports-color @@ -12062,8 +13407,8 @@ packages: resolution: {integrity: sha512-4vRUvPyxdO8cWULGTh9dZWL2tZK6LDBvj+OGHBER7poH9Qdt7kXEoj20wiz4lQUbUXQZFjPbe5mVDo9nutizCw==} dev: true - /matter-js@0.18.0: - resolution: {integrity: sha512-/ZVem4WygUnbmo/iE4oHZpZS97btfBtYy5Iwn1396vUZU7YhgVEN8J4UWwfZwY1ZqoTYlPgjvSw9WXauuXL0mg==} + /matter-js@0.19.0: + resolution: {integrity: sha512-v2huwvQGOHTGOkMqtHd2hercCG3f6QAObTisPPHg8TZqq2lz7eIY/5i/5YUV8Ibf3mEioFEmwibcPUF2/fnKKQ==} dev: true /md5-hex@3.0.1: @@ -12073,15 +13418,31 @@ packages: blueimp-md5: 2.19.0 dev: true + /mdast-util-from-markdown@0.8.5: + resolution: {integrity: sha512-2hkTXtYYnr+NubD/g6KGBS/0mFmBcifAsI0yIWRiRo0PjVs6SSOSOdtzbp6kSGnShDN6G5aWZpKQ2lWRy27mWQ==} + dependencies: + '@types/mdast': 3.0.12 + mdast-util-to-string: 2.0.0 + micromark: 2.11.4 + parse-entities: 2.0.0 + unist-util-stringify-position: 2.0.3 + transitivePeerDependencies: + - supports-color + dev: true + + /mdast-util-to-string@2.0.0: + resolution: {integrity: sha512-AW4DRS3QbBayY/jJmD8437V1Gombjf8RSOUCMFBuo5iHi58AGEgVCKQ+ezHkZZDpAQS75hcBMpLqjpJTjtUL7w==} + dev: true + /media-typer@0.3.0: resolution: {integrity: sha512-dq+qelQ9akHpcOl/gUVRTxVIOkAJ1wR3QAvb4RsVjS8oVoFjDGTc679wJYmUmknUF5HwMLOgb5O+a3KxfWapPQ==} engines: {node: '>= 0.6'} dev: false - /meilisearch@0.33.0: - resolution: {integrity: sha512-bYPb9WyITnJfzf92e7QFK8Rc50DmshFWxypXCs3ILlpNh8pT15A7KSu9Xgnnk/K3G/4vb3wkxxtFS4sxNkWB8w==} + /meilisearch@0.34.1: + resolution: {integrity: sha512-7mrLp88JfrbvhAMhOjNPzHGd2iCLHgzNhkveMxppMOToMLQw4Ygof4ksQ9uFi7SKq3UwEhIoMoFT1rUHLD3vWQ==} dependencies: - cross-fetch: 3.1.6 + cross-fetch: 3.1.8 transitivePeerDependencies: - encoding dev: false @@ -12131,6 +13492,15 @@ packages: dependencies: twemoji-parser: 14.0.0 + /micromark@2.11.4: + resolution: {integrity: sha512-+WoovN/ppKolQOFIAajxi7Lu9kInbPxFuTBVEavFcL8eAfVstoc5MocPmqBeAdBOJV00uaVjegzH4+MA0DN/uA==} + dependencies: + debug: 4.3.4(supports-color@8.1.1) + parse-entities: 2.0.0 + transitivePeerDependencies: + - supports-color + dev: true + /micromatch@3.1.10: resolution: {integrity: sha512-MWikgl9n9M3w+bpsY3He8L+w9eF9338xRl8IAO5viDizwSzziFEyUzo2xrrloB64ADbTf8uA8vRqqttDTOmccg==} engines: {node: '>=0.10.0'} @@ -12220,8 +13590,21 @@ packages: dependencies: brace-expansion: 2.0.1 - /minimatch@9.0.2: - resolution: {integrity: sha512-PZOT9g5v2ojiTL7r1xF6plNHLtOeTpSlDI007As2NlA2aYBMfVom17yqa6QzhmDP8QOhn7LjHTg7DFCVSSa6yg==} + /minimatch@7.4.6: + resolution: {integrity: sha512-sBz8G/YjVniEz6lKPNpKxXwazJe4c19fEfV2GDMX6AjFz+MX9uDWIZW8XreVhkFW3fkIdTv/gxWr/Kks5FFAVw==} + engines: {node: '>=10'} + dependencies: + brace-expansion: 2.0.1 + dev: true + + /minimatch@9.0.1: + resolution: {integrity: sha512-0jWhJpD/MdhPXwPuiRkCbfYfSKp2qnn2eOc279qI7f+osl/l+prKSrvhg157zSYvx/1nmgn2NqdT6k2Z7zSH9w==} + engines: {node: '>=16 || 14 >=14.17'} + dependencies: + brace-expansion: 2.0.1 + + /minimatch@9.0.3: + resolution: {integrity: sha512-RHiac9mvaRw0x3AYRgDC1CxAP7HTcNrrECeA8YYJeWnpo+2Q5CegtZjaotWTWxDG3UeGA1coE05iH1mPjT/2mg==} engines: {node: '>=16 || 14 >=14.17'} dependencies: brace-expansion: 2.0.1 @@ -12246,11 +13629,11 @@ packages: minipass: 3.3.6 dev: false - /minipass-fetch@3.0.3: - resolution: {integrity: sha512-n5ITsTkDqYkYJZjcRWzZt9qnZKCT7nKCosJhHoj7S7zD+BP4jVbWs+odsniw5TA3E0sLomhTKOKjF86wf11PuQ==} + /minipass-fetch@3.0.4: + resolution: {integrity: sha512-jHAqnA728uUpIaFm7NWsCnqKT6UqZz7GcI/bDpPATuwYyKwJwW0remxSCxUlKiEty+eopHGa3oc8WxgQ1FFJqg==} engines: {node: ^14.17.0 || ^16.13.0 || >=18.0.0} dependencies: - minipass: 5.0.0 + minipass: 7.0.3 minipass-sized: 1.0.3 minizlib: 2.1.2 optionalDependencies: @@ -12280,6 +13663,7 @@ packages: /minipass@2.9.0: resolution: {integrity: sha512-wxfUjg9WebH+CUDX/CdbRlh5SmfZiy/hpkxaRI16Y9W56Pa75sWgd/rvFilSgrauD9NyFymP/+JFV3KwzIsJeg==} + requiresBuild: true dependencies: safe-buffer: 5.2.1 yallist: 3.1.1 @@ -12298,8 +13682,14 @@ packages: engines: {node: '>=8'} dev: false + /minipass@7.0.3: + resolution: {integrity: sha512-LhbbwCfz3vsb12j/WkWQPZfKTsgqIe1Nf/ti1pKjYESGLHIVjWU96G9/ljLH4F9mWNVhlQOm0VySdAWzf05dpg==} + engines: {node: '>=16 || 14 >=14.17'} + dev: false + /minizlib@1.3.3: resolution: {integrity: sha512-6ZYMOEnmVsdCeTJVE0W9ZD+pVnE8h9Hma/iOwwRDsdQoePpoX56/8B6z3P9VNwppJuBKNRuFDRNRqRWexT9G9Q==} + requiresBuild: true dependencies: minipass: 2.9.0 dev: false @@ -12344,6 +13734,12 @@ packages: hasBin: true dev: false + /mkdirp@2.1.6: + resolution: {integrity: sha512-+hEnITedc8LAtIP9u3HJDFIdcLV2vXP33sqLLIzkv1Db1zO/1OxbvYf0Y1OC/S/Qo5dxHXepofhmxL02PsKe+A==} + engines: {node: '>=10'} + hasBin: true + dev: false + /mocha@10.2.0: resolution: {integrity: sha512-IDY7fl/BecMwFHzoqF2sg/SHHANeBoMMXFlS9r0OXKDssYE1M5O43wUY/9BVPeIvfH2zmEbBfseqN9gBQZzXkg==} engines: {node: '>= 14.0.0'} @@ -12351,7 +13747,7 @@ packages: dependencies: ansi-colors: 4.1.1 browser-stdout: 1.3.1 - chokidar: 3.3.1 + chokidar: 3.5.3 debug: 4.3.4(supports-color@8.1.1) diff: 5.0.0 escape-string-regexp: 4.0.0 @@ -12372,8 +13768,8 @@ packages: yargs-unparser: 2.0.0 dev: true - /mock-socket@9.0.8: - resolution: {integrity: sha512-8Syqkaaa2SzRqW68DEsnZkKQicHP7hVzfj3uCvigB5TL79H1ljKbwmOcRIENkx0ZTyu/5W6u+Pk9Qy6JCp38Ww==} + /mock-socket@9.3.1: + resolution: {integrity: sha512-qxBgB7Qa2sEQgHFjj0dSigq7fX4k6Saisd5Nelwp2q8mlbAFh5dHV9JTTlF8viYJLSSWgMCZFUom8PJcMNBoJw==} engines: {node: '>= 8'} dev: true @@ -12406,8 +13802,8 @@ packages: dev: false optional: true - /msgpackr@1.9.5: - resolution: {integrity: sha512-/IJ3cFSN6Ci3eG2wLhbFEL6GT63yEaoN/R5My2QkV6zro+OJaVRLPlwvxY7EtHYSmDlQpk8stvOQTL2qJFkDRg==} + /msgpackr@1.9.7: + resolution: {integrity: sha512-baUNaLvKQvVhzfWTNO07njwbZK1Lxjtb0P1JL6/EhXdLTHzR57/mZqqJC39TtQKvOmkJA4pcejS4dbk7BDgLLA==} optionalDependencies: msgpackr-extract: 3.0.2 dev: false @@ -12446,8 +13842,8 @@ packages: object-assign: 4.1.1 thenify-all: 1.6.0 - /nan@2.17.0: - resolution: {integrity: sha512-2ZTgtl0nJsO0KQCjEpxcIr5D+Yv90plTitZt9JBfQvVJDS5seMl3FOvsh3+9CoYWXf/1l5OaZzzF6nDm4cagaQ==} + /nan@2.18.0: + resolution: {integrity: sha512-W7tfG7vMOGtD30sHoZSSc/JVYiyDPEyQVso/Zz+/uQd0B0L46gtC+pHha5FFMRpil6fm/AoEcRWyOVi4+E/f8w==} dev: false /nanoid@3.3.3: @@ -12490,6 +13886,7 @@ packages: /natural-compare@1.4.0: resolution: {integrity: sha512-OWND8ei3VtNC9h7V60qff3SVobHr996CTwgxubgyQYEpg290h9J0buyECNNJexkFm5sOajh5G116RYA1c8ZMSw==} + dev: true /ndarray-ops@1.2.2: resolution: {integrity: sha512-BppWAFRjMYF7N/r6Ie51q6D4fs0iiGmeXIACKY66fLpnwIui3Wc3CXiD/30mgLbDjPpSLrsqcp3Z62+IcHZsDw==} @@ -12551,21 +13948,21 @@ packages: /next-tick@1.1.0: resolution: {integrity: sha512-CXdUiJembsNjuToQvxayPZF9Vqht7hewsvy2sOWafLvi2awflj9mOC6bHIg50orX8IJvWKY9wYQ/zB2kogPslQ==} - /node-abi@3.45.0: - resolution: {integrity: sha512-iwXuFrMAcFVi/ZoZiqq8BzAdsLw9kxDfTC0HMyjXfSL/6CSDAGD5UmR7azrAgWV1zKYq7dUUMj4owusBWKLsiQ==} + /node-abi@3.47.0: + resolution: {integrity: sha512-2s6B2CWZM//kPgwnuI0KrYwNjfdByE25zvAaEpq9IH4zcNsarH8Ihu/UuX6XMPEogDAxkuUFeZn60pXNHAqn3A==} engines: {node: '>=10'} dependencies: - semver: 7.5.1 - dev: false - - /node-addon-api@5.1.0: - resolution: {integrity: sha512-eh0GgfEkpnoWDq+VY8OyvYhFEzBk6jIYbRKdIlyTiAXIVJ8PyBaKb0rp7oDtoddbdoHWhq8wwr+XZ81F1rpNdA==} + semver: 7.5.4 dev: false /node-addon-api@6.1.0: resolution: {integrity: sha512-+eawOlIgy680F0kBzPUNFhMZGtJ1YmqM6l4+Crf4IkImjYrO/mqPwRMh352g23uIaQKFItcQ64I7KMaJxHgAVA==} dev: false + /node-addon-api@7.0.0: + resolution: {integrity: sha512-vgbBJTS4m5/KkE16t5Ly0WW9hz46swAstv0hYYwMtbG7AznRhNyfLRe8HZAiWIpcHzoO7HxhLuBQj9rJ/Ho0ZA==} + dev: false + /node-bitmap@0.0.1: resolution: {integrity: sha512-Jx5lPaaLdIaOsj2mVLWMWulXF6GQVdyLvNSxmiYCvZ8Ma2hfKX0POoR2kgKOqz+oFsRreq0yYZjQ2wjE9VNzCA==} engines: {node: '>=v0.6.5'} @@ -12575,8 +13972,20 @@ packages: resolution: {integrity: sha512-/jKZoMpw0F8GRwl4/eLROPA3cfcXtLApP0QzLmUT/HuPCZWyB7IY9ZrMeKw2O/nFIqPQB3PVM9aYm0F312AXDQ==} engines: {node: '>=10.5.0'} - /node-fetch@2.6.11: - resolution: {integrity: sha512-4I6pdBY1EthSqDmJkiNk3JIT8cswwR9nfeW/cPdUagJYEQG7R95WRH74wpz7ma8Gh/9dI9FP+OU+0E4FvtA55w==} + /node-fetch@2.6.13: + resolution: {integrity: sha512-StxNAxh15zr77QvvkmveSQ8uCQ4+v5FkvNTj0OESmiHu+VRi/gXArXtkWMElOsOUNLtUEvI4yS+rdtOHZTwlQA==} + engines: {node: 4.x || >=6.0.0} + peerDependencies: + encoding: ^0.1.0 + peerDependenciesMeta: + encoding: + optional: true + dependencies: + whatwg-url: 5.0.0 + dev: false + + /node-fetch@2.7.0: + resolution: {integrity: sha512-c4FRfUm/dbcWZ7U+1Wq0AwCyFL+3nt2bEw05wfxSz+DWpWsitgmSgYmy2dQdWyKC1694ELPqMs/YzUSNozLt8A==} engines: {node: 4.x || >=6.0.0} peerDependencies: encoding: ^0.1.0 @@ -12586,8 +13995,8 @@ packages: dependencies: whatwg-url: 5.0.0 - /node-fetch@3.3.1: - resolution: {integrity: sha512-cRVc/kyto/7E5shrWca1Wsea4y6tL9iYJE5FBCius3JQfb/4P4I295PfhgbJQBLTx6lATE4z+wK0rPM4VS2uow==} + /node-fetch@3.3.2: + resolution: {integrity: sha512-dRB78srN/l6gqWulah9SrxeYnxeddIG30+GOqK/9OlLVyLg3HPnr6SqOWTWOXKRwC2eGYCkZ59NNuSgvSrpgOA==} engines: {node: ^12.20.0 || ^14.13.1 || >=16.0.0} dependencies: data-uri-to-buffer: 4.0.1 @@ -12597,11 +14006,12 @@ packages: /node-gyp-build-optional-packages@5.0.7: resolution: {integrity: sha512-YlCCc6Wffkx0kHkmam79GKvDQ6x+QZkMjFGrIMxgFNILFvGSbCp2fCBC55pGTT9gVaz8Na5CLmxt/urtzRv36w==} hasBin: true + requiresBuild: true dev: false optional: true - /node-gyp-build@4.6.0: - resolution: {integrity: sha512-NTZVKn9IylLwUzaKjkas1e4u2DLNcV4rdYagA4PWdPwW87Bi7z+BznyKSRwS/761tV/lzCGXplWsiaMjLqP2zQ==} + /node-gyp-build@4.6.1: + resolution: {integrity: sha512-24vnklJmyRS8ViBNI8KbtK/r/DmXQMRiOMXTNz2nrTnAYUwjmEEbnnpB/+kt+yWRv73bPsSPRFddrcIbAxSiMQ==} hasBin: true dev: false @@ -12618,8 +14028,8 @@ packages: nopt: 6.0.0 npmlog: 6.0.2 rimraf: 3.0.2 - semver: 7.5.1 - tar: 6.1.15 + semver: 7.5.4 + tar: 6.2.0 which: 2.0.2 transitivePeerDependencies: - supports-color @@ -12629,17 +14039,18 @@ packages: resolution: {integrity: sha512-O5lz91xSOeoXP6DulyHfllpq+Eg00MWitZIbtPfoSEvqIHdl5gfcY6hYzDWnj0qD5tz52PI08u9qUvSVeUBeHw==} dev: true - /node-releases@2.0.12: - resolution: {integrity: sha512-QzsYKWhXTWx8h1kIvqfnC++o0pEmpRQA/aenALsL2F4pqNVr7YzcdMlDij5WBnwftRbJCNJL/O7zdKaxKPHqgQ==} + /node-releases@2.0.13: + resolution: {integrity: sha512-uYr7J37ae/ORWdZeQ1xxMJe3NtdmqMC/JZK+geofDrkLUApKRHPd18/TxtBOJ4A0/+uUIliorNrfYV6s1b02eQ==} - /nodemailer@6.9.3: - resolution: {integrity: sha512-fy9v3NgTzBngrMFkDsKEj0r02U7jm6XfC3b52eoNV+GCrGj+s8pt5OqhiJdWKuw51zCTdiNR/IUD1z33LIIGpg==} + /nodemailer@6.9.4: + resolution: {integrity: sha512-CXjQvrQZV4+6X5wP6ZIgdehJamI63MFoYFGGPtHudWym9qaEHDNdPzaj5bfMCvxG1vhAileSWW90q7nL0N36mA==} engines: {node: '>=6.0.0'} dev: false /nofilter@3.1.0: resolution: {integrity: sha512-l2NNj07e9afPnhAhvgVrCD/oy2Ai1yfLpuo3EpiO1jFTsB4sFz6oIfAfSZyQzVpkZQ9xS8ZS5g1jCBgq4Hwo0g==} engines: {node: '>=12.19'} + dev: true /nopt@5.0.0: resolution: {integrity: sha512-Tbj67rffqceeLpcRXrT7vKAN8CwfPeIBgM7E6iBkmKLV7bEMwpGgYLGv0jACUsECaa/vuxP0IjEont6umdMgtQ==} @@ -12660,8 +14071,8 @@ packages: resolution: {integrity: sha512-/5CMN3T0R4XTj4DcGaexo+roZSdSFW/0AOOTROrjxzCG1wrWXEsGbRKevjlIL+ZDE4sZlJr5ED4YW0yqmkK+eA==} dependencies: hosted-git-info: 2.8.9 - resolve: 1.22.2 - semver: 5.7.1 + resolve: 1.22.6 + semver: 5.7.2 validate-npm-package-license: 3.0.4 dev: true @@ -12670,8 +14081,8 @@ packages: engines: {node: '>=10'} dependencies: hosted-git-info: 4.1.0 - is-core-module: 2.12.1 - semver: 7.5.1 + is-core-module: 2.13.0 + semver: 7.5.4 validate-npm-package-license: 3.0.4 dev: true @@ -12757,13 +14168,13 @@ packages: set-blocking: 2.0.0 dev: false - /nsfwjs@2.4.2(@tensorflow/tfjs@4.2.0): + /nsfwjs@2.4.2(@tensorflow/tfjs@4.11.0): resolution: {integrity: sha512-i4Pp2yt59qPQgeZFyg3wXFBX52uSeu/hkDoqdZfe+sILRxNBUu0VDogj7Lmqak0GlrXviS/wLiVeIx40IDUu7A==} peerDependencies: '@tensorflow/tfjs': ^3.18.0 dependencies: '@nsfw-filter/gif-frames': 1.0.2 - '@tensorflow/tfjs': 4.2.0(seedrandom@3.0.5) + '@tensorflow/tfjs': 4.11.0(seedrandom@3.0.5) dev: false /nth-check@1.0.2: @@ -12772,6 +14183,12 @@ packages: boolbase: 1.0.0 dev: false + /nth-check@2.1.1: + resolution: {integrity: sha512-lqjrjmaOoAnWfMmBPL+XNnynZh2+swxiX3WUE0s4yEHI6m+AwrK2UZOimIRl3X/4QctVqS8AiZjFqyOGrMXb/w==} + dependencies: + boolbase: 1.0.0 + dev: true + /num2fraction@1.2.2: resolution: {integrity: sha512-Y1wZESM7VUThYY+4W+X4ySH2maqcA+p7UR+w8VWNWVAd6lwuXXWz/w/Cz43J/dI2I+PS6wD5N+bJUF+gjWvIqg==} dev: true @@ -12781,8 +14198,9 @@ packages: engines: {node: '>=0.10.0'} dev: true - /nwsapi@2.2.5: - resolution: {integrity: sha512-6xpotnECFy/og7tKSBVmUNft7J3jyXAka4XvG6AUhFWRz+Q/Ljus7znJAA3bxColfQLdS+XsjoodtJfCgeTEFQ==} + /nwsapi@2.2.7: + resolution: {integrity: sha512-ub5E4+FBPKwAZx0UwIQOjYWGHTEq5sPqHQNRN8Z9e4A7u3Tj1weLJsL59yH9vmvqEtBHaOmT6cYQKIZOxp35FQ==} + dev: true /oauth-sign@0.9.0: resolution: {integrity: sha512-fexhUFFPTGV8ybAtSIGbV6gOkSv8UtRbDBnAyLQw4QPKkgNlsH2ByPGtMUqdWkos6YCRmAqViwgZrJc/mRDzZQ==} @@ -12834,7 +14252,7 @@ packages: engines: {node: '>= 0.4'} dependencies: call-bind: 1.0.2 - define-properties: 1.2.0 + define-properties: 1.2.1 has-symbols: 1.0.3 object-keys: 1.1.1 dev: true @@ -12849,6 +14267,24 @@ packages: isobject: 3.0.1 dev: true + /object.fromentries@2.0.7: + resolution: {integrity: sha512-UPbPHML6sL8PI/mOqPwsH4G6iyXcCGzLin8KvEPenOZN5lpCNBZZQ+V62vdjB1mQHrmqGQt5/OJzemUA+KJmEA==} + engines: {node: '>= 0.4'} + dependencies: + call-bind: 1.0.2 + define-properties: 1.2.1 + es-abstract: 1.22.2 + dev: true + + /object.groupby@1.0.1: + resolution: {integrity: sha512-HqaQtqLnp/8Bn4GL16cj+CUYbnpe1bh0TtEaWvybszDG4tgxCJuRpV8VGuvNaI1fAnI4lUJzDG55MXcOH4JZcQ==} + dependencies: + call-bind: 1.0.2 + define-properties: 1.2.1 + es-abstract: 1.22.2 + get-intrinsic: 1.2.1 + dev: true + /object.map@1.0.1: resolution: {integrity: sha512-3+mAJu2PLfnSVGHwIWubpOFLscJANBKuB/6A4CxBstc4aqwQY0FWcsppuy4jU5GSB95yES5JHSI+33AWuS4k6w==} engines: {node: '>=0.10.0'} @@ -12872,13 +14308,13 @@ packages: make-iterator: 1.0.1 dev: true - /object.values@1.1.6: - resolution: {integrity: sha512-FVVTkD1vENCsAcwNs9k6jea2uHC/X0+JcjG8YA60FN5CMaJmG95wT9jek/xX9nornqGRrBkKtzuAu2wuHpKqvw==} + /object.values@1.1.7: + resolution: {integrity: sha512-aU6xnDFYT3x17e/f0IiiwlGPTy2jzMySGfUB4fq6z7CV8l85CWHDk5ErhyhpfDHhrOMwGFhSQkhMGHaIotA6Ng==} engines: {node: '>= 0.4'} dependencies: call-bind: 1.0.2 - define-properties: 1.2.0 - es-abstract: 1.21.2 + define-properties: 1.2.1 + es-abstract: 1.22.2 dev: true /oblivious-set@1.1.1: @@ -12919,6 +14355,20 @@ packages: resolution: {integrity: sha512-Fvw+Jemq5fjjyWz6CpKx6w9s7xxqo3+JCyM0WXWeCSOboZ8ABkyvP8ID4CZuChA/wxSx+XSJmdOm8rGVyJ1hdQ==} dev: false + /open@9.1.0: + resolution: {integrity: sha512-OS+QTnw1/4vrf+9hh1jc1jnYjzSG4ttTBB8UxOwAnInG3Uo4ssetzC1ihqaIHjLJnA5GGlRl6QlZXOTQhRBUvg==} + engines: {node: '>=14.16'} + dependencies: + default-browser: 4.0.0 + define-lazy-prop: 3.0.0 + is-inside-container: 1.0.0 + is-wsl: 2.2.0 + dev: true + + /opencc-js@1.0.5: + resolution: {integrity: sha512-LD+1SoNnZdlRwtYTjnQdFrSVCAaYpuDqL5CkmOaHOkKoKh7mFxUicLTRVNLU5C+Jmi1vXQ3QL4jWdgSaa4sKjg==} + dev: false + /opencollective-postinstall@2.0.3: resolution: {integrity: sha512-8AV/sCtuzUeTo8gQK5qDZzARrulB3egtLzFgteqB2tcT4Mw7B8Kt7JcDHmltjz6FOAHsvTevk70gZEbhM4ZS9Q==} hasBin: true @@ -12929,27 +14379,32 @@ packages: hasBin: true dev: false - /optionator@0.8.3: - resolution: {integrity: sha512-+IW9pACdk3XWmmTXG8m3upGUJst5XRGzxMRjXzAuJ1XnIFNvfhjjIuYkDvysnPQ7qzqVzLt78BCruntqRhWQbA==} - engines: {node: '>= 0.8.0'} - dependencies: - deep-is: 0.1.4 - fast-levenshtein: 2.0.6 - levn: 0.3.0 - prelude-ls: 1.1.2 - type-check: 0.3.2 - word-wrap: 1.2.3 - /optionator@0.9.3: resolution: {integrity: sha512-JjCoypp+jKn1ttEFExxhetCKeJt9zhAgAve5FXHixTvFDW/5aEktX9bufBKLRRMdU7bNtpLfcGu94B3cdEJgjg==} engines: {node: '>= 0.8.0'} dependencies: - '@aashutoshrathi/word-wrap': 1.2.5 + '@aashutoshrathi/word-wrap': 1.2.6 deep-is: 0.1.4 fast-levenshtein: 2.0.6 levn: 0.4.1 prelude-ls: 1.2.1 type-check: 0.4.0 + dev: true + + /ora@5.4.1: + resolution: {integrity: sha512-5b6Y85tPxZZ7QytO+BQzysW31HJku27cRIlkbAXaNx+BdcVi+LlRFmVXzeF6a7JCwJpyw5c4b+YSVImQIrBpuQ==} + engines: {node: '>=10'} + dependencies: + bl: 4.1.0 + chalk: 4.1.2 + cli-cursor: 3.1.0 + cli-spinners: 2.9.1 + is-interactive: 1.0.0 + is-unicode-supported: 0.1.0 + log-symbols: 4.1.0 + strip-ansi: 6.0.1 + wcwidth: 1.0.1 + dev: true /ordered-read-streams@1.0.1: resolution: {integrity: sha512-Z87aSjx3r5c0ZB7bcJqIgIRX5bxR7A4aSzvIbaxd0oTkWBCOoKfuGHiKj60CHVUgg1Phm5yMZzBdt8XqRs73Mw==} @@ -12979,10 +14434,10 @@ packages: resolution: {integrity: sha512-o6E5qJV5zkAbIDNhGSIlyOhScKXgQrSRMilfph0clDfM0nEnBOlKlH4sWDmG95BW/CvwNz0vmm7dJVtU2KlMiA==} dev: true - /otpauth@9.1.2: - resolution: {integrity: sha512-iI5nlVvMFP3aTPdjG/fnC4mhVJ/KZOSnBrvo/VnYHUwlTp9jVLjAe2B3i3pyCH+3/E5jYQRSvuHk/8oas3870g==} + /otpauth@9.1.4: + resolution: {integrity: sha512-T6T0E1WlzwKWESq8K0Ja47u01XjmDmRY/AiUoMAc6xZI/OsTsD4cqBrfpt2WfJ29W5pRiWkuUuyHdNQl0/Ic+Q==} dependencies: - jssha: 3.3.0 + jssha: 3.3.1 dev: false /p-cancelable@2.1.1: @@ -13022,6 +14477,7 @@ packages: engines: {node: '>=10'} dependencies: yocto-queue: 0.1.0 + dev: true /p-limit@4.0.0: resolution: {integrity: sha512-5b0R4txpzjPWVw/cXXUResoD4hb6U/x9BH08L7nw+GN1sezDzPdxeRvpc9c433fZhBan/wusjbCsqwqm4EIBIQ==} @@ -13041,6 +14497,7 @@ packages: engines: {node: '>=10'} dependencies: p-limit: 3.1.0 + dev: true /p-locate@6.0.0: resolution: {integrity: sha512-wPrq66Llhl7/4AGC6I+cqxT07LhXvWL08LNXz1fENOw0Ap4sRZZ/gZpTTJ5jpurzzzfS2W/Ge9BY3LgLjCShcw==} @@ -13090,11 +14547,16 @@ packages: resolution: {integrity: sha512-HAKu/fG3HpHFO0AA8WE8q2g+gBJaZ9MG7fcKk+IJPLTGAD6Psw4443l+9DGRbOIh3/aXr7Phy0TjilYivJo5XQ==} dev: false + /pako@0.2.9: + resolution: {integrity: sha512-NUcwaKxUxWrZLpDG+z/xZaCgQITkA/Dv4V/T6bw7VON6l1Xz/VnrBqrYjZQ12TamKHzITTfOEIYUj48y2KXImA==} + dev: false + /parent-module@1.0.1: resolution: {integrity: sha512-GQ2EWRpQV8/o+Aw8YqtfZZPfNRWZYkbidE9k5rpl/hC3vtHHBfGm2Ifi6qWV+coDGkrUKZAxE3Lot5kcsRlh+g==} engines: {node: '>=6'} dependencies: callsites: 3.1.0 + dev: true /parse-data-uri@0.2.0: resolution: {integrity: sha512-uOtts8NqDcaCt1rIsO3VFDRsAfgE4c6osG4d9z3l4dCBlxYFzni6Di/oNU270SDrjkfZuUvLZx1rxMyqh46Y9w==} @@ -13102,6 +14564,17 @@ packages: data-uri-to-buffer: 0.0.3 dev: false + /parse-entities@2.0.0: + resolution: {integrity: sha512-kkywGpCcRYhqQIchaWqZ875wzpS/bMKhz5HnN3p7wveJTkTtyAB/AlnS0f8DFSqYW1T82t6yEAkEcB+A1I3MbQ==} + dependencies: + character-entities: 1.2.4 + character-entities-legacy: 1.1.4 + character-reference-invalid: 1.1.4 + is-alphanumerical: 1.0.4 + is-decimal: 1.0.4 + is-hexadecimal: 1.0.4 + dev: true + /parse-filepath@1.0.2: resolution: {integrity: sha512-FwdRXKCohSVeXqwtYonZTXtbGJKrn+HNyWDYVcp5yuJlesTwNH4rsmRZ+GrKAPJ5bLpRxESMeS+Rl0VCHRvB2Q==} engines: {node: '>=0.8'} @@ -13122,7 +14595,7 @@ packages: resolution: {integrity: sha512-ayCKvm/phCGxOkYRSCM82iDwct8/EonSEgCSxWxD7ve6jHggsFl4fZVQBPRNgQoKiuV/odhFrGzQXZwbifC8Rg==} engines: {node: '>=8'} dependencies: - '@babel/code-frame': 7.22.5 + '@babel/code-frame': 7.22.13 error-ex: 1.3.2 json-parse-even-better-errors: 2.3.1 lines-and-columns: 1.2.4 @@ -13170,6 +14643,7 @@ packages: resolution: {integrity: sha512-Czj1WaSVpaoj0wbhMzLmWD69anp2WH7FXMB9n1Sy8/ZFF9jolSQVMu1Ij5WIyGmcBmhk7EOndpO4mIpihVqAXw==} dependencies: entities: 4.5.0 + dev: false /parseurl@1.3.3: resolution: {integrity: sha512-CiyeOxFT/JZyN5m0z9PfXw4SCBJ6Sygz1Dpl0wqjlhDEGGBP1GnsUVEL0p63hoG1fcj3fHynXi9NYO4nWOL+qQ==} @@ -13238,12 +14712,12 @@ packages: path-root-regex: 0.1.2 dev: true - /path-scurry@1.10.0: - resolution: {integrity: sha512-tZFEaRQbMLjwrsmidsGJ6wDMv0iazJWk6SfIKnY4Xru8auXgmJkOBa5DUbYFcFD2Rzk2+KDlIiF0GVXNCbgC7g==} + /path-scurry@1.10.1: + resolution: {integrity: sha512-MkhCqzzBEpPvxxQ71Md0b1Kk51W01lrYvlMzSUaIzNsODdd7mqhiimSZlr+VegAz5Z6Vzt9Xg2ttE//XBhH3EQ==} engines: {node: '>=16 || 14 >=14.17'} dependencies: - lru-cache: 10.0.0 - minipass: 5.0.0 + lru-cache: 10.0.1 + minipass: 7.0.3 dev: false /path-to-regexp@6.2.1: @@ -13274,9 +14748,16 @@ packages: resolution: {integrity: sha512-YtCKvLUOvwtMGmrniQPdO7MwPjgkFBtFIrmfSbYmYuq3tKDV/mcfAhBth1+C3ru7uXIZasc/pHnb+YDYNkkj4A==} engines: {node: '>=14.16'} + /peek-stream@1.1.3: + resolution: {integrity: sha512-FhJ+YbOSBb9/rIl2ZeE/QHEsWn7PqNYt8ARAY3kIgNGOk13g9FGyIY6JIl/xB/3TFRVoTv5as0l11weORrTekA==} + dependencies: + buffer-from: 1.1.2 + duplexify: 3.7.1 + through2: 2.0.5 + dev: false + /pend@1.2.0: resolution: {integrity: sha512-F3asv42UuXchdzt+xXqfW1OGlVBe+mxa2mqI0pg5yAHZPvFmY3Y6drSf/GQ1A86WgWEN9Kzh/WrgKa6iGcHXLg==} - dev: true /performance-now@2.1.0: resolution: {integrity: sha512-7EAHlyLHI56VEIdK57uwHdHKIaAGbnXPiw0yWbarQZOKaKpvUIgW0jWRVLiatnM+XXlSwsanIBH/hzGMJulMow==} @@ -13287,8 +14768,8 @@ packages: dev: false optional: true - /pg-connection-string@2.6.1: - resolution: {integrity: sha512-w6ZzNu6oMmIzEAYVw+RLK0+nqHPt8K3ZnknKi+g48Ak2pr3dtljJW3o+D/n2zzCG07Zoe9VOX3aiKpj+BN0pjg==} + /pg-connection-string@2.6.2: + resolution: {integrity: sha512-ch6OwaeaPYcova4kKZ15sbJ2hKb/VP48ZD2gE7i1J+L4MspCtBMAx8nMgz7bksc7IojCIIWuEhHibSMFH8m8oA==} dev: false /pg-int8@1.0.1: @@ -13296,12 +14777,12 @@ packages: engines: {node: '>=4.0.0'} dev: false - /pg-pool@3.6.1(pg@8.11.0): + /pg-pool@3.6.1(pg@8.11.3): resolution: {integrity: sha512-jizsIzhkIitxCGfPRzJn1ZdcosIt3pz9Sh3V01fm1vZnbnCMgmGl5wvGGdNN2EL9Rmb0EcFoCkixH4Pu+sP9Og==} peerDependencies: pg: '>=8.0' dependencies: - pg: 8.11.0 + pg: 8.11.3 dev: false /pg-protocol@1.6.0: @@ -13319,8 +14800,8 @@ packages: postgres-interval: 1.2.0 dev: false - /pg@8.11.0: - resolution: {integrity: sha512-meLUVPn2TWgJyLmy7el3fQQVwft4gU5NGyvV0XbD41iU9Jbg8lCH4zexhIkihDzVHJStlt6r088G6/fWeNjhXA==} + /pg@8.11.3: + resolution: {integrity: sha512-+9iuvG8QfaaUrrph+kpF24cXkH1YOOUeArRNYIxq1viYHZagBxrTno7cecY1Fa44tJeZvaoG+Djpkc3JwehN5g==} engines: {node: '>= 8.0.0'} peerDependencies: pg-native: '>=3.0.1' @@ -13330,8 +14811,8 @@ packages: dependencies: buffer-writer: 2.0.0 packet-reader: 1.0.0 - pg-connection-string: 2.6.1 - pg-pool: 3.6.1(pg@8.11.0) + pg-connection-string: 2.6.2 + pg-pool: 3.6.1(pg@8.11.3) pg-protocol: 1.6.0 pg-types: 2.2.0 pgpass: 1.0.5 @@ -13345,8 +14826,8 @@ packages: split2: 4.2.0 dev: false - /photoswipe@5.3.7: - resolution: {integrity: sha512-zsyLsTTLFrj0XR1m4/hO7qNooboFKUrDy+Zt5i2d6qjFPAtBjzaj/Xtydso4uxzcXpcqbTmyxDibb3BcSISseg==} + /photoswipe@5.3.9: + resolution: {integrity: sha512-z9ACLW9472gAawrIXXiliuz9xNZ3xEl7cIPHqY/lAeFQT9X+N9sgCwa86WK9wnK8cuk/F3QEO45n+QSiZnKd2A==} engines: {node: '>= 0.12.0'} dev: true @@ -13360,7 +14841,11 @@ packages: /pify@2.3.0: resolution: {integrity: sha512-udgsAY+fTnvv7kI7aaxbqwWNb0AHiB0qBO89PZKPkoTmGOgdbrHDKD+0B2X4uTfJ/FT1R09r9gTsjUjNJotuog==} engines: {node: '>=0.10.0'} - dev: true + + /pify@3.0.0: + resolution: {integrity: sha512-C3FsVNH1udSEX48gGX1xfvwTWfsYWj5U+8/uK15BGzIGrKoUpghX8hWZwa/OFnakBiiVNmBvemTJR5mcy7iPcg==} + engines: {node: '>=4'} + dev: false /pify@4.0.1: resolution: {integrity: sha512-uB80kBFb/tfd68bVleG9T5GGsGPjJrLAUpR5PZIrhBnIaRTQRjqdJSsIKkOP6OAIFbj7GOrcudc5pNjZ+geV2g==} @@ -13371,12 +14856,10 @@ packages: engines: {node: '>=0.10.0'} dependencies: pinkie: 2.0.4 - dev: true /pinkie@2.0.4: resolution: {integrity: sha512-MnUuEycAemtSaeFSjXKW/aroV7akBbY+Sv+RkyqFjgAe73F+MR0TBWKBRDkmfWq/HiFmdavfZ1G7h4SPZXaCSg==} engines: {node: '>=0.10.0'} - dev: true /pirates@4.0.6: resolution: {integrity: sha512-saLsH7WeYYPiD25LDuLRRY/i+6HaPYr6G1OUlN39otzkSTxKnubR9RTxS3/Kk50s1g2JTgFwWQDQyplC5/SHZg==} @@ -13431,7 +14914,6 @@ packages: /pluralize@8.0.0: resolution: {integrity: sha512-Nc3IT5yHzflTfbjgqWcCPpo7DaKy4FnpB0l/zCAW0Tc7jxAiuqSxHasntB3D7887LSrA93kDJ9IXovxJYxyLCA==} engines: {node: '>=4'} - dev: false /pngjs-nozlib@1.0.0: resolution: {integrity: sha512-N1PggqLp9xDqwAoKvGohmZ3m4/N9xpY0nDZivFqQLcpLHmliHnCp9BuNCsOeqHWMuEEgFjpEaq9dZq6RZyy0fA==} @@ -13448,6 +14930,17 @@ packages: engines: {node: '>=10.13.0'} dev: false + /pngjs@7.0.0: + resolution: {integrity: sha512-LKWqWJRhstyYo9pGvgor/ivk2w94eSjE3RGVuzLGlr3NmD8bf7RcYGze1mNdEHRP6TRP6rMuDHk5t44hnTRyow==} + engines: {node: '>=14.19.0'} + dev: false + + /pnpm@8.7.1: + resolution: {integrity: sha512-Qbt3EhYUaXFS2k4FLQA7r2/eYz/JoDeG680/3UXG0Ga03LPuY4GgdvCLe+zO3M7ZnWG4VI4bAwk7QpJyfr5eqA==} + engines: {node: '>=16.14'} + hasBin: true + dev: true + /posix-character-classes@0.1.1: resolution: {integrity: sha512-xTgYBc3fuo7Yt7JbiuFxSYGToMoz8fLoE6TC9Wx1P/u+LfeThMOAqmuyECnlBaaJb+u1m9hHiXUEtwW4OzfUJg==} engines: {node: '>=0.10.0'} @@ -13617,6 +15110,24 @@ packages: postcss-value-parser: 3.3.1 dev: true + /postcss-safe-parser@6.0.0(postcss@8.4.29): + resolution: {integrity: sha512-FARHN8pwH+WiS2OPCxJI8FuRJpTVnn6ZNFiqAM2aeW2LwTHWWmWgIyKC6cUo0L8aeKiF/14MNvnpls6R2PBeMQ==} + engines: {node: '>=12.0'} + peerDependencies: + postcss: ^8.3.3 + dependencies: + postcss: 8.4.29 + dev: true + + /postcss-scss@4.0.8(postcss@8.4.29): + resolution: {integrity: sha512-Cr0X8Eu7xMhE96PJck6ses/uVVXDtE5ghUTKNUYgm8ozgP2TkgV3LWs3WgLV1xaSSLq8ZFiXaUrj0LVgG1fGEA==} + engines: {node: '>=12.0'} + peerDependencies: + postcss: ^8.4.29 + dependencies: + postcss: 8.4.29 + dev: true + /postcss-selector-parser@2.2.3: resolution: {integrity: sha512-3pqyakeGhrO0BQ5+/tGTfvi5IAUAhHRayGK8WFSu06aEv2BmHoXw/Mhb+w7VY5HERIuC+QoUI7wgrCcq2hqCVA==} dependencies: @@ -13625,6 +15136,27 @@ packages: uniq: 1.0.1 dev: true + /postcss-selector-parser@6.0.13: + resolution: {integrity: sha512-EaV1Gl4mUEV4ddhDnv/xtj7sxwrwxdetHdWUGnT4VJQf+4d05v6lHYZr8N573k5Z0BViss7BDhfWtKS3+sfAqQ==} + engines: {node: '>=4'} + dependencies: + cssesc: 3.0.0 + util-deprecate: 1.0.2 + dev: true + + /postcss-styl@0.12.3: + resolution: {integrity: sha512-8I7Cd8sxiEITIp32xBK4K/Aj1ukX6vuWnx8oY/oAH35NfQI4OZaY5nd68Yx8HeN5S49uhQ6DL0rNk0ZBu/TaLg==} + engines: {node: ^8.10.0 || ^10.13.0 || ^11.10.1 || >=12.13.0} + dependencies: + debug: 4.3.4(supports-color@8.1.1) + fast-diff: 1.3.0 + lodash.sortedlastindex: 4.1.0 + postcss: 8.4.29 + stylus: 0.57.0 + transitivePeerDependencies: + - supports-color + dev: true + /postcss-svgo@2.1.6: resolution: {integrity: sha512-y5AdQdgBoF4rbpdbeWAJuxE953g/ylRfVNp6mvAi61VCN/Y25Tu9p5mh3CyI42WbTRIiwR9a1GdFtmDnNPeskQ==} dependencies: @@ -13664,8 +15196,8 @@ packages: supports-color: 3.2.3 dev: true - /postcss@8.4.24: - resolution: {integrity: sha512-M0RzbcI0sO/XJNucsGjvWU9ERWxb/ytp1w6dKtxTKgixdtQDq4rmx/g8W1hnaheq9jgwL/oyEdH5Bc4WwJKMqg==} + /postcss@8.4.29: + resolution: {integrity: sha512-cbI+jaqIeu/VGqXEarWkRCCffhjgXc0qjBtXpqJhTBohMUjUQnbBr0xqX3vEKudc4iviTewcJo5ajcec5+wdJw==} engines: {node: ^10 || ^12 || >=14} dependencies: nanoid: 3.3.6 @@ -13699,13 +15231,13 @@ packages: engines: {node: '>=10'} hasBin: true dependencies: - detect-libc: 2.0.1 + detect-libc: 2.0.2 expand-template: 2.0.3 github-from-package: 0.0.0 minimist: 1.2.8 mkdirp-classic: 0.5.3 napi-build-utils: 1.0.2 - node-abi: 3.45.0 + node-abi: 3.47.0 pump: 3.0.0 rc: 1.2.8 simple-get: 4.0.1 @@ -13713,13 +15245,10 @@ packages: tunnel-agent: 0.6.0 dev: false - /prelude-ls@1.1.2: - resolution: {integrity: sha512-ESF23V4SKG6lVSGZgYNpbsiaAkdab6ZgOxe52p7+Kid3W3u3bxR4Vfd/o21dmN7jSt0IwgZ4v5MUd26FEtXE9w==} - engines: {node: '>= 0.8.0'} - /prelude-ls@1.2.1: resolution: {integrity: sha512-vkcDPrRZo1QZLbn5RLGPpg/WmIQ65qoWWhcGKf/b5eplkkarX0m9z8ppCat4mlOqUsWpyNuYgO3VRyrYHSzX5g==} engines: {node: '>= 0.8.0'} + dev: true /prepend-http@1.0.4: resolution: {integrity: sha512-PhmXi5XmoyKw1Un4E+opM2KcsJInDvKyuOumcjjw3waw86ZNjHwVUOOWLc4bCzLdcKNaWBH9e99sbWzDQsVaYg==} @@ -13745,8 +15274,8 @@ packages: hasBin: true dev: true - /prettier@3.0.0: - resolution: {integrity: sha512-zBf5eHpwHOGPC47h0zrPyNn+eAEIdEzfywMoYn2XPi0P44Zp0tSq64rq0xAREh4auw2cJZHo9QUob+NqCQky4g==} + /prettier@3.0.3: + resolution: {integrity: sha512-L/4pUDMxcNa8R/EthV08Zt42WBO4h1rarVtK0K+QJG0X187OLo7l699jWw0GKuwzkPQ//jMFA/8Xm6Fh3J/DAg==} engines: {node: '>=14'} hasBin: true dev: true @@ -13765,20 +15294,11 @@ packages: react-is: 17.0.2 dev: true - /pretty-format@29.5.0: - resolution: {integrity: sha512-V2mGkI31qdttvTFX7Mt4efOqHXqJWMu4/r66Xh3Z3BwZaPfPJgp6/gbwoujRpPUtfEF6AUUWx3Jim3GCw5g/Qw==} + /pretty-format@29.7.0: + resolution: {integrity: sha512-Pdlw/oPxN+aXdmM9R00JVC9WVFoCLTKJvDVLgmJ+qAffBMxsV85l/Lu7sNx4zSzPyoL2euImuEwHhOXdEgNFZQ==} engines: {node: ^14.15.0 || ^16.10.0 || >=18.0.0} dependencies: - '@jest/schemas': 29.4.3 - ansi-styles: 5.2.0 - react-is: 18.2.0 - dev: true - - /pretty-format@29.6.0: - resolution: {integrity: sha512-XH+D4n7Ey0iSR6PdAnBs99cWMZdGsdKrR33iUHQNr79w1szKTCIZDVdXuccAsHVwDBp0XeWPfNEoaxP9EZgRmQ==} - engines: {node: ^14.15.0 || ^16.10.0 || >=18.0.0} - dependencies: - '@jest/schemas': 29.6.0 + '@jest/schemas': 29.6.3 ansi-styles: 5.2.0 react-is: 18.2.0 dev: true @@ -13801,7 +15321,7 @@ packages: dependencies: condense-newlines: 0.2.1 extend-shallow: 2.0.1 - js-beautify: 1.14.8 + js-beautify: 1.14.9 /prismjs@1.29.0: resolution: {integrity: sha512-Kx/1w86q/epKcmte75LNrEoT+lX8pBpavuAbvJWRXar7Hz8jrtF+e3vY751p0R8H9HdArwaCTNDDzHg/ScJK1Q==} @@ -13817,12 +15337,13 @@ packages: netmask: 2.0.2 dev: false - /private-ip@2.3.4: - resolution: {integrity: sha512-ts/YFVwfBeLq61f9+KsOhXW6RH0wvY0gU50R6QZYzgFhggyyLK6WDFeYdjfi/HMnBm2hecLvsR3PB3JcRxDk+A==} + /private-ip@3.0.1: + resolution: {integrity: sha512-Ezc16ANuhSHmWAE6lbXUKburNzGpR0J5X0Zh5Um/PZ/s57Fp+HYqYe6BYPH2QbqKr/5WebfzJQ1jq6Kj5dbRmA==} + engines: {node: '>=14.16'} dependencies: - ip-regex: 4.3.0 + '@chainsafe/is-ip': 2.0.2 + ip-regex: 5.0.0 ipaddr.js: 2.1.0 - is-ip: 3.1.0 netmask: 2.0.2 dev: false @@ -13842,6 +15363,7 @@ packages: /progress@2.0.3: resolution: {integrity: sha512-7PiHtLll5LdnKIMw100I+8xJXR5gW2QwWYkT6iJva0bXitZKa/XMrSbdmg3r2Xnaidz9Qumd0VPaMrZlF9V9sA==} engines: {node: '>=0.4.0'} + requiresBuild: true dev: false optional: true @@ -13895,6 +15417,7 @@ packages: /pseudomap@1.0.2: resolution: {integrity: sha512-b/YwNhb8lk1Zz2+bXXpS/LK9OisiZZ1SNsSLxN1x2OXVEhW2Ckr/7mWE5vrC1ZTiJlD9g19jWszTmJsB+oEpFQ==} + dev: true /psl@1.9.0: resolution: {integrity: sha512-E/ZsdU4HLs/68gYzgGTkMicWTLPdAftJLfJFlLUAAKZGkStNU72sZjT66SnMDVOfOWY/YAoiD7Jxa9iHvngcag==} @@ -13928,7 +15451,7 @@ packages: jstransformer: 1.0.0 pug-error: 2.0.0 pug-walk: 2.0.0 - resolve: 1.22.2 + resolve: 1.22.6 /pug-lexer@5.0.1: resolution: {integrity: sha512-0I6C62+keXlZPZkOJeVam9aBLVP2EnbeDw3An+k0/QlqdwH6rv8284nko14Na7c0TtqtogfWXcRoFE4O4Ff20w==} @@ -13983,7 +15506,6 @@ packages: dependencies: end-of-stream: 1.4.4 once: 1.4.0 - dev: true /pump@3.0.0: resolution: {integrity: sha512-LwZy+p3SFs1Pytd/jYct4wpv49HiYCqd9Rlc5ZVdk0V+8Yzv6jR5Blk3TRmPL1ft69TxP0IMZGJ+WPFU2BFhww==} @@ -13997,32 +15519,26 @@ packages: duplexify: 3.7.1 inherits: 2.0.4 pump: 2.0.1 - dev: true /punycode@1.3.2: resolution: {integrity: sha512-RofWgt/7fL5wP1Y7fxE7/EmTLzQVnB0ycyibJ0OOHIlJqTNzglYFxVwETOcIoJqJmpDXJ9xImDv+Fq34F/d4Dw==} dev: false - /punycode@2.1.1: - resolution: {integrity: sha512-XRsRjdf+j5ml+y/6GKHPZbrF/8p2Yga0JPtdqTIY2Xe5ohJPD9saDJJLPvp9+NSBprVvevdXZybnj2cv8OEd0A==} - engines: {node: '>=6'} - dev: true - /punycode@2.3.0: resolution: {integrity: sha512-rRV+zQD8tVFys26lAGR9WUuS4iUAngJScM+ZRSKtvl5tKeZ2t5bvdNFdNHBW9FWR4guGHlgmsZ1G7BSm2wTbuA==} engines: {node: '>=6'} - /pure-rand@6.0.2: - resolution: {integrity: sha512-6Yg0ekpKICSjPswYOuC5sku/TSWaRYlA0qsXqJgM/d/4pLPHPuTxK7Nbf7jFKzAeedUhR8C7K9Uv63FBsSo8xQ==} + /pure-rand@6.0.3: + resolution: {integrity: sha512-KddyFewCsO0j3+np81IQ+SweXLDnDQTs5s67BOnrYmYe/yNmUhttQyGsYzy8yUnoljGAQ9sl38YB4vH8ur7Y+w==} dev: true - /pureimage@0.3.15: - resolution: {integrity: sha512-QpQYEV8nxVb84en7D0nKXwG0bdmwmlsSg9QnqxpEOExvUXdbmo6Lw/UoxSXD9z+ryvWDkgWqZsIM3iPCAh4dXg==} - engines: {node: '>=0.8'} + /pureimage@0.4.8: + resolution: {integrity: sha512-/yNBs67VB4moPB7tqfupxFhYYaSlpnBpDb5995B0FP+vTqKwR2KD2uEIvch9NmpqUpVnsXcDOsFgmuGTgLX/Lg==} + engines: {node: '>=14.19.0'} dependencies: jpeg-js: 0.4.4 opentype.js: 0.4.11 - pngjs: 3.4.0 + pngjs: 7.0.0 dev: false /q@1.4.1: @@ -14079,14 +15595,9 @@ packages: deprecated: The querystring API is considered Legacy. new code should use the URLSearchParams API instead. dev: false - /querystring@0.2.1: - resolution: {integrity: sha512-wkvS7mL/JMugcup3/rMitHmd9ecIGd2lhFhK9N3UUQ450h66d1r3Y9nvXzQAW1Lq+wyx61k/1pfKS5KuKiyEbg==} - engines: {node: '>=0.4.x'} - deprecated: The querystring API is considered Legacy. new code should use the URLSearchParams API instead. - dev: true - /querystringify@2.2.0: resolution: {integrity: sha512-FIqgj2EUvTa7R50u0rGsyTftzjYmv/a3hO345bZNrqabNqjtgiDMgmo4mkUjd+nzU5oF3dClKqFIPUKybUyqoQ==} + dev: true /queue-lit@1.5.0: resolution: {integrity: sha512-IslToJ4eiCEE9xwMzq3viOO5nH8sUWUCwoElrhNMozzr9IIt2qqvB4I+uHu/zJTQVqc9R5DFwok4ijNK1pU3fA==} @@ -14094,6 +15605,11 @@ packages: /queue-microtask@1.2.3: resolution: {integrity: sha512-NuaNSa6flKT5JaSYQzJok04JzTL1CA6aGhv5rfLW3PgqA+M2ChpZQnAC8h8i4ZFkBS8X5RqkDBHA7r4hej3K9A==} + dev: true + + /queue-tick@1.0.1: + resolution: {integrity: sha512-kJt5qhMxoszgU/62PLP1CJytzd2NKetjSRnyuj31fDd3Rlcz3fzlFdFLD1SItunPwyqEOkca6GbV612BWfaBag==} + dev: false /quick-lru@4.0.1: resolution: {integrity: sha512-ARhCpm70fzdcvNQfPoy49IaanKkTlRWF2JMzqhcJbhSFRZv7nPTvZJdcY7301IPmvW+/p0RgIWnQDLJxifsQ7g==} @@ -14155,12 +15671,12 @@ packages: setimmediate: 1.0.5 dev: false - /re2@1.19.0: - resolution: {integrity: sha512-y0LcLZgBF3L7mDtNfbghb7dCmChYQO2QsUGklNueAJUH+HAZO8UZUubgNsf6OxRTAQpeE4KMPR7vcpK3+Q+GiA==} + /re2@1.20.3: + resolution: {integrity: sha512-g5j4YjygwGEccP9SCuDI90uPlgALLEYLotfL0K+kqL3XKB4ht7Nm1JuXfOTG96c7JozpvCUxTz1T7oTNwwMI6w==} requiresBuild: true dependencies: install-artifact-from-github: 1.3.3 - nan: 2.17.0 + nan: 2.18.0 node-gyp: 9.4.0 transitivePeerDependencies: - supports-color @@ -14250,8 +15766,8 @@ packages: minimatch: 5.1.6 dev: false - /readdirp@3.3.0: - resolution: {integrity: sha512-zz0pAkSPOXXm1viEwygWIPSPkcBYjW1xU5j/JBh5t9bGCJwa6f9+BJa6VaB2g+b55yVrmXzqkyLf4xaWYM0IkQ==} + /readdirp@3.6.0: + resolution: {integrity: sha512-hOS089on8RduqdbhvQ5Z37A0ESjsqz6qnRcffsMU3495FuTdqSm+7bhJ29JvIOsBDEEnan5DPu9t3To9VRlMzA==} engines: {node: '>=8.10.0'} dependencies: picomatch: 2.3.1 @@ -14260,14 +15776,14 @@ packages: resolution: {integrity: sha512-HFM8rkZ+i3zrV+4LQjwQ0W+ez98pApMGM3HUrN04j3CqzPOzl9nmP15Y8YXNm8QHGv/eacOVEjqhmWpkRV0NAw==} engines: {node: '>= 0.10'} dependencies: - resolve: 1.22.2 + resolve: 1.22.6 dev: true /rechoir@0.8.0: resolution: {integrity: sha512-/vxpCXddiX8NGfGO/mTafwjq4aFa/71pvamip0++IQk3zG8cbCj0fifNPrjjF1XMXUne91jL9OoxmdykoEtifQ==} engines: {node: '>= 10.13.0'} dependencies: - resolve: 1.22.2 + resolve: 1.22.6 dev: true /reconnecting-websocket@4.4.0: @@ -14285,6 +15801,7 @@ packages: /redis-errors@1.2.0: resolution: {integrity: sha512-1qny3OExCf0UvUV/5wpYKf2YwPcOqXzkwKKSmKHiE6ZMQs5heeE/c8eXK+PNllPvmjgAbfnsbpkGZWy8cBpn9w==} engines: {node: '>=4'} + dev: false /redis-info@3.1.0: resolution: {integrity: sha512-ER4L9Sh/vm63DkIE0bkSjxluQlioBiBgf5w1UuldaW/3vPcecdljVDisZhmnCMvsxHNiARTTDDHGg9cGwTfrKg==} @@ -14292,19 +15809,15 @@ packages: lodash: 4.17.21 dev: false - /redis-lock@0.1.4: - resolution: {integrity: sha512-7/+zu86XVQfJVx1nHTzux5reglDiyUCDwmW7TSlvVezfhH2YLc/Rc8NE0ejQG+8/0lwKzm29/u/4+ogKeLosiA==} - engines: {node: '>=0.6'} - dev: false - /redis-parser@3.0.0: resolution: {integrity: sha512-DJnGAeenTdpMEH6uAJRK/uiyEIH9WVsUmoLwzudwGJUwZPp80PDBWPHXSAGNPwNvIXAbe7MSUB1zQFugFml66A==} engines: {node: '>=4'} dependencies: redis-errors: 1.2.0 + dev: false - /redis-semaphore@5.3.1(ioredis@5.3.2): - resolution: {integrity: sha512-oUpxxfxSbh5eT0mvVpz2d4Qlg2CsaoQkeo80/v6CU2l97zO0u6NPgc9/zQZa9KGR3/93b0igtSct3hEFh8Ei8w==} + /redis-semaphore@5.5.0(ioredis@5.3.2): + resolution: {integrity: sha512-JSoCtkcXRr5hN2Hs7cmP/998bKAkZbJJ6C9T+UYh6BlEhYevWkQ6b5IHPRrZxCepPwwJnt/piacmB3a5UoXIYw==} engines: {node: '>= 14.17.0'} peerDependencies: ioredis: ^4.1.0 || ^5 @@ -14315,15 +15828,15 @@ packages: - supports-color dev: false - /redis@4.6.7: - resolution: {integrity: sha512-KrkuNJNpCwRm5vFJh0tteMxW8SaUzkm5fBH7eL5hd/D0fAkzvapxbfGPP/r+4JAXdQuX7nebsBkBqA2RHB7Usw==} + /redis@4.6.8: + resolution: {integrity: sha512-S7qNkPUYrsofQ0ztWlTHSaK0Qqfl1y+WMIxrzeAGNG+9iUZB4HGeBgkHxE6uJJ6iXrkvLd1RVJ2nvu6H1sAzfQ==} dependencies: - '@redis/bloom': 1.2.0(@redis/client@1.5.8) - '@redis/client': 1.5.8 - '@redis/graph': 1.1.0(@redis/client@1.5.8) - '@redis/json': 1.0.4(@redis/client@1.5.8) - '@redis/search': 1.1.3(@redis/client@1.5.8) - '@redis/time-series': 1.0.4(@redis/client@1.5.8) + '@redis/bloom': 1.2.0(@redis/client@1.5.9) + '@redis/client': 1.5.9 + '@redis/graph': 1.1.0(@redis/client@1.5.9) + '@redis/json': 1.0.4(@redis/client@1.5.9) + '@redis/search': 1.1.3(@redis/client@1.5.9) + '@redis/time-series': 1.0.5(@redis/client@1.5.9) dev: true /reduce-css-calc@1.3.0: @@ -14346,6 +15859,10 @@ packages: /regenerator-runtime@0.13.11: resolution: {integrity: sha512-kY1AZVr2Ra+t+piVaJ4gxaFaReZVH40AKNo7UCX6W+dEwBo/2oZJzqfuN1qLq1oL45o56cPaTXELwrTh8Fpggg==} + dev: false + + /regenerator-runtime@0.14.0: + resolution: {integrity: sha512-srw17NI0TUWHuGa5CFGGmhfNIeja30WMBfbslPNhf6JrqQlLN5gcrvig1oqPxiVaXb0oW0XRKtH6Nngs5lKCIA==} /regex-not@1.0.2: resolution: {integrity: sha512-J6SDjUgDxQj5NusnOtdFxDwN/+HWykR8GELwctJ7mdqhcyy1xEc4SRFHUXvxTp661YaVKAjfRLZ9cCqS6tn32A==} @@ -14355,13 +15872,18 @@ packages: safe-regex: 1.1.0 dev: true - /regexp.prototype.flags@1.5.0: - resolution: {integrity: sha512-0SutC3pNudRKgquxGoRGIz946MZVHqbNfPjBdxeOhBrdgDKlRoXmYLQN9xRbrR09ZXWeGAdPuif7egofn6v5LA==} + /regexp-tree@0.1.27: + resolution: {integrity: sha512-iETxpjK6YoRWJG5o6hXLwvjYAoW+FEZn9os0PD/b6AP6xQwsa/Y7lCVgIixBbUPMfhu+i2LtdeAqVTgGlQarfA==} + hasBin: true + dev: true + + /regexp.prototype.flags@1.5.1: + resolution: {integrity: sha512-sy6TXMN+hnP/wMy+ISxg3krXx7BAtWVO4UouuCN/ziM9UEne0euamVNafDfvC83bRNr95y0V5iijeDQFUNpvrg==} engines: {node: '>= 0.4'} dependencies: call-bind: 1.0.2 - define-properties: 1.2.0 - functions-have-names: 1.2.3 + define-properties: 1.2.1 + set-function-name: 2.0.1 dev: true /regexpp@3.2.0: @@ -14369,6 +15891,13 @@ packages: engines: {node: '>=8'} dev: true + /regjsparser@0.9.1: + resolution: {integrity: sha512-dQUtn90WanSNl+7mQKcXAgZxvUe7Z0SqXlgzv0za4LwiUhyzBC58yQO3liFoUgu8GiJVInAhJjkj1N0EtQ5nkQ==} + hasBin: true + dependencies: + jsesc: 0.5.0 + dev: true + /remove-bom-buffer@3.0.0: resolution: {integrity: sha512-8v2rWhaakv18qcvNeli2mZ/TMTL2nEyAKRvzo1WtnZBl15SHyEhrCu2/xKlJyUFKHiHgfXIyuY6g2dObJJycXQ==} engines: {node: '>=0.10.0'} @@ -14487,6 +16016,7 @@ packages: /requires-port@1.0.0: resolution: {integrity: sha512-KigOCHcocU3XODJxsu8i/j8T9tzT4adHiecwORRQ0ZZFcp7ahwXuRU1m+yuO90C5ZUyGeGfocHDI14M3L3yDAQ==} + dev: true /resolve-alpn@1.2.1: resolution: {integrity: sha512-0a1F4l73/ZFZOakJnQ3FvkJ2+gSTQWz/r2KE5OdDY0TxPm5h4GkqkWWfM47T7HsbnOtcJVEF4epCVy6u7Q3K+g==} @@ -14509,6 +16039,7 @@ packages: /resolve-from@4.0.0: resolution: {integrity: sha512-pb/MYmXstAkysRFx8piNI1tGFNQIFA3vkE3Gq4EuA1dF6gHp/+vgZqsCGJapvy8N3Q+4o7FwvquPJcnZ7RYy4g==} engines: {node: '>=4'} + dev: true /resolve-from@5.0.0: resolution: {integrity: sha512-qYg9KP24dD5qka9J47d0aVky0N+b4fTU89LN9iDnjB5waksiC49rvMB0PrUJQGoTmH50XPiqOvAjDfaijGxYZw==} @@ -14529,9 +16060,14 @@ packages: http-errors: 1.6.3 path-is-absolute: 1.0.1 + /resolve-pkg-maps@1.0.0: + resolution: {integrity: sha512-seS2Tj26TBVOC2NIc2rOe2y2ZO7efxITtLZcGSOnHHNOQ7CkiUBfw0Iw2ck6xkIhPwLhKNLS8BO+hEpngQlqzw==} + dev: true + /resolve-url@0.2.1: resolution: {integrity: sha512-ZuF55hVUQaaczgOIwqWzkEcEidmlD/xl44x1UZnhOXcYuFN2S6+rcxpG+C1N3So0wvNI3DmJICUFfu2SxhBmvg==} deprecated: https://github.com/lydell/resolve-url#deprecated + dev: true /resolve.exports@1.1.1: resolution: {integrity: sha512-/NtpHNDN7jWhAaQ9BvBUYZ6YTXsRBgfqWFWP7BZBaoMJO/I3G5OFzvTuWNlZC3aPjins1F+TNrLKsGbH4rfsRQ==} @@ -14546,15 +16082,15 @@ packages: /resolve@1.19.0: resolution: {integrity: sha512-rArEXAgsBG4UgRGcynxWIWKFvh/XZCcS8UJdHhwy91zwAvCZIbcs+vAbflgBnNjYMs/i/i+/Ux6IZhML1yPvxg==} dependencies: - is-core-module: 2.12.1 + is-core-module: 2.13.0 path-parse: 1.0.7 dev: true - /resolve@1.22.2: - resolution: {integrity: sha512-Sb+mjNHOULsBv818T40qSPeRiuWLyaGMa5ewydRLFimneixmVy2zdivRl+AF6jaYPC8ERxGDmFSiqui6SfPd+g==} + /resolve@1.22.6: + resolution: {integrity: sha512-njhxM7mV12JfufShqGy3Rz8j11RPdLy4xi15UurGJeoHLfJpVXKdh3ueuOqbYUcDZnffr6X739JBo5LzyahEsw==} hasBin: true dependencies: - is-core-module: 2.12.1 + is-core-module: 2.13.0 path-parse: 1.0.7 supports-preserve-symlinks-flag: 1.0.0 @@ -14591,6 +16127,7 @@ packages: /reusify@1.0.4: resolution: {integrity: sha512-U9nH88a3fc/ekCF1l0/UP1IosiuIjyTh7hBvXVMHYgVcfGvt897Xguj2UOLDeI5BG2m7/uwyaLVT6fbtCwTyzw==} engines: {iojs: '>=1.0.0', node: '>=0.10.0'} + dev: true /rfdc@1.3.0: resolution: {integrity: sha512-V2hovdzFbOi77/WajaSMXk2OLm+xNIeQdMMuB7icj7bk6zi2F8GGAxigcnDFpJHbNyNcgyJDiP+8nOrY5cZGrA==} @@ -14599,6 +16136,7 @@ packages: /rimraf@2.7.1: resolution: {integrity: sha512-uWjbaKIK3T1OSVptzX7Nl6PvQ3qAGtKEtVRjRuazjfL3Bx5eI409VZSqgND+4UNnmzLVdPj9FqFJNPqBZFve4w==} hasBin: true + requiresBuild: true dependencies: glob: 7.2.3 dev: false @@ -14616,26 +16154,12 @@ packages: rangestr: 0.0.1 seedrandom: 2.4.2 - /rollup@3.23.1: - resolution: {integrity: sha512-ybRdFVHOoljGEFILHLd2g/qateqUdjE6YS41WXq4p3C/WwD3xtWxV4FYWETA1u9TeXQc5K8L8zHE5d/scOvrOQ==} + /rollup@3.28.1: + resolution: {integrity: sha512-R9OMQmIHJm9znrU3m3cpE8uhN0fGdXiawME7aZIpQqvpS/85+Vt1Hq1/yVIcYfOmaQiHjvXkQAoJukvLpau6Yw==} engines: {node: '>=14.18.0', npm: '>=8.0.0'} hasBin: true optionalDependencies: - fsevents: 2.3.2 - dev: true - - /rome@12.1.3: - resolution: {integrity: sha512-e+ff72hxDpe/t5/Us7YRBVw3PBET7SeczTQNn6tvrWdrCaAw3qOukQQ+tDCkyFtS4yGsnhjrJbm43ctNbz27Yg==} - engines: {node: '>=14.*'} - hasBin: true - requiresBuild: true - optionalDependencies: - '@rometools/cli-darwin-arm64': 12.1.3 - '@rometools/cli-darwin-x64': 12.1.3 - '@rometools/cli-linux-arm64': 12.1.3 - '@rometools/cli-linux-x64': 12.1.3 - '@rometools/cli-win32-arm64': 12.1.3 - '@rometools/cli-win32-x64': 12.1.3 + fsevents: 2.3.3 dev: true /rss-parser@3.13.0: @@ -14645,21 +16169,39 @@ packages: xml2js: 0.5.0 dev: false + /run-applescript@5.0.0: + resolution: {integrity: sha512-XcT5rBksx1QdIhlFOCtgZkB99ZEouFZ1E2Kc2LHqNW13U3/74YGdkQRmThTwxy4QIyookibDKYZOPqX//6BlAg==} + engines: {node: '>=12'} + dependencies: + execa: 5.1.1 + dev: true + /run-parallel@1.2.0: resolution: {integrity: sha512-5l4VyZR86LZ/lDxZTR6jqL8AFE2S0IFLMP26AbjsLVADxHdhB/c0GUsH+y39UfCi3dzz8OlQuPmnaJOMoDHQBA==} dependencies: queue-microtask: 1.2.3 + dev: true /rxjs@7.8.1: resolution: {integrity: sha512-AA3TVj+0A2iuIoQkWEK/tqFjBq2j+6PO6Y0zJcvzLAFhEFIO3HL0vls9hWLncZbAAbK0mar7oZ4V079I/qPMxg==} dependencies: - tslib: 2.6.0 + tslib: 2.6.2 dev: true /s-age@1.1.2: resolution: {integrity: sha512-aSN2TlF39WLoZA/6cgYSJZhKt63kJ4EaadejPWjWY9/h4rksIqvfWY3gfd+3uAegSM1IXsA9aWeEhJtkxkFQtA==} dev: true + /safe-array-concat@1.0.1: + resolution: {integrity: sha512-6XbUAseYE2KtOuGueyeobCySj9L4+66Tn6KQMOPQJrAJEowYKW/YR/MGJZl7FdydUdaFu4LYyDZjxf4/Nmo23Q==} + engines: {node: '>=0.4'} + dependencies: + call-bind: 1.0.2 + get-intrinsic: 1.2.1 + has-symbols: 1.0.3 + isarray: 2.0.5 + dev: true + /safe-buffer@5.1.2: resolution: {integrity: sha512-Gd2UZBJDkXlY7GbJxfsE8/nvKkUEU1G38c1siN6QP6a9PT9MmHB8GnpscSmMJSoF8LOIrt8ud/wPtojys4G6+g==} @@ -14680,27 +16222,33 @@ packages: ret: 0.1.15 dev: true + /safe-regex@2.1.1: + resolution: {integrity: sha512-rx+x8AMzKb5Q5lQ95Zoi6ZbJqwCLkqi3XuJXp5P3rT8OEc6sZCJG5AE5dU3lsgRr/F4Bs31jSlVN+j5KrsGu9A==} + dependencies: + regexp-tree: 0.1.27 + dev: true + /safer-buffer@2.1.2: resolution: {integrity: sha512-YZo3K82SD7Riyi0E1EQPojLz7kpepnSQI9IyPbHHg1XXXevb5dJI7tpyN2ADxGcQbHG7vcyRHk0cbwqcQriUtg==} - /sanitize-html@2.10.0: - resolution: {integrity: sha512-JqdovUd81dG4k87vZt6uA6YhDfWkUGruUu/aPmXLxXi45gZExnt9Bnw/qeQU8oGf82vPyaE0vO4aH0PbobB9JQ==} + /sanitize-html@2.11.0: + resolution: {integrity: sha512-BG68EDHRaGKqlsNjJ2xUB7gpInPA8gVx/mvjO743hZaeMCZ2DwzW7xvsqZ+KNU4QKwj86HJ3uu2liISf2qBBUA==} dependencies: deepmerge: 4.3.1 escape-string-regexp: 4.0.0 htmlparser2: 8.0.2 is-plain-object: 5.0.0 parse-srcset: 1.0.2 - postcss: 8.4.24 + postcss: 8.4.29 dev: false - /sass@1.62.1: - resolution: {integrity: sha512-NHpxIzN29MXvWiuswfc1W3I0N8SXBd8UR26WntmDlRYf0bSADnwnOjsyMZ3lMezSlArD33Vs3YFhp7dWvL770A==} + /sass@1.66.1: + resolution: {integrity: sha512-50c+zTsZOJVgFfTgwwEzkjA3/QACgdNsKueWPyAR0mRINIvLAStVQBbPg14iuqEQ74NPDbXzJARJ/O4SI1zftA==} engines: {node: '>=14.0.0'} hasBin: true dependencies: - chokidar: 3.3.1 - immutable: 4.3.0 + chokidar: 3.5.3 + immutable: 4.3.4 source-map-js: 1.0.2 dev: true @@ -14718,18 +16266,11 @@ packages: xmlchars: 2.2.0 dev: true - /saxes@6.0.0: - resolution: {integrity: sha512-xAg7SOnEhrm5zI3puOOKyy1OMcMlIJZYNJY7xLBwSze0UjhPLnWfj2GF2EpT0jmzaJKIWKHLsaSSajf35bcYnA==} - engines: {node: '>=v12.22.7'} - dependencies: - xmlchars: 2.2.0 - dev: false - /schema-utils@3.3.0: resolution: {integrity: sha512-pN/yOAvcC+5rQ5nERGuwrjLlYvLTbCibnZ1I7B1LaiAz9BRBlE9GMgE/eqV30P7aJQUf7Ddimy/RsbYO/GrVGg==} engines: {node: '>= 10.13.0'} dependencies: - '@types/json-schema': 7.0.12 + '@types/json-schema': 7.0.13 ajv: 6.12.6 ajv-keywords: 3.5.2(ajv@6.12.6) dev: true @@ -14744,6 +16285,13 @@ packages: /seedrandom@3.0.5: resolution: {integrity: sha512-8OwmbklUNzwezjGInmZ+2clQmExQPvomqjL7LFqOYqtmuxRgQYqOD3mHaU+MvZn5FLUeVxVfQjwLZW/n/JFuqg==} + /seek-bzip@1.0.6: + resolution: {integrity: sha512-e1QtP3YL5tWww8uKaOCQ18UxIT2laNBXHjV/S2WYCiK4udiv8lkG89KRIoCjUagnAmCBurjF4zEVX2ByBbnCjQ==} + hasBin: true + dependencies: + commander: 2.20.3 + dev: false + /semver-greatest-satisfied-range@1.1.0: resolution: {integrity: sha512-Ny/iyOzSSa8M5ML46IAx3iXc6tfOsYU2R4AXi2UpHk60Zrgyq6eqPj/xiOfS0rRl/iiQ/rdJkVjw/5cdUyCntQ==} engines: {node: '>= 0.10'} @@ -14760,39 +16308,24 @@ packages: resolution: {integrity: sha512-LJWA9kSvMolR51oDE6PN3kALBNaUdkxzAGcexw8gjMA8xr5zUqK0JiR3CgARSqanYF3Z1YHvsErb1KDgh+v7Rg==} engines: {node: '>=12'} dependencies: - semver: 7.5.1 + semver: 7.5.4 dev: true - /semver@5.7.1: - resolution: {integrity: sha512-sauaDf/PZdVgrLTNYHRtpXa1iRiKcaebiKQ1BJdpQlWH2lCvexQdX55snPFyK7QzpudqbCI0qXFfOasHdyNDGQ==} + /semver@5.7.2: + resolution: {integrity: sha512-cBznnQ9KjJqU67B52RMC65CMarK2600WFnbkcaiwWq3xy/5haFJlshgnpjovMVJ+Hff49d8GEn0b87C5pDQ10g==} + hasBin: true + dev: true + + /semver@6.3.1: + resolution: {integrity: sha512-BR7VvDCVHO+q2xBEWskxS6DJE1qRnb7DxzUrogb71CWoSficBxYsiAGd+Kl0mmq/MprG9yArRkyrQxTO6XjMzA==} hasBin: true - /semver@6.3.0: - resolution: {integrity: sha512-b39TBaTSfV6yBrapU89p5fKekE2m/NwnDocOVruQFS1/veMgdzuPcnOM34M6CwxW8jH/lxEa5rBoDeUwu5HHTw==} - hasBin: true - - /semver@7.3.8: - resolution: {integrity: sha512-NB1ctGL5rlHrPJtFDVIVzTyQylMLu9N9VICA6HSFJo8MCGVTMW6gfpicwKmmK/dAjTOrqu5l63JJOpDSrAis3A==} + /semver@7.5.4: + resolution: {integrity: sha512-1bCSESV6Pv+i21Hvpxp3Dx+pSD8lIPt8uVjRrxAUt/nbswYc+tK6Y2btiULjd4+fnq15PX+nqQDC7Oft7WkwcA==} engines: {node: '>=10'} hasBin: true dependencies: lru-cache: 6.0.0 - dev: true - - /semver@7.5.1: - resolution: {integrity: sha512-Wvss5ivl8TMRZXXESstBA4uR5iXgEN/VC5/sOcuXdVLzcdkz4HWetIoRfG5gb5X+ij/G9rw9YoGn3QoQ8OCSpw==} - engines: {node: '>=10'} - hasBin: true - dependencies: - lru-cache: 6.0.0 - - /semver@7.5.3: - resolution: {integrity: sha512-QBlUtyVk/5EeHbi7X0fw6liDZc7BBmEaSYn01fMU1OUYbf6GPsbTtd8WmnqbI20SeycoHSeiybkE/q1Q+qlThQ==} - engines: {node: '>=10'} - hasBin: true - dependencies: - lru-cache: 6.0.0 - dev: true /serialize-error@7.0.1: resolution: {integrity: sha512-8I8TjW5KMOKsZQTvoxjuSIa7foAwPWGOts+6o7sgjz41/qMD9VQHEDxi6PBvK2l0MXUmqZyNpUK+T2tQaaElvw==} @@ -14816,6 +16349,15 @@ packages: /set-blocking@2.0.0: resolution: {integrity: sha512-KiKBS8AnWGEyLzofFfmvKwpdPzqiy16LvQfK3yv/fVH7Bj13/wl3JSR1J+rfgRE9q7xUJK4qvgS8raSOeLUehw==} + /set-function-name@2.0.1: + resolution: {integrity: sha512-tMNCiqYVkXIZgc2Hnoy2IvC/f8ezc5koaRFkCjrpWzGpCd3qbZXPzVy9MAZzK1ch/X0jvSkojys3oqJN0qCmdA==} + engines: {node: '>= 0.4'} + dependencies: + define-data-property: 1.1.0 + functions-have-names: 1.2.3 + has-property-descriptors: 1.0.0 + dev: true + /set-value@2.0.1: resolution: {integrity: sha512-JxHc1weCN68wRY0fhCoXpyK55m/XPHafOmK4UWD7m2CI14GMcFypt4w/0+NV5f/ZMby2F6S2wwA7fgynh9gWSw==} engines: {node: '>=0.10.0'} @@ -14858,18 +16400,18 @@ packages: kind-of: 6.0.3 dev: true - /sharp@0.32.1: - resolution: {integrity: sha512-kQTFtj7ldpUqSe8kDxoGLZc1rnMFU0AO2pqbX6pLy3b7Oj8ivJIdoKNwxHVQG2HN6XpHPJqCSM2nsma2gOXvOg==} + /sharp@0.32.5: + resolution: {integrity: sha512-0dap3iysgDkNaPOaOL4X/0akdu0ma62GcdC2NBQ+93eqpePdDdr2/LM0sFdDSMmN7yS+odyZtPsb7tx/cYBKnQ==} engines: {node: '>=14.15.0'} requiresBuild: true dependencies: color: 4.2.3 - detect-libc: 2.0.1 + detect-libc: 2.0.2 node-addon-api: 6.1.0 prebuild-install: 7.1.1 - semver: 7.5.1 + semver: 7.5.4 simple-get: 4.0.1 - tar-fs: 2.1.1 + tar-fs: 3.0.4 tunnel-agent: 0.6.0 dev: false @@ -14895,9 +16437,10 @@ packages: resolution: {integrity: sha512-7++dFhtcx3353uBaq8DDR4NuxBetBzC7ZQOhmTQInHEd6bSrXdiEyzCvG07Z44UYdLShWUyXt5M/yhz8ekcb1A==} engines: {node: '>=8'} - /shiki@0.12.1: - resolution: {integrity: sha512-aieaV1m349rZINEBkjxh2QbBvFFQOlgqYTNtCal82hHj4dDZ76oMlQIX+C7ryerBTDiga3e5NfH6smjdJ02BbQ==} + /shiki@0.14.4: + resolution: {integrity: sha512-IXCRip2IQzKwxArNNq1S+On4KPML3Yyn8Zzs/xRgcgOWIr8ntIK3IKzjFPfjy/7kt9ZMjc+FItfqHRBg8b6tNQ==} dependencies: + ansi-sequence-parser: 1.1.1 jsonc-parser: 3.2.0 vscode-oniguruma: 1.7.0 vscode-textmate: 8.0.0 @@ -14910,14 +16453,11 @@ packages: get-intrinsic: 1.2.1 object-inspect: 1.12.3 - /sigmund@1.0.1: - resolution: {integrity: sha512-fCvEXfh6NWpm+YSuY2bpXb/VIihqWA6hLsgboC+0nl71Q7N7o2eaCW8mJa/NLvQhs6jpd3VZV4UiUQlV6+lc8g==} - /signal-exit@3.0.7: resolution: {integrity: sha512-wnD2ZE+l+SPC/uoS0vXeE9L1+0wuaMqKlfz9AMUo38JsyLSBWSFcHR1Rri62LZc12vLr1gb3jl7iwQhgwpAbGQ==} - /signal-exit@4.0.2: - resolution: {integrity: sha512-MY2/qGx4enyjprQnFaZsHib3Yadh3IXyV2C321GY0pjGfVBu4un0uDJkwgdxqO+Rdx8JMT8IfJIRwbYVz3Ob3Q==} + /signal-exit@4.1.0: + resolution: {integrity: sha512-bzyZ1e88w9O1iNJbKnOlvYTrWPDl46O1bG0D3XInv+9tkPrxrN8jUUTiFlDkkmKWgn1M6CfIA13SuGqOa9Korw==} engines: {node: '>=14'} /simple-concat@1.0.1: @@ -15053,10 +16593,6 @@ packages: is-plain-obj: 1.1.0 dev: true - /sortablejs@1.14.0: - resolution: {integrity: sha512-pBXvQCs5/33fdN1/39pPL0NZF20LeRbLQ5jtnheIPN9JQAaufGjKdWduZn4U7wCtVuzKhmRkI0DFYHYRbB2H1w==} - dev: true - /source-map-js@1.0.2: resolution: {integrity: sha512-R0XvVJ9WusLiqTCEiGCmICCMplcCkIwwR11mOSD9CR5u+IXYdiseeEuXCVAjS54zqwkLcPNnmU4OeJ6tUrWhDw==} engines: {node: '>=0.10.0'} @@ -15072,6 +16608,14 @@ packages: urix: 0.1.0 dev: true + /source-map-resolve@0.6.0: + resolution: {integrity: sha512-KXBr9d/fO/bWo97NXsPIAW1bFSBOuCnjbNTBMO7N59hsv5i9yzRDfcYwwt0l04+VqnKC+EwzvJZIP/qkuMgR/w==} + deprecated: See https://github.com/lydell/source-map-resolve#deprecated + dependencies: + atob: 2.1.2 + decode-uri-component: 0.2.2 + dev: true + /source-map-support@0.5.13: resolution: {integrity: sha512-SHSKFHadjVA5oR4PPqhtAVdcBWwRYVd6g6cAXnIbRiIwc2EhPrTuKUBdSLvlEKyIP3GCf89fltvcZiP9MMFA1w==} dependencies: @@ -15099,6 +16643,7 @@ packages: /source-map@0.6.1: resolution: {integrity: sha512-UjgapumWlbMhkBgzT7Ykc5YXUT46F0iKu8SGXq0bcwP5dz/h0Plj6enJqjz1Zbq2l5WaqYnrVbwWOWMyF3F47g==} engines: {node: '>=0.10.0'} + dev: true /source-map@0.7.4: resolution: {integrity: sha512-l3BikUxvPOcn5E74dZiq5BGsTb5yEwhaTSzccU6t4sDOH8NWJCstKO5QT2CvtFoK6F0saL7p9xHAqHOlCPJygA==} @@ -15172,15 +16717,11 @@ packages: safer-buffer: 2.1.2 tweetnacl: 0.14.5 - /ssr-window@4.0.2: - resolution: {integrity: sha512-ISv/Ch+ig7SOtw7G2+qkwfVASzazUnvlDTwypdLoPoySv+6MqlOV10VwPSE6EWkGjhW50lUmghPmpYZXMu/+AQ==} - dev: true - - /ssri@10.0.4: - resolution: {integrity: sha512-12+IR2CB2C28MMAw0Ncqwj5QbTcs0nGIhgJzYWzDkb21vWmfNI83KS4f3Ci6GI98WreIfG7o9UXp3C0qbpA8nQ==} + /ssri@10.0.5: + resolution: {integrity: sha512-bSf16tAFkGeRlUNDjXu8FzaMQt6g2HZJrun7mtMbIPOddxt3GLMSz5VWUWcqTJUPfLEaDIepGxv+bYQW49596A==} engines: {node: ^14.17.0 || ^16.13.0 || >=18.0.0} dependencies: - minipass: 5.0.0 + minipass: 7.0.3 dev: false /stack-trace@0.0.10: @@ -15196,6 +16737,7 @@ packages: /standard-as-callback@2.1.0: resolution: {integrity: sha512-qoRRSyROncaz1z0mvYqIE4lCd9p2R90i6GxW3uZv5ucSu8tU7B5HXUP1gG8pVZsYNVaXjk8ClXHPttLyxAL48A==} + dev: false /start-server-and-test@1.15.2: resolution: {integrity: sha512-t5xJX04Hg7hqxiKHMJBz/n4zIMsE6G7hpAcerFAH+4Vh9le/LeyFcJERJM7WLiPygWF9TOg33oroJF1XOzJtYQ==} @@ -15251,13 +16793,19 @@ packages: /stream-shift@1.0.1: resolution: {integrity: sha512-AiisoFqQ0vbGcZgQPY1cdP2I76glaVA/RauYR4G4thNFgkTqr90yXTo4LYX60Jl+sIlPNHHdGSwo01AvbKUSVQ==} - dev: true /streamsearch@1.1.0: resolution: {integrity: sha512-Mcc5wHehp9aXz1ax6bZUyY5afg9u2rv5cqQI3mRrYkGC8rW2hM02jWuwjtL++LS5qinSyhj2QfLyNsuc+VsExg==} engines: {node: '>=10.0.0'} dev: false + /streamx@2.15.1: + resolution: {integrity: sha512-fQMzy2O/Q47rgwErk/eGeLu/roaFWV0jVsogDmrszM9uIw8L5OA+t+V93MgYlufNptfjmYR1tOMWhei/Eh7TQA==} + dependencies: + fast-fifo: 1.3.2 + queue-tick: 1.0.1 + dev: false + /strict-event-emitter-types@2.0.0: resolution: {integrity: sha512-Nk/brWYpD85WlOgzw5h173aci0Teyv8YdIAEtV+N88nDB0dLlazZyJMIsN6eo1/AR61l+p6CJTG1JIyFaoNEEA==} dev: true @@ -15305,29 +16853,29 @@ packages: emoji-regex: 9.2.2 strip-ansi: 7.1.0 - /string.prototype.trim@1.2.7: - resolution: {integrity: sha512-p6TmeT1T3411M8Cgg9wBTMRtY2q9+PNy9EV1i2lIXUN/btt763oIfxwN3RR8VU6wHX8j/1CFy0L+YuThm6bgOg==} + /string.prototype.trim@1.2.8: + resolution: {integrity: sha512-lfjY4HcixfQXOfaqCvcBuOIapyaroTXhbkfJN3gcB1OtyupngWK4sEET9Knd0cXd28kTUqu/kHoV4HKSJdnjiQ==} engines: {node: '>= 0.4'} dependencies: call-bind: 1.0.2 - define-properties: 1.2.0 - es-abstract: 1.21.2 + define-properties: 1.2.1 + es-abstract: 1.22.2 dev: true - /string.prototype.trimend@1.0.6: - resolution: {integrity: sha512-JySq+4mrPf9EsDBEDYMOb/lM7XQLulwg5R/m1r0PXEFqrV0qHvl58sdTilSXtKOflCsK2E8jxf+GKC0T07RWwQ==} + /string.prototype.trimend@1.0.7: + resolution: {integrity: sha512-Ni79DqeB72ZFq1uH/L6zJ+DKZTkOtPIHovb3YZHQViE+HDouuU4mBrLOLDn5Dde3RF8qw5qVETEjhu9locMLvA==} dependencies: call-bind: 1.0.2 - define-properties: 1.2.0 - es-abstract: 1.21.2 + define-properties: 1.2.1 + es-abstract: 1.22.2 dev: true - /string.prototype.trimstart@1.0.6: - resolution: {integrity: sha512-omqjMDaY92pbn5HOX7f9IccLA+U1tA9GvtU4JrodiXFfYB7jPzzHpRzpglLAjtUV6bB557zwClJezTqnAiYnQA==} + /string.prototype.trimstart@1.0.7: + resolution: {integrity: sha512-NGhtDFu3jCEm7B4Fy0DpLewdJQOZcQ0rGbwQ/+stjnrp2i+rlKeCvos9hOIeCmqwratM47OBxY7uFZzjxHXmrg==} dependencies: call-bind: 1.0.2 - define-properties: 1.2.0 - es-abstract: 1.21.2 + define-properties: 1.2.1 + es-abstract: 1.22.2 dev: true /string_decoder@0.10.31: @@ -15385,6 +16933,12 @@ packages: engines: {node: '>=8'} dev: true + /strip-dirs@2.1.0: + resolution: {integrity: sha512-JOCxOeKLm2CAS73y/U4ZeZPTkE+gNVCzKt7Eox84Iej1LT/2pTWYpZKJuxwQpvX1LiZb1xokNR7RLfuBAa7T3g==} + dependencies: + is-natural-number: 4.0.1 + dev: false + /strip-eof@1.0.0: resolution: {integrity: sha512-7FCwGGmx8mD5xQd3RPUvnSpUXHM3BWuzjtpD4TXsfcZ9EL4azvVVUscFYwD9nx8Kh+uCBC00XBtAykoMHwTh8Q==} engines: {node: '>=0.10.0'} @@ -15415,6 +16969,7 @@ packages: /strip-json-comments@3.1.1: resolution: {integrity: sha512-6fPc+R4ihwqP6N/aIv2f1gMH8lOVtWQHoqC4yK6oSDVVocumAsfCqjkXnqiYMhmMwS/mEHLp7Vehlt3ql6lEig==} engines: {node: '>=8'} + dev: true /strip-outer@2.0.0: resolution: {integrity: sha512-A21Xsm1XzUkK0qK1ZrytDUvqsQWict2Cykhvi0fBQntGG5JSprESasEyV1EZ/4CiR5WB5KjzLTrP/bO37B0wPg==} @@ -15432,6 +16987,20 @@ packages: '@tokenizer/token': 0.3.0 peek-readable: 5.0.0 + /stylus@0.57.0: + resolution: {integrity: sha512-yOI6G8WYfr0q8v8rRvE91wbxFU+rJPo760Va4MF6K0I6BZjO4r+xSynkvyPBP9tV1CIEUeRsiidjIs2rzb1CnQ==} + hasBin: true + dependencies: + css: 3.0.0 + debug: 4.3.4(supports-color@8.1.1) + glob: 7.2.3 + safer-buffer: 2.1.2 + sax: 1.2.4 + source-map: 0.7.4 + transitivePeerDependencies: + - supports-color + dev: true + /summaly@2.7.0: resolution: {integrity: sha512-pEz9LL8Gp0oPIQfn6TrnBCcv/HkFE14hxhH3W6LPGdopXlPXjRcMlDMJaO+VupUNMOGaMjCsjq7+0rWnu8sp7w==} dependencies: @@ -15524,25 +17093,32 @@ packages: whet.extend: 0.9.9 dev: true - /swc-loader@0.2.3(@swc/core@1.3.62)(webpack@5.85.1): + /swc-loader@0.2.3(@swc/core@1.3.82)(webpack@5.88.2): resolution: {integrity: sha512-D1p6XXURfSPleZZA/Lipb3A8pZ17fP4NObZvFCDjK/OKljroqDpPmsBdTraWhVBqUNpcWBQY1imWdoPScRlQ7A==} peerDependencies: '@swc/core': ^1.2.147 webpack: '>=2' dependencies: - '@swc/core': 1.3.62 - webpack: 5.85.1(@swc/core@1.3.62)(webpack-cli@5.1.3) + '@swc/core': 1.3.82 + webpack: 5.88.2(@swc/core@1.3.82)(webpack-cli@5.1.4) dev: true - /swiper@9.3.2: - resolution: {integrity: sha512-Kj9Z4kXRmJR3YT/Wj+XLWj8P6IcRt+WG38uL8M3/Wny7+6sV0TlP9vnE1X+Co9c7VzNooojWGnFa+Wf/9+CUMA==} + /swiper@10.2.0: + resolution: {integrity: sha512-nktQsOtBInJjr3f5DicxC8eHYGcLXDVIGPSon0QoXRaO6NjKnATCbQ8SZsD3dN1Ph1RH4EhVPwSYCcuDRFWHGQ==} engines: {node: '>= 4.7.0'} - dependencies: - ssr-window: 4.0.2 dev: true /symbol-tree@3.2.4: resolution: {integrity: sha512-9QNk5KwDF+Bvz+PyObkmSYjI5ksVUYtjW7AU22r2NKcfLJcXp96hkDWU3+XndOsUb+AQ9QhfzfCT2O+CNWT5Tw==} + dev: true + + /synckit@0.8.5: + resolution: {integrity: sha512-L1dapNV6vu2s/4Sputv8xGsCdAVlb5nRDMFU/E27D44l5U6cw1g0dGd45uLc+OXjNMmF4ntiMdCimzcjFKQI8Q==} + engines: {node: ^14.18.0 || >=16.0.0} + dependencies: + '@pkgr/utils': 2.4.2 + tslib: 2.6.2 + dev: true /syslog-pro@1.0.0: resolution: {integrity: sha512-7SNMJKtQBJlwBUp1jxFT7bXya71cnINXPCYJ2AVhlQE4MKL7o2QiPdAXbMdWRiLeykQ2rx+7TNrnoGzvzhO+eA==} @@ -15551,8 +17127,8 @@ packages: moment: 2.29.4 dev: false - /systeminformation@5.17.17: - resolution: {integrity: sha512-iIuX4P7fHPmTgiwjQrWx1e3/HsUXrEwE71saGZ2vGUiIvIHU5hXiyZs4cBrOzA66UoefycBTxCpbNf0v7uHiEQ==} + /systeminformation@5.21.3: + resolution: {integrity: sha512-+Xjja4LLZa6z/YdqHrzE6lDZLle/k+X1NLHCJhXux1ykMqIj++Nq5YbtjsYjn0p+M3Z/OLFqjLw15D2DrjP3ug==} engines: {node: '>=8.0.0'} os: [darwin, linux, win32, freebsd, openbsd, netbsd, sunos, android] hasBin: true @@ -15580,6 +17156,27 @@ packages: tar-stream: 2.2.0 dev: false + /tar-fs@3.0.4: + resolution: {integrity: sha512-5AFQU8b9qLfZCX9zp2duONhPmZv0hGYiBPJsyUdqMjzq/mqVpy/rEUSeHk1+YitmxugaptgBh5oDGU3VsAJq4w==} + dependencies: + mkdirp-classic: 0.5.3 + pump: 3.0.0 + tar-stream: 3.1.6 + dev: false + + /tar-stream@1.6.2: + resolution: {integrity: sha512-rzS0heiNf8Xn7/mpdSVVSMAWAoy9bfb1WOTYC78Z0UQKeKa/CWS8FOq0lKGNa8DWKAn9gxjCvMLYc5PGXYlK2A==} + engines: {node: '>= 0.8.0'} + dependencies: + bl: 1.2.3 + buffer-alloc: 1.2.0 + end-of-stream: 1.4.4 + fs-constants: 1.0.0 + readable-stream: 2.3.8 + to-buffer: 1.1.1 + xtend: 4.0.2 + dev: false + /tar-stream@2.2.0: resolution: {integrity: sha512-ujeqbceABgwMZxEJnk2HDY2DlnUZ+9oEcb1KzTVfYHio0UE6dG71n60d8D2I4qNvleWrrXpmjpt7vZeF1LnMZQ==} engines: {node: '>=6'} @@ -15591,9 +17188,18 @@ packages: readable-stream: 3.6.2 dev: false + /tar-stream@3.1.6: + resolution: {integrity: sha512-B/UyjYwPpMBv+PaFSWAmtYjwdrlEaZQEhMIBFNC5oEG8lpiW8XjcSdmEaClj28ArfKScKHs2nshz3k2le6crsg==} + dependencies: + b4a: 1.6.4 + fast-fifo: 1.3.2 + streamx: 2.15.1 + dev: false + /tar@4.4.19: resolution: {integrity: sha512-a20gEsvHnWe0ygBY8JbxoM4w3SJdhc7ZAuxkLqh+nvNQN2IOt0B5lLgM490X5Hl8FF0dl0tOf2ewFYAlIFgzVA==} engines: {node: '>=4.5'} + requiresBuild: true dependencies: chownr: 1.1.4 fs-minipass: 1.2.7 @@ -15605,8 +17211,8 @@ packages: dev: false optional: true - /tar@6.1.15: - resolution: {integrity: sha512-/zKt9UyngnxIT/EAGYuxaMYgOIJiP81ab9ZfkILq4oNLPFX50qyYmu7jRj9qeXoxmJHjGlbH0+cm2uy1WCs10A==} + /tar@6.2.0: + resolution: {integrity: sha512-/Wo7DcT0u5HUV486xg675HtjNd3BXZ6xDbzsCUZPt5iw8bTQ63bP0Raut3mvro9u+CUyq7YQd8Cx55fsZXxqLQ==} engines: {node: '>=10'} dependencies: chownr: 2.0.0 @@ -15630,7 +17236,7 @@ packages: supports-hyperlinks: 2.3.0 dev: true - /terser-webpack-plugin@5.3.9(@swc/core@1.3.62)(webpack@5.85.1): + /terser-webpack-plugin@5.3.9(@swc/core@1.3.82)(webpack@5.88.2): resolution: {integrity: sha512-ZuXsqE07EcggTWQjXUj+Aot/OMcD0bMKGgF63f7UxYcu5/AJF53aIpK1YoP5xR9l6s/Hy2b+t1AM0bLNPRuhwA==} engines: {node: '>= 10.13.0'} peerDependencies: @@ -15646,51 +17252,46 @@ packages: uglify-js: optional: true dependencies: - '@jridgewell/trace-mapping': 0.3.18 - '@swc/core': 1.3.62 + '@jridgewell/trace-mapping': 0.3.19 + '@swc/core': 1.3.82 jest-worker: 27.5.1 schema-utils: 3.3.0 serialize-javascript: 6.0.1 - terser: 5.18.2 - webpack: 5.85.1(@swc/core@1.3.62)(webpack-cli@5.1.3) + terser: 5.19.4 + webpack: 5.88.2(@swc/core@1.3.82)(webpack-cli@5.1.4) dev: true - /terser@5.18.2: - resolution: {integrity: sha512-Ah19JS86ypbJzTzvUCX7KOsEIhDaRONungA4aYBjEP3JZRf4ocuDzTg4QWZnPn9DEMiMYGJPiSOy7aykoCc70w==} + /terser@5.19.4: + resolution: {integrity: sha512-6p1DjHeuluwxDXcuT9VR8p64klWJKo1ILiy19s6C9+0Bh2+NWTX6nD9EPppiER4ICkHDVB1RkVpin/YW2nQn/g==} engines: {node: '>=10'} hasBin: true dependencies: - '@jridgewell/source-map': 0.3.3 - acorn: 8.9.0 + '@jridgewell/source-map': 0.3.5 + acorn: 8.10.0 commander: 2.20.3 source-map-support: 0.5.21 dev: true - /tesseract.js-core@3.0.2: - resolution: {integrity: sha512-2fD76ka9nO/C616R0fq+M9Zu91DA3vEfyozp0jlxaJOBmpfeprtgRP3cqVweZh2darE1kK/DazoxZ65g7WU99Q==} + /tesseract.js-core@4.0.4: + resolution: {integrity: sha512-MJ+vtktjAaT0681uPl6TDUPhbRbpD/S9emko5rtorgHRZpQo7R3BG7h+3pVHgn1KjfNf1bvnx4B7KxEK8YKqpg==} dev: false - /tesseract.js@3.0.3(eslint@8.42.0): - resolution: {integrity: sha512-eZ1+OGWvF5IMExAzIwnDf3S3kf2FeC+i4qrMTRvBSlZeHc3ONy0vCmaKmBQz6scjB6C1W2w2x0r4lCEh95qBnw==} + /tesseract.js@4.1.2: + resolution: {integrity: sha512-riCr/rbwt0siIf/HiC0W2J/6ndbEcRWVZvwTxeDRPgMwP4douBLYq7i4NgMigWAmJea7GA0r3XGLa2GknRYmPA==} requiresBuild: true dependencies: - babel-eslint: 10.1.0(eslint@8.42.0) bmp-js: 0.1.0 - file-type: 12.4.2 - idb-keyval: 3.2.0 + idb-keyval: 6.2.1 is-electron: 2.2.2 is-url: 1.2.4 - node-fetch: 2.6.11 + node-fetch: 2.7.0 opencollective-postinstall: 2.0.3 regenerator-runtime: 0.13.11 - resolve-url: 0.2.1 - tesseract.js-core: 3.0.2 + tesseract.js-core: 4.0.4 wasm-feature-detect: 1.5.1 zlibjs: 0.3.1 transitivePeerDependencies: - encoding - - eslint - - supports-color dev: false /test-exclude@6.0.0: @@ -15704,6 +17305,7 @@ packages: /text-table@0.2.0: resolution: {integrity: sha512-N+8UisAXDGk8PFXP4HAzVR9nbfmVJ3zYLAWiTIoqC5v5isinhr+r5uaO8+7r3BMfuNIufIsA7RdpVgacC2cSpw==} + dev: true /textarea-caret@3.1.0: resolution: {integrity: sha512-cXAvzO9pP5CGa6NKx0WYHl+8CHKZs8byMkt3PCJBCmq2a34YA9pO1NrQET5pzeqnBjBdToF5No4rrmkDUgQC2Q==} @@ -15725,8 +17327,8 @@ packages: dependencies: any-promise: 1.3.0 - /three@0.146.0: - resolution: {integrity: sha512-1lvNfLezN6OJ9NaFAhfX4sm5e9YCzHtaRgZ1+B4C+Hv6TibRMsuBAM5/wVKzxjpYIlMymvgsHEFrrigEfXnb2A==} + /three@0.156.0: + resolution: {integrity: sha512-r6meetGWDk3aYjDRh6NpKuUkzoPlI3yldDQe2SkwCcqTTB5NZn7vKQBUXyMExvlwZShaLmvAbsVWaFzp1rkk3A==} dev: true /throat@6.0.2: @@ -15754,7 +17356,6 @@ packages: dependencies: readable-stream: 2.3.8 xtend: 4.0.2 - dev: true /through2@4.0.2: resolution: {integrity: sha512-iOqSav00cVxEEICeD7TjLB1sueEL+81Wpzp2bY17uZjZN0pWZPuo4suZ/61VujxmqSGFfgOcNuTZ85QJwNZQpw==} @@ -15779,8 +17380,18 @@ packages: engines: {node: '>=4'} dev: true - /tinycolor2@1.5.2: - resolution: {integrity: sha512-h80m9GPFGbcLzZByXlNSEhp1gf8Dy+VX/2JCGUZsWLo7lV1mnE/XlxGYgRBoMLJh1lIDXP0EMC4RPTjlRaV+Bg==} + /tinycolor2@1.6.0: + resolution: {integrity: sha512-XPaBkWQJdsf3pLKJV9p4qN/S+fm2Oj8AIPo1BTUhg5oxkvm9+SVEGFdhyOz7tTdUTfvxMiAs4sp6/eZO2Ew+pw==} + + /tinyld@1.3.4: + resolution: {integrity: sha512-u26CNoaInA4XpDU+8s/6Cq8xHc2T5M4fXB3ICfXPokUQoLzmPgSZU02TAkFwFMJCWTjk53gtkS8pETTreZwCqw==} + engines: {node: '>= 12.10.0', npm: '>= 6.12.0', yarn: '>= 1.20.0'} + hasBin: true + + /titleize@3.0.0: + resolution: {integrity: sha512-KxVu8EYHDPBdUYdKZdKtU2aj2XfEx9AfjXxE/Aj0vT06w2icA09Vus1rh6eSu1y01akYg6BjIK/hxyLJINoMLQ==} + engines: {node: '>=12'} + dev: true /tmp@0.2.1: resolution: {integrity: sha512-76SUhtfqR2Ijn+xllcI5P1oyannHNHByD80W1q447gU3mp9G9PSpGdWmjUOHRDPiHYacIk66W7ubDTuPF3BEtQ==} @@ -15800,6 +17411,10 @@ packages: is-negated-glob: 1.0.0 dev: true + /to-buffer@1.1.1: + resolution: {integrity: sha512-lx9B5iv7msuFYE3dytT+KE5tap+rNYw+K4jVkb9R/asAb+pbBSM17jtunHplhBe6RRJdZx3Pn2Jph24O32mOVg==} + dev: false + /to-fast-properties@2.0.0: resolution: {integrity: sha512-/OaKK0xYrs3DmxRYqL/yDc+FxFUVYhDlXMhRmv3z915w2HF1tnN1omB354j8VUGO/hbRzyD6Y3sA7v7GS/ceog==} engines: {node: '>=4'} @@ -15862,6 +17477,7 @@ packages: dependencies: psl: 1.9.0 punycode: 2.3.0 + dev: false /tough-cookie@4.1.3: resolution: {integrity: sha512-aX/y5pVRkfRnfmuX+OdbSdXvPe6ieKX/G2s7e98f4poJHnqH3281gDPm/metm6E/WRamfx7WC4HUqkWHfQHprw==} @@ -15871,6 +17487,7 @@ packages: punycode: 2.3.0 universalify: 0.2.0 url-parse: 1.5.10 + dev: true /tr46@0.0.3: resolution: {integrity: sha512-N3WMsuqV66lT30CrXNbEjx4GEwlow3v6rr4mCcv6prnfwhS01rkgyFdjPNBYd9br7LpXV1+Emh01fHnq2Gdgrw==} @@ -15882,13 +17499,6 @@ packages: punycode: 2.3.0 dev: true - /tr46@3.0.0: - resolution: {integrity: sha512-l7FvfAHlcmulp8kr+flpQZmVwtu7nfRV7NZujtN0OqES8EL4O4e0qqzL0DC5gAvx/ZC/9lk6rhcUwYvkBnBnYA==} - engines: {node: '>=12'} - dependencies: - punycode: 2.3.0 - dev: false - /trace-redirect@1.0.6: resolution: {integrity: sha512-UUfa1DjjU5flcjMdaFIiIEGDTyu2y/IiMjOX4uGXa7meKBS4vD4f2Uy/tken9Qkd4Jsm4sRsfZcIIPqrRVF3Mg==} dev: false @@ -15905,15 +17515,24 @@ packages: escape-string-regexp: 5.0.0 dev: true - /ts-jest@27.1.2(@babel/core@7.22.5)(@types/jest@27.4.0)(jest@27.4.5)(typescript@5.1.3): - resolution: {integrity: sha512-eSOiJOWq6Hhs6Khzk5wKC5sgWIXgXqOCiIl1+3lfnearu58Hj4QpE5tUhQcA3xtZrELbcvAGCsd6HB8OsaVaTA==} + /ts-api-utils@1.0.3(typescript@5.2.2): + resolution: {integrity: sha512-wNMeqtMz5NtwpT/UZGY5alT+VoKdSsOOP/kqHFcUW1P/VRhH2wJ48+DN2WwUliNbQ976ETwDL0Ifd2VVvgonvg==} + engines: {node: '>=16.13.0'} + peerDependencies: + typescript: '>=4.2.0' + dependencies: + typescript: 5.2.2 + dev: true + + /ts-jest@27.1.5(@babel/core@7.22.20)(@types/jest@27.5.2)(jest@27.5.1)(typescript@5.1.3): + resolution: {integrity: sha512-Xv6jBQPoBEvBq/5i2TeSG9tt/nqkbpcurrEG1b+2yfBrcJelOZF9Ml6dmyMh7bcW9JyFbRYpR5rxROSlBLTZHA==} engines: {node: ^10.13.0 || ^12.13.0 || ^14.15.0 || >=15.0.0} hasBin: true peerDependencies: '@babel/core': '>=7.0.0-beta.0 <8' '@types/jest': ^27.0.0 babel-jest: '>=27.0.0 <28' - esbuild: ~0.14.0 + esbuild: '*' jest: ^27.0.0 typescript: '>=3.8 <5.0' peerDependenciesMeta: @@ -15926,22 +17545,22 @@ packages: esbuild: optional: true dependencies: - '@babel/core': 7.22.5 - '@types/jest': 27.4.0 + '@babel/core': 7.22.20 + '@types/jest': 27.5.2 bs-logger: 0.2.6 fast-json-stable-stringify: 2.1.0 - jest: 27.4.5(ts-node@10.4.0) + jest: 27.5.1(ts-node@10.4.0) jest-util: 27.5.1 json5: 2.2.3 lodash.memoize: 4.1.2 make-error: 1.3.6 - semver: 7.5.1 + semver: 7.5.4 typescript: 5.1.3 yargs-parser: 20.2.9 dev: true - /ts-jest@29.0.5(@babel/core@7.22.5)(jest@29.4.0)(typescript@4.9.4): - resolution: {integrity: sha512-PL3UciSgIpQ7f6XjVOmbi96vmDHUqAyqDr8YxzopDqX3kfgYtX1cuNeBjP+L9sFXi6nzsGGA6R3fP3DDDJyrxA==} + /ts-jest@29.1.1(@babel/core@7.22.20)(jest@29.7.0)(typescript@4.9.4): + resolution: {integrity: sha512-D6xjnnbP17cC85nliwGiL+tpoKN0StpgE0TeOjXQTU6MVCfsB4v7aW05CgQ/1OywGb0x/oy9hHFnN+sczTiRaA==} engines: {node: ^14.15.0 || ^16.10.0 || >=18.0.0} hasBin: true peerDependencies: @@ -15950,7 +17569,7 @@ packages: babel-jest: ^29.0.0 esbuild: '*' jest: ^29.0.0 - typescript: '>=4.3' + typescript: '>=4.3 <6' peerDependenciesMeta: '@babel/core': optional: true @@ -15961,21 +17580,21 @@ packages: esbuild: optional: true dependencies: - '@babel/core': 7.22.5 + '@babel/core': 7.22.20 bs-logger: 0.2.6 fast-json-stable-stringify: 2.1.0 - jest: 29.4.0(@types/node@18.11.18) - jest-util: 29.6.0 + jest: 29.7.0(@types/node@18.11.18) + jest-util: 29.7.0 json5: 2.2.3 lodash.memoize: 4.1.2 make-error: 1.3.6 - semver: 7.5.1 + semver: 7.5.4 typescript: 4.9.4 yargs-parser: 21.1.1 dev: true - /ts-loader@9.4.3(typescript@5.1.3)(webpack@5.85.1): - resolution: {integrity: sha512-n3hBnm6ozJYzwiwt5YRiJZkzktftRpMiBApHaJPoWLA+qetQBAXkHqCLM6nwSdRDimqVtA5ocIkcTRLMTt7yzA==} + /ts-loader@9.4.4(typescript@5.1.6)(webpack@5.88.2): + resolution: {integrity: sha512-MLukxDHBl8OJ5Dk3y69IsKVFRA/6MwzEqBgh+OXMPB/OD01KQuWPFd1WAQP8a5PeSCAxfnkhiuWqfmFJzJQt9w==} engines: {node: '>=12.0.0'} peerDependencies: typescript: '*' @@ -15984,12 +17603,12 @@ packages: chalk: 4.1.2 enhanced-resolve: 5.15.0 micromatch: 4.0.5 - semver: 7.5.1 - typescript: 5.1.3 - webpack: 5.85.1(@swc/core@1.3.62)(webpack-cli@5.1.3) + semver: 7.5.4 + typescript: 5.1.6 + webpack: 5.88.2(@swc/core@1.3.82)(webpack-cli@5.1.4) dev: true - /ts-node@10.4.0(@swc/core@1.3.62)(@types/node@20.3.1)(typescript@5.1.3): + /ts-node@10.4.0(@swc/core@1.3.82)(@types/node@20.3.1)(typescript@5.1.3): resolution: {integrity: sha512-g0FlPvvCXSIO1JDF6S232P5jPYqBkRL9qly81ZgAOSU7rwI0stphCgd2kLiCrU9DjQCrJMWEqcNSjQL02s6d8A==} hasBin: true peerDependencies: @@ -16004,13 +17623,13 @@ packages: optional: true dependencies: '@cspotcode/source-map-support': 0.7.0 - '@swc/core': 1.3.62 + '@swc/core': 1.3.82 '@tsconfig/node10': 1.0.9 '@tsconfig/node12': 1.0.11 '@tsconfig/node14': 1.0.3 '@tsconfig/node16': 1.0.4 '@types/node': 20.3.1 - acorn: 8.9.0 + acorn: 8.10.0 acorn-walk: 8.2.0 arg: 4.1.3 create-require: 1.1.1 @@ -16020,7 +17639,7 @@ packages: yn: 3.1.1 dev: true - /ts-node@10.9.1(@swc/core@1.3.62)(@types/node@18.11.18)(typescript@5.1.3): + /ts-node@10.9.1(@swc/core@1.3.82)(@types/node@18.11.18)(typescript@5.1.6): resolution: {integrity: sha512-NtVysVPkxxrwFGUUxGYhfux8k78pQB3JqYBXlLRZgdGUqTO5wU/UyHop5p70iEbGhB7q5KmiZiU0Y3KlJrScEw==} hasBin: true peerDependencies: @@ -16035,27 +17654,27 @@ packages: optional: true dependencies: '@cspotcode/source-map-support': 0.8.1 - '@swc/core': 1.3.62 + '@swc/core': 1.3.82 '@tsconfig/node10': 1.0.9 '@tsconfig/node12': 1.0.11 '@tsconfig/node14': 1.0.3 '@tsconfig/node16': 1.0.4 '@types/node': 18.11.18 - acorn: 8.9.0 + acorn: 8.10.0 acorn-walk: 8.2.0 arg: 4.1.3 create-require: 1.1.1 diff: 4.0.2 make-error: 1.3.6 - typescript: 5.1.3 + typescript: 5.1.6 v8-compile-cache-lib: 3.0.1 yn: 3.1.1 - /tsc-alias@1.8.6: - resolution: {integrity: sha512-vq+i6VpE83IeMsSJVcFN03ZBofADhr8/gIJXjxpbnTRfN/MFXy0+SBaKG2o7p95QqXBGkeG98HYz3IkOOveFbg==} + /tsc-alias@1.8.7: + resolution: {integrity: sha512-59Q/zUQa3miTf99mLbSqaW0hi1jt4WoG8Uhe5hSZJHQpSoFW9eEwvW7jlKMHXWvT+zrzy3SN9PE/YBhQ+WVydA==} hasBin: true dependencies: - chokidar: 3.3.1 + chokidar: 3.5.3 commander: 9.5.0 globby: 11.1.0 mylas: 2.1.13 @@ -16089,7 +17708,7 @@ packages: '@tsd/typescript': 5.0.4 eslint-formatter-pretty: 4.1.0 globby: 11.1.0 - jest-diff: 29.5.0 + jest-diff: 29.7.0 meow: 9.0.0 path-exists: 4.0.0 read-pkg-up: 7.0.1 @@ -16099,8 +17718,8 @@ packages: resolution: {integrity: sha512-Xni35NKzjgMrwevysHTCArtLDpPvye8zV/0E4EyYn43P7/7qvQwPh9BGkHewbMulVntbigmcT7rdX3BNo9wRJg==} dev: true - /tslib@2.6.0: - resolution: {integrity: sha512-7At1WUettjcSRHXCyYtTselblcHl9PJFFVKiCAy/bY97+BPZXSQ2wbq0P9s8tK2G7dFQfNnlJnPAiArVBVBsfA==} + /tslib@2.6.2: + resolution: {integrity: sha512-AEYxH93jGFPn/a2iVAwW87VuUIkR1FVUKB77NwMF7nBTDkDrrT/Hpt/IrCJ0QXhW27jTBDcf5ZY7w6RiqTMw2Q==} /tsscmp@1.0.6: resolution: {integrity: sha512-LxhtAkPDTkVCMQjt2h6eBVY28KCjikZqZfMcC15YBeNjkgUpdCfBu5HoiOTDu86v6smE8yOjyEktJ8hlbANHQA==} @@ -16117,6 +17736,16 @@ packages: typescript: 4.9.4 dev: true + /tsutils@3.21.0(typescript@5.2.2): + resolution: {integrity: sha512-mHKK3iUXL+3UF6xL5k0PEhKRUBKPBCv/+RkEOpjRWxxx27KKRBmmA60A9pgOUvMi8GKhRMPEmjBRPzs2W7O1OA==} + engines: {node: '>= 6'} + peerDependencies: + typescript: '>=2.8.0 || >= 3.2.0-dev || >= 3.3.0-dev || >= 3.4.0-dev || >= 3.5.0-dev || >= 3.6.0-dev || >= 3.6.0-beta || >= 3.7.0-dev || >= 3.7.0-beta' + dependencies: + tslib: 1.14.1 + typescript: 5.2.2 + dev: true + /tunnel-agent@0.6.0: resolution: {integrity: sha512-McnNiV1l8RYeY8tBgEpuodCC1mLUdbSN+CYBL7kJsJNInOP8UjDDEwdk6Mw60vdLLrr5NHKZhMAOSrR2NZuQ+w==} dependencies: @@ -16128,17 +17757,12 @@ packages: /twemoji-parser@14.0.0: resolution: {integrity: sha512-9DUOTGLOWs0pFWnh1p6NF+C3CkQ96PWmEFwhOVmT3WbecRC+68AIqpsnJXygfkFcp4aXbOp8Dwbhh/HQgvoRxA==} - /type-check@0.3.2: - resolution: {integrity: sha512-ZCmOJdvOWDBYJlzAoFkC+Q0+bUyEOS1ltgp1MGU03fqHG+dbi9tBFU2Rd9QKiDZFAYrhPh2JUf7rZRIuHRKtOg==} - engines: {node: '>= 0.8.0'} - dependencies: - prelude-ls: 1.1.2 - /type-check@0.4.0: resolution: {integrity: sha512-XleUoc9uwGXqjWwXaUTZAmzMcFZ5858QA2vvx1Ur5xIcixXIP+8LnFDgRplU30us6teqdlskFfu+ae4K79Ooew==} engines: {node: '>= 0.8.0'} dependencies: prelude-ls: 1.2.1 + dev: true /type-detect@4.0.8: resolution: {integrity: sha512-0fr/mIH1dlO+x7TlcMy+bIDqKPsw/70tVyeHW787goQjhmqaZe10uwLujubK9q9Lg6Fiho1KUKDYz0Z7k7g5/g==} @@ -16157,6 +17781,7 @@ packages: /type-fest@0.20.2: resolution: {integrity: sha512-Ne+eE4r0/iWnpAxD852z3A+N0Bt5RN//NjJwRd2VFHEmrywxf5vsZlh4R6lixl6B+wz/8d+maTSAkN1FIkI3LQ==} engines: {node: '>=10'} + dev: true /type-fest@0.21.3: resolution: {integrity: sha512-t0rzBq87m3fVcduHDUFhKmyyX+9eo6WQjZvf51Ea/M0Q7+T374Jp1aUiyUl0GKxp8M/OETVHSDvmkyPgvX+X2w==} @@ -16187,12 +17812,42 @@ packages: /type@2.7.2: resolution: {integrity: sha512-dzlvlNlt6AXU7EBSfpAscydQ7gXB+pPGsPnfJnZpiNJBDj7IaJzQlBZYGdEi4R9HmPdBv2XmWJ6YUtoTa7lmCw==} + /typed-array-buffer@1.0.0: + resolution: {integrity: sha512-Y8KTSIglk9OZEr8zywiIHG/kmQ7KWyjseXs1CbSo8vC42w7hg2HgYTxSWwP0+is7bWDc1H+Fo026CpHFwm8tkw==} + engines: {node: '>= 0.4'} + dependencies: + call-bind: 1.0.2 + get-intrinsic: 1.2.1 + is-typed-array: 1.1.12 + dev: true + + /typed-array-byte-length@1.0.0: + resolution: {integrity: sha512-Or/+kvLxNpeQ9DtSydonMxCx+9ZXOswtwJn17SNLvhptaXYDJvkFFP5zbfU/uLmvnBJlI4yrnXRxpdWH/M5tNA==} + engines: {node: '>= 0.4'} + dependencies: + call-bind: 1.0.2 + for-each: 0.3.3 + has-proto: 1.0.1 + is-typed-array: 1.1.12 + dev: true + + /typed-array-byte-offset@1.0.0: + resolution: {integrity: sha512-RD97prjEt9EL8YgAgpOkf3O4IF9lhJFr9g0htQkm0rchFp/Vx7LW5Q8fSXXub7BXAODyUQohRMyOc3faCPd0hg==} + engines: {node: '>= 0.4'} + dependencies: + available-typed-arrays: 1.0.5 + call-bind: 1.0.2 + for-each: 0.3.3 + has-proto: 1.0.1 + is-typed-array: 1.1.12 + dev: true + /typed-array-length@1.0.4: resolution: {integrity: sha512-KjZypGq+I/H7HI5HlOoGHkWUUGq+Q0TPhQurLbyrVrvnKTBgzLhIJ7j6J/XTQOi0d1RjyZ0wdas8bKs2p0x3Ng==} dependencies: call-bind: 1.0.2 for-each: 0.3.3 - is-typed-array: 1.1.10 + is-typed-array: 1.1.12 dev: true /typedarray-to-buffer@3.1.5: @@ -16203,22 +17858,22 @@ packages: /typedarray@0.0.6: resolution: {integrity: sha512-/aCDEGatGvZ2BIk+HmLf4ifCJFwvKFNb9/JeZPMulfgFracn9QFcAf5GO8B/mweUjSoblS5In0cWhqpfs/5PQA==} - /typedoc@0.23.24(typescript@4.9.4): - resolution: {integrity: sha512-bfmy8lNQh+WrPYcJbtjQ6JEEsVl/ce1ZIXyXhyW+a1vFrjO39t6J8sL/d6FfAGrJTc7McCXgk9AanYBSNvLdIA==} + /typedoc@0.23.28(typescript@4.9.4): + resolution: {integrity: sha512-9x1+hZWTHEQcGoP7qFmlo4unUoVJLB0H/8vfO/7wqTnZxg4kPuji9y3uRzEu0ZKez63OJAUmiGhUrtukC6Uj3w==} engines: {node: '>= 14.14'} hasBin: true peerDependencies: - typescript: 4.6.x || 4.7.x || 4.8.x || 4.9.x + typescript: 4.6.x || 4.7.x || 4.8.x || 4.9.x || 5.0.x dependencies: lunr: 2.3.9 marked: 4.3.0 - minimatch: 5.1.6 - shiki: 0.12.1 + minimatch: 7.4.6 + shiki: 0.14.4 typescript: 4.9.4 dev: true - /typeorm@0.3.11(ioredis@5.3.2)(pg@8.11.0)(ts-node@10.9.1): - resolution: {integrity: sha512-pzdOyWbVuz/z8Ww6gqvBW4nylsM0KLdUCDExr2gR20/x1khGSVxQkjNV/3YqliG90jrWzrknYbYscpk8yxFJVg==} + /typeorm@0.3.17(ioredis@5.3.2)(pg@8.11.3)(ts-node@10.9.1): + resolution: {integrity: sha512-UDjUEwIQalO9tWw9O2A4GU+sT3oyoUXheHJy4ft+RFdnRdQctdQ34L9SqE2p7LdwzafHx1maxT+bqXON+Qnmig==} engines: {node: '>= 12.9.0'} hasBin: true peerDependencies: @@ -16227,9 +17882,9 @@ packages: better-sqlite3: ^7.1.2 || ^8.0.0 hdb-pool: ^0.1.6 ioredis: ^5.0.4 - mongodb: ^3.6.0 - mssql: ^7.3.0 - mysql2: ^2.2.5 + mongodb: ^5.2.0 + mssql: ^9.1.1 + mysql2: ^2.2.5 || ^3.0.1 oracledb: ^5.1.0 pg: ^8.5.1 pg-native: ^3.0.0 @@ -16283,17 +17938,15 @@ packages: date-fns: 2.30.0 debug: 4.3.4(supports-color@8.1.1) dotenv: 16.3.1 - glob: 7.2.3 + glob: 8.1.0 ioredis: 5.3.2 - js-yaml: 4.1.0 - mkdirp: 1.0.4 - pg: 8.11.0 + mkdirp: 2.1.6 + pg: 8.11.3 reflect-metadata: 0.1.13 sha.js: 2.4.11 - ts-node: 10.9.1(@swc/core@1.3.62)(@types/node@18.11.18)(typescript@5.1.3) - tslib: 2.6.0 - uuid: 8.3.2 - xml2js: 0.4.23 + ts-node: 10.9.1(@swc/core@1.3.82)(@types/node@18.11.18)(typescript@5.1.6) + tslib: 2.6.2 + uuid: 9.0.0 yargs: 17.7.2 transitivePeerDependencies: - supports-color @@ -16314,6 +17967,18 @@ packages: resolution: {integrity: sha512-XH627E9vkeqhlZFQuL+UsyAXEnibT0kWR2FWONlr4sTjvxyJYnyefgrkyECLzM5NenmKzRAy2rR/OlYLA1HkZw==} engines: {node: '>=14.17'} hasBin: true + dev: true + + /typescript@5.1.6: + resolution: {integrity: sha512-zaWCozRZ6DLEWAWFrVDz1H6FVXzUSfTy5FUMWsQlU8Ym5JP9eO4xkTIROFCQvhQf61z6O/G6ugw3SgAnvvm+HA==} + engines: {node: '>=14.17'} + hasBin: true + + /typescript@5.2.2: + resolution: {integrity: sha512-mI4WrpHsbCIcwT9cF4FZvr80QUeKvsUsUvKDoR+X/7XHQH98xYD8YHZg7ANtz2GtZt/CBq2QJ0thkGJMHfqc1w==} + engines: {node: '>=14.17'} + hasBin: true + dev: true /ulid@2.3.0: resolution: {integrity: sha512-keqHubrlpvT6G2wH0OEfSW4mquYRcbe/J8NMmveoQOjUqmo+hXtO+ORCpWhdbZ7k72UtY61BL7haGxW6enBnjw==} @@ -16329,6 +17994,13 @@ packages: which-boxed-primitive: 1.0.2 dev: true + /unbzip2-stream@1.4.3: + resolution: {integrity: sha512-mlExGW4w71ebDJviH16lQLtZS32VKqsSfk80GCfUlwT/4/hNRFsoscrF/c++9xinkMzECL1uL9DDwXqFWkruPg==} + dependencies: + buffer: 5.7.1 + through: 2.3.8 + dev: false + /unc-path-regex@0.1.2: resolution: {integrity: sha512-eXL4nmJT7oCpkZsHZUOJo8hcX3GbsiDOa0Qu9F646fi8dT3XuSVopVqAcEiVzSKKH7UoDti23wNX3qGFxcW5Qg==} engines: {node: '>=0.10.0'} @@ -16355,8 +18027,8 @@ packages: undertaker-registry: 1.0.1 dev: true - /undici@5.22.1: - resolution: {integrity: sha512-Ji2IJhFXZY0x/0tVBXeQwgPlLWw13GVzpsWPQ3rV50IFMMof2I55PZZxtm4P6iNq+L5znYN9nSTAq0ZyE6lSJw==} + /undici@5.24.0: + resolution: {integrity: sha512-OKlckxBjFl0oXxcj9FU6oB8fDAaiRUq+D8jrFWGmOfI/gIyjk/IeS75LMzgYKUaeHzLUcYvf9bbJGSrUwTfwwQ==} engines: {node: '>=14.0'} dependencies: busboy: 1.6.0 @@ -16404,6 +18076,12 @@ packages: through2-filter: 3.0.0 dev: true + /unist-util-stringify-position@2.0.3: + resolution: {integrity: sha512-3faScn5I+hy9VleOq/qNbAd6pAx7iH5jYBMS9I1HgQVijz/4mv5Bvw5iw1sC/90CODiKo81G/ps8AJrISn687g==} + dependencies: + '@types/unist': 2.0.8 + dev: true + /universalify@0.1.2: resolution: {integrity: sha512-rBJeI5CXAlmy1pV+617WB9J63U6XcazHHF2f2dbJix4XzpUF0RS3Zbj0FGIOCAva5P/d/GBOYaACQ1w+0azUkg==} engines: {node: '>= 4.0.0'} @@ -16411,6 +18089,7 @@ packages: /universalify@0.2.0: resolution: {integrity: sha512-CJ1QgKmNg3CwvAv/kOFmtnEN05f0D/cn9QntgNOQlQF9dgvVTHj3t+8JPdjqawCHk7V/KA+fbUqzZ9XWhcqPUg==} engines: {node: '>= 4.0.0'} + dev: true /universalify@2.0.0: resolution: {integrity: sha512-hAZsKq7Yy11Zu1DE0OzWjw7nnLZmJZYTDZZyEFHZdUhV8FkH5MCfoU1XMaxXovpyW5nq5scPqq0ZDP9Zyl04oQ==} @@ -16439,13 +18118,13 @@ packages: engines: {node: '>=8'} dev: true - /update-browserslist-db@1.0.11(browserslist@4.21.9): + /update-browserslist-db@1.0.11(browserslist@4.21.10): resolution: {integrity: sha512-dCwEFf0/oT85M1fHBg4F0jtLwJrutGoHSQXCh7u4o2t1drG+c0a9Flnqww6XUKSfQMPpJBRjU8d4RXB09qtvaA==} hasBin: true peerDependencies: browserslist: '>= 4.21.0' dependencies: - browserslist: 4.21.9 + browserslist: 4.21.10 escalade: 3.1.1 picocolors: 1.0.0 @@ -16464,6 +18143,7 @@ packages: dependencies: querystringify: 2.2.0 requires-port: 1.0.0 + dev: true /url-polyfill@1.1.12: resolution: {integrity: sha512-mYFmBHCapZjtcNHW0MDq9967t+z4Dmg5CJ0KqysK3+ZbyoNOWQHksGCTWwDhxGXllkWlOc10Xfko6v4a3ucM6A==} @@ -16490,7 +18170,7 @@ packages: engines: {node: '>=6.14.2'} requiresBuild: true dependencies: - node-gyp-build: 4.6.0 + node-gyp-build: 4.6.1 dev: false /util-deprecate@1.0.2: @@ -16502,8 +18182,8 @@ packages: inherits: 2.0.4 is-arguments: 1.1.1 is-generator-function: 1.0.10 - is-typed-array: 1.1.10 - which-typed-array: 1.1.9 + is-typed-array: 1.1.12 + which-typed-array: 1.1.11 dev: false /uuid@3.4.0: @@ -16545,7 +18225,7 @@ packages: resolution: {integrity: sha512-6z3GW9x8G1gd+JIIgQQQxXuiJtCXeAjp6RaPEPLv62mH3iPHPxV6W3robxtCzNErRo6ZwTmzWhsbNvjyEBKzKA==} engines: {node: '>=10.12.0'} dependencies: - '@jridgewell/trace-mapping': 0.3.18 + '@jridgewell/trace-mapping': 0.3.19 '@types/istanbul-lib-coverage': 2.0.4 convert-source-map: 1.9.0 dev: true @@ -16564,8 +18244,8 @@ packages: spdx-expression-parse: 3.0.1 dev: true - /validator@13.9.0: - resolution: {integrity: sha512-B+dGG8U3fdtM0/aNK4/X8CXq/EcxU2WPrPEkJGslb47qyHsxmbggTWK0yEA4qnYVNF+nxNlN88o14hIcPmSIEA==} + /validator@13.11.0: + resolution: {integrity: sha512-Ii+sehpSfZy+At5nPdnyMhx78fEoPDkR2XW/zimHEL3MyGJQOCQ7WeP20jPYRz7ZCpcKLB21NxuXHF3bxjStBQ==} engines: {node: '>= 0.10'} dev: true @@ -16574,8 +18254,8 @@ packages: engines: {node: '>= 0.10'} dev: true - /vanilla-tilt@1.8.0: - resolution: {integrity: sha512-wVCHyyfRuiRdKhDTNxKPb60lkagmywDSqLgFETEr71Sm646AvGxuf/14Kx9A8FaISyYvMoKQHk6FTqt+YLGhEw==} + /vanilla-tilt@1.8.1: + resolution: {integrity: sha512-hPB1XUsnh+SIeVSW2beb5RnuFxz4ZNgxjGD78o52F49gS4xaoLeEMh9qrQnJrnEn/vjjBI7IlxrrXmz4tGV0Kw==} dev: true /vary@1.1.2: @@ -16649,7 +18329,7 @@ packages: replace-ext: 1.0.1 dev: true - /vite-plugin-compression@0.5.1(vite@4.3.9): + /vite-plugin-compression@0.5.1(vite@4.4.9): resolution: {integrity: sha512-5QJKBDc+gNYVqL/skgFAP81Yuzo9R+EAf19d+EtsMF/i8kFUpNi3J/H01QD3Oo8zBQn+NzoCIFkpPLynoOzaJg==} peerDependencies: vite: '>=2.0.0' @@ -16657,18 +18337,19 @@ packages: chalk: 4.1.2 debug: 4.3.4(supports-color@8.1.1) fs-extra: 10.1.0 - vite: 4.3.9(@types/node@18.11.18)(sass@1.62.1) + vite: 4.4.9(@types/node@20.5.8)(sass@1.66.1) transitivePeerDependencies: - supports-color dev: true - /vite@4.3.9(@types/node@18.11.18)(sass@1.62.1): - resolution: {integrity: sha512-qsTNZjO9NoJNW7KnOrgYwczm0WctJ8m/yqYAMAK9Lxt4SoySUfS5S8ia9K7JHpa3KEeMfyF8LoJ3c5NeBJy6pg==} + /vite@4.4.9(@types/node@20.5.8)(sass@1.66.1): + resolution: {integrity: sha512-2mbUn2LlUmNASWwSCNSJ/EG2HuSRTnVNaydp6vMCm5VIqJsjMfbIWtbH2kDuwUVW5mMUKKZvGPX/rqeqVvv1XA==} engines: {node: ^14.18.0 || >=16.0.0} hasBin: true peerDependencies: '@types/node': '>= 14' less: '*' + lightningcss: ^1.21.0 sass: '*' stylus: '*' sugarss: '*' @@ -16678,6 +18359,8 @@ packages: optional: true less: optional: true + lightningcss: + optional: true sass: optional: true stylus: @@ -16687,13 +18370,13 @@ packages: terser: optional: true dependencies: - '@types/node': 18.11.18 - esbuild: 0.17.19 - postcss: 8.4.24 - rollup: 3.23.1 - sass: 1.62.1 + '@types/node': 20.5.8 + esbuild: 0.18.20 + postcss: 8.4.29 + rollup: 3.28.1 + sass: 1.66.1 optionalDependencies: - fsevents: 2.3.2 + fsevents: 2.3.3 dev: true /void-elements@3.1.0: @@ -16708,6 +18391,36 @@ packages: resolution: {integrity: sha512-AFbieoL7a5LMqcnOF04ji+rpXadgOXnZsxQr//r83kLPr7biP7am3g9zbaZIaBGwBRWeSvoMD4mgPdX3e4NWBg==} dev: true + /vue-draggable-plus@0.2.6(@types/sortablejs@1.15.2): + resolution: {integrity: sha512-d+0omKIBIfLiJFggc6H4ePRaifbX+33+OiCMsxn8rG59yWXlJGrobexxgXetnSo/1NLTd0TkYZKNc4CA6iwJZw==} + peerDependencies: + '@types/sortablejs': ^1.15.0 + '@vue/composition-api': '*' + peerDependenciesMeta: + '@vue/composition-api': + optional: true + dependencies: + '@types/sortablejs': 1.15.2 + dev: true + + /vue-eslint-parser@9.3.1(eslint@8.49.0): + resolution: {integrity: sha512-Clr85iD2XFZ3lJ52/ppmUDG/spxQu6+MAeHXjjyI4I1NUYZ9xmenQp4N0oaHJhrA8OOxltCVxMRfANGa70vU0g==} + engines: {node: ^14.17.0 || >=16.0.0} + peerDependencies: + eslint: '>=6.0.0' + dependencies: + debug: 4.3.4(supports-color@8.1.1) + eslint: 8.49.0 + eslint-scope: 7.2.2 + eslint-visitor-keys: 3.4.3 + espree: 9.6.1 + esquery: 1.5.0 + lodash: 4.17.21 + semver: 7.5.4 + transitivePeerDependencies: + - supports-color + dev: true + /vue-isyourpasswordsafe@2.0.0: resolution: {integrity: sha512-j3ORj18R9AgFiP2UOM35KuZbSeJAUiwCSyeRBFN3CGFYTJSKsxqU9qGqOHOz6OhLAYKMTin8JOmqugAbF9O+Bg==} dependencies: @@ -16747,15 +18460,6 @@ packages: '@vue/shared': 3.3.4 dev: true - /vuedraggable@4.1.0(vue@3.3.4): - resolution: {integrity: sha512-FU5HCWBmsf20GpP3eudURW3WdWTKIbEIQxh9/8GE806hydR9qZqRRxRE3RjqX7PkuLuMQG/A7n3cfj9rCEchww==} - peerDependencies: - vue: ^3.0.1 - dependencies: - sortablejs: 1.14.0 - vue: 3.3.4 - dev: true - /w3c-hr-time@1.0.2: resolution: {integrity: sha512-z8P5DvDNjKDoFIHK7q8r8lackT6l+jo/Ye3HOle7l9nICP9lf1Ci25fy9vHd0JOWewkIFzXIEig3TdKT7JQ5fQ==} deprecated: Use your platform's native performance.now() and performance.timeOrigin. @@ -16770,20 +18474,13 @@ packages: xml-name-validator: 3.0.0 dev: true - /w3c-xmlserializer@4.0.0: - resolution: {integrity: sha512-d+BFHzbiCx6zGfz0HyQ6Rg69w9k19nviJspaj4yNscGjrHu94sVP+aRm75yEbCh+r2/yR+7q6hux9LVtbuTGBw==} - engines: {node: '>=14'} - dependencies: - xml-name-validator: 4.0.0 - dev: false - /wait-on@6.0.1(debug@4.3.4): resolution: {integrity: sha512-zht+KASY3usTY5u2LgaNqn/Cd8MukxLGjdcZxT2ns5QzDmTFc4XoWBgC+C/na+sMRZTuVygQoMYwdcVjHnYIVw==} engines: {node: '>=10.0.0'} hasBin: true dependencies: axios: 0.25.0(debug@4.3.4) - joi: 17.9.2 + joi: 17.10.2 lodash: 4.17.21 minimist: 1.2.8 rxjs: 7.8.1 @@ -16809,17 +18506,22 @@ packages: graceful-fs: 4.2.11 dev: true - /web-push@3.6.1: - resolution: {integrity: sha512-+eN2/4Ybu+nkRgXqlPXUzqeA5BgQ7J4StYJM/e2uJpsSIGhkZJFrTlCx+ow9sD0mn+4jgbo2FkFoMBKftl49ZQ==} - engines: {node: '>= 6'} + /wcwidth@1.0.1: + resolution: {integrity: sha512-XHPEwS0q6TaxcvG85+8EYkbiCux2XtWG2mkc47Ng2A77BQu9+DqIOJldST4HgPkuea7dvKSj5VgX3P1d4rW8Tg==} + dependencies: + defaults: 1.0.4 + dev: true + + /web-push@3.6.5: + resolution: {integrity: sha512-rc/i0LRwA4EAeajRVHQp6+RW+NlCMuk3CgFLb+IR/NJ1RleeNzQ9iwayVHgc4LmcxaaWeslHBM1qLUq1yi0O6A==} + engines: {node: '>= 16'} hasBin: true dependencies: asn1.js: 5.4.1 http_ece: 1.1.0 - https-proxy-agent: 5.0.1 + https-proxy-agent: 7.0.2 jws: 4.0.0 minimist: 1.2.8 - urlsafe-base64: 1.0.0 transitivePeerDependencies: - supports-color dev: false @@ -16846,8 +18548,8 @@ packages: engines: {node: '>=12'} dev: false - /webpack-cli@5.1.3(webpack@5.85.1): - resolution: {integrity: sha512-MTuk7NUMvEHQUSXCpvUrF1q2p0FJS40dPFfqQvG3jTWcgv/8plBNz2Kv2HXZiLGPnfmSAA5uCtCILO1JBmmkfw==} + /webpack-cli@5.1.4(webpack@5.88.2): + resolution: {integrity: sha512-pIDJHIEI9LR0yxHXQ+Qh95k2EvXpWzZ5l+d+jIo+RdSm9MiHfzazIxwwni/p7+x4eJZuvG1AJwgC4TNQ7NRgsg==} engines: {node: '>=14.15.0'} hasBin: true peerDependencies: @@ -16864,9 +18566,9 @@ packages: optional: true dependencies: '@discoveryjs/json-ext': 0.5.7 - '@webpack-cli/configtest': 2.1.1(webpack-cli@5.1.3)(webpack@5.85.1) - '@webpack-cli/info': 2.0.2(webpack-cli@5.1.3)(webpack@5.85.1) - '@webpack-cli/serve': 2.0.5(webpack-cli@5.1.3)(webpack@5.85.1) + '@webpack-cli/configtest': 2.1.1(webpack-cli@5.1.4)(webpack@5.88.2) + '@webpack-cli/info': 2.0.2(webpack-cli@5.1.4)(webpack@5.88.2) + '@webpack-cli/serve': 2.0.5(webpack-cli@5.1.4)(webpack@5.88.2) colorette: 2.0.20 commander: 10.0.1 cross-spawn: 7.0.3 @@ -16875,7 +18577,7 @@ packages: import-local: 3.1.0 interpret: 3.1.1 rechoir: 0.8.0 - webpack: 5.85.1(@swc/core@1.3.62)(webpack-cli@5.1.3) + webpack: 5.88.2(@swc/core@1.3.82)(webpack-cli@5.1.4) webpack-merge: 5.9.0 dev: true @@ -16892,8 +18594,8 @@ packages: engines: {node: '>=10.13.0'} dev: true - /webpack@5.85.1(@swc/core@1.3.62)(webpack-cli@5.1.3): - resolution: {integrity: sha512-xTb7MRf4LY8Z5rzn7aIx4TDrwYJrjcHnIfU1TqtyZOoObyuGSpAUwIvVuqq5wPnv7WEgQr8UvO1q/dgoGG4HjA==} + /webpack@5.88.2(@swc/core@1.3.82)(webpack-cli@5.1.4): + resolution: {integrity: sha512-JmcgNZ1iKj+aiR0OvTYtWQqJwq37Pf683dY9bVORwVbUrDhLhdn/PlO2sHsFHPkj7sHNQF3JwaAkp49V+Sq1tQ==} engines: {node: '>=10.13.0'} hasBin: true peerDependencies: @@ -16907,12 +18609,12 @@ packages: '@webassemblyjs/ast': 1.11.6 '@webassemblyjs/wasm-edit': 1.11.6 '@webassemblyjs/wasm-parser': 1.11.6 - acorn: 8.9.0 - acorn-import-assertions: 1.9.0(acorn@8.9.0) - browserslist: 4.21.9 + acorn: 8.10.0 + acorn-import-assertions: 1.9.0(acorn@8.10.0) + browserslist: 4.21.10 chrome-trace-event: 1.0.3 enhanced-resolve: 5.15.0 - es-module-lexer: 1.3.0 + es-module-lexer: 1.3.1 eslint-scope: 5.1.1 events: 3.3.0 glob-to-regexp: 0.4.1 @@ -16923,9 +18625,9 @@ packages: neo-async: 2.6.2 schema-utils: 3.3.0 tapable: 2.2.1 - terser-webpack-plugin: 5.3.9(@swc/core@1.3.62)(webpack@5.85.1) + terser-webpack-plugin: 5.3.9(@swc/core@1.3.82)(webpack@5.88.2) watchpack: 2.4.0 - webpack-cli: 5.1.3(webpack@5.85.1) + webpack-cli: 5.1.4(webpack@5.88.2) webpack-sources: 3.2.3 transitivePeerDependencies: - '@swc/core' @@ -16974,14 +18676,6 @@ packages: engines: {node: '>=12'} dev: false - /whatwg-url@11.0.0: - resolution: {integrity: sha512-RKT8HExMpoYx4igMiVMY83lN6UeITKJlBQ+vR/8ZJ8OCdSiN3RwCq+9gH0+Xzj0+5IrM6i4j/6LuvzbZIQgEcQ==} - engines: {node: '>=12'} - dependencies: - tr46: 3.0.0 - webidl-conversions: 7.0.0 - dev: false - /whatwg-url@5.0.0: resolution: {integrity: sha512-saE57nupxk6v3HY35+jzBwYa0rKSy0XR8JSxZPwgLr7ys0IBzhGviA1/TUGJLmSVqs8pb9AnvICXEuOHLprYTw==} dependencies: @@ -17020,8 +18714,8 @@ packages: resolution: {integrity: sha512-iBdZ57RDvnOR9AGBhML2vFZf7h8vmBjhoaZqODJBFWHVtKkDmKuHai3cx5PgVMrX5YDNp27AofYbAwctSS+vhQ==} dev: false - /which-typed-array@1.1.9: - resolution: {integrity: sha512-w9c4xkx6mPidwp7180ckYWfMmvxpjlZuIudNtDf4N/tTAUB8VJbX25qZoAsrtGuYNnGw3pa0AXgbGKRB8/EceA==} + /which-typed-array@1.1.11: + resolution: {integrity: sha512-qe9UWWpkeG5yzZ0tNYxDmd7vo58HDBc39mZ0xWWpolAGADdFOzkfamWLDxkOWcvHQKVmdTyQdLD4NOfjLWTKew==} engines: {node: '>= 0.4'} dependencies: available-typed-arrays: 1.0.5 @@ -17029,7 +18723,6 @@ packages: for-each: 0.3.3 gopd: 1.0.1 has-tostringtag: 1.0.0 - is-typed-array: 1.1.10 /which@1.3.1: resolution: {integrity: sha512-HxJdYWq1MTIQbJ3nw0cqssHoTNU267KlrDuGZ1WYlxDStUtKUhOaJmh112/TZmHxxUfuJqPXSOm7tDyas0OSIQ==} @@ -17058,15 +18751,11 @@ packages: resolution: {integrity: sha512-RNGKj82nUPg3g5ygxkQl0R937xLyho1J24ItRCBTr/m1YnZkzJy1hUiHUJrc/VlsDQzsCnInEGSg3bci0Lmd4w==} engines: {node: '>= 10.0.0'} dependencies: - '@babel/parser': 7.22.5 - '@babel/types': 7.22.5 + '@babel/parser': 7.22.16 + '@babel/types': 7.22.19 assert-never: 1.2.1 babel-walk: 3.0.0-canary-5 - /word-wrap@1.2.3: - resolution: {integrity: sha512-Hz/mrNwitNRh/HUAtM/VT/5VH+ygD6DV7mYKZAtHOrbs8U7lvPS6xf7EJKMF0uW1KJCl0H701g3ZGus+muE5vQ==} - engines: {node: '>=0.10.0'} - /workerpool@6.2.1: resolution: {integrity: sha512-ILEIE97kDZvF9Wb9f6h5aXK4swSlKGUcOEGiIYb2OOu/IrDU9iwj0fD//SsA6E5ibwJxpEvhullJY4Sl4GcpAw==} dev: true @@ -17129,7 +18818,7 @@ packages: engines: {node: ^14.17.0 || ^16.13.0 || >=18.0.0} dependencies: imurmurhash: 0.1.4 - signal-exit: 4.0.2 + signal-exit: 4.1.0 dev: true /ws@7.5.9: @@ -17169,6 +18858,7 @@ packages: optional: true utf-8-validate: optional: true + dev: true /xev@3.0.2: resolution: {integrity: sha512-8kxuH95iMXzHZj+fwqfA4UrPcYOy6bGIgfWzo9Ji23JoEc30ge/Z++Ubkiuy8c0+M64nXmmxrmJ7C8wnuBhluw==} @@ -17188,28 +18878,13 @@ packages: /xml-name-validator@4.0.0: resolution: {integrity: sha512-ICP2e+jsHvAj2E2lIHxa5tjXRlKDJo4IdvPvCXbXQGdzSfmSpNVyIKMvoZHjDY9DP0zV17iI85o90vRFXNccRw==} engines: {node: '>=12'} - dev: false - - /xml2js@0.4.19: - resolution: {integrity: sha512-esZnJZJOiJR9wWKMyuvSE1y6Dq5LCuJanqhxslH2bxM6duahNZ+HMpCLhBQGZkbX6xRf8x1Y2eJlgt2q3qo49Q==} - dependencies: - sax: 1.2.1 - xmlbuilder: 9.0.7 - dev: false - - /xml2js@0.4.23: - resolution: {integrity: sha512-ySPiMjM0+pLDftHgXY4By0uswI3SPKLDw/i3UXbnO8M/p28zqexCUoPmQFrYD+/1BzhGJSs2i1ERWKJAtiLrug==} - engines: {node: '>=4.0.0'} - dependencies: - sax: 1.2.4 - xmlbuilder: 11.0.1 - dev: false + dev: true /xml2js@0.5.0: resolution: {integrity: sha512-drPFnkQJik/O+uPKpqSgr22mpuFHqKdbS835iAQrUC73L2F5WkboIRd63ai/2Yg6I1jzifPFKH2NTK+cfglkIA==} engines: {node: '>=4.0.0'} dependencies: - sax: 1.2.4 + sax: 1.2.1 xmlbuilder: 11.0.1 dev: false @@ -17218,13 +18893,9 @@ packages: engines: {node: '>=4.0'} dev: false - /xmlbuilder@9.0.7: - resolution: {integrity: sha512-7YXTQc3P2l9+0rjaUbLwMKRhtmwg1M1eDf6nag7urC7pIPYLD9W/jmzQ4ptRSUbodw5S0jfoGTflLemQibSpeQ==} - engines: {node: '>=4.0'} - dev: false - /xmlchars@2.2.0: resolution: {integrity: sha512-JZnDKK8B0RCDw84FNdDAIpZK+JuJw+s7Lz8nksI7SIuU3UXJJslUthsi+uWBUYOwPFwW7W7PRLRfUKpxjtjFCw==} + dev: true /xtend@4.0.2: resolution: {integrity: sha512-LKYU1iAXJXUgAXn9URjiu+MWhyUXHsvfp7mcuYm9dSUKK0/CjtrUwFAxD82/mCWbtLsGjFIad0wIsod4zrTAEQ==} @@ -17249,6 +18920,7 @@ packages: /yallist@2.1.2: resolution: {integrity: sha512-ncTzHV7NvsQZkYe1DW7cbDLm0YpzHmZF5r/iyP3ZnQtMiJ+pjzisCiMNI+Sj+xQF5pXhSHxSB3uDbsBTzY/c2A==} + dev: true /yallist@3.1.1: resolution: {integrity: sha512-a4UGQaWPH59mOXUYnAG2ewncQS4i4F43Tv3JoAM+s2VDAmS9NsK8GpDMLrCHPksFT7h3K6TOoUNn2pb7RoXx4g==} @@ -17260,6 +18932,20 @@ packages: resolution: {integrity: sha512-2PTINUwsRqSd+s8XxKaJWQlUuEMHJQyEuh2edBbW8KNJz0SJPwUSD2zRWqezFEdN7IzAgeuYHFUCF7o8zRdZ0A==} dev: false + /yaml-eslint-parser@1.2.2: + resolution: {integrity: sha512-pEwzfsKbTrB8G3xc/sN7aw1v6A6c/pKxLAkjclnAyo5g5qOh6eL9WGu0o3cSDQZKrTNk4KL4lQSwZW+nBkANEg==} + engines: {node: ^14.17.0 || >=16.0.0} + dependencies: + eslint-visitor-keys: 3.4.3 + lodash: 4.17.21 + yaml: 2.3.2 + dev: true + + /yaml@2.3.2: + resolution: {integrity: sha512-N/lyzTPaJasoDmfV7YTrYCI0G/3ivm/9wdG0aHuheKowWQwGTsK0Eoiw6utmzAnI6pkJa0DUVygvp3spqqEKXg==} + engines: {node: '>= 14'} + dev: true + /yargs-parser@18.1.3: resolution: {integrity: sha512-o50j0JeToy/4K6OZcaQmW6lyXXKhq7csREXcDwk2omFPJEwUNOVtJKvmDr9EI1fAJZUyZcRF7kxGBWmRXudrCQ==} engines: {node: '>=6'} @@ -17362,7 +19048,6 @@ packages: dependencies: buffer-crc32: 0.2.13 fd-slicer: 1.1.0 - dev: true /ylru@1.3.2: resolution: {integrity: sha512-RXRJzMiK6U2ye0BlGGZnmpwJDPgakn6aNQ0A7gHRbD4I0uvK4TW6UqkK1V0pp9jskjJBAXd3dRrbzWkqJ+6cxA==} @@ -17376,6 +19061,7 @@ packages: /yocto-queue@0.1.0: resolution: {integrity: sha512-rVksvsnNCdJ/ohGc6xgPwyN8eheCxsiLM8mxuE/t/mOVqJewPuO1miLpTHQiRgTKCLexL4MeAFVagts7HmNZ2Q==} engines: {node: '>=10'} + dev: true /yocto-queue@1.0.0: resolution: {integrity: sha512-9bnSc/HEW2uRy67wc+T8UwauLuPJVn28jb+GtJY16iiKWyvmYJRXVT4UamsAEGQfPohgr2q4Tq0sQbQlxTfi1g==} @@ -17389,17 +19075,17 @@ packages: dependencies: lodash.get: 4.4.2 lodash.isequal: 4.5.0 - validator: 13.9.0 + validator: 13.11.0 optionalDependencies: commander: 9.5.0 dev: true - /zip-stream@4.1.0: - resolution: {integrity: sha512-zshzwQW7gG7hjpBlgeQP9RuyPGNxvJdzR8SUM3QhxCnLjWN2E7j3dOvpeDcQoETfHx0urRS7EtmVToql7YpU4A==} + /zip-stream@4.1.1: + resolution: {integrity: sha512-9qv4rlDiopXg4E69k+vMHjNN63YFMe9sZMrdlvKnCjlCRWeCBswPPMPUfx+ipsAWq1LXHe70RcbaHdJJpS6hyQ==} engines: {node: '>= 10'} dependencies: - archiver-utils: 2.1.0 - compress-commons: 4.1.1 + archiver-utils: 3.0.4 + compress-commons: 4.1.2 readable-stream: 3.6.2 dev: false @@ -17407,14 +19093,21 @@ packages: resolution: {integrity: sha512-+J9RrgTKOmlxFSDHo0pI1xM6BLVUv+o0ZT9ANtCxGkjIVCCUdx9alUF8Gm+dGLKbkkkidWIHFDZHDMpfITt4+w==} dev: false - /zod@3.21.4: - resolution: {integrity: sha512-m46AKbrzKVzOzs/DZgVnG5H55N1sv1M8qZU3A8RIKbs3mrACDNeIOeilDymVb2HdmP8uwshOCF4uJ8uM9rCqJw==} + /zod@3.22.2: + resolution: {integrity: sha512-wvWkphh5WQsJbVk1tbx1l1Ly4yg+XecD+Mq280uBGt9wa5BKSWf4Mhp6GmrkPixhMxmabYY7RbzlwVP32pbGCg==} dev: false - github.com/misskey-dev/browser-image-resizer/56f504427ad7f6500e141a6d9f3aee42023d7f3e: - resolution: {tarball: https://codeload.github.com/misskey-dev/browser-image-resizer/tar.gz/56f504427ad7f6500e141a6d9f3aee42023d7f3e} - name: browser-image-resizer - version: 2.2.1-misskey.4 + github.com/TheEssem/cacheable-lookup/dd2fb616366a3c68dcf321a57a67295967b204bf: + resolution: {tarball: https://codeload.github.com/TheEssem/cacheable-lookup/tar.gz/dd2fb616366a3c68dcf321a57a67295967b204bf} + name: cacheable-lookup + version: 7.0.0 + engines: {node: '>=14.16'} + dev: false + + github.com/misskey-dev/browser-image-resizer/5a70660c2ac8aad3d436bfa67a5e7f7c8946cac4: + resolution: {tarball: https://codeload.github.com/misskey-dev/browser-image-resizer/tar.gz/5a70660c2ac8aad3d436bfa67a5e7f7c8946cac4} + name: '@misskey-dev/browser-image-resizer' + version: 2.2.1-misskey.10 dev: true github.com/sampotts/plyr/d434c9af16e641400aaee93188594208d88f2658: @@ -17422,15 +19115,15 @@ packages: name: plyr version: 3.7.0 dependencies: - core-js: 3.31.0 + core-js: 3.32.2 custom-event-polyfill: 1.0.7 loadjs: 4.2.0 rangetouch: 2.0.1 url-polyfill: 1.1.12 dev: true - github.com/thatonecalculator/emojilib/9d16541664dc8fef3201ae9b647477070676a52e: - resolution: {tarball: https://codeload.github.com/thatonecalculator/emojilib/tar.gz/9d16541664dc8fef3201ae9b647477070676a52e} + github.com/thatonecalculator/emojilib/d3c8c6a77d4362b3b3180099f1d2eac344ce245c: + resolution: {tarball: https://codeload.github.com/thatonecalculator/emojilib/tar.gz/d3c8c6a77d4362b3b3180099f1d2eac344ce245c} name: emojilib version: 3.0.10 dev: true diff --git a/pnpm-workspace.yaml b/pnpm-workspace.yaml index b449f9f233..fd5cd65e6d 100644 --- a/pnpm-workspace.yaml +++ b/pnpm-workspace.yaml @@ -3,5 +3,5 @@ packages: - 'packages/backend/native-utils' - 'packages/client' - 'packages/sw' - - 'packages/calckey-js' + - 'packages/firefish-js' - 'packages/megalodon' diff --git a/pull_request_template.yml b/pull_request_template.yml deleted file mode 100644 index d3009cfc84..0000000000 --- a/pull_request_template.yml +++ /dev/null @@ -1,28 +0,0 @@ -name: Pull Request -about: Create a pull request -title: "[PR]: " -body: - - type: markdown - attributes: - value: | - Thanks for taking the time to make Calckey better! It's not required, but please consider using [Conventional Commits](https://www.conventionalcommits.org/en/v1.0.0/) when making your commits. If you use VSCode, please use the [Conventional Commits extension](https://marketplace.visualstudio.com/items?itemName=vivaxy.vscode-conventional-commits). - - type: textarea - id: about - attributes: - label: What does this PR do? - description: Please give us a brief description of what this PR does. - placeholder: Makes Calckey so amazing by... - validations: - required: true - - type: checkboxes - id: terms - attributes: - label: Contribution Guidelines - description: By submitting this issue, you agree to follow our [Contribution Guidelines](https://codeberg.org/calckey/calckey/src/branch/develop/CONTRIBUTING.md) - options: - - label: I agree to follow this project's Contribution Guidelines - required: true - - label: I have made sure to test this pull request - required: true - - label: I have made sure to run `pnpm run format` before submitting this pull request - required: true diff --git a/release.json b/release.json index 89f9752ffe..112dcc5769 100644 --- a/release.json +++ b/release.json @@ -1,5 +1,5 @@ { - "version": "13.1.3", - "notes": "This release candidate has the following changes:\n• Better blocking/muting\n• Better user refreshing\n• New help menu with app list (More! > Help)\n• New headerbar style\n• Bug + security fixes and performance improvements", + "version": "1.0.0", + "notes": "Welcome to Firefish!", "screenshots": [] } diff --git a/rome.json b/rome.json deleted file mode 100644 index 9b463ea411..0000000000 --- a/rome.json +++ /dev/null @@ -1,22 +0,0 @@ -{ - "$schema": "./node_modules/rome/configuration_schema.json", - "linter": { - "enabled": true, - "rules": { - "recommended": true - } - }, - "formatter": { - "ignore": [ - "packages/calckey-js/api-extractor.json", - "packages/*/tsconfig.json", - "packages/*/package-lock.json", - "packages/backend/src/server/web/manifest.ts", - "packages/backend/built/", - "*/model.json", - "*.md", - "**/tsconfig.json", - "*/.yml" - ] - } -} diff --git a/scripts/build-greet.js b/scripts/build-greet.js deleted file mode 100644 index 4b119b0c9f..0000000000 --- a/scripts/build-greet.js +++ /dev/null @@ -1,15 +0,0 @@ -const chalk = require("chalk"); - -const themeColor = chalk.hex("#31748f"); -console.log(themeColor(" ___ _ _ ")); -console.log(themeColor(" / __\\__ _| | ___| | _____ _ _ ")); -console.log(themeColor(" / / / _` | |/ __| |/ / _ | | |")); -console.log(themeColor("/ /__| (_| | | (__| < __/ |_| |")); -console.log(themeColor("\\____/\\__,_|_|\\___|_|\\_\\___|\\__, |")); -console.log(themeColor(" (___/ ")); - -console.log(" Currently building Calckey!"); -console.log( - chalk.rgb(255, 136, 0)(" Hang on for a moment, as this may take a while."), -); -console.log(""); diff --git a/scripts/build-greet.sh b/scripts/build-greet.sh new file mode 100755 index 0000000000..c0f43eee9c --- /dev/null +++ b/scripts/build-greet.sh @@ -0,0 +1,11 @@ +#!/usr/bin/env bash + +echo -e "\e[49;38;2;49;116;143m" +echo -e "██████╗ ██╗██████╗ ███████╗███████╗██╗███████╗██╗ ██╗ ○ ▄ ▄ " +echo -e "██╔════╝██║██╔══██╗██╔════╝██╔════╝██║██╔════╝██║ ██║ ⚬ █▄▄ █▄▄" +echo -e "█████╗ ██║██████╔╝█████╗ █████╗ ██║███████╗███████║ ▄▄▄▄▄▄ ▄ " +echo -e "██╔══╝ ██║██╔══██╗██╔══╝ ██╔══╝ ██║╚════██║██╔══██║ █ █ █▄▄" +echo -e "██║ ██║██║ ██║███████╗██║ ██║███████║██║ ██║ █ ● ● █ " +echo -e "╚═╝ ╚═╝╚═╝ ╚═╝╚══════╝╚═╝ ╚═╝╚══════╝╚═╝ ╚═╝ ▀▄▄▄▄▄▄▀\e[0m\n" +echo -e "\e[1;34mCurrently building Firefish!\e[0m" +echo -e "\e[1;38;2;255;136;0mThis may take a while...\e[0m\n" diff --git a/scripts/clean-all.js b/scripts/clean-all.js index 4320aae2d4..e3394f4098 100644 --- a/scripts/clean-all.js +++ b/scripts/clean-all.js @@ -38,11 +38,11 @@ const { join } = require("node:path"); recursive: true, force: true, }); - fs.rmSync(join(__dirname, "/../packages/calckey-js/built"), { + fs.rmSync(join(__dirname, "/../packages/firefish-js/built"), { recursive: true, force: true, }); - fs.rmSync(join(__dirname, "/../packages/calckey-js/node_modules"), { + fs.rmSync(join(__dirname, "/../packages/firefish-js/node_modules"), { recursive: true, force: true, }); diff --git a/scripts/clean.js b/scripts/clean.js index 727ddb66fb..455c436285 100644 --- a/scripts/clean.js +++ b/scripts/clean.js @@ -19,7 +19,7 @@ const { join } = require("node:path"); recursive: true, force: true, }); - fs.rmSync(join(__dirname, "/../packages/calckey-js/built"), { + fs.rmSync(join(__dirname, "/../packages/firefish-js/built"), { recursive: true, force: true, }); diff --git a/title.svg b/title.svg new file mode 100644 index 0000000000..d3d4e2afdc --- /dev/null +++ b/title.svg @@ -0,0 +1,39 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + diff --git a/title_float.svg b/title_float.svg deleted file mode 100644 index e4edd05462..0000000000 --- a/title_float.svg +++ /dev/null @@ -1,64 +0,0 @@ - - - - - - image/svg+xml - - - - - - - - - - - - - - - - - - - - - -