diff --git a/.github/DISCUSSION_TEMPLATE/q-a.yml b/.github/DISCUSSION_TEMPLATE/q-a.yml new file mode 100644 index 00000000..cf02916f --- /dev/null +++ b/.github/DISCUSSION_TEMPLATE/q-a.yml @@ -0,0 +1,62 @@ +title: "[Question and support] " +labels: ["question/support"] +body: + - type: markdown + attributes: + value: | + Describe the problem/question: A clear and concise description of what the problem/issue or question is. + - type: checkboxes + attributes: + label: Please tick this to confirm + options: + - label: Yes, I have read [the FAQ](https://github.com/PrivateBin/PrivateBin/wiki/FAQ) and I found no solution/answer there. + - type: markdown + attributes: + value: | + ## What you did + Tell us how to reproduce the problem. + + 1. + 2. + - type: textarea + id: what_happens + attributes: + label: What happens + - type: textarea + id: what_should_happen + attributes: + label: What should happen + - type: textarea + id: additional_info + attributes: + label: Additional information + description: If you have access to the server log files, copy them here. + - type: input + id: server_address + attributes: + label: Server address + - type: input + id: server_os + attributes: + label: Server OS + - type: input + id: webserver + attributes: + label: Webserver + - type: input + id: browser + attributes: + label: Browser + - type: input + id: privatebin_version + attributes: + label: PrivateBin version + - type: radio + id: reproduce_issue + attributes: + label: I can reproduce this issue on [https://privatebin.net](https://privatebin.net) + options: + - label: Yes + value: Yes + - label: No + value: No diff --git a/.github/ISSUE_TEMPLATE.md b/.github/ISSUE_TEMPLATE/bug_report.md similarity index 64% rename from .github/ISSUE_TEMPLATE.md rename to .github/ISSUE_TEMPLATE/bug_report.md index 55fbca68..c43420c6 100644 --- a/.github/ISSUE_TEMPLATE.md +++ b/.github/ISSUE_TEMPLATE/bug_report.md @@ -1,5 +1,16 @@ - - +--- +name: Bug report +about: Create a report to help us improve (only for software bugs) +title: '' +labels: bug +assignees: '' + +--- + + + +<-- Describe the bug: A clear and concise description of what the bug is. --> ## Steps to reproduce @@ -26,7 +37,7 @@ If you have access to the server log files, also copy them here. **Server OS:** - + **Webserver:** diff --git a/.github/ISSUE_TEMPLATE/config.yml b/.github/ISSUE_TEMPLATE/config.yml new file mode 100644 index 00000000..2df8210a --- /dev/null +++ b/.github/ISSUE_TEMPLATE/config.yml @@ -0,0 +1,13 @@ +blank_issues_enabled: false +contact_links: + - name: Question and support + url: https://github.com/orgs/PrivateBin/discussions/new?category=q-a + about: Your setup is not working and you need help or you have a question regarding + PrivateBin + - name: Problem with the container image + url: https://github.com/PrivateBin/docker-nginx-fpm-alpine/issues/new + about: Please report all problems that apply **only** to the official (Docker) image `docker-nginx-fpm-alpine` here. + - name: Security issue + url: https://github.com/PrivateBin/PrivateBin/security/policy + about: Please report security vulnerabilities and other security issues here. + diff --git a/.github/ISSUE_TEMPLATE/feature_request.md b/.github/ISSUE_TEMPLATE/feature_request.md new file mode 100644 index 00000000..b12823f0 --- /dev/null +++ b/.github/ISSUE_TEMPLATE/feature_request.md @@ -0,0 +1,22 @@ +--- +name: Feature request +about: Suggest an idea for this project +title: '' +labels: enhancement +assignees: '' + +--- + +## The problem + +<-- Is your feature request related to a problem? Please describe. +A clear and concise description of what the problem is. Ex. I'm always frustrated when --> + +## The solution +<-- A clear and concise description of what you want to happen. Pitch your solution! What would happen, if we don't implement this? --> + +## Alternatives + + +## Additional context + diff --git a/.github/workflows/refresh-php8.yml b/.github/workflows/refresh-php8.yml deleted file mode 100644 index 2c00e45e..00000000 --- a/.github/workflows/refresh-php8.yml +++ /dev/null @@ -1,37 +0,0 @@ -name: Refresh PHP 8 branch - -on: - push: - branches: [ master ] - schedule: - - cron: '42 2 * * *' - workflow_dispatch: - -jobs: - build: - runs-on: ubuntu-latest - - steps: - - name: Checkout php8 branch - uses: actions/checkout@v3 - with: - # directly checkout the php8 branch - ref: php8 - # Number of commits to fetch. 0 indicates all history for all branches and tags. - # Default: 1 - fetch-depth: 0 - - - name: Merge master changes into php8 - run: | - git config user.name "github-actions[bot]" - git config user.email "41898282+github-actions[bot]@users.noreply.github.com" - git merge origin/master - - - name: Push new changes - uses: github-actions-x/commit@v2.9 - with: - name: github-actions[bot] - email: 41898282+github-actions[bot]@users.noreply.github.com - github-token: ${{ secrets.GITHUB_TOKEN }} - push-branch: 'php8' - diff --git a/.github/workflows/shiftleft-analysis.yml b/.github/workflows/shiftleft-analysis.yml new file mode 100644 index 00000000..18d412a6 --- /dev/null +++ b/.github/workflows/shiftleft-analysis.yml @@ -0,0 +1,35 @@ +# This workflow integrates Scan with GitHub's code scanning feature +# Scan is a free open-source security tool for modern DevOps teams from ShiftLeft +# Visit https://slscan.io/en/latest/integrations/code-scan for help +name: SL Scan + +on: + push: + branches: [ master ] + pull_request: + # The branches below must be a subset of the branches above + branches: [ master ] + schedule: + - cron: '16 22 * * 4' + +jobs: + Scan-Build: + # Scan runs on ubuntu, mac and windows + runs-on: ubuntu-latest + steps: + - uses: actions/checkout@v2 + # potentially add composer install steo here + - name: Perform Scan + uses: ShiftLeftSecurity/scan-action@master + env: + WORKSPACE: "" + GITHUB_TOKEN: ${{ secrets.GITHUB_TOKEN }} + SCAN_AUTO_BUILD: true + with: + output: reports + # Scan auto-detects the languages. + + - name: Upload report + uses: github/codeql-action/upload-sarif@v1 + with: + sarif_file: reports diff --git a/.github/workflows/tests.yml b/.github/workflows/tests.yml index e13e5364..9b5320b8 100644 --- a/.github/workflows/tests.yml +++ b/.github/workflows/tests.yml @@ -1,5 +1,7 @@ name: Tests -on: [push] +on: + push: + workflow_dispatch: jobs: @@ -12,23 +14,23 @@ jobs: run: composer validate - name: Install dependencies run: composer install --prefer-dist --no-dev - + PHPunit: runs-on: ubuntu-latest strategy: matrix: - php-versions: ['5.6', '7.0', '7.1', '7.2', '7.3', '7.4'] + php-versions: ['7.3', '7.4', '8.0', '8.1', '8.2'] name: PHP ${{ matrix.php-versions }} unit tests on ${{ matrix.operating-system }} env: extensions: gd, sqlite3 extensions-cache-key-name: phpextensions - + steps: - + # let's get started! - name: Checkout uses: actions/checkout@v3 - + # cache PHP extensions - name: Setup cache environment id: extcache @@ -44,77 +46,75 @@ jobs: path: ${{ steps.extcache.outputs.dir }} key: ${{ steps.extcache.outputs.key }} restore-keys: ${{ runner.os }}-${{ env.extensions-cache-key }} - + - name: Setup PHP uses: shivammathur/setup-php@v2 with: php-version: ${{ matrix.php-versions }} extensions: ${{ env.extensions }} - + # Setup GitHub CI PHP problem matchers # https://github.com/shivammathur/setup-php#problem-matchers - name: Setup problem matchers for PHP - run: echo "::add-matcher::${{ runner.tool_cache }}/php.json" - + run: echo "::add-matcher::${{ runner.tool_cache }}/php.json" + - name: Setup problem matchers for PHPUnit run: echo "::add-matcher::${{ runner.tool_cache }}/phpunit.json" - + # composer cache - name: Remove composer lock run: rm composer.lock - + - name: Get composer cache directory id: composer-cache run: echo "dir=$(composer config cache-files-dir)" >> $GITHUB_OUTPUT - # http://man7.org/linux/man-pages/man1/date.1.html # https://github.com/actions/cache#creating-a-cache-key - name: Get Date id: get-date run: echo "date=$(/bin/date -u "+%Y%m%d")" >> $GITHUB_OUTPUT shell: bash - + - name: Cache dependencies uses: actions/cache@v3 with: path: ${{ steps.composer-cache.outputs.dir }} key: ${{ runner.os }}-composer-${{ steps.get-date.outputs.date }}-${{ hashFiles('**/composer.json') }} restore-keys: ${{ runner.os }}-composer-${{ steps.get-date.outputs.date }}- - + # composer installation - name: Setup PHPunit run: composer install -n - name: Install Google Cloud Storage run: composer require google/cloud-storage - + # testing - name: Run unit tests run: ../vendor/bin/phpunit --no-coverage working-directory: tst - + Mocha: runs-on: ubuntu-latest steps: - + - name: Checkout uses: actions/checkout@v3 - + - name: Setup Node uses: actions/setup-node@v3 with: node-version: '16' cache: 'npm' cache-dependency-path: 'js/package-lock.json' - + - name: Setup Mocha run: npm install -g mocha - + - name: Setup Node modules run: npm ci working-directory: js - + - name: Run unit tests run: npm test working-directory: js - diff --git a/.gitignore b/.gitignore index 65ef7189..acf17490 100644 --- a/.gitignore +++ b/.gitignore @@ -31,6 +31,7 @@ js/node_modules/ js/test.log tst/log/ tst/ConfigurationCombinationsTest.php +tst/.phpunit.result.cache .settings .buildpath .project diff --git a/.scrutinizer.yml b/.scrutinizer.yml index cf69fbd8..bd393ccc 100644 --- a/.scrutinizer.yml +++ b/.scrutinizer.yml @@ -15,9 +15,10 @@ coding_style: additive: false concatenation: true build: + image: default-bionic environment: php: - version: '7.2' + version: 7.4 tests: override: - @@ -30,7 +31,4 @@ build: analysis: tests: override: - - - command: phpcs-run - use_website_config: true - php-scrutinizer-run diff --git a/CHANGELOG.md b/CHANGELOG.md index fb0d9de9..1619fe0c 100644 --- a/CHANGELOG.md +++ b/CHANGELOG.md @@ -1,5 +1,13 @@ # PrivateBin version history + * **1.6.0 (not yet released)** + * ADDED: Translations for Japanese & Arabic + * CHANGED: Minimum required PHP version is 7.3, due to upgrading PHPunit (#707) + * **1.5.2 (2023-07-09)** + * ADDED: Allow AWS SDK to use default credential provider chain for S3Storage (#1070) + * CHANGED: Upgrading libraries to: DOMpurify 3.0.4 & jQuery 3.7.0 + * FIXED: Addressed PHP 8.2 deprecation warnings (#1092) + * FIXED: Expose types JSON-LD incl. configured expiration dates (#1045) * **1.5.1 (2022-12-24)** * ADDED: script for administrative tasks: deleting pastes (#274), removing empty directories (#277), purging expired pastes (#276) & statistics (#319) * FIXED: Revert Filesystem purge to limited and randomized lookup (#1030) diff --git a/CREDITS.md b/CREDITS.md index ace41432..59e7892f 100644 --- a/CREDITS.md +++ b/CREDITS.md @@ -31,6 +31,7 @@ * Austin Huang - Oracle database support * Felix J. Ogris - S3 Storage backend, script for data backend migrations, dropped singleton behaviour of data backends * Mounir Idrassi & J. Mozdzen - secure YOURLS integration +* Felipe Nakandakari - enabled AWS SDK to use default credential provider chain in the S3 Storage backend ## Translations * Hexalyse - French @@ -62,3 +63,5 @@ * Stevo984 - Slovak * Christos Karamolegkos - Greek * jaideejung007 - Thai +* Nicolas Le Gall - Japanese +* lazerns - Arabic diff --git a/LICENSE.md b/LICENSE.md index eecdf6cf..8b88a6d4 100644 --- a/LICENSE.md +++ b/LICENSE.md @@ -342,12 +342,11 @@ any theory of liability, whether in contract, strict liability, or tort (including negligence or otherwise) arising in any way out of the use of this software, even if advised of the possibility of such damage. -## MIT License for base64.js version 1.7, Bootstrap, Identicon, random_compat, Composer, kjua and base-x +## MIT License for base64.js version 1.7, Bootstrap, Identicon, Composer, kjua and base-x Copyright © 2012 Dan Kogai Copyright © 2011-2016 Twitter, Inc. Copyright © 2013 Benjamin Laugueux -Copyright © 2015 Paragon Initiative Enterprises Copyright © 2016 Nils Adermann, Jordi Boggiano Copyright © 2016 Lars Jung (https://larsjung.de) Copyright © 2018 base-x contributors diff --git a/Makefile b/Makefile index e59fbc30..a1e29a9c 100644 --- a/Makefile +++ b/Makefile @@ -1,7 +1,7 @@ .PHONY: all coverage coverage-js coverage-php doc doc-js doc-php increment sign test test-js test-php help -CURRENT_VERSION = 1.5.1 -VERSION ?= 1.5.2 +CURRENT_VERSION = 1.5.2 +VERSION ?= 1.5.3 VERSION_FILES = index.php bin/ cfg/ *.md css/ i18n/ img/ js/package.json js/privatebin.js lib/ Makefile tpl/ tst/ REGEX_CURRENT_VERSION := $(shell echo $(CURRENT_VERSION) | sed "s/\./\\\./g") REGEX_VERSION := $(shell echo $(VERSION) | sed "s/\./\\\./g") diff --git a/README.md b/README.md index e687a70c..c14259ce 100644 --- a/README.md +++ b/README.md @@ -1,6 +1,6 @@ # [![PrivateBin](https://cdn.rawgit.com/PrivateBin/assets/master/images/preview/logoSmall.png)](https://privatebin.info/) -*Current version: 1.5.1* +*Current version: 1.5.2* **PrivateBin** is a minimalist, open source online [pastebin](https://en.wikipedia.org/wiki/Pastebin) diff --git a/SECURITY.md b/SECURITY.md index afbb7f6d..df38d610 100644 --- a/SECURITY.md +++ b/SECURITY.md @@ -4,8 +4,8 @@ | Version | Supported | | ------- | ------------------ | -| 1.5.1 | :heavy_check_mark: | -| < 1.5.1 | :x: | +| 1.5.2 | :heavy_check_mark: | +| < 1.5.2 | :x: | ## Reporting a Vulnerability diff --git a/bin/administration b/bin/administration index c55da835..76076dfe 100755 --- a/bin/administration +++ b/bin/administration @@ -9,7 +9,7 @@ * @link https://github.com/PrivateBin/PrivateBin * @copyright 2012 Sébastien SAUVAGE (sebsauvage.net) * @license https://www.opensource.org/licenses/zlib-license.php The zlib/libpng License - * @version 1.5.1 + * @version 1.5.2 */ namespace PrivateBin; @@ -215,7 +215,7 @@ EOT, PHP_EOL; $counters['total'] < 1000 ? 4 : 10 ); - echo "Total:\t\t\t${counters['total']}", PHP_EOL; + echo "Total:\t\t\t{$counters['total']}", PHP_EOL; foreach ($ids as $pasteid) { $paste = $this->_store->read($pasteid); ++$counters['progress']; @@ -264,15 +264,15 @@ EOT, PHP_EOL; } echo PHP_EOL, << 0) { - echo "Unknown format:\t\t${counters['unknown']}", PHP_EOL; + echo "Unknown format:\t\t{$counters['unknown']}", PHP_EOL; } } @@ -315,4 +315,4 @@ EOT, PHP_EOL; } } -new Administration(); \ No newline at end of file +new Administration(); diff --git a/bin/configuration-test-generator b/bin/configuration-test-generator index 432a2295..a5db48a8 100755 --- a/bin/configuration-test-generator +++ b/bin/configuration-test-generator @@ -410,13 +410,14 @@ class ConfigurationTestGenerator * DO NOT EDIT: This file is generated automatically using configGenerator.php */ +use PHPUnit\Framework\TestCase; use PrivateBin\Controller; use PrivateBin\Data\Filesystem; use PrivateBin\Persistence\ServerSalt; use PrivateBin\Persistence\TrafficLimiter; use PrivateBin\Request; -class ConfigurationCombinationsTest extends PHPUnit_Framework_TestCase +class ConfigurationCombinationsTest extends TestCase { private $_conf; @@ -424,7 +425,7 @@ class ConfigurationCombinationsTest extends PHPUnit_Framework_TestCase private $_path; - public function setUp() + public function setUp(): void { /* Setup Routine */ Helper::confBackup(); @@ -435,7 +436,7 @@ class ConfigurationCombinationsTest extends PHPUnit_Framework_TestCase $this->reset(); } - public function tearDown() + public function tearDown(): void { /* Tear Down Routine */ unlink(CONF); @@ -564,7 +565,7 @@ EOT; case 'Delete': $code .= <<<'EOT' - $this->assertRegExp( + $this->assertMatchesRegularExpression( '#]*id="status"[^>]*>.*Paste was properly deleted[^<]*#s', $content, 'outputs deleted status correctly' diff --git a/cfg/conf.sample.php b/cfg/conf.sample.php index 7dca6d48..09bb9e19 100644 --- a/cfg/conf.sample.php +++ b/cfg/conf.sample.php @@ -230,6 +230,19 @@ dir = PATH "data" ;accesskey = "access key id" ;secretkey = "secret access key" +;[model] +; example of S3 configuration for AWS using its SDK default credential provider chain +; if relying on environment variables, the AWS SDK will look for the following: +; - AWS_ACCESS_KEY_ID +; - AWS_SECRET_ACCESS_KEY +; - AWS_SESSION_TOKEN (if needed) +; for more details, see https://docs.aws.amazon.com/sdk-for-php/v3/developer-guide/guide_credentials.html#default-credential-chain +;class = S3Storage +;[model_options] +;region = "eu-central-1" +;version = "latest" +;bucket = "my-bucket" + [yourls] ; When using YOURLS as a "urlshortener" config item: ; - By default, "urlshortener" will point to the YOURLS API URL, with or without diff --git a/composer.json b/composer.json index 21696b9e..51409917 100644 --- a/composer.json +++ b/composer.json @@ -24,18 +24,17 @@ "docs" : "https://privatebin.info/codedoc/" }, "require" : { - "php" : "^5.6.0 || ^7.0 || ^8.0", - "paragonie/random_compat" : "2.0.21", + "php" : "^7.3 || ^8.0", "yzalis/identicon" : "2.0.0", "mlocati/ip-lib" : "1.18.0", - "jdenticon/jdenticon": "^1.0" + "jdenticon/jdenticon": "1.0.2" }, "suggest" : { - "google/cloud-storage" : "1.30.1", - "aws/aws-sdk-php" : "3.254.0" + "google/cloud-storage" : "1.32.0", + "aws/aws-sdk-php" : "3.275.1" }, "require-dev" : { - "phpunit/phpunit" : "^4.6 || ^5.0" + "phpunit/phpunit" : "^9" }, "autoload" : { "psr-4" : { @@ -43,6 +42,12 @@ } }, "config" : { - "autoloader-suffix" : "DontChange" + "autoloader-suffix" : "DontChange", + "optimize-autoloader": true, + "preferred-install": "dist", + "sort-packages": true, + "platform": { + "php": "7.3" + } } } diff --git a/composer.lock b/composer.lock index 3f4e65f0..9ef854e6 100644 --- a/composer.lock +++ b/composer.lock @@ -4,7 +4,7 @@ "Read more about it at https://getcomposer.org/doc/01-basic-usage.md#installing-dependencies", "This file is @generated automatically" ], - "content-hash": "17bceced29627163f7aa330a0697f68b", + "content-hash": "96f9b3968855bf9f45813d12568f1cac", "packages": [ { "name": "jdenticon/jdenticon", @@ -48,6 +48,11 @@ "identicon", "jdenticon" ], + "support": { + "docs": "https://jdenticon.com/php-api.html", + "issues": "https://github.com/dmester/jdenticon-php/issues", + "source": "https://github.com/dmester/jdenticon-php" + }, "time": "2022-10-30T17:15:02+00:00" }, { @@ -105,56 +110,21 @@ "range", "subnet" ], - "time": "2022-01-13T18:05:33+00:00" - }, - { - "name": "paragonie/random_compat", - "version": "v2.0.21", - "source": { - "type": "git", - "url": "https://github.com/paragonie/random_compat.git", - "reference": "96c132c7f2f7bc3230723b66e89f8f150b29d5ae" + "support": { + "issues": "https://github.com/mlocati/ip-lib/issues", + "source": "https://github.com/mlocati/ip-lib/tree/1.18.0" }, - "dist": { - "type": "zip", - "url": "https://api.github.com/repos/paragonie/random_compat/zipball/96c132c7f2f7bc3230723b66e89f8f150b29d5ae", - "reference": "96c132c7f2f7bc3230723b66e89f8f150b29d5ae", - "shasum": "" - }, - "require": { - "php": ">=5.2.0" - }, - "require-dev": { - "phpunit/phpunit": "*" - }, - "suggest": { - "ext-libsodium": "Provides a modern crypto API that can be used to generate random bytes." - }, - "type": "library", - "autoload": { - "files": [ - "lib/random.php" - ] - }, - "notification-url": "https://packagist.org/downloads/", - "license": [ - "MIT" - ], - "authors": [ + "funding": [ { - "name": "Paragon Initiative Enterprises", - "email": "security@paragonie.com", - "homepage": "https://paragonie.com" + "url": "https://github.com/sponsors/mlocati", + "type": "github" + }, + { + "url": "https://paypal.me/mlocati", + "type": "other" } ], - "description": "PHP 5.x polyfill for random_bytes() and random_int() from PHP 7", - "keywords": [ - "csprng", - "polyfill", - "pseudorandom", - "random" - ], - "time": "2022-02-16T17:07:03+00:00" + "time": "2022-01-13T18:05:33+00:00" }, { "name": "yzalis/identicon", @@ -206,6 +176,10 @@ "identicon", "image" ], + "support": { + "issues": "https://github.com/yzalis/Identicon/issues", + "source": "https://github.com/yzalis/Identicon/tree/master" + }, "abandoned": true, "time": "2019-10-14T09:30:57+00:00" } @@ -213,30 +187,30 @@ "packages-dev": [ { "name": "doctrine/instantiator", - "version": "1.4.1", + "version": "1.5.0", "source": { "type": "git", "url": "https://github.com/doctrine/instantiator.git", - "reference": "10dcfce151b967d20fde1b34ae6640712c3891bc" + "reference": "0a0fa9780f5d4e507415a065172d26a98d02047b" }, "dist": { "type": "zip", - "url": "https://api.github.com/repos/doctrine/instantiator/zipball/10dcfce151b967d20fde1b34ae6640712c3891bc", - "reference": "10dcfce151b967d20fde1b34ae6640712c3891bc", + "url": "https://api.github.com/repos/doctrine/instantiator/zipball/0a0fa9780f5d4e507415a065172d26a98d02047b", + "reference": "0a0fa9780f5d4e507415a065172d26a98d02047b", "shasum": "" }, "require": { "php": "^7.1 || ^8.0" }, "require-dev": { - "doctrine/coding-standard": "^9", + "doctrine/coding-standard": "^9 || ^11", "ext-pdo": "*", "ext-phar": "*", "phpbench/phpbench": "^0.16 || ^1", "phpstan/phpstan": "^1.4", "phpstan/phpstan-phpunit": "^1", "phpunit/phpunit": "^7.5 || ^8.5 || ^9.5", - "vimeo/psalm": "^4.22" + "vimeo/psalm": "^4.30 || ^5.4" }, "type": "library", "autoload": { @@ -261,20 +235,38 @@ "constructor", "instantiate" ], - "time": "2022-03-03T08:28:38+00:00" + "support": { + "issues": "https://github.com/doctrine/instantiator/issues", + "source": "https://github.com/doctrine/instantiator/tree/1.5.0" + }, + "funding": [ + { + "url": "https://www.doctrine-project.org/sponsorship.html", + "type": "custom" + }, + { + "url": "https://www.patreon.com/phpdoctrine", + "type": "patreon" + }, + { + "url": "https://tidelift.com/funding/github/packagist/doctrine%2Finstantiator", + "type": "tidelift" + } + ], + "time": "2022-12-30T00:15:36+00:00" }, { "name": "myclabs/deep-copy", - "version": "1.11.0", + "version": "1.11.1", "source": { "type": "git", "url": "https://github.com/myclabs/DeepCopy.git", - "reference": "14daed4296fae74d9e3201d2c4925d1acb7aa614" + "reference": "7284c22080590fb39f2ffa3e9057f10a4ddd0e0c" }, "dist": { "type": "zip", - "url": "https://api.github.com/repos/myclabs/DeepCopy/zipball/14daed4296fae74d9e3201d2c4925d1acb7aa614", - "reference": "14daed4296fae74d9e3201d2c4925d1acb7aa614", + "url": "https://api.github.com/repos/myclabs/DeepCopy/zipball/7284c22080590fb39f2ffa3e9057f10a4ddd0e0c", + "reference": "7284c22080590fb39f2ffa3e9057f10a4ddd0e0c", "shasum": "" }, "require": { @@ -310,255 +302,225 @@ "object", "object graph" ], - "time": "2022-03-03T13:19:32+00:00" + "support": { + "issues": "https://github.com/myclabs/DeepCopy/issues", + "source": "https://github.com/myclabs/DeepCopy/tree/1.11.1" + }, + "funding": [ + { + "url": "https://tidelift.com/funding/github/packagist/myclabs/deep-copy", + "type": "tidelift" + } + ], + "time": "2023-03-08T13:26:56+00:00" }, { - "name": "phpdocumentor/reflection-common", - "version": "2.2.0", + "name": "nikic/php-parser", + "version": "v4.16.0", "source": { "type": "git", - "url": "https://github.com/phpDocumentor/ReflectionCommon.git", - "reference": "1d01c49d4ed62f25aa84a747ad35d5a16924662b" + "url": "https://github.com/nikic/PHP-Parser.git", + "reference": "19526a33fb561ef417e822e85f08a00db4059c17" }, "dist": { "type": "zip", - "url": "https://api.github.com/repos/phpDocumentor/ReflectionCommon/zipball/1d01c49d4ed62f25aa84a747ad35d5a16924662b", - "reference": "1d01c49d4ed62f25aa84a747ad35d5a16924662b", + "url": "https://api.github.com/repos/nikic/PHP-Parser/zipball/19526a33fb561ef417e822e85f08a00db4059c17", + "reference": "19526a33fb561ef417e822e85f08a00db4059c17", + "shasum": "" + }, + "require": { + "ext-tokenizer": "*", + "php": ">=7.0" + }, + "require-dev": { + "ircmaxell/php-yacc": "^0.0.7", + "phpunit/phpunit": "^6.5 || ^7.0 || ^8.0 || ^9.0" + }, + "bin": [ + "bin/php-parse" + ], + "type": "library", + "extra": { + "branch-alias": { + "dev-master": "4.9-dev" + } + }, + "autoload": { + "psr-4": { + "PhpParser\\": "lib/PhpParser" + } + }, + "notification-url": "https://packagist.org/downloads/", + "license": [ + "BSD-3-Clause" + ], + "authors": [ + { + "name": "Nikita Popov" + } + ], + "description": "A PHP parser written in PHP", + "keywords": [ + "parser", + "php" + ], + "support": { + "issues": "https://github.com/nikic/PHP-Parser/issues", + "source": "https://github.com/nikic/PHP-Parser/tree/v4.16.0" + }, + "time": "2023-06-25T14:52:30+00:00" + }, + { + "name": "phar-io/manifest", + "version": "2.0.3", + "source": { + "type": "git", + "url": "https://github.com/phar-io/manifest.git", + "reference": "97803eca37d319dfa7826cc2437fc020857acb53" + }, + "dist": { + "type": "zip", + "url": "https://api.github.com/repos/phar-io/manifest/zipball/97803eca37d319dfa7826cc2437fc020857acb53", + "reference": "97803eca37d319dfa7826cc2437fc020857acb53", + "shasum": "" + }, + "require": { + "ext-dom": "*", + "ext-phar": "*", + "ext-xmlwriter": "*", + "phar-io/version": "^3.0.1", + "php": "^7.2 || ^8.0" + }, + "type": "library", + "extra": { + "branch-alias": { + "dev-master": "2.0.x-dev" + } + }, + "autoload": { + "classmap": [ + "src/" + ] + }, + "notification-url": "https://packagist.org/downloads/", + "license": [ + "BSD-3-Clause" + ], + "authors": [ + { + "name": "Arne Blankerts", + "email": "arne@blankerts.de", + "role": "Developer" + }, + { + "name": "Sebastian Heuer", + "email": "sebastian@phpeople.de", + "role": "Developer" + }, + { + "name": "Sebastian Bergmann", + "email": "sebastian@phpunit.de", + "role": "Developer" + } + ], + "description": "Component for reading phar.io manifest information from a PHP Archive (PHAR)", + "support": { + "issues": "https://github.com/phar-io/manifest/issues", + "source": "https://github.com/phar-io/manifest/tree/2.0.3" + }, + "time": "2021-07-20T11:28:43+00:00" + }, + { + "name": "phar-io/version", + "version": "3.2.1", + "source": { + "type": "git", + "url": "https://github.com/phar-io/version.git", + "reference": "4f7fd7836c6f332bb2933569e566a0d6c4cbed74" + }, + "dist": { + "type": "zip", + "url": "https://api.github.com/repos/phar-io/version/zipball/4f7fd7836c6f332bb2933569e566a0d6c4cbed74", + "reference": "4f7fd7836c6f332bb2933569e566a0d6c4cbed74", "shasum": "" }, "require": { "php": "^7.2 || ^8.0" }, "type": "library", - "extra": { - "branch-alias": { - "dev-2.x": "2.x-dev" - } - }, "autoload": { - "psr-4": { - "phpDocumentor\\Reflection\\": "src/" - } + "classmap": [ + "src/" + ] }, "notification-url": "https://packagist.org/downloads/", "license": [ - "MIT" + "BSD-3-Clause" ], "authors": [ { - "name": "Jaap van Otterdijk", - "email": "opensource@ijaap.nl" - } - ], - "description": "Common reflection classes used by phpdocumentor to reflect the code structure", - "homepage": "http://www.phpdoc.org", - "keywords": [ - "FQSEN", - "phpDocumentor", - "phpdoc", - "reflection", - "static analysis" - ], - "time": "2020-06-27T09:03:43+00:00" - }, - { - "name": "phpdocumentor/reflection-docblock", - "version": "5.3.0", - "source": { - "type": "git", - "url": "https://github.com/phpDocumentor/ReflectionDocBlock.git", - "reference": "622548b623e81ca6d78b721c5e029f4ce664f170" - }, - "dist": { - "type": "zip", - "url": "https://api.github.com/repos/phpDocumentor/ReflectionDocBlock/zipball/622548b623e81ca6d78b721c5e029f4ce664f170", - "reference": "622548b623e81ca6d78b721c5e029f4ce664f170", - "shasum": "" - }, - "require": { - "ext-filter": "*", - "php": "^7.2 || ^8.0", - "phpdocumentor/reflection-common": "^2.2", - "phpdocumentor/type-resolver": "^1.3", - "webmozart/assert": "^1.9.1" - }, - "require-dev": { - "mockery/mockery": "~1.3.2", - "psalm/phar": "^4.8" - }, - "type": "library", - "extra": { - "branch-alias": { - "dev-master": "5.x-dev" - } - }, - "autoload": { - "psr-4": { - "phpDocumentor\\Reflection\\": "src" - } - }, - "notification-url": "https://packagist.org/downloads/", - "license": [ - "MIT" - ], - "authors": [ - { - "name": "Mike van Riel", - "email": "me@mikevanriel.com" + "name": "Arne Blankerts", + "email": "arne@blankerts.de", + "role": "Developer" }, { - "name": "Jaap van Otterdijk", - "email": "account@ijaap.nl" - } - ], - "description": "With this component, a library can provide support for annotations via DocBlocks or otherwise retrieve information that is embedded in a DocBlock.", - "time": "2021-10-19T17:43:47+00:00" - }, - { - "name": "phpdocumentor/type-resolver", - "version": "1.6.1", - "source": { - "type": "git", - "url": "https://github.com/phpDocumentor/TypeResolver.git", - "reference": "77a32518733312af16a44300404e945338981de3" - }, - "dist": { - "type": "zip", - "url": "https://api.github.com/repos/phpDocumentor/TypeResolver/zipball/77a32518733312af16a44300404e945338981de3", - "reference": "77a32518733312af16a44300404e945338981de3", - "shasum": "" - }, - "require": { - "php": "^7.2 || ^8.0", - "phpdocumentor/reflection-common": "^2.0" - }, - "require-dev": { - "ext-tokenizer": "*", - "psalm/phar": "^4.8" - }, - "type": "library", - "extra": { - "branch-alias": { - "dev-1.x": "1.x-dev" - } - }, - "autoload": { - "psr-4": { - "phpDocumentor\\Reflection\\": "src" - } - }, - "notification-url": "https://packagist.org/downloads/", - "license": [ - "MIT" - ], - "authors": [ - { - "name": "Mike van Riel", - "email": "me@mikevanriel.com" - } - ], - "description": "A PSR-5 based resolver of Class names, Types and Structural Element Names", - "time": "2022-03-15T21:29:03+00:00" - }, - { - "name": "phpspec/prophecy", - "version": "v1.10.3", - "source": { - "type": "git", - "url": "https://github.com/phpspec/prophecy.git", - "reference": "451c3cd1418cf640de218914901e51b064abb093" - }, - "dist": { - "type": "zip", - "url": "https://api.github.com/repos/phpspec/prophecy/zipball/451c3cd1418cf640de218914901e51b064abb093", - "reference": "451c3cd1418cf640de218914901e51b064abb093", - "shasum": "" - }, - "require": { - "doctrine/instantiator": "^1.0.2", - "php": "^5.3|^7.0", - "phpdocumentor/reflection-docblock": "^2.0|^3.0.2|^4.0|^5.0", - "sebastian/comparator": "^1.2.3|^2.0|^3.0|^4.0", - "sebastian/recursion-context": "^1.0|^2.0|^3.0|^4.0" - }, - "require-dev": { - "phpspec/phpspec": "^2.5 || ^3.2", - "phpunit/phpunit": "^4.8.35 || ^5.7 || ^6.5 || ^7.1" - }, - "type": "library", - "extra": { - "branch-alias": { - "dev-master": "1.10.x-dev" - } - }, - "autoload": { - "psr-4": { - "Prophecy\\": "src/Prophecy" - } - }, - "notification-url": "https://packagist.org/downloads/", - "license": [ - "MIT" - ], - "authors": [ - { - "name": "Konstantin Kudryashov", - "email": "ever.zet@gmail.com", - "homepage": "http://everzet.com" + "name": "Sebastian Heuer", + "email": "sebastian@phpeople.de", + "role": "Developer" }, { - "name": "Marcello Duarte", - "email": "marcello.duarte@gmail.com" + "name": "Sebastian Bergmann", + "email": "sebastian@phpunit.de", + "role": "Developer" } ], - "description": "Highly opinionated mocking framework for PHP 5.3+", - "homepage": "https://github.com/phpspec/prophecy", - "keywords": [ - "Double", - "Dummy", - "fake", - "mock", - "spy", - "stub" - ], - "time": "2020-03-05T15:02:03+00:00" + "description": "Library for handling version information and constraints", + "support": { + "issues": "https://github.com/phar-io/version/issues", + "source": "https://github.com/phar-io/version/tree/3.2.1" + }, + "time": "2022-02-21T01:04:05+00:00" }, { "name": "phpunit/php-code-coverage", - "version": "4.0.6", + "version": "9.2.26", "source": { "type": "git", "url": "https://github.com/sebastianbergmann/php-code-coverage.git", - "reference": "ca060f645beeddebedb1885c97bf163e93264c35" + "reference": "443bc6912c9bd5b409254a40f4b0f4ced7c80ea1" }, "dist": { "type": "zip", - "url": "https://api.github.com/repos/sebastianbergmann/php-code-coverage/zipball/ca060f645beeddebedb1885c97bf163e93264c35", - "reference": "ca060f645beeddebedb1885c97bf163e93264c35", + "url": "https://api.github.com/repos/sebastianbergmann/php-code-coverage/zipball/443bc6912c9bd5b409254a40f4b0f4ced7c80ea1", + "reference": "443bc6912c9bd5b409254a40f4b0f4ced7c80ea1", "shasum": "" }, "require": { - "php": "^5.6 || ^7.0", - "phpunit/php-file-iterator": "~1.3", - "phpunit/php-text-template": "~1.2", - "phpunit/php-token-stream": "^1.4.2 || ^2.0", - "sebastian/code-unit-reverse-lookup": "~1.0", - "sebastian/environment": "^1.3.2 || ^2.0", - "sebastian/version": "~1.0|~2.0" + "ext-dom": "*", + "ext-libxml": "*", + "ext-xmlwriter": "*", + "nikic/php-parser": "^4.15", + "php": ">=7.3", + "phpunit/php-file-iterator": "^3.0.3", + "phpunit/php-text-template": "^2.0.2", + "sebastian/code-unit-reverse-lookup": "^2.0.2", + "sebastian/complexity": "^2.0", + "sebastian/environment": "^5.1.2", + "sebastian/lines-of-code": "^1.0.3", + "sebastian/version": "^3.0.1", + "theseer/tokenizer": "^1.2.0" }, "require-dev": { - "ext-xdebug": ">=2.1.4", - "phpunit/phpunit": "^5.4" + "phpunit/phpunit": "^9.3" }, "suggest": { - "ext-dom": "*", - "ext-xdebug": ">=2.4.0", - "ext-xmlwriter": "*" + "ext-pcov": "PHP extension that provides line coverage", + "ext-xdebug": "PHP extension that provides line coverage as well as branch and path coverage" }, "type": "library", "extra": { "branch-alias": { - "dev-master": "4.0.x-dev" + "dev-master": "9.2-dev" } }, "autoload": { @@ -573,7 +535,7 @@ "authors": [ { "name": "Sebastian Bergmann", - "email": "sb@sebastian-bergmann.de", + "email": "sebastian@phpunit.de", "role": "lead" } ], @@ -584,29 +546,42 @@ "testing", "xunit" ], - "time": "2017-02-23T07:38:02+00:00" + "support": { + "issues": "https://github.com/sebastianbergmann/php-code-coverage/issues", + "source": "https://github.com/sebastianbergmann/php-code-coverage/tree/9.2.26" + }, + "funding": [ + { + "url": "https://github.com/sebastianbergmann", + "type": "github" + } + ], + "time": "2023-03-06T12:58:08+00:00" }, { "name": "phpunit/php-file-iterator", - "version": "1.4.5", + "version": "3.0.6", "source": { "type": "git", "url": "https://github.com/sebastianbergmann/php-file-iterator.git", - "reference": "730b01bc3e867237eaac355e06a36b85dd93a8b4" + "reference": "cf1c2e7c203ac650e352f4cc675a7021e7d1b3cf" }, "dist": { "type": "zip", - "url": "https://api.github.com/repos/sebastianbergmann/php-file-iterator/zipball/730b01bc3e867237eaac355e06a36b85dd93a8b4", - "reference": "730b01bc3e867237eaac355e06a36b85dd93a8b4", + "url": "https://api.github.com/repos/sebastianbergmann/php-file-iterator/zipball/cf1c2e7c203ac650e352f4cc675a7021e7d1b3cf", + "reference": "cf1c2e7c203ac650e352f4cc675a7021e7d1b3cf", "shasum": "" }, "require": { - "php": ">=5.3.3" + "php": ">=7.3" + }, + "require-dev": { + "phpunit/phpunit": "^9.3" }, "type": "library", "extra": { "branch-alias": { - "dev-master": "1.4.x-dev" + "dev-master": "3.0-dev" } }, "autoload": { @@ -621,7 +596,7 @@ "authors": [ { "name": "Sebastian Bergmann", - "email": "sb@sebastian-bergmann.de", + "email": "sebastian@phpunit.de", "role": "lead" } ], @@ -631,26 +606,107 @@ "filesystem", "iterator" ], - "time": "2017-11-27T13:52:08+00:00" + "support": { + "issues": "https://github.com/sebastianbergmann/php-file-iterator/issues", + "source": "https://github.com/sebastianbergmann/php-file-iterator/tree/3.0.6" + }, + "funding": [ + { + "url": "https://github.com/sebastianbergmann", + "type": "github" + } + ], + "time": "2021-12-02T12:48:52+00:00" }, { - "name": "phpunit/php-text-template", - "version": "1.2.1", + "name": "phpunit/php-invoker", + "version": "3.1.1", "source": { "type": "git", - "url": "https://github.com/sebastianbergmann/php-text-template.git", - "reference": "31f8b717e51d9a2afca6c9f046f5d69fc27c8686" + "url": "https://github.com/sebastianbergmann/php-invoker.git", + "reference": "5a10147d0aaf65b58940a0b72f71c9ac0423cc67" }, "dist": { "type": "zip", - "url": "https://api.github.com/repos/sebastianbergmann/php-text-template/zipball/31f8b717e51d9a2afca6c9f046f5d69fc27c8686", - "reference": "31f8b717e51d9a2afca6c9f046f5d69fc27c8686", + "url": "https://api.github.com/repos/sebastianbergmann/php-invoker/zipball/5a10147d0aaf65b58940a0b72f71c9ac0423cc67", + "reference": "5a10147d0aaf65b58940a0b72f71c9ac0423cc67", "shasum": "" }, "require": { - "php": ">=5.3.3" + "php": ">=7.3" + }, + "require-dev": { + "ext-pcntl": "*", + "phpunit/phpunit": "^9.3" + }, + "suggest": { + "ext-pcntl": "*" }, "type": "library", + "extra": { + "branch-alias": { + "dev-master": "3.1-dev" + } + }, + "autoload": { + "classmap": [ + "src/" + ] + }, + "notification-url": "https://packagist.org/downloads/", + "license": [ + "BSD-3-Clause" + ], + "authors": [ + { + "name": "Sebastian Bergmann", + "email": "sebastian@phpunit.de", + "role": "lead" + } + ], + "description": "Invoke callables with a timeout", + "homepage": "https://github.com/sebastianbergmann/php-invoker/", + "keywords": [ + "process" + ], + "support": { + "issues": "https://github.com/sebastianbergmann/php-invoker/issues", + "source": "https://github.com/sebastianbergmann/php-invoker/tree/3.1.1" + }, + "funding": [ + { + "url": "https://github.com/sebastianbergmann", + "type": "github" + } + ], + "time": "2020-09-28T05:58:55+00:00" + }, + { + "name": "phpunit/php-text-template", + "version": "2.0.4", + "source": { + "type": "git", + "url": "https://github.com/sebastianbergmann/php-text-template.git", + "reference": "5da5f67fc95621df9ff4c4e5a84d6a8a2acf7c28" + }, + "dist": { + "type": "zip", + "url": "https://api.github.com/repos/sebastianbergmann/php-text-template/zipball/5da5f67fc95621df9ff4c4e5a84d6a8a2acf7c28", + "reference": "5da5f67fc95621df9ff4c4e5a84d6a8a2acf7c28", + "shasum": "" + }, + "require": { + "php": ">=7.3" + }, + "require-dev": { + "phpunit/phpunit": "^9.3" + }, + "type": "library", + "extra": { + "branch-alias": { + "dev-master": "2.0-dev" + } + }, "autoload": { "classmap": [ "src/" @@ -672,32 +728,42 @@ "keywords": [ "template" ], - "time": "2015-06-21T13:50:34+00:00" + "support": { + "issues": "https://github.com/sebastianbergmann/php-text-template/issues", + "source": "https://github.com/sebastianbergmann/php-text-template/tree/2.0.4" + }, + "funding": [ + { + "url": "https://github.com/sebastianbergmann", + "type": "github" + } + ], + "time": "2020-10-26T05:33:50+00:00" }, { "name": "phpunit/php-timer", - "version": "1.0.9", + "version": "5.0.3", "source": { "type": "git", "url": "https://github.com/sebastianbergmann/php-timer.git", - "reference": "3dcf38ca72b158baf0bc245e9184d3fdffa9c46f" + "reference": "5a63ce20ed1b5bf577850e2c4e87f4aa902afbd2" }, "dist": { "type": "zip", - "url": "https://api.github.com/repos/sebastianbergmann/php-timer/zipball/3dcf38ca72b158baf0bc245e9184d3fdffa9c46f", - "reference": "3dcf38ca72b158baf0bc245e9184d3fdffa9c46f", + "url": "https://api.github.com/repos/sebastianbergmann/php-timer/zipball/5a63ce20ed1b5bf577850e2c4e87f4aa902afbd2", + "reference": "5a63ce20ed1b5bf577850e2c4e87f4aa902afbd2", "shasum": "" }, "require": { - "php": "^5.3.3 || ^7.0" + "php": ">=7.3" }, "require-dev": { - "phpunit/phpunit": "^4.8.35 || ^5.7 || ^6.0" + "phpunit/phpunit": "^9.3" }, "type": "library", "extra": { "branch-alias": { - "dev-master": "1.0-dev" + "dev-master": "5.0-dev" } }, "autoload": { @@ -712,7 +778,7 @@ "authors": [ { "name": "Sebastian Bergmann", - "email": "sb@sebastian-bergmann.de", + "email": "sebastian@phpunit.de", "role": "lead" } ], @@ -721,105 +787,64 @@ "keywords": [ "timer" ], - "time": "2017-02-26T11:10:40+00:00" - }, - { - "name": "phpunit/php-token-stream", - "version": "2.0.2", - "source": { - "type": "git", - "url": "https://github.com/sebastianbergmann/php-token-stream.git", - "reference": "791198a2c6254db10131eecfe8c06670700904db" + "support": { + "issues": "https://github.com/sebastianbergmann/php-timer/issues", + "source": "https://github.com/sebastianbergmann/php-timer/tree/5.0.3" }, - "dist": { - "type": "zip", - "url": "https://api.github.com/repos/sebastianbergmann/php-token-stream/zipball/791198a2c6254db10131eecfe8c06670700904db", - "reference": "791198a2c6254db10131eecfe8c06670700904db", - "shasum": "" - }, - "require": { - "ext-tokenizer": "*", - "php": "^7.0" - }, - "require-dev": { - "phpunit/phpunit": "^6.2.4" - }, - "type": "library", - "extra": { - "branch-alias": { - "dev-master": "2.0-dev" - } - }, - "autoload": { - "classmap": [ - "src/" - ] - }, - "notification-url": "https://packagist.org/downloads/", - "license": [ - "BSD-3-Clause" - ], - "authors": [ + "funding": [ { - "name": "Sebastian Bergmann", - "email": "sebastian@phpunit.de" + "url": "https://github.com/sebastianbergmann", + "type": "github" } ], - "description": "Wrapper around PHP's tokenizer extension.", - "homepage": "https://github.com/sebastianbergmann/php-token-stream/", - "keywords": [ - "tokenizer" - ], - "abandoned": true, - "time": "2017-11-27T05:48:46+00:00" + "time": "2020-10-26T13:16:10+00:00" }, { "name": "phpunit/phpunit", - "version": "5.7.27", + "version": "9.6.10", "source": { "type": "git", "url": "https://github.com/sebastianbergmann/phpunit.git", - "reference": "b7803aeca3ccb99ad0a506fa80b64cd6a56bbc0c" + "reference": "a6d351645c3fe5a30f5e86be6577d946af65a328" }, "dist": { "type": "zip", - "url": "https://api.github.com/repos/sebastianbergmann/phpunit/zipball/b7803aeca3ccb99ad0a506fa80b64cd6a56bbc0c", - "reference": "b7803aeca3ccb99ad0a506fa80b64cd6a56bbc0c", + "url": "https://api.github.com/repos/sebastianbergmann/phpunit/zipball/a6d351645c3fe5a30f5e86be6577d946af65a328", + "reference": "a6d351645c3fe5a30f5e86be6577d946af65a328", "shasum": "" }, "require": { + "doctrine/instantiator": "^1.3.1 || ^2", "ext-dom": "*", "ext-json": "*", "ext-libxml": "*", "ext-mbstring": "*", "ext-xml": "*", - "myclabs/deep-copy": "~1.3", - "php": "^5.6 || ^7.0", - "phpspec/prophecy": "^1.6.2", - "phpunit/php-code-coverage": "^4.0.4", - "phpunit/php-file-iterator": "~1.4", - "phpunit/php-text-template": "~1.2", - "phpunit/php-timer": "^1.0.6", - "phpunit/phpunit-mock-objects": "^3.2", - "sebastian/comparator": "^1.2.4", - "sebastian/diff": "^1.4.3", - "sebastian/environment": "^1.3.4 || ^2.0", - "sebastian/exporter": "~2.0", - "sebastian/global-state": "^1.1", - "sebastian/object-enumerator": "~2.0", - "sebastian/resource-operations": "~1.0", - "sebastian/version": "^1.0.6|^2.0.1", - "symfony/yaml": "~2.1|~3.0|~4.0" - }, - "conflict": { - "phpdocumentor/reflection-docblock": "3.0.2" - }, - "require-dev": { - "ext-pdo": "*" + "ext-xmlwriter": "*", + "myclabs/deep-copy": "^1.10.1", + "phar-io/manifest": "^2.0.3", + "phar-io/version": "^3.0.2", + "php": ">=7.3", + "phpunit/php-code-coverage": "^9.2.13", + "phpunit/php-file-iterator": "^3.0.5", + "phpunit/php-invoker": "^3.1.1", + "phpunit/php-text-template": "^2.0.3", + "phpunit/php-timer": "^5.0.2", + "sebastian/cli-parser": "^1.0.1", + "sebastian/code-unit": "^1.0.6", + "sebastian/comparator": "^4.0.8", + "sebastian/diff": "^4.0.3", + "sebastian/environment": "^5.1.3", + "sebastian/exporter": "^4.0.5", + "sebastian/global-state": "^5.0.1", + "sebastian/object-enumerator": "^4.0.3", + "sebastian/resource-operations": "^3.0.3", + "sebastian/type": "^3.2", + "sebastian/version": "^3.0.2" }, "suggest": { - "ext-xdebug": "*", - "phpunit/php-invoker": "~1.1" + "ext-soap": "To be able to generate mocks based on WSDL files", + "ext-xdebug": "PHP extension that provides line coverage as well as branch and path coverage" }, "bin": [ "phpunit" @@ -827,10 +852,13 @@ "type": "library", "extra": { "branch-alias": { - "dev-master": "5.7.x-dev" + "dev-master": "9.6-dev" } }, "autoload": { + "files": [ + "src/Framework/Assert/Functions.php" + ], "classmap": [ "src/" ] @@ -853,41 +881,51 @@ "testing", "xunit" ], - "time": "2018-02-01T05:50:59+00:00" + "support": { + "issues": "https://github.com/sebastianbergmann/phpunit/issues", + "security": "https://github.com/sebastianbergmann/phpunit/security/policy", + "source": "https://github.com/sebastianbergmann/phpunit/tree/9.6.10" + }, + "funding": [ + { + "url": "https://phpunit.de/sponsors.html", + "type": "custom" + }, + { + "url": "https://github.com/sebastianbergmann", + "type": "github" + }, + { + "url": "https://tidelift.com/funding/github/packagist/phpunit/phpunit", + "type": "tidelift" + } + ], + "time": "2023-07-10T04:04:23+00:00" }, { - "name": "phpunit/phpunit-mock-objects", - "version": "3.4.4", + "name": "sebastian/cli-parser", + "version": "1.0.1", "source": { "type": "git", - "url": "https://github.com/sebastianbergmann/phpunit-mock-objects.git", - "reference": "a23b761686d50a560cc56233b9ecf49597cc9118" + "url": "https://github.com/sebastianbergmann/cli-parser.git", + "reference": "442e7c7e687e42adc03470c7b668bc4b2402c0b2" }, "dist": { "type": "zip", - "url": "https://api.github.com/repos/sebastianbergmann/phpunit-mock-objects/zipball/a23b761686d50a560cc56233b9ecf49597cc9118", - "reference": "a23b761686d50a560cc56233b9ecf49597cc9118", + "url": "https://api.github.com/repos/sebastianbergmann/cli-parser/zipball/442e7c7e687e42adc03470c7b668bc4b2402c0b2", + "reference": "442e7c7e687e42adc03470c7b668bc4b2402c0b2", "shasum": "" }, "require": { - "doctrine/instantiator": "^1.0.2", - "php": "^5.6 || ^7.0", - "phpunit/php-text-template": "^1.2", - "sebastian/exporter": "^1.2 || ^2.0" - }, - "conflict": { - "phpunit/phpunit": "<5.4.0" + "php": ">=7.3" }, "require-dev": { - "phpunit/phpunit": "^5.4" - }, - "suggest": { - "ext-soap": "*" + "phpunit/phpunit": "^9.3" }, "type": "library", "extra": { "branch-alias": { - "dev-master": "3.2.x-dev" + "dev-master": "1.0-dev" } }, "autoload": { @@ -902,43 +940,104 @@ "authors": [ { "name": "Sebastian Bergmann", - "email": "sb@sebastian-bergmann.de", + "email": "sebastian@phpunit.de", "role": "lead" } ], - "description": "Mock Object library for PHPUnit", - "homepage": "https://github.com/sebastianbergmann/phpunit-mock-objects/", - "keywords": [ - "mock", - "xunit" + "description": "Library for parsing CLI options", + "homepage": "https://github.com/sebastianbergmann/cli-parser", + "support": { + "issues": "https://github.com/sebastianbergmann/cli-parser/issues", + "source": "https://github.com/sebastianbergmann/cli-parser/tree/1.0.1" + }, + "funding": [ + { + "url": "https://github.com/sebastianbergmann", + "type": "github" + } ], - "abandoned": true, - "time": "2017-06-30T09:13:00+00:00" + "time": "2020-09-28T06:08:49+00:00" }, { - "name": "sebastian/code-unit-reverse-lookup", - "version": "1.0.2", + "name": "sebastian/code-unit", + "version": "1.0.8", "source": { "type": "git", - "url": "https://github.com/sebastianbergmann/code-unit-reverse-lookup.git", - "reference": "1de8cd5c010cb153fcd68b8d0f64606f523f7619" + "url": "https://github.com/sebastianbergmann/code-unit.git", + "reference": "1fc9f64c0927627ef78ba436c9b17d967e68e120" }, "dist": { "type": "zip", - "url": "https://api.github.com/repos/sebastianbergmann/code-unit-reverse-lookup/zipball/1de8cd5c010cb153fcd68b8d0f64606f523f7619", - "reference": "1de8cd5c010cb153fcd68b8d0f64606f523f7619", + "url": "https://api.github.com/repos/sebastianbergmann/code-unit/zipball/1fc9f64c0927627ef78ba436c9b17d967e68e120", + "reference": "1fc9f64c0927627ef78ba436c9b17d967e68e120", "shasum": "" }, "require": { - "php": ">=5.6" + "php": ">=7.3" }, "require-dev": { - "phpunit/phpunit": "^8.5" + "phpunit/phpunit": "^9.3" }, "type": "library", "extra": { "branch-alias": { - "dev-master": "1.0.x-dev" + "dev-master": "1.0-dev" + } + }, + "autoload": { + "classmap": [ + "src/" + ] + }, + "notification-url": "https://packagist.org/downloads/", + "license": [ + "BSD-3-Clause" + ], + "authors": [ + { + "name": "Sebastian Bergmann", + "email": "sebastian@phpunit.de", + "role": "lead" + } + ], + "description": "Collection of value objects that represent the PHP code units", + "homepage": "https://github.com/sebastianbergmann/code-unit", + "support": { + "issues": "https://github.com/sebastianbergmann/code-unit/issues", + "source": "https://github.com/sebastianbergmann/code-unit/tree/1.0.8" + }, + "funding": [ + { + "url": "https://github.com/sebastianbergmann", + "type": "github" + } + ], + "time": "2020-10-26T13:08:54+00:00" + }, + { + "name": "sebastian/code-unit-reverse-lookup", + "version": "2.0.3", + "source": { + "type": "git", + "url": "https://github.com/sebastianbergmann/code-unit-reverse-lookup.git", + "reference": "ac91f01ccec49fb77bdc6fd1e548bc70f7faa3e5" + }, + "dist": { + "type": "zip", + "url": "https://api.github.com/repos/sebastianbergmann/code-unit-reverse-lookup/zipball/ac91f01ccec49fb77bdc6fd1e548bc70f7faa3e5", + "reference": "ac91f01ccec49fb77bdc6fd1e548bc70f7faa3e5", + "shasum": "" + }, + "require": { + "php": ">=7.3" + }, + "require-dev": { + "phpunit/phpunit": "^9.3" + }, + "type": "library", + "extra": { + "branch-alias": { + "dev-master": "2.0-dev" } }, "autoload": { @@ -958,34 +1057,44 @@ ], "description": "Looks up which function or method a line of code belongs to", "homepage": "https://github.com/sebastianbergmann/code-unit-reverse-lookup/", - "time": "2020-11-30T08:15:22+00:00" + "support": { + "issues": "https://github.com/sebastianbergmann/code-unit-reverse-lookup/issues", + "source": "https://github.com/sebastianbergmann/code-unit-reverse-lookup/tree/2.0.3" + }, + "funding": [ + { + "url": "https://github.com/sebastianbergmann", + "type": "github" + } + ], + "time": "2020-09-28T05:30:19+00:00" }, { "name": "sebastian/comparator", - "version": "1.2.4", + "version": "4.0.8", "source": { "type": "git", "url": "https://github.com/sebastianbergmann/comparator.git", - "reference": "2b7424b55f5047b47ac6e5ccb20b2aea4011d9be" + "reference": "fa0f136dd2334583309d32b62544682ee972b51a" }, "dist": { "type": "zip", - "url": "https://api.github.com/repos/sebastianbergmann/comparator/zipball/2b7424b55f5047b47ac6e5ccb20b2aea4011d9be", - "reference": "2b7424b55f5047b47ac6e5ccb20b2aea4011d9be", + "url": "https://api.github.com/repos/sebastianbergmann/comparator/zipball/fa0f136dd2334583309d32b62544682ee972b51a", + "reference": "fa0f136dd2334583309d32b62544682ee972b51a", "shasum": "" }, "require": { - "php": ">=5.3.3", - "sebastian/diff": "~1.2", - "sebastian/exporter": "~1.2 || ~2.0" + "php": ">=7.3", + "sebastian/diff": "^4.0", + "sebastian/exporter": "^4.0" }, "require-dev": { - "phpunit/phpunit": "~4.4" + "phpunit/phpunit": "^9.3" }, "type": "library", "extra": { "branch-alias": { - "dev-master": "1.2.x-dev" + "dev-master": "4.0-dev" } }, "autoload": { @@ -998,6 +1107,10 @@ "BSD-3-Clause" ], "authors": [ + { + "name": "Sebastian Bergmann", + "email": "sebastian@phpunit.de" + }, { "name": "Jeff Welch", "email": "whatthejeff@gmail.com" @@ -1009,45 +1122,52 @@ { "name": "Bernhard Schussek", "email": "bschussek@2bepublished.at" - }, - { - "name": "Sebastian Bergmann", - "email": "sebastian@phpunit.de" } ], "description": "Provides the functionality to compare PHP values for equality", - "homepage": "http://www.github.com/sebastianbergmann/comparator", + "homepage": "https://github.com/sebastianbergmann/comparator", "keywords": [ "comparator", "compare", "equality" ], - "time": "2017-01-29T09:50:25+00:00" + "support": { + "issues": "https://github.com/sebastianbergmann/comparator/issues", + "source": "https://github.com/sebastianbergmann/comparator/tree/4.0.8" + }, + "funding": [ + { + "url": "https://github.com/sebastianbergmann", + "type": "github" + } + ], + "time": "2022-09-14T12:41:17+00:00" }, { - "name": "sebastian/diff", - "version": "1.4.3", + "name": "sebastian/complexity", + "version": "2.0.2", "source": { "type": "git", - "url": "https://github.com/sebastianbergmann/diff.git", - "reference": "7f066a26a962dbe58ddea9f72a4e82874a3975a4" + "url": "https://github.com/sebastianbergmann/complexity.git", + "reference": "739b35e53379900cc9ac327b2147867b8b6efd88" }, "dist": { "type": "zip", - "url": "https://api.github.com/repos/sebastianbergmann/diff/zipball/7f066a26a962dbe58ddea9f72a4e82874a3975a4", - "reference": "7f066a26a962dbe58ddea9f72a4e82874a3975a4", + "url": "https://api.github.com/repos/sebastianbergmann/complexity/zipball/739b35e53379900cc9ac327b2147867b8b6efd88", + "reference": "739b35e53379900cc9ac327b2147867b8b6efd88", "shasum": "" }, "require": { - "php": "^5.3.3 || ^7.0" + "nikic/php-parser": "^4.7", + "php": ">=7.3" }, "require-dev": { - "phpunit/phpunit": "^4.8.35 || ^5.7 || ^6.0" + "phpunit/phpunit": "^9.3" }, "type": "library", "extra": { "branch-alias": { - "dev-master": "1.4-dev" + "dev-master": "2.0-dev" } }, "autoload": { @@ -1061,45 +1181,118 @@ ], "authors": [ { - "name": "Kore Nordmann", - "email": "mail@kore-nordmann.de" - }, + "name": "Sebastian Bergmann", + "email": "sebastian@phpunit.de", + "role": "lead" + } + ], + "description": "Library for calculating the complexity of PHP code units", + "homepage": "https://github.com/sebastianbergmann/complexity", + "support": { + "issues": "https://github.com/sebastianbergmann/complexity/issues", + "source": "https://github.com/sebastianbergmann/complexity/tree/2.0.2" + }, + "funding": [ + { + "url": "https://github.com/sebastianbergmann", + "type": "github" + } + ], + "time": "2020-10-26T15:52:27+00:00" + }, + { + "name": "sebastian/diff", + "version": "4.0.5", + "source": { + "type": "git", + "url": "https://github.com/sebastianbergmann/diff.git", + "reference": "74be17022044ebaaecfdf0c5cd504fc9cd5a7131" + }, + "dist": { + "type": "zip", + "url": "https://api.github.com/repos/sebastianbergmann/diff/zipball/74be17022044ebaaecfdf0c5cd504fc9cd5a7131", + "reference": "74be17022044ebaaecfdf0c5cd504fc9cd5a7131", + "shasum": "" + }, + "require": { + "php": ">=7.3" + }, + "require-dev": { + "phpunit/phpunit": "^9.3", + "symfony/process": "^4.2 || ^5" + }, + "type": "library", + "extra": { + "branch-alias": { + "dev-master": "4.0-dev" + } + }, + "autoload": { + "classmap": [ + "src/" + ] + }, + "notification-url": "https://packagist.org/downloads/", + "license": [ + "BSD-3-Clause" + ], + "authors": [ { "name": "Sebastian Bergmann", "email": "sebastian@phpunit.de" + }, + { + "name": "Kore Nordmann", + "email": "mail@kore-nordmann.de" } ], "description": "Diff implementation", "homepage": "https://github.com/sebastianbergmann/diff", "keywords": [ - "diff" + "diff", + "udiff", + "unidiff", + "unified diff" ], - "time": "2017-05-22T07:24:03+00:00" + "support": { + "issues": "https://github.com/sebastianbergmann/diff/issues", + "source": "https://github.com/sebastianbergmann/diff/tree/4.0.5" + }, + "funding": [ + { + "url": "https://github.com/sebastianbergmann", + "type": "github" + } + ], + "time": "2023-05-07T05:35:17+00:00" }, { "name": "sebastian/environment", - "version": "2.0.0", + "version": "5.1.5", "source": { "type": "git", "url": "https://github.com/sebastianbergmann/environment.git", - "reference": "5795ffe5dc5b02460c3e34222fee8cbe245d8fac" + "reference": "830c43a844f1f8d5b7a1f6d6076b784454d8b7ed" }, "dist": { "type": "zip", - "url": "https://api.github.com/repos/sebastianbergmann/environment/zipball/5795ffe5dc5b02460c3e34222fee8cbe245d8fac", - "reference": "5795ffe5dc5b02460c3e34222fee8cbe245d8fac", + "url": "https://api.github.com/repos/sebastianbergmann/environment/zipball/830c43a844f1f8d5b7a1f6d6076b784454d8b7ed", + "reference": "830c43a844f1f8d5b7a1f6d6076b784454d8b7ed", "shasum": "" }, "require": { - "php": "^5.6 || ^7.0" + "php": ">=7.3" }, "require-dev": { - "phpunit/phpunit": "^5.0" + "phpunit/phpunit": "^9.3" + }, + "suggest": { + "ext-posix": "*" }, "type": "library", "extra": { "branch-alias": { - "dev-master": "2.0.x-dev" + "dev-master": "5.1-dev" } }, "autoload": { @@ -1124,34 +1317,44 @@ "environment", "hhvm" ], - "time": "2016-11-26T07:53:53+00:00" + "support": { + "issues": "https://github.com/sebastianbergmann/environment/issues", + "source": "https://github.com/sebastianbergmann/environment/tree/5.1.5" + }, + "funding": [ + { + "url": "https://github.com/sebastianbergmann", + "type": "github" + } + ], + "time": "2023-02-03T06:03:51+00:00" }, { "name": "sebastian/exporter", - "version": "2.0.0", + "version": "4.0.5", "source": { "type": "git", "url": "https://github.com/sebastianbergmann/exporter.git", - "reference": "ce474bdd1a34744d7ac5d6aad3a46d48d9bac4c4" + "reference": "ac230ed27f0f98f597c8a2b6eb7ac563af5e5b9d" }, "dist": { "type": "zip", - "url": "https://api.github.com/repos/sebastianbergmann/exporter/zipball/ce474bdd1a34744d7ac5d6aad3a46d48d9bac4c4", - "reference": "ce474bdd1a34744d7ac5d6aad3a46d48d9bac4c4", + "url": "https://api.github.com/repos/sebastianbergmann/exporter/zipball/ac230ed27f0f98f597c8a2b6eb7ac563af5e5b9d", + "reference": "ac230ed27f0f98f597c8a2b6eb7ac563af5e5b9d", "shasum": "" }, "require": { - "php": ">=5.3.3", - "sebastian/recursion-context": "~2.0" + "php": ">=7.3", + "sebastian/recursion-context": "^4.0" }, "require-dev": { "ext-mbstring": "*", - "phpunit/phpunit": "~4.4" + "phpunit/phpunit": "^9.3" }, "type": "library", "extra": { "branch-alias": { - "dev-master": "2.0.x-dev" + "dev-master": "4.0-dev" } }, "autoload": { @@ -1164,6 +1367,10 @@ "BSD-3-Clause" ], "authors": [ + { + "name": "Sebastian Bergmann", + "email": "sebastian@phpunit.de" + }, { "name": "Jeff Welch", "email": "whatthejeff@gmail.com" @@ -1172,46 +1379,55 @@ "name": "Volker Dusch", "email": "github@wallbash.com" }, - { - "name": "Bernhard Schussek", - "email": "bschussek@2bepublished.at" - }, - { - "name": "Sebastian Bergmann", - "email": "sebastian@phpunit.de" - }, { "name": "Adam Harvey", "email": "aharvey@php.net" + }, + { + "name": "Bernhard Schussek", + "email": "bschussek@gmail.com" } ], "description": "Provides the functionality to export PHP variables for visualization", - "homepage": "http://www.github.com/sebastianbergmann/exporter", + "homepage": "https://www.github.com/sebastianbergmann/exporter", "keywords": [ "export", "exporter" ], - "time": "2016-11-19T08:54:04+00:00" + "support": { + "issues": "https://github.com/sebastianbergmann/exporter/issues", + "source": "https://github.com/sebastianbergmann/exporter/tree/4.0.5" + }, + "funding": [ + { + "url": "https://github.com/sebastianbergmann", + "type": "github" + } + ], + "time": "2022-09-14T06:03:37+00:00" }, { "name": "sebastian/global-state", - "version": "1.1.1", + "version": "5.0.5", "source": { "type": "git", "url": "https://github.com/sebastianbergmann/global-state.git", - "reference": "bc37d50fea7d017d3d340f230811c9f1d7280af4" + "reference": "0ca8db5a5fc9c8646244e629625ac486fa286bf2" }, "dist": { "type": "zip", - "url": "https://api.github.com/repos/sebastianbergmann/global-state/zipball/bc37d50fea7d017d3d340f230811c9f1d7280af4", - "reference": "bc37d50fea7d017d3d340f230811c9f1d7280af4", + "url": "https://api.github.com/repos/sebastianbergmann/global-state/zipball/0ca8db5a5fc9c8646244e629625ac486fa286bf2", + "reference": "0ca8db5a5fc9c8646244e629625ac486fa286bf2", "shasum": "" }, "require": { - "php": ">=5.3.3" + "php": ">=7.3", + "sebastian/object-reflector": "^2.0", + "sebastian/recursion-context": "^4.0" }, "require-dev": { - "phpunit/phpunit": "~4.2" + "ext-dom": "*", + "phpunit/phpunit": "^9.3" }, "suggest": { "ext-uopz": "*" @@ -1219,7 +1435,7 @@ "type": "library", "extra": { "branch-alias": { - "dev-master": "1.0-dev" + "dev-master": "5.0-dev" } }, "autoload": { @@ -1242,33 +1458,101 @@ "keywords": [ "global state" ], - "time": "2015-10-12T03:26:01+00:00" + "support": { + "issues": "https://github.com/sebastianbergmann/global-state/issues", + "source": "https://github.com/sebastianbergmann/global-state/tree/5.0.5" + }, + "funding": [ + { + "url": "https://github.com/sebastianbergmann", + "type": "github" + } + ], + "time": "2022-02-14T08:28:10+00:00" }, { - "name": "sebastian/object-enumerator", - "version": "2.0.1", + "name": "sebastian/lines-of-code", + "version": "1.0.3", "source": { "type": "git", - "url": "https://github.com/sebastianbergmann/object-enumerator.git", - "reference": "1311872ac850040a79c3c058bea3e22d0f09cbb7" + "url": "https://github.com/sebastianbergmann/lines-of-code.git", + "reference": "c1c2e997aa3146983ed888ad08b15470a2e22ecc" }, "dist": { "type": "zip", - "url": "https://api.github.com/repos/sebastianbergmann/object-enumerator/zipball/1311872ac850040a79c3c058bea3e22d0f09cbb7", - "reference": "1311872ac850040a79c3c058bea3e22d0f09cbb7", + "url": "https://api.github.com/repos/sebastianbergmann/lines-of-code/zipball/c1c2e997aa3146983ed888ad08b15470a2e22ecc", + "reference": "c1c2e997aa3146983ed888ad08b15470a2e22ecc", "shasum": "" }, "require": { - "php": ">=5.6", - "sebastian/recursion-context": "~2.0" + "nikic/php-parser": "^4.6", + "php": ">=7.3" }, "require-dev": { - "phpunit/phpunit": "~5" + "phpunit/phpunit": "^9.3" }, "type": "library", "extra": { "branch-alias": { - "dev-master": "2.0.x-dev" + "dev-master": "1.0-dev" + } + }, + "autoload": { + "classmap": [ + "src/" + ] + }, + "notification-url": "https://packagist.org/downloads/", + "license": [ + "BSD-3-Clause" + ], + "authors": [ + { + "name": "Sebastian Bergmann", + "email": "sebastian@phpunit.de", + "role": "lead" + } + ], + "description": "Library for counting the lines of code in PHP source code", + "homepage": "https://github.com/sebastianbergmann/lines-of-code", + "support": { + "issues": "https://github.com/sebastianbergmann/lines-of-code/issues", + "source": "https://github.com/sebastianbergmann/lines-of-code/tree/1.0.3" + }, + "funding": [ + { + "url": "https://github.com/sebastianbergmann", + "type": "github" + } + ], + "time": "2020-11-28T06:42:11+00:00" + }, + { + "name": "sebastian/object-enumerator", + "version": "4.0.4", + "source": { + "type": "git", + "url": "https://github.com/sebastianbergmann/object-enumerator.git", + "reference": "5c9eeac41b290a3712d88851518825ad78f45c71" + }, + "dist": { + "type": "zip", + "url": "https://api.github.com/repos/sebastianbergmann/object-enumerator/zipball/5c9eeac41b290a3712d88851518825ad78f45c71", + "reference": "5c9eeac41b290a3712d88851518825ad78f45c71", + "shasum": "" + }, + "require": { + "php": ">=7.3", + "sebastian/object-reflector": "^2.0", + "sebastian/recursion-context": "^4.0" + }, + "require-dev": { + "phpunit/phpunit": "^9.3" + }, + "type": "library", + "extra": { + "branch-alias": { + "dev-master": "4.0-dev" } }, "autoload": { @@ -1288,32 +1572,42 @@ ], "description": "Traverses array structures and object graphs to enumerate all referenced objects", "homepage": "https://github.com/sebastianbergmann/object-enumerator/", - "time": "2017-02-18T15:18:39+00:00" + "support": { + "issues": "https://github.com/sebastianbergmann/object-enumerator/issues", + "source": "https://github.com/sebastianbergmann/object-enumerator/tree/4.0.4" + }, + "funding": [ + { + "url": "https://github.com/sebastianbergmann", + "type": "github" + } + ], + "time": "2020-10-26T13:12:34+00:00" }, { - "name": "sebastian/recursion-context", - "version": "2.0.0", + "name": "sebastian/object-reflector", + "version": "2.0.4", "source": { "type": "git", - "url": "https://github.com/sebastianbergmann/recursion-context.git", - "reference": "2c3ba150cbec723aa057506e73a8d33bdb286c9a" + "url": "https://github.com/sebastianbergmann/object-reflector.git", + "reference": "b4f479ebdbf63ac605d183ece17d8d7fe49c15c7" }, "dist": { "type": "zip", - "url": "https://api.github.com/repos/sebastianbergmann/recursion-context/zipball/2c3ba150cbec723aa057506e73a8d33bdb286c9a", - "reference": "2c3ba150cbec723aa057506e73a8d33bdb286c9a", + "url": "https://api.github.com/repos/sebastianbergmann/object-reflector/zipball/b4f479ebdbf63ac605d183ece17d8d7fe49c15c7", + "reference": "b4f479ebdbf63ac605d183ece17d8d7fe49c15c7", "shasum": "" }, "require": { - "php": ">=5.3.3" + "php": ">=7.3" }, "require-dev": { - "phpunit/phpunit": "~4.4" + "phpunit/phpunit": "^9.3" }, "type": "library", "extra": { "branch-alias": { - "dev-master": "2.0.x-dev" + "dev-master": "2.0-dev" } }, "autoload": { @@ -1327,43 +1621,111 @@ ], "authors": [ { - "name": "Jeff Welch", - "email": "whatthejeff@gmail.com" - }, + "name": "Sebastian Bergmann", + "email": "sebastian@phpunit.de" + } + ], + "description": "Allows reflection of object attributes, including inherited and non-public ones", + "homepage": "https://github.com/sebastianbergmann/object-reflector/", + "support": { + "issues": "https://github.com/sebastianbergmann/object-reflector/issues", + "source": "https://github.com/sebastianbergmann/object-reflector/tree/2.0.4" + }, + "funding": [ + { + "url": "https://github.com/sebastianbergmann", + "type": "github" + } + ], + "time": "2020-10-26T13:14:26+00:00" + }, + { + "name": "sebastian/recursion-context", + "version": "4.0.5", + "source": { + "type": "git", + "url": "https://github.com/sebastianbergmann/recursion-context.git", + "reference": "e75bd0f07204fec2a0af9b0f3cfe97d05f92efc1" + }, + "dist": { + "type": "zip", + "url": "https://api.github.com/repos/sebastianbergmann/recursion-context/zipball/e75bd0f07204fec2a0af9b0f3cfe97d05f92efc1", + "reference": "e75bd0f07204fec2a0af9b0f3cfe97d05f92efc1", + "shasum": "" + }, + "require": { + "php": ">=7.3" + }, + "require-dev": { + "phpunit/phpunit": "^9.3" + }, + "type": "library", + "extra": { + "branch-alias": { + "dev-master": "4.0-dev" + } + }, + "autoload": { + "classmap": [ + "src/" + ] + }, + "notification-url": "https://packagist.org/downloads/", + "license": [ + "BSD-3-Clause" + ], + "authors": [ { "name": "Sebastian Bergmann", "email": "sebastian@phpunit.de" }, + { + "name": "Jeff Welch", + "email": "whatthejeff@gmail.com" + }, { "name": "Adam Harvey", "email": "aharvey@php.net" } ], "description": "Provides functionality to recursively process PHP variables", - "homepage": "http://www.github.com/sebastianbergmann/recursion-context", - "time": "2016-11-19T07:33:16+00:00" + "homepage": "https://github.com/sebastianbergmann/recursion-context", + "support": { + "issues": "https://github.com/sebastianbergmann/recursion-context/issues", + "source": "https://github.com/sebastianbergmann/recursion-context/tree/4.0.5" + }, + "funding": [ + { + "url": "https://github.com/sebastianbergmann", + "type": "github" + } + ], + "time": "2023-02-03T06:07:39+00:00" }, { "name": "sebastian/resource-operations", - "version": "1.0.0", + "version": "3.0.3", "source": { "type": "git", "url": "https://github.com/sebastianbergmann/resource-operations.git", - "reference": "ce990bb21759f94aeafd30209e8cfcdfa8bc3f52" + "reference": "0f4443cb3a1d92ce809899753bc0d5d5a8dd19a8" }, "dist": { "type": "zip", - "url": "https://api.github.com/repos/sebastianbergmann/resource-operations/zipball/ce990bb21759f94aeafd30209e8cfcdfa8bc3f52", - "reference": "ce990bb21759f94aeafd30209e8cfcdfa8bc3f52", + "url": "https://api.github.com/repos/sebastianbergmann/resource-operations/zipball/0f4443cb3a1d92ce809899753bc0d5d5a8dd19a8", + "reference": "0f4443cb3a1d92ce809899753bc0d5d5a8dd19a8", "shasum": "" }, "require": { - "php": ">=5.6.0" + "php": ">=7.3" + }, + "require-dev": { + "phpunit/phpunit": "^9.0" }, "type": "library", "extra": { "branch-alias": { - "dev-master": "1.0.x-dev" + "dev-master": "3.0-dev" } }, "autoload": { @@ -1383,29 +1745,95 @@ ], "description": "Provides a list of PHP built-in functions that operate on resources", "homepage": "https://www.github.com/sebastianbergmann/resource-operations", - "time": "2015-07-28T20:34:47+00:00" + "support": { + "issues": "https://github.com/sebastianbergmann/resource-operations/issues", + "source": "https://github.com/sebastianbergmann/resource-operations/tree/3.0.3" + }, + "funding": [ + { + "url": "https://github.com/sebastianbergmann", + "type": "github" + } + ], + "time": "2020-09-28T06:45:17+00:00" }, { - "name": "sebastian/version", - "version": "2.0.1", + "name": "sebastian/type", + "version": "3.2.1", "source": { "type": "git", - "url": "https://github.com/sebastianbergmann/version.git", - "reference": "99732be0ddb3361e16ad77b68ba41efc8e979019" + "url": "https://github.com/sebastianbergmann/type.git", + "reference": "75e2c2a32f5e0b3aef905b9ed0b179b953b3d7c7" }, "dist": { "type": "zip", - "url": "https://api.github.com/repos/sebastianbergmann/version/zipball/99732be0ddb3361e16ad77b68ba41efc8e979019", - "reference": "99732be0ddb3361e16ad77b68ba41efc8e979019", + "url": "https://api.github.com/repos/sebastianbergmann/type/zipball/75e2c2a32f5e0b3aef905b9ed0b179b953b3d7c7", + "reference": "75e2c2a32f5e0b3aef905b9ed0b179b953b3d7c7", "shasum": "" }, "require": { - "php": ">=5.6" + "php": ">=7.3" + }, + "require-dev": { + "phpunit/phpunit": "^9.5" }, "type": "library", "extra": { "branch-alias": { - "dev-master": "2.0.x-dev" + "dev-master": "3.2-dev" + } + }, + "autoload": { + "classmap": [ + "src/" + ] + }, + "notification-url": "https://packagist.org/downloads/", + "license": [ + "BSD-3-Clause" + ], + "authors": [ + { + "name": "Sebastian Bergmann", + "email": "sebastian@phpunit.de", + "role": "lead" + } + ], + "description": "Collection of value objects that represent the types of the PHP type system", + "homepage": "https://github.com/sebastianbergmann/type", + "support": { + "issues": "https://github.com/sebastianbergmann/type/issues", + "source": "https://github.com/sebastianbergmann/type/tree/3.2.1" + }, + "funding": [ + { + "url": "https://github.com/sebastianbergmann", + "type": "github" + } + ], + "time": "2023-02-03T06:13:03+00:00" + }, + { + "name": "sebastian/version", + "version": "3.0.2", + "source": { + "type": "git", + "url": "https://github.com/sebastianbergmann/version.git", + "reference": "c6c1022351a901512170118436c764e473f6de8c" + }, + "dist": { + "type": "zip", + "url": "https://api.github.com/repos/sebastianbergmann/version/zipball/c6c1022351a901512170118436c764e473f6de8c", + "reference": "c6c1022351a901512170118436c764e473f6de8c", + "shasum": "" + }, + "require": { + "php": ">=7.3" + }, + "type": "library", + "extra": { + "branch-alias": { + "dev-master": "3.0-dev" } }, "autoload": { @@ -1426,180 +1854,67 @@ ], "description": "Library that helps with managing the version number of Git-hosted PHP projects", "homepage": "https://github.com/sebastianbergmann/version", - "time": "2016-10-03T07:35:21+00:00" + "support": { + "issues": "https://github.com/sebastianbergmann/version/issues", + "source": "https://github.com/sebastianbergmann/version/tree/3.0.2" + }, + "funding": [ + { + "url": "https://github.com/sebastianbergmann", + "type": "github" + } + ], + "time": "2020-09-28T06:39:44+00:00" }, { - "name": "symfony/polyfill-ctype", - "version": "v1.26.0", + "name": "theseer/tokenizer", + "version": "1.2.1", "source": { "type": "git", - "url": "https://github.com/symfony/polyfill-ctype.git", - "reference": "6fd1b9a79f6e3cf65f9e679b23af304cd9e010d4" + "url": "https://github.com/theseer/tokenizer.git", + "reference": "34a41e998c2183e22995f158c581e7b5e755ab9e" }, "dist": { "type": "zip", - "url": "https://api.github.com/repos/symfony/polyfill-ctype/zipball/6fd1b9a79f6e3cf65f9e679b23af304cd9e010d4", - "reference": "6fd1b9a79f6e3cf65f9e679b23af304cd9e010d4", + "url": "https://api.github.com/repos/theseer/tokenizer/zipball/34a41e998c2183e22995f158c581e7b5e755ab9e", + "reference": "34a41e998c2183e22995f158c581e7b5e755ab9e", "shasum": "" }, "require": { - "php": ">=7.1" - }, - "provide": { - "ext-ctype": "*" - }, - "suggest": { - "ext-ctype": "For best performance" - }, - "type": "library", - "extra": { - "branch-alias": { - "dev-main": "1.26-dev" - }, - "thanks": { - "name": "symfony/polyfill", - "url": "https://github.com/symfony/polyfill" - } - }, - "autoload": { - "files": [ - "bootstrap.php" - ], - "psr-4": { - "Symfony\\Polyfill\\Ctype\\": "" - } - }, - "notification-url": "https://packagist.org/downloads/", - "license": [ - "MIT" - ], - "authors": [ - { - "name": "Gert de Pagter", - "email": "BackEndTea@gmail.com" - }, - { - "name": "Symfony Community", - "homepage": "https://symfony.com/contributors" - } - ], - "description": "Symfony polyfill for ctype functions", - "homepage": "https://symfony.com", - "keywords": [ - "compatibility", - "ctype", - "polyfill", - "portable" - ], - "time": "2022-05-24T11:49:31+00:00" - }, - { - "name": "symfony/yaml", - "version": "v4.4.45", - "source": { - "type": "git", - "url": "https://github.com/symfony/yaml.git", - "reference": "aeccc4dc52a9e634f1d1eebeb21eacfdcff1053d" - }, - "dist": { - "type": "zip", - "url": "https://api.github.com/repos/symfony/yaml/zipball/aeccc4dc52a9e634f1d1eebeb21eacfdcff1053d", - "reference": "aeccc4dc52a9e634f1d1eebeb21eacfdcff1053d", - "shasum": "" - }, - "require": { - "php": ">=7.1.3", - "symfony/polyfill-ctype": "~1.8" - }, - "conflict": { - "symfony/console": "<3.4" - }, - "require-dev": { - "symfony/console": "^3.4|^4.0|^5.0" - }, - "suggest": { - "symfony/console": "For validating YAML files using the lint command" + "ext-dom": "*", + "ext-tokenizer": "*", + "ext-xmlwriter": "*", + "php": "^7.2 || ^8.0" }, "type": "library", "autoload": { - "psr-4": { - "Symfony\\Component\\Yaml\\": "" - }, - "exclude-from-classmap": [ - "/Tests/" + "classmap": [ + "src/" ] }, "notification-url": "https://packagist.org/downloads/", "license": [ - "MIT" + "BSD-3-Clause" ], "authors": [ { - "name": "Fabien Potencier", - "email": "fabien@symfony.com" - }, + "name": "Arne Blankerts", + "email": "arne@blankerts.de", + "role": "Developer" + } + ], + "description": "A small library for converting tokenized PHP source code into XML and potentially other formats", + "support": { + "issues": "https://github.com/theseer/tokenizer/issues", + "source": "https://github.com/theseer/tokenizer/tree/1.2.1" + }, + "funding": [ { - "name": "Symfony Community", - "homepage": "https://symfony.com/contributors" + "url": "https://github.com/theseer", + "type": "github" } ], - "description": "Loads and dumps YAML files", - "homepage": "https://symfony.com", - "time": "2022-08-02T15:47:23+00:00" - }, - { - "name": "webmozart/assert", - "version": "1.10.0", - "source": { - "type": "git", - "url": "https://github.com/webmozarts/assert.git", - "reference": "6964c76c7804814a842473e0c8fd15bab0f18e25" - }, - "dist": { - "type": "zip", - "url": "https://api.github.com/repos/webmozarts/assert/zipball/6964c76c7804814a842473e0c8fd15bab0f18e25", - "reference": "6964c76c7804814a842473e0c8fd15bab0f18e25", - "shasum": "" - }, - "require": { - "php": "^7.2 || ^8.0", - "symfony/polyfill-ctype": "^1.8" - }, - "conflict": { - "phpstan/phpstan": "<0.12.20", - "vimeo/psalm": "<4.6.1 || 4.6.2" - }, - "require-dev": { - "phpunit/phpunit": "^8.5.13" - }, - "type": "library", - "extra": { - "branch-alias": { - "dev-master": "1.10-dev" - } - }, - "autoload": { - "psr-4": { - "Webmozart\\Assert\\": "src/" - } - }, - "notification-url": "https://packagist.org/downloads/", - "license": [ - "MIT" - ], - "authors": [ - { - "name": "Bernhard Schussek", - "email": "bschussek@gmail.com" - } - ], - "description": "Assertions to validate method input/output with nice error messages.", - "keywords": [ - "assert", - "check", - "validate" - ], - "time": "2021-03-09T10:59:23+00:00" + "time": "2021-07-28T10:34:58+00:00" } ], "aliases": [], @@ -1608,7 +1923,11 @@ "prefer-stable": false, "prefer-lowest": false, "platform": { - "php": "^5.6.0 || ^7.0 || ^8.0" + "php": "^7.3 || ^8.0" }, - "platform-dev": [] + "platform-dev": [], + "platform-overrides": { + "php": "7.3" + }, + "plugin-api-version": "2.3.0" } diff --git a/css/bootstrap/privatebin.css b/css/bootstrap/privatebin.css index 07bd9187..04afbebd 100644 --- a/css/bootstrap/privatebin.css +++ b/css/bootstrap/privatebin.css @@ -6,7 +6,7 @@ * @link https://github.com/PrivateBin/PrivateBin * @copyright 2012 Sébastien SAUVAGE (sebsauvage.net) * @license https://www.opensource.org/licenses/zlib-license.php The zlib/libpng License - * @version 1.5.1 + * @version 1.5.2 */ body { diff --git a/css/noscript.css b/css/noscript.css index c45a5d4b..207a71e7 100644 --- a/css/noscript.css +++ b/css/noscript.css @@ -6,7 +6,7 @@ * @link https://github.com/PrivateBin/PrivateBin * @copyright 2012 Sébastien SAUVAGE (sebsauvage.net) * @license https://www.opensource.org/licenses/zlib-license.php The zlib/libpng License - * @version 1.5.1 + * @version 1.5.2 */ /* When there is no script at all other */ diff --git a/css/privatebin.css b/css/privatebin.css index 918ba73f..cfe48462 100644 --- a/css/privatebin.css +++ b/css/privatebin.css @@ -6,7 +6,7 @@ * @link https://github.com/PrivateBin/PrivateBin * @copyright 2012 Sébastien SAUVAGE (sebsauvage.net) * @license https://www.opensource.org/licenses/zlib-license.php The zlib/libpng License - * @version 1.5.1 + * @version 1.5.2 */ /* CSS Reset from YUI 3.4.1 (build 4118) - Copyright 2011 Yahoo! Inc. All rights reserved. diff --git a/doc/Installation.md b/doc/Installation.md index 3b2f6a2c..5319414d 100644 --- a/doc/Installation.md +++ b/doc/Installation.md @@ -20,14 +20,7 @@ install and configure PrivateBin on your server. It's available on ### Minimal Requirements -- PHP version 7.0 or above - - Or PHP version 5.6 AND _one_ of the following sources of cryptographically - safe randomness: - - [Libsodium](https://download.libsodium.org/libsodium/content/installation/) - and it's [PHP extension](https://paragonie.com/book/pecl-libsodium/read/00-intro.md#installing-libsodium) - - `open_basedir` access to `/dev/urandom` - - mcrypt extension AND `open_basedir` access to `/dev/urandom` - - com_dotnet extension +- PHP version 7.3 or above - GD extension (when using identicon or vizhash icons, jdenticon works without it) - zlib extension - some disk space or a database supported by [PDO](https://php.net/manual/book.pdo.php) @@ -207,7 +200,7 @@ CREATE INDEX parent ON prefix_comment(pasteid); CREATE TABLE prefix_config ( id CHAR(16) NOT NULL, value TEXT, PRIMARY KEY (id) ); -INSERT INTO prefix_config VALUES('VERSION', '1.5.1'); +INSERT INTO prefix_config VALUES('VERSION', '1.5.2'); ``` In **PostgreSQL**, the `data`, `attachment`, `nickname` and `vizhash` columns diff --git a/i18n/ar.json b/i18n/ar.json index 204b61bb..413bdca8 100644 --- a/i18n/ar.json +++ b/i18n/ar.json @@ -1,193 +1,219 @@ { "PrivateBin": "PrivateBin", - "%s is a minimalist, open source online pastebin where the server has zero knowledge of pasted data. Data is encrypted/decrypted %sin the browser%s using 256 bits AES.": "%s is a minimalist, open source online pastebin where the server has zero knowledge of pasted data. Data is encrypted/decrypted %sin the browser%s using 256 bits AES.", - "More information on the project page.": "More information on the project page.", - "Because ignorance is bliss": "Because ignorance is bliss", + "%s is a minimalist, open source online pastebin where the server has zero knowledge of pasted data. Data is encrypted/decrypted %sin the browser%s using 256 bits AES.": "%s عبارة عن أداة لصق على الإنترنت بسيطة ومفتوحة المصدر حيث لا يمتلك الخادم أي معرفة بالبيانات الملصقة. يتم تشفير / فك تشفير البيانات %sفي المتصفح%s باستخدام 256 بت AES.", + "More information on the project page.": "مزيد من المعلومات على صفحة المشروع.", + "Because ignorance is bliss": "لأن الجهل نعمة", "en": "ar", - "Paste does not exist, has expired or has been deleted.": "Paste does not exist, has expired or has been deleted.", - "%s requires php %s or above to work. Sorry.": "%s requires php %s or above to work. Sorry.", - "%s requires configuration section [%s] to be present in configuration file.": "%s requires configuration section [%s] to be present in configuration file.", + "Paste does not exist, has expired or has been deleted.": "اللصق غير موجود أو انتهت صلاحيته أو تم حذفه.", + "%s requires php %s or above to work. Sorry.": "%s يتطلب php %s أو أعلى للعمل. آسف.", + "%s requires configuration section [%s] to be present in configuration file.": "%s يتطلب وجود قسم [%s] تضبيط في ملف تضبيط.", "Please wait %d seconds between each post.": [ - "Please wait %d second between each post. (singular)", - "Please wait %d seconds between each post. (1st plural)", - "Please wait %d seconds between each post. (2nd plural)", - "Please wait %d seconds between each post. (3rd plural)" + "الرجاء الانتظار %d ثانية بين كل مشاركة.", + "الرجاء الانتظار %d ثواني بين كل مشاركة.", + "الرجاء الانتظار %d ثواني بين كل مشاركة.", + "الرجاء الانتظار %d ثواني بين كل مشاركة.", + "الرجاء الانتظار %d ثواني بين كل مشاركة.", + "الرجاء الانتظار %d ثواني بين كل مشاركة." ], - "Paste is limited to %s of encrypted data.": "Paste is limited to %s of encrypted data.", - "Invalid data.": "Invalid data.", - "You are unlucky. Try again.": "You are unlucky. Try again.", - "Error saving comment. Sorry.": "Error saving comment. Sorry.", - "Error saving paste. Sorry.": "Error saving paste. Sorry.", - "Invalid paste ID.": "Invalid paste ID.", - "Paste is not of burn-after-reading type.": "Paste is not of burn-after-reading type.", - "Wrong deletion token. Paste was not deleted.": "Wrong deletion token. Paste was not deleted.", - "Paste was properly deleted.": "Paste was properly deleted.", - "JavaScript is required for %s to work. Sorry for the inconvenience.": "JavaScript is required for %s to work. Sorry for the inconvenience.", - "%s requires a modern browser to work.": "%s requires a modern browser to work.", - "New": "New", - "Send": "Send", - "Clone": "Clone", - "Raw text": "Raw text", - "Expires": "Expires", - "Burn after reading": "Burn after reading", - "Open discussion": "Open discussion", - "Password (recommended)": "Password (recommended)", - "Discussion": "Discussion", - "Toggle navigation": "Toggle navigation", + "Paste is limited to %s of encrypted data.": "يقتصر اللصق على %s البيانات المشفرة.", + "Invalid data.": "بيانات غير صالحة.", + "You are unlucky. Try again.": "أنت غير محظوظ. أعِد المحاولة.", + "Error saving comment. Sorry.": "خطأ في حفظ التعليق. آسف.", + "Error saving paste. Sorry.": "خطأ في حفظ اللصق. آسف.", + "Invalid paste ID.": "معرف لصق غير صالح.", + "Paste is not of burn-after-reading type.": "اللصق ليس من النوع الذي يحرق بعد القراءة.", + "Wrong deletion token. Paste was not deleted.": "رمز حذف خاطئ. لم يتم يحُذف اللصق.", + "Paste was properly deleted.": "حُذفت اللصق بشكل صحيح.", + "JavaScript is required for %s to work. Sorry for the inconvenience.": "جافاسكرِبت (JavaScript) مطلوب %s للعمل. نأسف للإزعاج.", + "%s requires a modern browser to work.": "%s يتطلب متصفحًا حديثًا للعمل.", + "New": "جديد", + "Send": "إرسال", + "Clone": "استنساخ", + "Raw text": "نص خام", + "Expires": "تنتهي", + "Burn after reading": "حرق بعد القراءة", + "Open discussion": "مناقشة مفتوحة", + "Password (recommended)": "كلمة المرور (مستحسن)", + "Discussion": "مناقشة", + "Toggle navigation": "تبديل التنقل", "%d seconds": [ - "%d second (singular)", - "%d seconds (1st plural)", - "%d seconds (2nd plural)", - "%d seconds (3rd plural)" + "%d ثانية", + "%d ثواني", + "%d ثواني", + "%d ثواني", + "%d ثواني", + "%d ثواني" ], "%d minutes": [ - "%d minute (singular)", - "%d minutes (1st plural)", - "%d minutes (2nd plural)", - "%d minutes (3rd plural)" + "%d دقيقة", + "%d دقائق", + "%d دقائق", + "%d دقائق", + "%d دقائق", + "%d دقائق" ], "%d hours": [ - "%d hour (singular)", - "%d hours (1st plural)", - "%d hours (2nd plural)", - "%d hours (3rd plural)" + "%d ساعة", + "%d ساعات", + "%d ساعات", + "%d ساعات", + "%d ساعات", + "%d ساعات" ], "%d days": [ - "%d day (singular)", - "%d days (1st plural)", - "%d days (2nd plural)", - "%d days (3rd plural)" + "%d يوم", + "%d أيام", + "%d أيام", + "%d أيام", + "%d أيام", + "%d أيام" ], "%d weeks": [ - "%d week (singular)", - "%d weeks (1st plural)", - "%d weeks (2nd plural)", - "%d weeks (3rd plural)" + "%d أسبوع", + "%d أسابيع", + "%d أسابيع", + "%d أسابيع", + "%d أسابيع", + "%d أسابيع" ], "%d months": [ - "%d month (singular)", - "%d months (1st plural)", - "%d months (2nd plural)", - "%d months (3rd plural)" + "%d شهر", + "%d شهور", + "%d شهور", + "%d شهور", + "%d شهور", + "%d شهور" ], "%d years": [ - "%d year (singular)", - "%d years (1st plural)", - "%d years (2nd plural)", - "%d years (3rd plural)" + "%d سنة", + "%d سنين", + "%d سنين", + "%d سنين", + "%d سنين", + "%d سنين" ], - "Never": "Never", - "Note: This is a test service: Data may be deleted anytime. Kittens will die if you abuse this service.": "Note: This is a test service: Data may be deleted anytime. Kittens will die if you abuse this service.", + "Never": "أبدًا", + "Note: This is a test service: Data may be deleted anytime. Kittens will die if you abuse this service.": "ملاحظة: هذه خدمة اختبارية: يمكن حذف البيانات في أي وقت. سوف تموت القطط إذا أساءت استخدام هذه الخدمة.", "This document will expire in %d seconds.": [ - "This document will expire in %d second. (singular)", - "This document will expire in %d seconds. (1st plural)", - "This document will expire in %d seconds. (2nd plural)", - "This document will expire in %d seconds. (3rd plural)" + "ستنتهي صلاحية هذا المستند في %d ثانية.", + "ستنتهي صلاحية هذا المستند في %d ثواني.", + "ستنتهي صلاحية هذا المستند في %d ثواني.", + "ستنتهي صلاحية هذا المستند في %d ثواني.", + "ستنتهي صلاحية هذا المستند في %d ثواني.", + "ستنتهي صلاحية هذا المستند في %d ثواني." ], "This document will expire in %d minutes.": [ - "This document will expire in %d minute. (singular)", - "This document will expire in %d minutes. (1st plural)", - "This document will expire in %d minutes. (2nd plural)", - "This document will expire in %d minutes. (3rd plural)" + "ستنتهي صلاحية هذا المستند في %d دقيقة.", + "ستنتهي صلاحية هذا المستند في %d دقائق.", + "ستنتهي صلاحية هذا المستند في %d دقائق.", + "ستنتهي صلاحية هذا المستند في %d دقائق.", + "ستنتهي صلاحية هذا المستند في %d دقائق.", + "ستنتهي صلاحية هذا المستند في %d دقائق." ], "This document will expire in %d hours.": [ - "This document will expire in %d hour. (singular)", - "This document will expire in %d hours. (1st plural)", - "This document will expire in %d hours. (2nd plural)", - "This document will expire in %d hours. (3rd plural)" + "ستنتهي صلاحية هذا المستند في غضون %d ساعة.", + "ستنتهي صلاحية هذا المستند في غضون %d ساعات.", + "ستنتهي صلاحية هذا المستند في غضون %d ساعات.", + "ستنتهي صلاحية هذا المستند في غضون %d ساعات.", + "ستنتهي صلاحية هذا المستند في غضون %d ساعات.", + "ستنتهي صلاحية هذا المستند في غضون %d ساعات." ], "This document will expire in %d days.": [ - "This document will expire in %d day. (singular)", - "This document will expire in %d days. (1st plural)", - "This document will expire in %d days. (2nd plural)", - "This document will expire in %d days. (3rd plural)" + "ستنتهي صلاحية هذا المستند خلال %d يوم.", + "ستنتهي صلاحية هذا المستند خلال %d أيام.", + "ستنتهي صلاحية هذا المستند خلال %d أيام.", + "ستنتهي صلاحية هذا المستند خلال %d أيام.", + "ستنتهي صلاحية هذا المستند خلال %d أيام.", + "ستنتهي صلاحية هذا المستند خلال %d أيام." ], "This document will expire in %d months.": [ - "This document will expire in %d month. (singular)", - "This document will expire in %d months. (1st plural)", - "This document will expire in %d months. (2nd plural)", - "This document will expire in %d months. (3rd plural)" + "ستنتهي صلاحية هذا المستند خلال %d شهر.", + "ستنتهي صلاحية هذا المستند خلال %d شهور.", + "ستنتهي صلاحية هذا المستند خلال %d شهور.", + "ستنتهي صلاحية هذا المستند خلال %d شهور.", + "ستنتهي صلاحية هذا المستند خلال %d شهور.", + "ستنتهي صلاحية هذا المستند خلال %d شهور." ], - "Please enter the password for this paste:": "Please enter the password for this paste:", - "Could not decrypt data (Wrong key?)": "Could not decrypt data (Wrong key?)", - "Could not delete the paste, it was not stored in burn after reading mode.": "Could not delete the paste, it was not stored in burn after reading mode.", - "FOR YOUR EYES ONLY. Don't close this window, this message can't be displayed again.": "FOR YOUR EYES ONLY. Don't close this window, this message can't be displayed again.", - "Could not decrypt comment; Wrong key?": "Could not decrypt comment; Wrong key?", - "Reply": "Reply", - "Anonymous": "Anonymous", - "Avatar generated from IP address": "Avatar generated from IP address", - "Add comment": "Add comment", - "Optional nickname…": "Optional nickname…", - "Post comment": "Post comment", - "Sending comment…": "Sending comment…", - "Comment posted.": "Comment posted.", - "Could not refresh display: %s": "Could not refresh display: %s", - "unknown status": "unknown status", - "server error or not responding": "server error or not responding", - "Could not post comment: %s": "Could not post comment: %s", - "Sending paste…": "Sending paste…", - "Your paste is %s (Hit [Ctrl]+[c] to copy)": "Your paste is %s (Hit [Ctrl]+[c] to copy)", - "Delete data": "Delete data", - "Could not create paste: %s": "Could not create paste: %s", - "Cannot decrypt paste: Decryption key missing in URL (Did you use a redirector or an URL shortener which strips part of the URL?)": "Cannot decrypt paste: Decryption key missing in URL (Did you use a redirector or an URL shortener which strips part of the URL?)", - "B": "B", - "KiB": "KiB", - "MiB": "MiB", - "GiB": "GiB", - "TiB": "TiB", - "PiB": "PiB", - "EiB": "EiB", - "ZiB": "ZiB", - "YiB": "YiB", - "Format": "Format", - "Plain Text": "Plain Text", - "Source Code": "Source Code", - "Markdown": "Markdown", - "Download attachment": "Download attachment", - "Cloned: '%s'": "Cloned: '%s'", - "The cloned file '%s' was attached to this paste.": "The cloned file '%s' was attached to this paste.", - "Attach a file": "Attach a file", - "alternatively drag & drop a file or paste an image from the clipboard": "alternatively drag & drop a file or paste an image from the clipboard", - "File too large, to display a preview. Please download the attachment.": "File too large, to display a preview. Please download the attachment.", - "Remove attachment": "Remove attachment", - "Your browser does not support uploading encrypted files. Please use a newer browser.": "Your browser does not support uploading encrypted files. Please use a newer browser.", - "Invalid attachment.": "Invalid attachment.", - "Options": "Options", - "Shorten URL": "Shorten URL", - "Editor": "Editor", - "Preview": "Preview", - "%s requires the PATH to end in a \"%s\". Please update the PATH in your index.php.": "%s requires the PATH to end in a \"%s\". Please update the PATH in your index.php.", - "Decrypt": "Decrypt", - "Enter password": "Enter password", - "Loading…": "Loading…", - "Decrypting paste…": "Decrypting paste…", - "Preparing new paste…": "Preparing new paste…", - "In case this message never disappears please have a look at this FAQ for information to troubleshoot.": "In case this message never disappears please have a look at this FAQ for information to troubleshoot.", - "+++ no paste text +++": "+++ no paste text +++", - "Could not get paste data: %s": "Could not get paste data: %s", - "QR code": "QR code", - "This website is using an insecure HTTP connection! Please use it only for testing.": "This website is using an insecure HTTP connection! Please use it only for testing.", - "For more information see this FAQ entry.": "For more information see this FAQ entry.", - "Your browser may require an HTTPS connection to support the WebCrypto API. Try switching to HTTPS.": "Your browser may require an HTTPS connection to support the WebCrypto API. Try switching to HTTPS.", - "Your browser doesn't support WebAssembly, used for zlib compression. You can create uncompressed documents, but can't read compressed ones.": "Your browser doesn't support WebAssembly, used for zlib compression. You can create uncompressed documents, but can't read compressed ones.", - "waiting on user to provide a password": "waiting on user to provide a password", - "Could not decrypt data. Did you enter a wrong password? Retry with the button at the top.": "Could not decrypt data. Did you enter a wrong password? Retry with the button at the top.", - "Retry": "Retry", - "Showing raw text…": "Showing raw text…", - "Notice:": "Notice:", - "This link will expire after %s.": "This link will expire after %s.", - "This link can only be accessed once, do not use back or refresh button in your browser.": "This link can only be accessed once, do not use back or refresh button in your browser.", - "Link:": "Link:", - "Recipient may become aware of your timezone, convert time to UTC?": "Recipient may become aware of your timezone, convert time to UTC?", - "Use Current Timezone": "Use Current Timezone", - "Convert To UTC": "Convert To UTC", - "Close": "Close", - "Encrypted note on %s": "Encrypted note on %s", - "Visit this link to see the note. Giving the URL to anyone allows them to access the note, too.": "Visit this link to see the note. Giving the URL to anyone allows them to access the note, too.", - "URL shortener may expose your decrypt key in URL.": "URL shortener may expose your decrypt key in URL.", - "Save paste": "Save paste", - "Your IP is not authorized to create pastes.": "Your IP is not authorized to create pastes.", - "Trying to shorten a URL that isn't pointing at our instance.": "Trying to shorten a URL that isn't pointing at our instance.", - "Error calling YOURLS. Probably a configuration issue, like wrong or missing \"apiurl\" or \"signature\".": "Error calling YOURLS. Probably a configuration issue, like wrong or missing \"apiurl\" or \"signature\".", - "Error parsing YOURLS response.": "Error parsing YOURLS response." + "Please enter the password for this paste:": "الرجاء إدخال كلمة المرور لهذا اللصق:", + "Could not decrypt data (Wrong key?)": "تعذر فك تشفير البيانات (مفتاح غير صحيح؟)", + "Could not delete the paste, it was not stored in burn after reading mode.": "تعذر حذف اللصق، ولم يخزين في وضع النسخ بعد القراءة.", + "FOR YOUR EYES ONLY. Don't close this window, this message can't be displayed again.": "فقط من أجل عينيك. لا تغلق هذه النافذة، لا يمكن عرض هذه الرسالة مرة أخرى.", + "Could not decrypt comment; Wrong key?": "تعذر فك تشفير التعليق؛ المفتاح غير صحيح؟", + "Reply": "رد", + "Anonymous": "وهمي", + "Avatar generated from IP address": "تم إنشاء أفتار من عنوان IP", + "Add comment": "أضف تعليق", + "Optional nickname…": "لقب اختياري…", + "Post comment": "أضف تعليقا", + "Sending comment…": "يُرسل تعليق…", + "Comment posted.": "نُشر التعليق.", + "Could not refresh display: %s": "تعذر تحديث العرض: %s", + "unknown status": "حالة غير معروفة", + "server error or not responding": "خطأ في الخادم أو لا يستجيب", + "Could not post comment: %s": "لا يمكن نشر تعليق: %s", + "Sending paste…": "يُرسل لصق…", + "Your paste is %s (Hit [Ctrl]+[c] to copy)": "لصقك هو %s (اضغط على [Ctrl] + [c] للنسخ)", + "Delete data": "حذف البيانات", + "Could not create paste: %s": "تعذر إنشاء اللصق: %s", + "Cannot decrypt paste: Decryption key missing in URL (Did you use a redirector or an URL shortener which strips part of the URL?)": "لا يمكن فك تشفير اللصق: مفتاح فك التشفير مفقود في URL (هل استخدمت معيد توجيه أو أداة تقصير لعناوين URL تزيل جزءًا من عنوان URL؟)", + "B": "بايت", + "KiB": "كيلوبايت", + "MiB": "ميجابايت", + "GiB": "جيجابايت", + "TiB": "تيرابايت", + "PiB": "بيتابايت", + "EiB": "إكسابايت", + "ZiB": "زيتابايت", + "YiB": "يوتابايت", + "Format": "التنسيق", + "Plain Text": "نص عادي", + "Source Code": "كود مصدر", + "Markdown": "ماركداون", + "Download attachment": "تنزيل المرفقات", + "Cloned: '%s'": "مستنسخ: '%s'", + "The cloned file '%s' was attached to this paste.": "تم إرفاق المِلَفّ المستنسخ '%s' بهذا اللصق.", + "Attach a file": "إرفاق مِلَفّ", + "alternatively drag & drop a file or paste an image from the clipboard": "بدلاً من ذلك، اسحب ملفًا وأسقطه أو الصق صورة من الحافظة", + "File too large, to display a preview. Please download the attachment.": "المِلَفّ كبير جدًا، بحيث لا يمكن عرض معاينة. الرجاء تنزيل المرفق.", + "Remove attachment": "إزالة المرفق", + "Your browser does not support uploading encrypted files. Please use a newer browser.": "متصفحك لا يدعم رفع الملفات المشفرة. الرجاء استخدام متصفح أحدث.", + "Invalid attachment.": "مرفق غير صحيح.", + "Options": "الخيارات", + "Shorten URL": "تقصير URL", + "Editor": "المحرّر", + "Preview": "معاينة", + "%s requires the PATH to end in a \"%s\". Please update the PATH in your index.php.": "%s يتطلب PATH لينتهي ب \"%s\". يرجى تحديث PATH في ملف index.php الخاص بك.", + "Decrypt": "فك التشفير", + "Enter password": "أدخل كلمة المرور", + "Loading…": "تحميل…", + "Decrypting paste…": "يفك تشفير اللصق…", + "Preparing new paste…": "تحضير لصقة جديدة…", + "In case this message never disappears please have a look at this FAQ for information to troubleshoot.": "في حالة عدم اختفاء هذه الرسالة مطلقًا ، يرجى إلقاء نظرة على الأسئلة الشائعة هذه للحصول على معلومات لتحري الخلل وإصلاحه.", + "+++ no paste text +++": "+++ لا يوجد نص لصق +++", + "Could not get paste data: %s": "تعذر الحصول على لصق البيانات: %s", + "QR code": "رمز QR", + "This website is using an insecure HTTP connection! Please use it only for testing.": "هذا الموقع يستخدم اتصال HTTP غير آمن! الرجاء استخدامه للاختبار فقط.", + "For more information see this FAQ entry.": "لمزيد من المعلومات راجع هذه الأسئلة الشائعة.", + "Your browser may require an HTTPS connection to support the WebCrypto API. Try switching to HTTPS.": "قد يتطلب متصفحك اتصال HTTPS لدعم WebCrypto API. حاول التبديل إلى HTTPS .", + "Your browser doesn't support WebAssembly, used for zlib compression. You can create uncompressed documents, but can't read compressed ones.": "لا يدعم المستعرض الخاص بك WebAssembly، المستخدم لضغط zlib. يمكنك إنشاء مستندات غير مضغوطة، لكن لا يمكنك قراءة المستندات المضغوطة.", + "waiting on user to provide a password": "ينتظر المستخدم لتقديم كلمة مرور", + "Could not decrypt data. Did you enter a wrong password? Retry with the button at the top.": "تعذر فك تشفير البيانات. هل أدخلت كلمة مرور خاطئة؟ أعِد المحاولة باستخدام الزر الموجود في الأعلى.", + "Retry": "أعِد المحاولة", + "Showing raw text…": "يُظهر نص خام…", + "Notice:": "إشعار:", + "This link will expire after %s.": "ستنتهي صلاحية هذا الرابط بعد %s.", + "This link can only be accessed once, do not use back or refresh button in your browser.": "لا يمكن الوصول إلى هذا الرابط إلا مرة واحدة، لا تستخدم زر الرجوع أو التحديث في متصفحك.", + "Link:": "الرابط:", + "Recipient may become aware of your timezone, convert time to UTC?": "قد يكون المستلم على علم بمنطقتك الزمنية، هل تريد تحويل الوقت إلى التوقيت العالمي المنسق (UTC)؟", + "Use Current Timezone": "استخدم المنطقة الزمنية الحالية", + "Convert To UTC": "تحويل إلى UTC", + "Close": "إغلاق", + "Encrypted note on %s": "ملاحظة مشفرة على %s", + "Visit this link to see the note. Giving the URL to anyone allows them to access the note, too.": "زُر هذا الرابط لرؤية الملاحظة. يتيح إعطاء عنوان URL لأي شخص الوصول إلى الملاحظة أيضًا.", + "URL shortener may expose your decrypt key in URL.": "قد يفضح أداة تقصير عناوين URL مفتاح فك التشفير الخاص بك في URL.", + "Save paste": "احفظ اللصق", + "Your IP is not authorized to create pastes.": "عنوان IP الخاص بك غير مصرح له بإنشاء لصُق.", + "Trying to shorten a URL that isn't pointing at our instance.": "محاولة تقصير عنوان URL لا يشير إلى خادمنا.", + "Error calling YOURLS. Probably a configuration issue, like wrong or missing \"apiurl\" or \"signature\".": "خطأ في الاتصال بـ YOURLS. ربما تكون هناك مشكلة في التضبيط، مثل \"apiurl\" أو \"التوقيع\" الخاطئ أو المفقود.", + "Error parsing YOURLS response.": "خطأ في تحليل استجابة YOURLS." } diff --git a/i18n/bg.json b/i18n/bg.json index 244763bb..a05cf306 100644 --- a/i18n/bg.json +++ b/i18n/bg.json @@ -11,6 +11,8 @@ "Моля изчакайте една секунда между всяка публикация.", "Моля изчакайте %d секунди между всяка публикация.", "Моля изчакайте %d секунди между всяка публикация.", + "Моля изчакайте %d секунди между всяка публикация.", + "Моля изчакайте %d секунди между всяка публикация.", "Моля изчакайте %d секунди между всяка публикация." ], "Paste is limited to %s of encrypted data.": "Съдържанието е ограничено до %s криптирана информация.", @@ -38,42 +40,56 @@ "%d секунди", "%d секунда", "%d секунда", + "%d секунда", + "%d секунда", "%d секунда" ], "%d minutes": [ "%d минути", "%d минута", "%d минута", + "%d минута", + "%d минута", "%d минута" ], "%d hours": [ "%d часа", "%d час", "%d час", + "%d час", + "%d час", "%d час" ], "%d days": [ "%d дни", "%d ден", "%d ден", + "%d ден", + "%d ден", "%d ден" ], "%d weeks": [ "%d седмици", "%d седмица", "%d седмица", + "%d седмица", + "%d седмица", "%d седмица" ], "%d months": [ "%d месеци", "%d месец", "%d месец", + "%d месец", + "%d месец", "%d месец" ], "%d years": [ "%d години", "%d година", "%d година", + "%d година", + "%d година", "%d година" ], "Never": "Никога", @@ -82,30 +98,40 @@ "Този документ изтича след една секунда.", "Този документ изтича след %d секунди.", "Този документ изтича след %d секунди.", + "Този документ изтича след %d секунди.", + "Този документ изтича след %d секунди.", "Този документ изтича след %d секунди." ], "This document will expire in %d minutes.": [ "Този документ изтича след една минута.", "Този документ изтича след %d минути.", "Този документ изтича след %d минути.", + "Този документ изтича след %d минути.", + "Този документ изтича след %d минути.", "Този документ изтича след %d минути." ], "This document will expire in %d hours.": [ "Този документ изтича след един час.", "Този документ изтича след %d часа.", "Този документ изтича след %d часа.", + "Този документ изтича след %d часа.", + "Този документ изтича след %d часа.", "Този документ изтича след %d часа." ], "This document will expire in %d days.": [ "Този документ изтича след един ден.", "Този документ изтича след %d дни.", "Този документ изтича след %d дни.", + "Този документ изтича след %d дни.", + "Този документ изтича след %d дни.", "Този документ изтича след %d дни." ], "This document will expire in %d months.": [ "Този документ изтича след една година.", "Този документ изтича след %d години.", "Този документ изтича след %d години.", + "Този документ изтича след %d години.", + "Този документ изтича след %d години.", "Този документ изтича след %d години." ], "Please enter the password for this paste:": "Моля въведете паролата за това съдържание:", @@ -139,7 +165,7 @@ "EiB": "EiB", "ZiB": "ZiB", "YiB": "YiB", - "Format": "Format", + "Format": "Формат", "Plain Text": "Чист текст", "Source Code": "Изходен код", "Markdown": "Markdown", @@ -172,7 +198,7 @@ "Your browser doesn't support WebAssembly, used for zlib compression. You can create uncompressed documents, but can't read compressed ones.": "Your browser doesn't support WebAssembly, used for zlib compression. You can create uncompressed documents, but can't read compressed ones.", "waiting on user to provide a password": "waiting on user to provide a password", "Could not decrypt data. Did you enter a wrong password? Retry with the button at the top.": "Could not decrypt data. Did you enter a wrong password? Retry with the button at the top.", - "Retry": "Retry", + "Retry": "Нов опит", "Showing raw text…": "Showing raw text…", "Notice:": "Notice:", "This link will expire after %s.": "This link will expire after %s.", @@ -181,7 +207,7 @@ "Recipient may become aware of your timezone, convert time to UTC?": "Recipient may become aware of your timezone, convert time to UTC?", "Use Current Timezone": "Use Current Timezone", "Convert To UTC": "Convert To UTC", - "Close": "Close", + "Close": "Затваряне", "Encrypted note on %s": "Encrypted note on %s", "Visit this link to see the note. Giving the URL to anyone allows them to access the note, too.": "Visit this link to see the note. Giving the URL to anyone allows them to access the note, too.", "URL shortener may expose your decrypt key in URL.": "URL shortener may expose your decrypt key in URL.", diff --git a/i18n/ca.json b/i18n/ca.json index b1e09367..6d38be5c 100644 --- a/i18n/ca.json +++ b/i18n/ca.json @@ -10,8 +10,10 @@ "Please wait %d seconds between each post.": [ "Espereu %d segon entre cada entrada.", "Espereu %d segons entre cada entrada.", - "Please wait %d seconds between each post. (2nd plural)", - "Please wait %d seconds between each post. (3rd plural)" + "Espereu %d segons entre cada entrada.", + "Espereu %d segons entre cada entrada.", + "Espereu %d segons entre cada entrada.", + "Espereu %d segons entre cada entrada." ], "Paste is limited to %s of encrypted data.": "L'enganxat està limitat a %s de dades encriptades.", "Invalid data.": "Dades no vàlides.", @@ -37,44 +39,58 @@ "%d seconds": [ "%d segon", "%d segons", - "%d seconds (2nd plural)", - "%d seconds (3rd plural)" + "%d segons", + "%d segons", + "%d segons", + "%d segons" ], "%d minutes": [ "%d minut", "%d minuts", "%d minutes (2nd plural)", - "%d minutes (3rd plural)" + "%d minutes (3rd plural)", + "%d minuts", + "%d minuts" ], "%d hours": [ "%d hora", "%d hores", "%d hours (2nd plural)", - "%d hours (3rd plural)" + "%d hours (3rd plural)", + "%d hores", + "%d hores" ], "%d days": [ "%d dia", "%d dies", - "%d days (2nd plural)", - "%d days (3rd plural)" + "%d dies", + "%d dies", + "%d dies", + "%d dies" ], "%d weeks": [ "%d setmana", "%d setmanes", - "%d weeks (2nd plural)", - "%d weeks (3rd plural)" + "%d setmanes", + "%d setmanes", + "%d setmanes", + "%d setmanes" ], "%d months": [ "%d mes", "%d mesos", - "%d months (2nd plural)", - "%d months (3rd plural)" + "%d mesos", + "%d mesos", + "%d mesos", + "%d mesos" ], "%d years": [ "%d any", "%d anys", - "%d years (2nd plural)", - "%d years (3rd plural)" + "%d anys", + "%d anys", + "%d anys", + "%d anys" ], "Never": "Mai", "Note: This is a test service: Data may be deleted anytime. Kittens will die if you abuse this service.": "Note: This is a test service: Data may be deleted anytime. Kittens will die if you abuse this service.", @@ -82,30 +98,40 @@ "Aquest document caducarà d'aquí %d segon.", "Aquest document caducarà d'aquí %d segons.", "Aquest document caducarà d'aquí %d segons.", + "Aquest document caducarà d'aquí %d segons.", + "Aquest document caducarà d'aquí %d segons.", "Aquest document caducarà d'aquí %d segons." ], "This document will expire in %d minutes.": [ "Aquest document caducarà d'aquí %d minut.", "Aquest document caducarà d'aquí %d minuts.", "Aquest document caducarà d'aquí %d minuts.", + "Aquest document caducarà d'aquí %d minuts.", + "Aquest document caducarà d'aquí %d minuts.", "Aquest document caducarà d'aquí %d minuts." ], "This document will expire in %d hours.": [ "Aquest document caducarà d'aquí %d hora.", "Aquest document caducarà d'aquí %d hores.", "Aquest document caducarà d'aquí %d hores.", + "Aquest document caducarà d'aquí %d hores.", + "Aquest document caducarà d'aquí %d hores.", "Aquest document caducarà d'aquí %d hores." ], "This document will expire in %d days.": [ "Aquest document caducarà d'aquí %d dia.", "Aquest document caducarà d'aquí %d dies.", "Aquest document caducarà d'aquí %d dies.", + "Aquest document caducarà d'aquí %d dies.", + "Aquest document caducarà d'aquí %d dies.", "Aquest document caducarà d'aquí %d dies." ], "This document will expire in %d months.": [ "Aquest document caducarà d'aquí %d mes.", "Aquest document caducarà d'aquí %d mesos.", "Aquest document caducarà d'aquí %d mesos.", + "Aquest document caducarà d'aquí %d mesos.", + "Aquest document caducarà d'aquí %d mesos.", "Aquest document caducarà d'aquí %d mesos." ], "Please enter the password for this paste:": "Si us plau, introdueix la contrasenya per aquest paste:", diff --git a/i18n/co.json b/i18n/co.json index a4a75a37..8317423d 100644 --- a/i18n/co.json +++ b/i18n/co.json @@ -11,6 +11,8 @@ "Aspettate %d seconda trà dui publicazioni.", "Aspettate %d seconde trà dui publicazioni.", "Aspettate %d seconde trà dui publicazioni.", + "Aspettate %d seconde trà dui publicazioni.", + "Aspettate %d seconde trà dui publicazioni.", "Aspettate %d seconde trà dui publicazioni." ], "Paste is limited to %s of encrypted data.": "L’appiccicu hè limitatu à %s di dati cifrati.", @@ -38,42 +40,56 @@ "%d seconda", "%d seconde", "%d seconde", + "%d seconde", + "%d seconde", "%d seconde" ], "%d minutes": [ "%d minutu", "%d minuti", "%d minuti", + "%d minuti", + "%d minuti", "%d minuti" ], "%d hours": [ "%d ora", "%d ore", "%d ore", + "%d ore", + "%d ore", "%d ore" ], "%d days": [ "%d ghjornu", "%d ghjorni", "%d ghjorni", + "%d ghjorni", + "%d ghjorni", "%d ghjorni" ], "%d weeks": [ "%d settimana", "%d settimane", "%d settimane", + "%d settimane", + "%d settimane", "%d settimane" ], "%d months": [ "%d mese", "%d mesi", "%d mesi", + "%d mesi", + "%d mesi", "%d mesi" ], "%d years": [ "%d annu", "%d anni", "%d anni", + "%d anni", + "%d anni", "%d anni" ], "Never": "Mai", @@ -82,30 +98,40 @@ "Stu ducumentu serà scadutu in %d seconda.", "Stu ducumentu serà scadutu in %d seconde.", "Stu ducumentu serà scadutu in %d seconde.", + "Stu ducumentu serà scadutu in %d seconde.", + "Stu ducumentu serà scadutu in %d seconde.", "Stu ducumentu serà scadutu in %d seconde." ], "This document will expire in %d minutes.": [ "Stu ducumentu serà scadutu in %d minutu.", "Stu ducumentu serà scadutu in %d minuti.", "Stu ducumentu serà scadutu in %d minuti.", + "Stu ducumentu serà scadutu in %d minuti.", + "Stu ducumentu serà scadutu in %d minuti.", "Stu ducumentu serà scadutu in %d minuti." ], "This document will expire in %d hours.": [ "Stu ducumentu serà scadutu in %d ora.", "Stu ducumentu serà scadutu in %d ore.", "Stu ducumentu serà scadutu in %d ore.", + "Stu ducumentu serà scadutu in %d ore.", + "Stu ducumentu serà scadutu in %d ore.", "Stu ducumentu serà scadutu in %d ore." ], "This document will expire in %d days.": [ "Stu ducumentu serà scadutu in %d ghjornu.", "Stu ducumentu serà scadutu in %d ghjorni.", "Stu ducumentu serà scadutu in %d ghjorni.", + "Stu ducumentu serà scadutu in %d ghjorni.", + "Stu ducumentu serà scadutu in %d ghjorni.", "Stu ducumentu serà scadutu in %d ghjorni." ], "This document will expire in %d months.": [ "Stu ducumentu serà scadutu in %d mese.", "Stu ducumentu serà scadutu in %d mesi.", "Stu ducumentu serà scadutu in %d mesi.", + "Stu ducumentu serà scadutu in %d mesi.", + "Stu ducumentu serà scadutu in %d mesi.", "Stu ducumentu serà scadutu in %d mesi." ], "Please enter the password for this paste:": "Stampittate a parolla d’intesa per st’appiccicu :", diff --git a/i18n/cs.json b/i18n/cs.json index d10f3ef4..fc422853 100644 --- a/i18n/cs.json +++ b/i18n/cs.json @@ -1,13 +1,15 @@ { "PrivateBin": "PrivateBin", "%s is a minimalist, open source online pastebin where the server has zero knowledge of pasted data. Data is encrypted/decrypted %sin the browser%s using 256 bits AES.": "%s je minimalistický open source 'pastebin' server, který neanalyzuje vložená data. Data jsou šifrována %sv prohlížeči%s pomocí 256 bitů AES.", - "More information on the project page.": "Více informací na stránce projektu.", + "More information on the project page.": "Více informací na stránce projetu.", "Because ignorance is bliss": "Protože nevědomost je sladká", "en": "cs", "Paste does not exist, has expired or has been deleted.": "Vložený text neexistuje, expiroval nebo byl odstraněn.", "%s requires php %s or above to work. Sorry.": "%s vyžaduje php %s nebo vyšší. Lituji.", "%s requires configuration section [%s] to be present in configuration file.": "%s vyžaduje, aby byla v konfiguračním souboru přítomna sekce [%s].", "Please wait %d seconds between each post.": [ + "Počet sekund do dalšího příspěvku: %d.", + "Počet sekund do dalšího příspěvku: %d.", "Počet sekund do dalšího příspěvku: %d.", "Počet sekund do dalšího příspěvku: %d.", "Počet sekund do dalšího příspěvku: %d.", @@ -38,43 +40,57 @@ "%d sekuda", "%d sekundy", "%d sekund", - "%d seconds (3rd plural)" + "%d sekund", + "%d sekund", + "%d sekund" ], "%d minutes": [ "%d minuta", "%d minuty", "%d minut", - "%d minutes (3rd plural)" + "%d minut", + "%d minut", + "%d minut" ], "%d hours": [ "%d hodina", "%d hodiny", "%d hodin", - "%d hours (3rd plural)" + "%d hodin", + "%d hodin", + "%d hodin" ], "%d days": [ "%d den", "%d dny", "%d dní", - "%d days (3rd plural)" + "%d dní", + "%d dní", + "%d dní" ], "%d weeks": [ "%d týden", "%d týdeny", "%d týdnů", - "%d weeks (3rd plural)" + "%d týdnů", + "%d týdnů", + "%d týdnů" ], "%d months": [ "%d měsíc", "%d měsíce", "%d měsíců", - "%d months (3rd plural)" + "%d měsíců", + "%d měsíců", + "%d měsíců" ], "%d years": [ "%d rok", "%d roky", "%d roků", - "%d years (3rd plural)" + "%d roků", + "%d roků", + "%d roků" ], "Never": "Nikdy", "Note: This is a test service: Data may be deleted anytime. Kittens will die if you abuse this service.": "Poznámka: Tato služba slouží k vyzkoušení: Data mohou být kdykoliv smazána. Při zneužití této služby zemřou koťátka.", @@ -82,30 +98,40 @@ "Tento dokument expiruje za %d sekundu.", "Tento dokument expiruje za %d sekundy.", "Tento dokument expiruje za %d sekund.", + "Tento dokument expiruje za %d sekund.", + "Tento dokument expiruje za %d sekund.", "Tento dokument expiruje za %d sekund." ], "This document will expire in %d minutes.": [ "Tento dokument expiruje za %d minutu.", "Tento dokument expiruje za %d minuty.", "Tento dokument expiruje za %d minut.", + "Tento dokument expiruje za %d minut.", + "Tento dokument expiruje za %d minut.", "Tento dokument expiruje za %d minut." ], "This document will expire in %d hours.": [ "Tento dokument expiruje za %d hodinu.", "Tento dokument expiruje za %d hodiny.", "Tento dokument expiruje za %d hodin.", + "Tento dokument expiruje za %d hodin.", + "Tento dokument expiruje za %d hodin.", "Tento dokument expiruje za %d hodin." ], "This document will expire in %d days.": [ "Tento dokument expiruje za %d den.", "Tento dokument expiruje za %d dny.", "Tento dokument expiruje za %d dny.", + "Tento dokument expiruje za %d dny.", + "Tento dokument expiruje za %d dny.", "Tento dokument expiruje za %d dny." ], "This document will expire in %d months.": [ "Tento dokument expiruje za %d měsíc.", "Tento dokument expiruje za %d měsíce.", "Tento dokument expiruje za %d měsíců.", + "Tento dokument expiruje za %d měsíců.", + "Tento dokument expiruje za %d měsíců.", "Tento dokument expiruje za %d měsíců." ], "Please enter the password for this paste:": "Zadejte prosím heslo:", diff --git a/i18n/de.json b/i18n/de.json index 8c83a146..39e1c4ed 100644 --- a/i18n/de.json +++ b/i18n/de.json @@ -11,6 +11,8 @@ "Bitte warte eine Sekunde zwischen dem Absenden zweier Beiträge.", "Bitte warte %d Sekunden zwischen dem Absenden zweier Beiträge.", "Bitte warte %d Sekunden zwischen dem Absenden zweier Beiträge.", + "Bitte warte %d Sekunden zwischen dem Absenden zweier Beiträge.", + "Bitte warte %d Sekunden zwischen dem Absenden zweier Beiträge.", "Bitte warte %d Sekunden zwischen dem Absenden zweier Beiträge." ], "Paste is limited to %s of encrypted data.": "Texte sind auf %s verschlüsselte Datenmenge beschränkt.", @@ -37,44 +39,58 @@ "%d seconds": [ "%d Sekunde", "%d Sekunden", - "%d seconds (2nd plural)", - "%d seconds (3rd plural)" + "%d Sekunden", + "%d Sekunden", + "%d Sekunden", + "%d Sekunden" ], "%d minutes": [ "%d Minute", "%d Minuten", - "%d minutes (2nd plural)", - "%d minutes (3rd plural)" + "%d Minuten", + "%d Minuten", + "%d Minuten", + "%d Minuten" ], "%d hours": [ "%d Stunde", "%d Stunden", - "%d hours (2nd plural)", - "%d hours (3rd plural)" + "%d Stunden", + "%d Stunden", + "%d Stunden", + "%d Stunden" ], "%d days": [ "%d Tag", "%d Tage", - "%d days (2nd plural)", - "%d days (3rd plural)" + "%d Tage", + "%d Tage", + "%d Tage", + "%d Tage" ], "%d weeks": [ "%d Woche", "%d Wochen", - "%d weeks (2nd plural)", - "%d weeks (3rd plural)" + "%d Wochen", + "%d Wochen", + "%d Wochen", + "%d Wochen" ], "%d months": [ "%d Monat", "%d Monate", - "%d months (2nd plural)", - "%d months (3rd plural)" + "%d Monate", + "%d Monate", + "%d Monate", + "%d Monate" ], "%d years": [ "%d Jahr", "%d Jahre", - "%d years (2nd plural)", - "%d years (3rd plural)" + "%d Monate", + "%d Monate", + "%d Monate", + "%d Monate" ], "Never": "Nie", "Note: This is a test service: Data may be deleted anytime. Kittens will die if you abuse this service.": "Hinweis: Dies ist ein Versuchsdienst. Daten können jederzeit gelöscht werden. Kätzchen werden sterben, wenn du diesen Dienst missbrauchst.", @@ -82,30 +98,40 @@ "Dieses Dokument läuft in einer Sekunde ab.", "Dieses Dokument läuft in %d Sekunden ab.", "Dieses Dokument läuft in %d Sekunden ab.", + "Dieses Dokument läuft in %d Sekunden ab.", + "Dieses Dokument läuft in %d Sekunden ab.", "Dieses Dokument läuft in %d Sekunden ab." ], "This document will expire in %d minutes.": [ "Dieses Dokument läuft in einer Minute ab.", "Dieses Dokument läuft in %d Minuten ab.", "Dieses Dokument läuft in %d Minuten ab.", + "Dieses Dokument läuft in %d Minuten ab.", + "Dieses Dokument läuft in %d Minuten ab.", "Dieses Dokument läuft in %d Minuten ab." ], "This document will expire in %d hours.": [ "Dieses Dokument läuft in einer Stunde ab.", "Dieses Dokument läuft in %d Stunden ab.", - "This document will expire in %d hours (2nd plural)", - "This document will expire in %d hours (3rd plural)" + "Dieses Dokument läuft in %d Stunden ab.", + "Dieses Dokument läuft in %d Stunden ab.", + "Dieses Dokument läuft in %d Stunden ab.", + "Dieses Dokument läuft in %d Stunden ab." ], "This document will expire in %d days.": [ "Dieses Dokument läuft in einem Tag ab.", "Dieses Dokument läuft in %d Tagen ab.", "Dieses Dokument läuft in %d Tagen ab.", + "Dieses Dokument läuft in %d Tagen ab.", + "Dieses Dokument läuft in %d Tagen ab.", "Dieses Dokument läuft in %d Tagen ab." ], "This document will expire in %d months.": [ "Dieses Dokument läuft in einem Monat ab.", "Dieses Dokument läuft in %d Monaten ab.", "Dieses Dokument läuft in %d Monaten ab.", + "Dieses Dokument läuft in %d Monaten ab.", + "Dieses Dokument läuft in %d Monaten ab.", "Dieses Dokument läuft in %d Monaten ab." ], "Please enter the password for this paste:": "Bitte gib das Passwort für diesen Text ein:", diff --git a/i18n/el.json b/i18n/el.json index fbb14805..f5f5a49d 100644 --- a/i18n/el.json +++ b/i18n/el.json @@ -11,6 +11,8 @@ "Παρακαλώ περιμένετε %d δευτερόλεπτο μεταξύ κάθε επικόλλησης.", "Παρακαλώ περιμένετε %d δευτερόλεπτα μεταξύ κάθε επικόλλησης.", "Παρακαλώ περιμένετε %d δευτερόλεπτα μεταξύ κάθε επικόλλησης.", + "Παρακαλώ περιμένετε %d δευτερόλεπτα μεταξύ κάθε επικόλλησης.", + "Παρακαλώ περιμένετε %d δευτερόλεπτα μεταξύ κάθε επικόλλησης.", "Παρακαλώ περιμένετε %d δευτερόλεπτα μεταξύ κάθε επικόλλησης." ], "Paste is limited to %s of encrypted data.": "Η επικόλληση είναι περιορισμένη σε %s κρυπτογραφημένων δεδομένων.", @@ -38,42 +40,56 @@ "%d δευτερόλεπτο", "%d δευτερόλεπτα", "%d δευτερόλεπτα", + "%d δευτερόλεπτα", + "%d δευτερόλεπτα", "%d δευτερόλεπτα" ], "%d minutes": [ "%d λεπτό", "%d λεπτά", "%d λεπτά", + "%d λεπτά", + "%d λεπτά", "%d λεπτά" ], "%d hours": [ "%d ώρα", "%d ώρες", "%d ώρες", + "%d ώρες", + "%d ώρες", "%d ώρες" ], "%d days": [ "%d ημέρα", "%d ημέρες", "%d ημέρες", + "%d ημέρες", + "%d ημέρες", "%d ημέρες" ], "%d weeks": [ "%d εβδομάδα", "%d εβδομάδες", "%d εβδομάδες", + "%d εβδομάδες", + "%d εβδομάδες", "%d εβδομάδες" ], "%d months": [ "%d μήνας", "%d μήνες", "%d μήνες", + "%d μήνες", + "%d μήνες", "%d μήνες" ], "%d years": [ "%d χρόνο", "%d χρόνια", "%d χρόνια", + "%d χρόνια", + "%d χρόνια", "%d χρόνια" ], "Never": "Ποτέ", @@ -82,30 +98,40 @@ "Αυτό το έγγραφο θα λήξει σε %d δευτερόλεπτο.", "Αυτό το έγγραφο θα λήξει σε %d δευτερόλεπτα.", "Αυτό το έγγραφο θα λήξει σε %d δευτερόλεπτα.", + "Αυτό το έγγραφο θα λήξει σε %d δευτερόλεπτα.", + "Αυτό το έγγραφο θα λήξει σε %d δευτερόλεπτα.", "Αυτό το έγγραφο θα λήξει σε %d δευτερόλεπτα." ], "This document will expire in %d minutes.": [ "Αυτό το έγγραφο θα λήξει σε %d λεπτό.", "Αυτό το έγγραφο θα λήξει σε %d λεπτά.", "Αυτό το έγγραφο θα λήξει σε %d λεπτά.", + "Αυτό το έγγραφο θα λήξει σε %d λεπτά.", + "Αυτό το έγγραφο θα λήξει σε %d λεπτά.", "Αυτό το έγγραφο θα λήξει σε %d λεπτά." ], "This document will expire in %d hours.": [ "Αυτό το έγγραφο θα λήξει σε %d ώρα.", "Αυτό το έγγραφο θα λήξει σε %d ώρες.", "Αυτό το έγγραφο θα λήξει σε %d ώρες.", + "Αυτό το έγγραφο θα λήξει σε %d ώρες.", + "Αυτό το έγγραφο θα λήξει σε %d ώρες.", "Αυτό το έγγραφο θα λήξει σε %d ώρες." ], "This document will expire in %d days.": [ "Αυτό το έγγραφο θα λήξει σε %d ημέρα.", "Αυτό το έγγραφο θα λήξει σε %d ημέρες.", "Αυτό το έγγραφο θα λήξει σε %d ημέρες.", + "Αυτό το έγγραφο θα λήξει σε %d ημέρες.", + "Αυτό το έγγραφο θα λήξει σε %d ημέρες.", "Αυτό το έγγραφο θα λήξει σε %d ημέρες." ], "This document will expire in %d months.": [ "Αυτό το έγγραφο θα λήξει σε %d μήνα.", "Αυτό το έγγραφο θα λήξει σε %d μήνες.", "Αυτό το έγγραφο θα λήξει σε %d μήνες.", + "Αυτό το έγγραφο θα λήξει σε %d μήνες.", + "Αυτό το έγγραφο θα λήξει σε %d μήνες.", "Αυτό το έγγραφο θα λήξει σε %d μήνες." ], "Please enter the password for this paste:": "Παρακαλώ εισάγετε τον κωδικό για αυτή την επικόληση:", diff --git a/i18n/en.json b/i18n/en.json index a4d6d350..4f5ebb6b 100644 --- a/i18n/en.json +++ b/i18n/en.json @@ -11,7 +11,9 @@ "Please wait %d second between each post. (singular)", "Please wait %d seconds between each post. (1st plural)", "Please wait %d seconds between each post. (2nd plural)", - "Please wait %d seconds between each post. (3rd plural)" + "Please wait %d seconds between each post. (3rd plural)", + "Please wait %d seconds between each post. (4th plural)", + "Please wait %d seconds between each post. (5th plural)" ], "Paste is limited to %s of encrypted data.": "Paste is limited to %s of encrypted data.", "Invalid data.": "Invalid data.", @@ -38,43 +40,57 @@ "%d second (singular)", "%d seconds (1st plural)", "%d seconds (2nd plural)", - "%d seconds (3rd plural)" + "%d seconds (3rd plural)", + "%d seconds (4th plural)", + "%d seconds (5th plural)" ], "%d minutes": [ "%d minute (singular)", "%d minutes (1st plural)", "%d minutes (2nd plural)", - "%d minutes (3rd plural)" + "%d minutes (3rd plural)", + "%d minutes (4th plural)", + "%d minutes (5th plural)" ], "%d hours": [ "%d hour (singular)", "%d hours (1st plural)", "%d hours (2nd plural)", - "%d hours (3rd plural)" + "%d hours (3rd plural)", + "%d hours (4th plural)", + "%d hours (5th plural)" ], "%d days": [ "%d day (singular)", "%d days (1st plural)", "%d days (2nd plural)", - "%d days (3rd plural)" + "%d days (3rd plural)", + "%d days (4th plural)", + "%d days (5th plural)" ], "%d weeks": [ "%d week (singular)", "%d weeks (1st plural)", "%d weeks (2nd plural)", - "%d weeks (3rd plural)" + "%d weeks (3rd plural)", + "%d weeks (4th plural)", + "%d weeks (5th plural)" ], "%d months": [ "%d month (singular)", "%d months (1st plural)", "%d months (2nd plural)", - "%d months (3rd plural)" + "%d months (3rd plural)", + "%d months (4th plural)", + "%d months (5th plural)" ], "%d years": [ "%d year (singular)", "%d years (1st plural)", "%d years (2nd plural)", - "%d years (3rd plural)" + "%d years (3rd plural)", + "%d years (4th plural)", + "%d years (5th plural)" ], "Never": "Never", "Note: This is a test service: Data may be deleted anytime. Kittens will die if you abuse this service.": "Note: This is a test service: Data may be deleted anytime. Kittens will die if you abuse this service.", @@ -82,31 +98,41 @@ "This document will expire in %d second. (singular)", "This document will expire in %d seconds. (1st plural)", "This document will expire in %d seconds. (2nd plural)", - "This document will expire in %d seconds. (3rd plural)" + "This document will expire in %d seconds. (3rd plural)", + "This document will expire in %d seconds. (4th plural)", + "This document will expire in %d seconds. (5th plural)" ], "This document will expire in %d minutes.": [ "This document will expire in %d minute. (singular)", "This document will expire in %d minutes. (1st plural)", "This document will expire in %d minutes. (2nd plural)", - "This document will expire in %d minutes. (3rd plural)" + "This document will expire in %d minutes. (3rd plural)", + "This document will expire in %d minutes. (4th plural)", + "This document will expire in %d minutes. (5th plural)" ], "This document will expire in %d hours.": [ "This document will expire in %d hour. (singular)", "This document will expire in %d hours. (1st plural)", "This document will expire in %d hours. (2nd plural)", - "This document will expire in %d hours. (3rd plural)" + "This document will expire in %d hours. (3rd plural)", + "This document will expire in %d hours. (4th plural)", + "This document will expire in %d hours. (5th plural)" ], "This document will expire in %d days.": [ "This document will expire in %d day. (singular)", "This document will expire in %d days. (1st plural)", "This document will expire in %d days. (2nd plural)", - "This document will expire in %d days. (3rd plural)" + "This document will expire in %d days. (3rd plural)", + "This document will expire in %d days. (4th plural)", + "This document will expire in %d days. (5th plural)" ], "This document will expire in %d months.": [ "This document will expire in %d month. (singular)", "This document will expire in %d months. (1st plural)", "This document will expire in %d months. (2nd plural)", - "This document will expire in %d months. (3rd plural)" + "This document will expire in %d months. (3rd plural)", + "This document will expire in %d months. (4th plural)", + "This document will expire in %d months. (5th plural)" ], "Please enter the password for this paste:": "Please enter the password for this paste:", "Could not decrypt data (Wrong key?)": "Could not decrypt data (Wrong key?)", diff --git a/i18n/es.json b/i18n/es.json index 45e8ecbc..02b1c4a7 100644 --- a/i18n/es.json +++ b/i18n/es.json @@ -11,6 +11,8 @@ "Por favor espere %d segundo entre cada publicación.", "Por favor espere %d segundos entre cada publicación.", "Por favor espere %d segundos entre cada publicación.", + "Por favor espere %d segundos entre cada publicación.", + "Por favor espere %d segundos entre cada publicación.", "Por favor espere %d segundos entre cada publicación." ], "Paste is limited to %s of encrypted data.": "El \"paste\" está limitado a %s de datos cifrados.", @@ -38,42 +40,56 @@ "%d segundo", "%d segundos", "%d segundos", + "%d segundos", + "%d segundos", "%d segundos" ], "%d minutes": [ "%d minuto", "%d minutos", "%d minutos", + "%d minutos", + "%d minutos", "%d minutos" ], "%d hours": [ "%d hora", "%d horas", "%d horas", + "%d horas", + "%d horas", "%d horas" ], "%d days": [ "%d día", "%d días", "%d días", + "%d días", + "%d días", "%d días" ], "%d weeks": [ "%d semana", "%d semanas", "%d semanas", + "%d semanas", + "%d semanas", "%d semanas" ], "%d months": [ "%d mes", "%d meses", - "%d minutos", + "%d meses", + "%d meses", + "%d meses", "%d meses" ], "%d years": [ "%d año", "%d años", "%d años", + "%d años", + "%d años", "%d años" ], "Never": "Nunca", @@ -82,30 +98,40 @@ "Este documento caducará en un segundo.", "Este documento caducará en %d segundos.", "Este documento caducará en %d segundos", + "Este documento caducará en %d segundos", + "Este documento caducará en %d segundos", "Este documento caducará en %d segundos" ], "This document will expire in %d minutes.": [ "Este documento caducará en un minuto.", "Este documento caducará en %d minutos.", "Este documento caducará en %d minutos", + "Este documento caducará en %d minutos", + "Este documento caducará en %d minutos", "Este documento caducará en %d minutos" ], "This document will expire in %d hours.": [ "Este documento caducará en una hora.", "Este documento caducará en %d horas.", "Este documento caducará en %d horas", + "Este documento caducará en %d horas", + "Este documento caducará en %d horas", "Este documento caducará en %d horas" ], "This document will expire in %d days.": [ "Este documento caducará en un día.", "Este documento caducará en %d días.", "Este documento caducará en %d días", + "Este documento caducará en %d días", + "Este documento caducará en %d días", "Este documento caducará en %d días" ], "This document will expire in %d months.": [ "Este documento caducará en un mes.", "Este documento caducará en %d meses.", "Este documento caducará en %d meses", + "Este documento caducará en %d meses", + "Este documento caducará en %d meses", "Este documento caducará en %d meses" ], "Please enter the password for this paste:": "Por favor ingrese la contraseña para este \"paste\":", @@ -187,7 +213,7 @@ "URL shortener may expose your decrypt key in URL.": "El acortador de URL puede exponer su clave de descifrado en el URL.", "Save paste": "Guardar \"paste\"", "Your IP is not authorized to create pastes.": "Tu IP no está autorizada para crear contenido.", - "Trying to shorten a URL that isn't pointing at our instance.": "Trying to shorten a URL that isn't pointing at our instance.", + "Trying to shorten a URL that isn't pointing at our instance.": "Intentando acortar una URL que no apunta a nuestra instancia.", "Error calling YOURLS. Probably a configuration issue, like wrong or missing \"apiurl\" or \"signature\".": "Error calling YOURLS. Probably a configuration issue, like wrong or missing \"apiurl\" or \"signature\".", "Error parsing YOURLS response.": "Error parsing YOURLS response." } diff --git a/i18n/et.json b/i18n/et.json index 4c8e48b8..a825fffa 100644 --- a/i18n/et.json +++ b/i18n/et.json @@ -11,6 +11,8 @@ "Palun oota %d sekund iga postituse vahel.", "Palun oota %d sekundit iga postituse vahel.", "Palun oota %d sekundit iga postituse vahel.", + "Palun oota %d sekundit iga postituse vahel.", + "Palun oota %d sekundit iga postituse vahel.", "Palun oota %d sekundit iga postituse vahel." ], "Paste is limited to %s of encrypted data.": "Kleepe limiit on %s krüpteeritud andmeid.", @@ -38,71 +40,95 @@ "%d sekund", "%d sekundit", "%d sekundit", + "%d sekundit", + "%d sekundit", "%d sekundit" ], "%d minutes": [ "%d minut", "%d minutit", "%d minutit", + "%d minutit", + "%d minutit", "%d minutit" ], "%d hours": [ "%d tund", "%d tundi", "%d tundi", + "%d tundi", + "%d tundi", "%d tundi" ], "%d days": [ "%d päev", "%d päeva", "%d päeva", + "%d päeva", + "%d päeva", "%d päeva" ], "%d weeks": [ "%d nädal", "%d nädalat", "%d nädalat", + "%d nädalat", + "%d nädalat", "%d nädalat" ], "%d months": [ "%d kuu", "%d kuud", "%d kuud", + "%d kuud", + "%d kuud", "%d kuud" ], "%d years": [ "%d aasta", "%d aastat", "%d aastat", + "%d aastat", + "%d aastat", "%d aastat" ], "Never": "Mitte kunagi", "Note: This is a test service: Data may be deleted anytime. Kittens will die if you abuse this service.": "Märge: See on testimisteenus: Andmeid võidakse igal ajal kustutada. Kiisupojad hukuvad, kui seda teenust kuritarvitad.", "This document will expire in %d seconds.": [ + "See dokument aegub %d sekundi pärast.", + "See dokument aegub %d sekundi pärast.", "See dokument aegub %d sekundi pärast.", "See dokument aegub %d sekundi pärast.", "See dokument aegub %d sekundi pärast.", "See dokument aegub %d sekundi pärast." ], "This document will expire in %d minutes.": [ + "See dokument aegub %d minuti pärast.", + "See dokument aegub %d minuti pärast.", "See dokument aegub %d minuti pärast.", "See dokument aegub %d minuti pärast.", "See dokument aegub %d minuti pärast.", "See dokument aegub %d minuti pärast." ], "This document will expire in %d hours.": [ + "See dokument aegub %d tunni pärast.", + "See dokument aegub %d tunni pärast.", "See dokument aegub %d tunni pärast.", "See dokument aegub %d tunni pärast.", "See dokument aegub %d tunni pärast.", "See dokument aegub %d tunni pärast." ], "This document will expire in %d days.": [ + "See dokument aegub %d päeva pärast.", + "See dokument aegub %d päeva pärast.", "See dokument aegub %d päeva pärast.", "See dokument aegub %d päeva pärast.", "See dokument aegub %d päeva pärast.", "See dokument aegub %d päeva pärast." ], "This document will expire in %d months.": [ + "See dokument aegub %d kuu pärast.", + "See dokument aegub %d kuu pärast.", "See dokument aegub %d kuu pärast.", "See dokument aegub %d kuu pärast.", "See dokument aegub %d kuu pärast.", diff --git a/i18n/fi.json b/i18n/fi.json index 665ea278..c5ae5fc1 100644 --- a/i18n/fi.json +++ b/i18n/fi.json @@ -1,16 +1,18 @@ { "PrivateBin": "PrivateBin", "%s is a minimalist, open source online pastebin where the server has zero knowledge of pasted data. Data is encrypted/decrypted %sin the browser%s using 256 bits AES.": "%s on minimalistinen, avoimen lähdekoodin online pastebin jossa palvelimella ei ole tietoa syötetystä datasta. Data salataan/puretaan %sselaimessa%s käyttäen 256-bittistä AES:ää.", - "More information on the project page.": "Enemmän tietoa projektisivulla.", + "More information on the project page.": "Lisää tietoa projektisivulla.", "Because ignorance is bliss": "Koska tieto lisää tuskaa", "en": "fi", - "Paste does not exist, has expired or has been deleted.": "Pastea ei ole olemassa, se on vanhentunut, tai se on poistettu.", - "%s requires php %s or above to work. Sorry.": "%s tarvitsee php %s-versiota tai uudempaa toimiakseen. Anteeksi.", + "Paste does not exist, has expired or has been deleted.": "Pastea ei ole olemassa, se on vanhentunut tai se on poistettu.", + "%s requires php %s or above to work. Sorry.": "%s vaatii php:n %s-version tai uudemman toimiakseen. Anteeksi.", "%s requires configuration section [%s] to be present in configuration file.": "%s vaatii konfiguraatio-osion [%s] olevan läsnä konfiguraatiotiedostossa.", "Please wait %d seconds between each post.": [ "Odotathan %d sekuntin jokaisen lähetyksen välillä.", "Odotathan %d sekuntia jokaisen lähetyksen välillä.", "Odotathan %d sekuntia jokaisen lähetyksen välillä.", + "Odotathan %d sekuntia jokaisen lähetyksen välillä.", + "Odotathan %d sekuntia jokaisen lähetyksen välillä.", "Odotathan %d sekuntia jokaisen lähetyksen välillä." ], "Paste is limited to %s of encrypted data.": "Paste on rajoitettu kokoon %s salattua dataa.", @@ -22,8 +24,8 @@ "Paste is not of burn-after-reading type.": "Paste ei ole polta-lukemisen-jälkeen-tyyppiä.", "Wrong deletion token. Paste was not deleted.": "Virheellinen poistotunniste. Pastea ei poistettu.", "Paste was properly deleted.": "Paste poistettiin kunnolla.", - "JavaScript is required for %s to work. Sorry for the inconvenience.": "JavaScriptiä tarvitaan jotta %s toimisi. Anteeksi haitasta.", - "%s requires a modern browser to work.": "%s tarvitsee modernia selainta toimiakseen.", + "JavaScript is required for %s to work. Sorry for the inconvenience.": "%s vaatii JavaScriptiä toimiakseen. Anteeksi haitasta.", + "%s requires a modern browser to work.": "%s vaatii modernin selaimen toimiakseen.", "New": "Uusi", "Send": "Lähetä", "Clone": "Kloonaa", @@ -33,47 +35,61 @@ "Open discussion": "Avaa keskustelu", "Password (recommended)": "Salasana (suositeltu)", "Discussion": "Keskustelu", - "Toggle navigation": "Navigointi päällä/pois", + "Toggle navigation": "Navigointi päälle/pois", "%d seconds": [ "%d sekunti", "%d sekuntia", "%d sekuntia", + "%d sekuntia", + "%d sekuntia", "%d sekuntia" ], "%d minutes": [ "%d minuutti", "%d minuuttia", "%d minuuttia", + "%d minuuttia", + "%d minuuttia", "%d minuuttia" ], "%d hours": [ "%d tunti", "%d tuntia", "%d tuntia", + "%d tuntia", + "%d tuntia", "%d tuntia" ], "%d days": [ "%d päivä", "%d päivää", "%d päivää", + "%d päivää", + "%d päivää", "%d päivää" ], "%d weeks": [ "%d viikko", "%d viikkoa", "%d viikkoa", + "%d viikkoa", + "%d viikkoa", "%d viikkoa" ], "%d months": [ "%d kuukausi", "%d kuukautta", "%d kuukautta", + "%d kuukautta", + "%d kuukautta", "%d kuukautta" ], "%d years": [ "%d vuosi", "%d vuotta", "%d vuotta", + "%d vuotta", + "%d vuotta", "%d vuotta" ], "Never": "Ei koskaan", @@ -82,27 +98,37 @@ "Tämä dokumentti vanhenee %d sekuntissa.", "Tämä dokumentti vanhenee %d sekunnissa.", "Tämä dokumentti vanhenee %d sekunnissa.", + "Tämä dokumentti vanhenee %d sekunnissa.", + "Tämä dokumentti vanhenee %d sekunnissa.", "Tämä dokumentti vanhenee %d sekunnissa." ], "This document will expire in %d minutes.": [ + "Tämä dokumentti vanhenee %d minuutissa.", + "Tämä dokumentti vanhenee %d minuutissa.", "Tämä dokumentti vanhenee %d minuutissa.", "Tämä dokumentti vanhenee %d minuutissa.", "Tämä dokumentti vanhenee %d minuutissa.", "Tämä dokumentti vanhenee %d minuutissa." ], "This document will expire in %d hours.": [ + "Tämä dokumentti vanhenee %d tunnissa.", + "Tämä dokumentti vanhenee %d tunnissa.", "Tämä dokumentti vanhenee %d tunnissa.", "Tämä dokumentti vanhenee %d tunnissa.", "Tämä dokumentti vanhenee %d tunnissa.", "Tämä dokumentti vanhenee %d tunnissa." ], "This document will expire in %d days.": [ + "Tämä dokumentti vanhenee %d päivässä.", + "Tämä dokumentti vanhenee %d päivässä.", "Tämä dokumentti vanhenee %d päivässä.", "Tämä dokumentti vanhenee %d päivässä.", "Tämä dokumentti vanhenee %d päivässä.", "Tämä dokumentti vanhenee %d päivässä." ], "This document will expire in %d months.": [ + "Tämä dokumentti vanhenee %d kuukaudessa.", + "Tämä dokumentti vanhenee %d kuukaudessa.", "Tämä dokumentti vanhenee %d kuukaudessa.", "Tämä dokumentti vanhenee %d kuukaudessa.", "Tämä dokumentti vanhenee %d kuukaudessa.", @@ -154,7 +180,7 @@ "Invalid attachment.": "Virheellinen liite.", "Options": "Asetukset", "Shorten URL": "Lyhennä URL", - "Editor": "Muokkaaja", + "Editor": "Muokkain", "Preview": "Esikatselu", "%s requires the PATH to end in a \"%s\". Please update the PATH in your index.php.": "%s vaatii PATH:in loppuvan \"%s\"-merkkiin. Päivitäthän PATH:in index.php:ssäsi.", "Decrypt": "Pura", diff --git a/i18n/fr.json b/i18n/fr.json index 788bd5d5..e50dbc88 100644 --- a/i18n/fr.json +++ b/i18n/fr.json @@ -11,6 +11,8 @@ "Merci d'attendre %d seconde entre chaque publication.", "Merci d'attendre %d secondes entre chaque publication.", "Merci d'attendre %d secondes entre chaque publication.", + "Merci d'attendre %d secondes entre chaque publication.", + "Merci d'attendre %d secondes entre chaque publication.", "Merci d'attendre %d secondes entre chaque publication." ], "Paste is limited to %s of encrypted data.": "Le paste est limité à %s de données chiffrées.", @@ -37,72 +39,96 @@ "%d seconds": [ "%d seconde", "%d secondes", - "%d seconds (2nd plural)", - "%d seconds (3rd plural)" + "%d secondes", + "%d secondes", + "%d secondes", + "%d secondes" ], "%d minutes": [ "%d minute", "%d minutes", - "%d minutes (2nd plural)", - "%d minutes (3rd plural)" + "%d minutes", + "%d minutes", + "%d minutes", + "%d minutes" ], "%d hours": [ "%d heure", "%d heures", - "%d hours (2nd plural)", - "%d hours (3rd plural)" + "%d heures", + "%d heures", + "%d heures", + "%d heures" ], "%d days": [ "%d jour", "%d jours", - "%d days (2nd plural)", - "%d days (3rd plural)" + "%d jours", + "%d jours", + "%d jours", + "%d jours" ], "%d weeks": [ "%d semaine", "%d semaines", - "%d weeks (2nd plural)", - "%d weeks (3rd plural)" + "%d semaines", + "%d semaines", + "%d semaines", + "%d semaines" ], "%d months": [ "%d mois", "%d mois", - "%d months (2nd plural)", - "%d months (3rd plural)" + "%d mois", + "%d mois", + "%d mois", + "%d mois" ], "%d years": [ "%d an", "%d ans", - "%d years (2nd plural)", - "%d years (3rd plural)" + "%d ans", + "%d ans", + "%d ans", + "%d ans" ], "Never": "Jamais", "Note: This is a test service: Data may be deleted anytime. Kittens will die if you abuse this service.": "Note : Ceci est un service de test : les données peuvent être supprimées à tout moment. Des chatons mourront si vous utilisez ce service de manière abusive.", "This document will expire in %d seconds.": [ "Ce document expirera dans %d seconde.", "Ce document expirera dans %d secondes.", - "This document will expire in %d seconds (2nd plural)", - "This document will expire in %d seconds (3rd plural)" + "Ce document expirera dans %d secondes.", + "Ce document expirera dans %d secondes.", + "Ce document expirera dans %d secondes.", + "Ce document expirera dans %d secondes." ], "This document will expire in %d minutes.": [ "Ce document expirera dans %d minute.", "Ce document expirera dans %d minutes.", "Ce document expirera dans %d minutes.", + "Ce document expirera dans %d minutes.", + "Ce document expirera dans %d minutes.", "Ce document expirera dans %d minutes." ], "This document will expire in %d hours.": [ "Ce document expirera dans %d heure.", "Ce document expirera dans %d heures.", "Ce document expirera dans %d heures.", + "Ce document expirera dans %d heures.", + "Ce document expirera dans %d heures.", "Ce document expirera dans %d heures." ], "This document will expire in %d days.": [ "Ce document expirera dans %d jour.", "Ce document expirera dans %d jours.", "Ce document expirera dans %d jours.", + "Ce document expirera dans %d jours.", + "Ce document expirera dans %d jours.", "Ce document expirera dans %d jours." ], "This document will expire in %d months.": [ + "Ce document expirera dans %d mois.", + "Ce document expirera dans %d mois.", "Ce document expirera dans %d mois.", "Ce document expirera dans %d mois.", "Ce document expirera dans %d mois.", diff --git a/i18n/he.json b/i18n/he.json index 6bd54fcc..cc6e7357 100644 --- a/i18n/he.json +++ b/i18n/he.json @@ -11,6 +11,8 @@ "נא להמתין שנייה אחת בין פרסום לפרסום.", "נא להמתין %d שניות בין פרסום לפרסום.", "נא להמתין %d שניות בין פרסום לפרסום.", + "נא להמתין %d שניות בין פרסום לפרסום.", + "נא להמתין %d שניות בין פרסום לפרסום.", "נא להמתין %d שניות בין פרסום לפרסום." ], "Paste is limited to %s of encrypted data.": "ההדבקה מוגבלת ל־%s של נתונים מוצפנים.", @@ -37,43 +39,57 @@ "%d seconds": [ "שנייה אחת", "%d שניות", - "%d שניות (צורת ריבוי 2)", + "%d שניות", + "%d שניות", + "%d שניות", "%d שניות" ], "%d minutes": [ "דקה אחת", "%d דקות", "%d דקות", + "%d דקות", + "%d דקות", "%d דקות" ], "%d hours": [ "שעה אחת", "%d hours (1st plural)", "%d hours (2nd plural)", - "%d hours (3rd plural)" + "%d hours (3rd plural)", + "%d hours (4th plural)", + "%d hours (5th plural)" ], "%d days": [ "יום אחד", "%d ימים", "%d ימים", + "%d ימים", + "%d ימים", "%d ימים" ], "%d weeks": [ "שבוע אחד", "%d שבועות", "%d שבועות", + "%d שבועות", + "%d שבועות", "%d שבועות" ], "%d months": [ "חודש אחד", "%d חודשים", "%d חודשים", + "%d חודשים", + "%d חודשים", "%d חודשים" ], "%d years": [ "שנה אחת", "%d שנים", "%d שנים", + "%d שנים", + "%d שנים", "%d שנים" ], "Never": "לעולם לא", @@ -82,31 +98,41 @@ "This document will expire in %d second. (singular)", "This document will expire in %d seconds. (1st plural)", "This document will expire in %d seconds. (2nd plural)", - "This document will expire in %d seconds. (3rd plural)" + "This document will expire in %d seconds. (3rd plural)", + "This document will expire in %d seconds. (4th plural)", + "This document will expire in %d seconds. (5th plural)" ], "This document will expire in %d minutes.": [ "This document will expire in %d minute. (singular)", "This document will expire in %d minutes. (1st plural)", "This document will expire in %d minutes. (2nd plural)", - "This document will expire in %d minutes. (3rd plural)" + "This document will expire in %d minutes. (3rd plural)", + "This document will expire in %d minutes. (4th plural)", + "This document will expire in %d minutes. (5th plural)" ], "This document will expire in %d hours.": [ "This document will expire in %d hour. (singular)", "This document will expire in %d hours. (1st plural)", "This document will expire in %d hours. (2nd plural)", - "This document will expire in %d hours. (3rd plural)" + "This document will expire in %d hours. (3rd plural)", + "This document will expire in %d hours. (4th plural)", + "This document will expire in %d hours. (5th plural)" ], "This document will expire in %d days.": [ "This document will expire in %d day. (singular)", "This document will expire in %d days. (1st plural)", "This document will expire in %d days. (2nd plural)", - "This document will expire in %d days. (3rd plural)" + "This document will expire in %d days. (3rd plural)", + "This document will expire in %d days. (4th plural)", + "This document will expire in %d days. (5th plural)" ], "This document will expire in %d months.": [ "This document will expire in %d month. (singular)", "This document will expire in %d months. (1st plural)", "This document will expire in %d months. (2nd plural)", - "This document will expire in %d months. (3rd plural)" + "This document will expire in %d months. (3rd plural)", + "This document will expire in %d months. (4th plural)", + "This document will expire in %d months. (5th plural)" ], "Please enter the password for this paste:": "נא למלא את הססמה להדבקה הזו:", "Could not decrypt data (Wrong key?)": "לא ניתן לפענח את הנתונים (מפתח שגוי?)", diff --git a/i18n/hi.json b/i18n/hi.json index 7e8d8c07..7ad6ebc6 100644 --- a/i18n/hi.json +++ b/i18n/hi.json @@ -11,7 +11,9 @@ "Please wait %d second between each post. (singular)", "Please wait %d seconds between each post. (1st plural)", "Please wait %d seconds between each post. (2nd plural)", - "Please wait %d seconds between each post. (3rd plural)" + "Please wait %d seconds between each post. (3rd plural)", + "Please wait %d seconds between each post. (4th plural)", + "Please wait %d seconds between each post. (5th plural)" ], "Paste is limited to %s of encrypted data.": "Paste is limited to %s of encrypted data.", "Invalid data.": "Invalid data.", @@ -38,43 +40,57 @@ "%d second (singular)", "%d seconds (1st plural)", "%d seconds (2nd plural)", - "%d seconds (3rd plural)" + "%d seconds (3rd plural)", + "%d seconds (4th plural)", + "%d seconds (5th plural)" ], "%d minutes": [ "%d minute (singular)", "%d minutes (1st plural)", "%d minutes (2nd plural)", - "%d minutes (3rd plural)" + "%d minutes (3rd plural)", + "%d minutes (4th plural)", + "%d minutes (5th plural)" ], "%d hours": [ "%d hour (singular)", "%d hours (1st plural)", "%d hours (2nd plural)", - "%d hours (3rd plural)" + "%d hours (3rd plural)", + "%d hours (4th plural)", + "%d hours (5th plural)" ], "%d days": [ "%d day (singular)", "%d days (1st plural)", "%d days (2nd plural)", - "%d days (3rd plural)" + "%d days (3rd plural)", + "%d days (4th plural)", + "%d days (5th plural)" ], "%d weeks": [ "%d week (singular)", "%d weeks (1st plural)", "%d weeks (2nd plural)", - "%d weeks (3rd plural)" + "%d weeks (3rd plural)", + "%d weeks (4th plural)", + "%d weeks (5th plural)" ], "%d months": [ "%d month (singular)", "%d months (1st plural)", "%d months (2nd plural)", - "%d months (3rd plural)" + "%d months (3rd plural)", + "%d months (4th plural)", + "%d months (5th plural)" ], "%d years": [ "%d year (singular)", "%d years (1st plural)", "%d years (2nd plural)", - "%d years (3rd plural)" + "%d years (3rd plural)", + "%d years (4th plural)", + "%d years (5th plural)" ], "Never": "Never", "Note: This is a test service: Data may be deleted anytime. Kittens will die if you abuse this service.": "Note: This is a test service: Data may be deleted anytime. Kittens will die if you abuse this service.", @@ -82,31 +98,41 @@ "This document will expire in %d second. (singular)", "This document will expire in %d seconds. (1st plural)", "This document will expire in %d seconds. (2nd plural)", - "This document will expire in %d seconds. (3rd plural)" + "This document will expire in %d seconds. (3rd plural)", + "This document will expire in %d seconds. (4th plural)", + "This document will expire in %d seconds. (5th plural)" ], "This document will expire in %d minutes.": [ "This document will expire in %d minute. (singular)", "This document will expire in %d minutes. (1st plural)", "This document will expire in %d minutes. (2nd plural)", - "This document will expire in %d minutes. (3rd plural)" + "This document will expire in %d minutes. (3rd plural)", + "This document will expire in %d minutes. (4th plural)", + "This document will expire in %d minutes. (5th plural)" ], "This document will expire in %d hours.": [ "This document will expire in %d hour. (singular)", "This document will expire in %d hours. (1st plural)", "This document will expire in %d hours. (2nd plural)", - "This document will expire in %d hours. (3rd plural)" + "This document will expire in %d hours. (3rd plural)", + "This document will expire in %d hours. (4th plural)", + "This document will expire in %d hours. (5th plural)" ], "This document will expire in %d days.": [ "This document will expire in %d day. (singular)", "This document will expire in %d days. (1st plural)", "This document will expire in %d days. (2nd plural)", - "This document will expire in %d days. (3rd plural)" + "This document will expire in %d days. (3rd plural)", + "This document will expire in %d days. (4th plural)", + "This document will expire in %d days. (5th plural)" ], "This document will expire in %d months.": [ "This document will expire in %d month. (singular)", "This document will expire in %d months. (1st plural)", "This document will expire in %d months. (2nd plural)", - "This document will expire in %d months. (3rd plural)" + "This document will expire in %d months. (3rd plural)", + "This document will expire in %d months. (4th plural)", + "This document will expire in %d months. (5th plural)" ], "Please enter the password for this paste:": "Please enter the password for this paste:", "Could not decrypt data (Wrong key?)": "Could not decrypt data (Wrong key?)", diff --git a/i18n/hu.json b/i18n/hu.json index 5f760df3..dc3d583c 100644 --- a/i18n/hu.json +++ b/i18n/hu.json @@ -8,6 +8,8 @@ "%s requires php %s or above to work. Sorry.": "Bocs, de a %s működéséhez %s vagy ezt meghaladó verziójú php-s környezet szükséges.", "%s requires configuration section [%s] to be present in configuration file.": "A %s megfelelő működéséhez a konfigurációs fájlban a [%s] résznek léteznie kell.", "Please wait %d seconds between each post.": [ + "Kérlek várj %d másodpercet két beküldés között.", + "Kérlek várj %d másodpercet két beküldés között.", "Kérlek várj %d másodpercet két beküldés között.", "Kérlek várj %d másodpercet két beküldés között.", "Kérlek várj %d másodpercet két beküldés között.", @@ -37,72 +39,96 @@ "%d seconds": [ "%d másodperc", "%d másodperc", - "%d seconds (2nd plural)", - "%d seconds (3rd plural)" + "%d másodperc", + "%d másodperc", + "%d másodperc", + "%d másodperc" ], "%d minutes": [ "%d perc", "%d perc", - "%d minutes (2nd plural)", - "%d minutes (3rd plural)" + "%d perc", + "%d perc", + "%d perc", + "%d perc" ], "%d hours": [ "%d óra", "%d óra", - "%d hours (2nd plural)", - "%d hours (3rd plural)" + "%d óra", + "%d óra", + "%d óra", + "%d óra" ], "%d days": [ "%d nap", "%d nap", - "%d days (2nd plural)", - "%d days (3rd plural)" + "%d nap", + "%d nap", + "%d nap", + "%d nap" ], "%d weeks": [ "%d hét", "%d hét", - "%d weeks (2nd plural)", - "%d weeks (3rd plural)" + "%d hét", + "%d hét", + "%d hét", + "%d hét" ], "%d months": [ "%d hónap", "%d hónap", - "%d months (2nd plural)", - "%d months (3rd plural)" + "%d hónap", + "%d hónap", + "%d hónap", + "%d hónap" ], "%d years": [ "%d év", "%d év", - "%d years (2nd plural)", - "%d years (3rd plural)" + "%d év", + "%d év", + "%d év", + "%d év" ], "Never": "Soha", "Note: This is a test service: Data may be deleted anytime. Kittens will die if you abuse this service.": "Megjegyzés: ez egy teszt szolgáltatás, az adatok bármikor törlődhetnek. Ha visszaélsz vele, kiscicák bánhatják! :)", "This document will expire in %d seconds.": [ + "Ez a bejegyzés %d másodperc múlva megsemmisül.", + "Ez a bejegyzés %d másodperc múlva megsemmisül.", "Ez a bejegyzés %d másodperc múlva megsemmisül.", "Ez a bejegyzés %d másodperc múlva megsemmisül.", "Ez a bejegyzés %d másodperc múlva megsemmisül.", "Ez a bejegyzés %d másodperc múlva megsemmisül." ], "This document will expire in %d minutes.": [ + "Ez a bejegyzés %d perc múlva megsemmisül.", + "Ez a bejegyzés %d perc múlva megsemmisül.", "Ez a bejegyzés %d perc múlva megsemmisül.", "Ez a bejegyzés %d perc múlva megsemmisül.", "Ez a bejegyzés %d perc múlva megsemmisül.", "Ez a bejegyzés %d perc múlva megsemmisül." ], "This document will expire in %d hours.": [ + "Ez a bejegyzés %d óra múlva megsemmisül.", + "Ez a bejegyzés %d óra múlva megsemmisül.", "Ez a bejegyzés %d óra múlva megsemmisül.", "Ez a bejegyzés %d óra múlva megsemmisül.", "Ez a bejegyzés %d óra múlva megsemmisül.", "Ez a bejegyzés %d óra múlva megsemmisül." ], "This document will expire in %d days.": [ + "Ez a bejegyzés %d nap múlva megsemmisül.", + "Ez a bejegyzés %d nap múlva megsemmisül.", "Ez a bejegyzés %d nap múlva megsemmisül.", "Ez a bejegyzés %d nap múlva megsemmisül.", "Ez a bejegyzés %d nap múlva megsemmisül.", "Ez a bejegyzés %d nap múlva megsemmisül." ], "This document will expire in %d months.": [ + "Ez a bejegyzés %d hónap múlva megsemmisül.", + "Ez a bejegyzés %d hónap múlva megsemmisül.", "Ez a bejegyzés %d hónap múlva megsemmisül.", "Ez a bejegyzés %d hónap múlva megsemmisül.", "Ez a bejegyzés %d hónap múlva megsemmisül.", diff --git a/i18n/id.json b/i18n/id.json index 4c5af357..e3c589e1 100644 --- a/i18n/id.json +++ b/i18n/id.json @@ -8,6 +8,8 @@ "%s requires php %s or above to work. Sorry.": "%s memerlukan php %s atau versi diatasnya untuk dapat dijalankan. Maaf.", "%s requires configuration section [%s] to be present in configuration file.": "%s membutuhkan bagian konfigurasi [%s] untuk ada di file konfigurasi.", "Please wait %d seconds between each post.": [ + "Silahkan menunggu %d detik antara masing-masing postingan.", + "Silahkan menunggu %d detik antara masing-masing postingan.", "Silahkan menunggu %d detik antara masing-masing postingan.", "Silahkan menunggu %d detik antara masing-masing postingan.", "Silahkan menunggu %d detik antara masing-masing postingan.", @@ -35,42 +37,56 @@ "Discussion": "Diskusi", "Toggle navigation": "Alihkan navigasi", "%d seconds": [ + "%d detik", + "%d detik", "%d detik", "%d detik", "%d detik", "%d detik" ], "%d minutes": [ + "%d menit", + "%d menit", "%d menit", "%d menit", "%d menit", "%d menit" ], "%d hours": [ + "%d jam", + "%d jam", "%d jam", "%d jam", "%d jam", "%d jam" ], "%d days": [ + "%d hari", + "%d hari", "%d hari", "%d hari", "%d hari", "%d hari" ], "%d weeks": [ + "%d minggu", + "%d minggu", "%d minggu", "%d minggu", "%d minggu", "%d minggu" ], "%d months": [ + "%d bulan", + "%d bulan", "%d bulan", "%d bulan", "%d bulan", "%d bulan" ], "%d years": [ + "%d tahun", + "%d tahun", "%d tahun", "%d tahun", "%d tahun", @@ -79,30 +95,40 @@ "Never": "Jangan pernah", "Note: This is a test service: Data may be deleted anytime. Kittens will die if you abuse this service.": "Catatan: Ini adalah layanan percobaan: Data mungkin bisa terhapus kapanpun juga. Anak-anak kucing akan mati jika Anda mengekploitasi layanan ini.", "This document will expire in %d seconds.": [ + "Dokumen ini kadaluarsa dalam %d detik.", + "Dokumen ini kadaluarsa dalam %d detik.", "Dokumen ini kadaluarsa dalam %d detik.", "Dokumen ini kadaluarsa dalam %d detik.", "Dokumen ini kadaluarsa dalam %d detik.", "Dokumen ini kadaluarsa dalam %d detik." ], "This document will expire in %d minutes.": [ + "Dokumen ini akan kadaluarsa dalam %d menit.", + "Dokumen ini akan kadaluarsa dalam %d menit.", "Dokumen ini akan kadaluarsa dalam %d menit.", "Dokumen ini akan kadaluarsa dalam %d menit.", "Dokumen ini akan kadaluarsa dalam %d menit.", "Dokumen ini akan kadaluarsa dalam %d menit." ], "This document will expire in %d hours.": [ + "Dokumen ini akan kadaluarsa dalam %d jam.", + "Dokumen ini akan kadaluarsa dalam %d jam.", "Dokumen ini akan kadaluarsa dalam %d jam.", "Dokumen ini akan kadaluarsa dalam %d jam.", "Dokumen ini akan kadaluarsa dalam %d jam.", "Dokumen ini akan kadaluarsa dalam %d jam." ], "This document will expire in %d days.": [ + "Dokumen ini akan kadaluarsa dalam %d hari.", + "Dokumen ini akan kadaluarsa dalam %d hari.", "Dokumen ini akan kadaluarsa dalam %d hari.", "Dokumen ini akan kadaluarsa dalam %d hari.", "Dokumen ini akan kadaluarsa dalam %d hari.", "Dokumen ini akan kadaluarsa dalam %d hari." ], "This document will expire in %d months.": [ + "Dokumen ini akan kadaluarsa dalam %d bulan.", + "Dokumen ini akan kadaluarsa dalam %d bulan.", "Dokumen ini akan kadaluarsa dalam %d bulan.", "Dokumen ini akan kadaluarsa dalam %d bulan.", "Dokumen ini akan kadaluarsa dalam %d bulan.", diff --git a/i18n/it.json b/i18n/it.json index 49112b31..d111f9b2 100644 --- a/i18n/it.json +++ b/i18n/it.json @@ -11,6 +11,8 @@ "Attendi per favore un secondo prima di ciascun invio.", "Attendi per favore %d secondi prima di ciascun invio.", "Attendi per favore %d secondi prima di ciascun invio.", + "Attendi per favore %d secondi prima di ciascun invio.", + "Attendi per favore %d secondi prima di ciascun invio.", "Attendi per favore %d secondi prima di ciascun invio." ], "Paste is limited to %s of encrypted data.": "La dimensione del messaggio è limitata a %s di dati cifrati.", @@ -37,44 +39,58 @@ "%d seconds": [ "%d secondo", "%d secondi", - "%d seconds (2nd plural)", - "%d seconds (3rd plural)" + "%d secondi", + "%d secondi", + "%d secondi", + "%d secondi" ], "%d minutes": [ "%d minuto", "%d minuti", - "%d minutes (2nd plural)", - "%d minutes (3rd plural)" + "%d minuti", + "%d minuti", + "%d minuti", + "%d minuti" ], "%d hours": [ "%d ora", "%d ore", - "%d hours (2nd plural)", - "%d hours (3rd plural)" + "%d ore", + "%d ore", + "%d ore", + "%d ore" ], "%d days": [ "%d giorno", "%d giorni", - "%d days (2nd plural)", - "%d days (3rd plural)" + "%d giorni", + "%d giorni", + "%d giorni", + "%d giorni" ], "%d weeks": [ "%d settimana", "%d settimane", - "%d weeks (2nd plural)", - "%d weeks (3rd plural)" + "%d settimane", + "%d settimane", + "%d settimane", + "%d settimane" ], "%d months": [ "%d mese", "%d mesi", - "%d months (2nd plural)", - "%d months (3rd plural)" + "%d mesi", + "%d mesi", + "%d mesi", + "%d mesi" ], "%d years": [ "%d anno", "%d anni", - "%d years (2nd plural)", - "%d years (3rd plural)" + "%d anni", + "%d anni", + "%d anni", + "%d anni" ], "Never": "Mai", "Note: This is a test service: Data may be deleted anytime. Kittens will die if you abuse this service.": "Nota: questo è un servizio di prova, i messaggi salvati possono essere cancellati in qualsiasi momento. Moriranno dei gattini se abuserai di questo servizio.", @@ -82,30 +98,40 @@ "Questo documento scadrà tra un secondo.", "Questo documento scadrà in %d secondi.", "Questo documento scadrà in %d secondi.", + "Questo documento scadrà in %d secondi.", + "Questo documento scadrà in %d secondi.", "Questo documento scadrà in %d secondi." ], "This document will expire in %d minutes.": [ "Questo documento scadrà tra un minuto.", "Questo documento scadrà in %d minuti.", "Questo documento scadrà in %d minuti.", + "Questo documento scadrà in %d minuti.", + "Questo documento scadrà in %d minuti.", "Questo documento scadrà in %d minuti." ], "This document will expire in %d hours.": [ "Questo documento scadrà tra un'ora.", "Questo documento scadrà in %d ore.", "Questo documento scadrà in %d ore.", + "Questo documento scadrà in %d ore.", + "Questo documento scadrà in %d ore.", "Questo documento scadrà in %d ore." ], "This document will expire in %d days.": [ "Questo documento scadrà tra un giorno.", "Questo documento scadrà in %d giorni.", "Questo documento scadrà in %d giorni.", + "Questo documento scadrà in %d giorni.", + "Questo documento scadrà in %d giorni.", "Questo documento scadrà in %d giorni." ], "This document will expire in %d months.": [ "Questo documento scadrà tra un mese.", "Questo documento scadrà in %d mesi.", "Questo documento scadrà in %d mesi.", + "Questo documento scadrà in %d mesi.", + "Questo documento scadrà in %d mesi.", "Questo documento scadrà in %d mesi." ], "Please enter the password for this paste:": "Inserisci la password per questo messaggio:", @@ -187,7 +213,7 @@ "URL shortener may expose your decrypt key in URL.": "URL shortener può esporre la tua chiave decrittografata nell'URL.", "Save paste": "Salva il messagio", "Your IP is not authorized to create pastes.": "Il tuo IP non è autorizzato a creare dei messaggi.", - "Trying to shorten a URL that isn't pointing at our instance.": "Trying to shorten a URL that isn't pointing at our instance.", - "Error calling YOURLS. Probably a configuration issue, like wrong or missing \"apiurl\" or \"signature\".": "Error calling YOURLS. Probably a configuration issue, like wrong or missing \"apiurl\" or \"signature\".", - "Error parsing YOURLS response.": "Error parsing YOURLS response." + "Trying to shorten a URL that isn't pointing at our instance.": "Tantativo in corso di accorciare un URL che non punta alla nostra istanza.", + "Error calling YOURLS. Probably a configuration issue, like wrong or missing \"apiurl\" or \"signature\".": "Errore nella chiamata a YOURLS. Probabilmente un problema di configurazione, come un \"apiurl\" o una \"signature\" sbagliati o mancanti.", + "Error parsing YOURLS response.": "Errore nell'analizzare la risposta YOURLS." } diff --git a/i18n/ja.json b/i18n/ja.json index 6f243f92..0363b0f5 100644 --- a/i18n/ja.json +++ b/i18n/ja.json @@ -11,7 +11,9 @@ "Please wait %d second between each post. (singular)", "Please wait %d seconds between each post. (1st plural)", "Please wait %d seconds between each post. (2nd plural)", - "Please wait %d seconds between each post. (3rd plural)" + "Please wait %d seconds between each post. (3rd plural)", + "Please wait %d seconds between each post. (4th plural)", + "Please wait %d seconds between each post. (5th plural)" ], "Paste is limited to %s of encrypted data.": "Paste is limited to %s of encrypted data.", "Invalid data.": "Invalid data.", @@ -24,8 +26,8 @@ "Paste was properly deleted.": "Paste was properly deleted.", "JavaScript is required for %s to work. Sorry for the inconvenience.": "JavaScript is required for %s to work. Sorry for the inconvenience.", "%s requires a modern browser to work.": "%s requires a modern browser to work.", - "New": "New", - "Send": "Send", + "New": "新しい", + "Send": "送る", "Clone": "Clone", "Raw text": "Raw text", "Expires": "Expires", @@ -38,43 +40,57 @@ "%d second (singular)", "%d seconds (1st plural)", "%d seconds (2nd plural)", - "%d seconds (3rd plural)" + "%d seconds (3rd plural)", + "%d seconds (4th plural)", + "%d seconds (5th plural)" ], "%d minutes": [ - "%d minute (singular)", - "%d minutes (1st plural)", - "%d minutes (2nd plural)", - "%d minutes (3rd plural)" + "%d 分", + "%d 分", + "%d 分", + "%d 分", + "%d 分", + "%d 分" ], "%d hours": [ - "%d hour (singular)", - "%d hours (1st plural)", - "%d hours (2nd plural)", - "%d hours (3rd plural)" + "%d 時間", + "%d 時間", + "%d 時間", + "%d 時間", + "%d 時間", + "%d 時間" ], "%d days": [ - "%d day (singular)", - "%d days (1st plural)", - "%d days (2nd plural)", - "%d days (3rd plural)" + "%d 日", + "%d 日", + "%d 日", + "%d 日", + "%d 日", + "%d 日" ], "%d weeks": [ "%d week (singular)", "%d weeks (1st plural)", "%d weeks (2nd plural)", - "%d weeks (3rd plural)" + "%d weeks (3rd plural)", + "%d weeks (4th plural)", + "%d weeks (5th plural)" ], "%d months": [ "%d month (singular)", "%d months (1st plural)", "%d months (2nd plural)", - "%d months (3rd plural)" + "%d months (3rd plural)", + "%d months (4th plural)", + "%d months (5th plural)" ], "%d years": [ "%d year (singular)", "%d years (1st plural)", "%d years (2nd plural)", - "%d years (3rd plural)" + "%d years (3rd plural)", + "%d years (4th plural)", + "%d years (5th plural)" ], "Never": "Never", "Note: This is a test service: Data may be deleted anytime. Kittens will die if you abuse this service.": "Note: This is a test service: Data may be deleted anytime. Kittens will die if you abuse this service.", @@ -82,31 +98,41 @@ "This document will expire in %d second. (singular)", "This document will expire in %d seconds. (1st plural)", "This document will expire in %d seconds. (2nd plural)", - "This document will expire in %d seconds. (3rd plural)" + "This document will expire in %d seconds. (3rd plural)", + "This document will expire in %d seconds. (4th plural)", + "This document will expire in %d seconds. (5th plural)" ], "This document will expire in %d minutes.": [ "This document will expire in %d minute. (singular)", "This document will expire in %d minutes. (1st plural)", "This document will expire in %d minutes. (2nd plural)", - "This document will expire in %d minutes. (3rd plural)" + "This document will expire in %d minutes. (3rd plural)", + "This document will expire in %d minutes. (4th plural)", + "This document will expire in %d minutes. (5th plural)" ], "This document will expire in %d hours.": [ "This document will expire in %d hour. (singular)", "This document will expire in %d hours. (1st plural)", "This document will expire in %d hours. (2nd plural)", - "This document will expire in %d hours. (3rd plural)" + "This document will expire in %d hours. (3rd plural)", + "This document will expire in %d hours. (4th plural)", + "This document will expire in %d hours. (5th plural)" ], "This document will expire in %d days.": [ "This document will expire in %d day. (singular)", "This document will expire in %d days. (1st plural)", "This document will expire in %d days. (2nd plural)", - "This document will expire in %d days. (3rd plural)" + "This document will expire in %d days. (3rd plural)", + "This document will expire in %d days. (4th plural)", + "This document will expire in %d days. (5th plural)" ], "This document will expire in %d months.": [ "This document will expire in %d month. (singular)", "This document will expire in %d months. (1st plural)", "This document will expire in %d months. (2nd plural)", - "This document will expire in %d months. (3rd plural)" + "This document will expire in %d months. (3rd plural)", + "This document will expire in %d months. (4th plural)", + "This document will expire in %d months. (5th plural)" ], "Please enter the password for this paste:": "Please enter the password for this paste:", "Could not decrypt data (Wrong key?)": "Could not decrypt data (Wrong key?)", diff --git a/i18n/jbo.json b/i18n/jbo.json index 307e0303..3f29ea08 100644 --- a/i18n/jbo.json +++ b/i18n/jbo.json @@ -11,7 +11,9 @@ "Please wait %d second between each post. (singular)", "Please wait %d seconds between each post. (1st plural)", "Please wait %d seconds between each post. (2nd plural)", - "Please wait %d seconds between each post. (3rd plural)" + "Please wait %d seconds between each post. (3rd plural)", + "Please wait %d seconds between each post. (4th plural)", + "Please wait %d seconds between each post. (5th plural)" ], "Paste is limited to %s of encrypted data.": "Paste is limited to %s of encrypted data.", "Invalid data.": ".i le selru'e cu na drani", @@ -38,43 +40,57 @@ "%d second (singular)", "%d seconds (1st plural)", "%d seconds (2nd plural)", - "%d seconds (3rd plural)" + "%d seconds (3rd plural)", + "%d seconds (4th plural)", + "%d seconds (5th plural)" ], "%d minutes": [ "%d minute (singular)", "%d minutes (1st plural)", "%d minutes (2nd plural)", - "%d minutes (3rd plural)" + "%d minutes (3rd plural)", + "%d minutes (4th plural)", + "%d minutes (5th plural)" ], "%d hours": [ "%d hour (singular)", "%d hours (1st plural)", "%d hours (2nd plural)", - "%d hours (3rd plural)" + "%d hours (3rd plural)", + "%d hours (4th plural)", + "%d hours (5th plural)" ], "%d days": [ "%d day (singular)", "%d days (1st plural)", "%d days (2nd plural)", - "%d days (3rd plural)" + "%d days (3rd plural)", + "%d days (4th plural)", + "%d days (5th plural)" ], "%d weeks": [ "%d week (singular)", "%d weeks (1st plural)", "%d weeks (2nd plural)", - "%d weeks (3rd plural)" + "%d weeks (3rd plural)", + "%d weeks (4th plural)", + "%d weeks (5th plural)" ], "%d months": [ "%d month (singular)", "%d months (1st plural)", "%d months (2nd plural)", - "%d months (3rd plural)" + "%d months (3rd plural)", + "%d months (4th plural)", + "%d months (5th plural)" ], "%d years": [ "%d year (singular)", "%d years (1st plural)", "%d years (2nd plural)", - "%d years (3rd plural)" + "%d years (3rd plural)", + "%d years (4th plural)", + "%d years (5th plural)" ], "Never": "Never", "Note: This is a test service: Data may be deleted anytime. Kittens will die if you abuse this service.": "Note: This is a test service: Data may be deleted anytime. Kittens will die if you abuse this service.", @@ -82,31 +98,41 @@ "This document will expire in %d second. (singular)", "This document will expire in %d seconds. (1st plural)", "This document will expire in %d seconds. (2nd plural)", - "This document will expire in %d seconds. (3rd plural)" + "This document will expire in %d seconds. (3rd plural)", + "This document will expire in %d seconds. (4th plural)", + "This document will expire in %d seconds. (5th plural)" ], "This document will expire in %d minutes.": [ "This document will expire in %d minute. (singular)", "This document will expire in %d minutes. (1st plural)", "This document will expire in %d minutes. (2nd plural)", - "This document will expire in %d minutes. (3rd plural)" + "This document will expire in %d minutes. (3rd plural)", + "This document will expire in %d minutes. (4th plural)", + "This document will expire in %d minutes. (5th plural)" ], "This document will expire in %d hours.": [ "This document will expire in %d hour. (singular)", "This document will expire in %d hours. (1st plural)", "This document will expire in %d hours. (2nd plural)", - "This document will expire in %d hours. (3rd plural)" + "This document will expire in %d hours. (3rd plural)", + "This document will expire in %d hours. (4th plural)", + "This document will expire in %d hours. (5th plural)" ], "This document will expire in %d days.": [ "This document will expire in %d day. (singular)", "This document will expire in %d days. (1st plural)", "This document will expire in %d days. (2nd plural)", - "This document will expire in %d days. (3rd plural)" + "This document will expire in %d days. (3rd plural)", + "This document will expire in %d days. (4th plural)", + "This document will expire in %d days. (5th plural)" ], "This document will expire in %d months.": [ "This document will expire in %d month. (singular)", "This document will expire in %d months. (1st plural)", "This document will expire in %d months. (2nd plural)", - "This document will expire in %d months. (3rd plural)" + "This document will expire in %d months. (3rd plural)", + "This document will expire in %d months. (4th plural)", + "This document will expire in %d months. (5th plural)" ], "Please enter the password for this paste:": "Please enter the password for this paste:", "Could not decrypt data (Wrong key?)": "Could not decrypt data (Wrong key?)", diff --git a/i18n/ku.json b/i18n/ku.json index 8a0bbaac..ebb1bec3 100644 --- a/i18n/ku.json +++ b/i18n/ku.json @@ -11,7 +11,9 @@ "Please wait %d second between each post. (singular)", "Please wait %d seconds between each post. (1st plural)", "Please wait %d seconds between each post. (2nd plural)", - "Please wait %d seconds between each post. (3rd plural)" + "Please wait %d seconds between each post. (3rd plural)", + "Please wait %d seconds between each post. (4th plural)", + "Please wait %d seconds between each post. (5th plural)" ], "Paste is limited to %s of encrypted data.": "Paste is limited to %s of encrypted data.", "Invalid data.": "Invalid data.", @@ -38,43 +40,57 @@ "%d second (singular)", "%d seconds (1st plural)", "%d seconds (2nd plural)", - "%d seconds (3rd plural)" + "%d seconds (3rd plural)", + "%d seconds (4th plural)", + "%d seconds (5th plural)" ], "%d minutes": [ "%d minute (singular)", "%d minutes (1st plural)", "%d minutes (2nd plural)", - "%d minutes (3rd plural)" + "%d minutes (3rd plural)", + "%d minutes (4th plural)", + "%d minutes (5th plural)" ], "%d hours": [ "%d hour (singular)", "%d hours (1st plural)", "%d hours (2nd plural)", - "%d hours (3rd plural)" + "%d hours (3rd plural)", + "%d hours (4th plural)", + "%d hours (5th plural)" ], "%d days": [ "%d day (singular)", "%d days (1st plural)", "%d days (2nd plural)", - "%d days (3rd plural)" + "%d days (3rd plural)", + "%d days (4th plural)", + "%d days (5th plural)" ], "%d weeks": [ "%d week (singular)", "%d weeks (1st plural)", "%d weeks (2nd plural)", - "%d weeks (3rd plural)" + "%d weeks (3rd plural)", + "%d weeks (4th plural)", + "%d weeks (5th plural)" ], "%d months": [ "%d month (singular)", "%d months (1st plural)", "%d months (2nd plural)", - "%d months (3rd plural)" + "%d months (3rd plural)", + "%d months (4th plural)", + "%d months (5th plural)" ], "%d years": [ "%d year (singular)", "%d years (1st plural)", "%d years (2nd plural)", - "%d years (3rd plural)" + "%d years (3rd plural)", + "%d years (4th plural)", + "%d years (5th plural)" ], "Never": "Never", "Note: This is a test service: Data may be deleted anytime. Kittens will die if you abuse this service.": "Note: This is a test service: Data may be deleted anytime. Kittens will die if you abuse this service.", @@ -82,31 +98,41 @@ "This document will expire in %d second. (singular)", "This document will expire in %d seconds. (1st plural)", "This document will expire in %d seconds. (2nd plural)", - "This document will expire in %d seconds. (3rd plural)" + "This document will expire in %d seconds. (3rd plural)", + "This document will expire in %d seconds. (4th plural)", + "This document will expire in %d seconds. (5th plural)" ], "This document will expire in %d minutes.": [ "This document will expire in %d minute. (singular)", "This document will expire in %d minutes. (1st plural)", "This document will expire in %d minutes. (2nd plural)", - "This document will expire in %d minutes. (3rd plural)" + "This document will expire in %d minutes. (3rd plural)", + "This document will expire in %d minutes. (4th plural)", + "This document will expire in %d minutes. (5th plural)" ], "This document will expire in %d hours.": [ "This document will expire in %d hour. (singular)", "This document will expire in %d hours. (1st plural)", "This document will expire in %d hours. (2nd plural)", - "This document will expire in %d hours. (3rd plural)" + "This document will expire in %d hours. (3rd plural)", + "This document will expire in %d hours. (4th plural)", + "This document will expire in %d hours. (5th plural)" ], "This document will expire in %d days.": [ "This document will expire in %d day. (singular)", "This document will expire in %d days. (1st plural)", "This document will expire in %d days. (2nd plural)", - "This document will expire in %d days. (3rd plural)" + "This document will expire in %d days. (3rd plural)", + "This document will expire in %d days. (4th plural)", + "This document will expire in %d days. (5th plural)" ], "This document will expire in %d months.": [ "This document will expire in %d month. (singular)", "This document will expire in %d months. (1st plural)", "This document will expire in %d months. (2nd plural)", - "This document will expire in %d months. (3rd plural)" + "This document will expire in %d months. (3rd plural)", + "This document will expire in %d months. (4th plural)", + "This document will expire in %d months. (5th plural)" ], "Please enter the password for this paste:": "Please enter the password for this paste:", "Could not decrypt data (Wrong key?)": "Could not decrypt data (Wrong key?)", diff --git a/i18n/la.json b/i18n/la.json index 54d9b3f8..600c335e 100644 --- a/i18n/la.json +++ b/i18n/la.json @@ -11,7 +11,9 @@ "Please wait %d second between each post. (singular)", "Please wait %d seconds between each post. (1st plural)", "Please wait %d seconds between each post. (2nd plural)", - "Please wait %d seconds between each post. (3rd plural)" + "Please wait %d seconds between each post. (3rd plural)", + "Please wait %d seconds between each post. (4th plural)", + "Please wait %d seconds between each post. (5th plural)" ], "Paste is limited to %s of encrypted data.": "Paste is limited to %s of encrypted data.", "Invalid data.": "Invalid data.", @@ -38,43 +40,57 @@ "%d second (singular)", "%d seconds (1st plural)", "%d seconds (2nd plural)", - "%d seconds (3rd plural)" + "%d seconds (3rd plural)", + "%d seconds (4th plural)", + "%d seconds (5th plural)" ], "%d minutes": [ "%d minute (singular)", "%d minutes (1st plural)", "%d minutes (2nd plural)", - "%d minutes (3rd plural)" + "%d minutes (3rd plural)", + "%d minutes (4th plural)", + "%d minutes (5th plural)" ], "%d hours": [ "%d hour (singular)", "%d hours (1st plural)", "%d hours (2nd plural)", - "%d hours (3rd plural)" + "%d hours (3rd plural)", + "%d hours (4th plural)", + "%d hours (5th plural)" ], "%d days": [ "%d day (singular)", "%d days (1st plural)", "%d days (2nd plural)", - "%d days (3rd plural)" + "%d days (3rd plural)", + "%d days (4th plural)", + "%d days (5th plural)" ], "%d weeks": [ "%d week (singular)", "%d weeks (1st plural)", "%d weeks (2nd plural)", - "%d weeks (3rd plural)" + "%d weeks (3rd plural)", + "%d weeks (4th plural)", + "%d weeks (5th plural)" ], "%d months": [ "%d month (singular)", "%d months (1st plural)", "%d months (2nd plural)", - "%d months (3rd plural)" + "%d months (3rd plural)", + "%d months (4th plural)", + "%d months (5th plural)" ], "%d years": [ "%d year (singular)", "%d years (1st plural)", "%d years (2nd plural)", - "%d years (3rd plural)" + "%d years (3rd plural)", + "%d years (4th plural)", + "%d years (5th plural)" ], "Never": "Never", "Note: This is a test service: Data may be deleted anytime. Kittens will die if you abuse this service.": "Note: This is a test service: Data may be deleted anytime. Kittens will die if you abuse this service.", @@ -82,31 +98,41 @@ "This document will expire in %d second. (singular)", "This document will expire in %d seconds. (1st plural)", "This document will expire in %d seconds. (2nd plural)", - "This document will expire in %d seconds. (3rd plural)" + "This document will expire in %d seconds. (3rd plural)", + "This document will expire in %d seconds. (4th plural)", + "This document will expire in %d seconds. (5th plural)" ], "This document will expire in %d minutes.": [ "This document will expire in %d minute. (singular)", "This document will expire in %d minutes. (1st plural)", "This document will expire in %d minutes. (2nd plural)", - "This document will expire in %d minutes. (3rd plural)" + "This document will expire in %d minutes. (3rd plural)", + "This document will expire in %d minutes. (4th plural)", + "This document will expire in %d minutes. (5th plural)" ], "This document will expire in %d hours.": [ "This document will expire in %d hour. (singular)", "This document will expire in %d hours. (1st plural)", "This document will expire in %d hours. (2nd plural)", - "This document will expire in %d hours. (3rd plural)" + "This document will expire in %d hours. (3rd plural)", + "This document will expire in %d hours. (4th plural)", + "This document will expire in %d hours. (5th plural)" ], "This document will expire in %d days.": [ "This document will expire in %d day. (singular)", "This document will expire in %d days. (1st plural)", "This document will expire in %d days. (2nd plural)", - "This document will expire in %d days. (3rd plural)" + "This document will expire in %d days. (3rd plural)", + "This document will expire in %d days. (4th plural)", + "This document will expire in %d days. (5th plural)" ], "This document will expire in %d months.": [ "This document will expire in %d month. (singular)", "This document will expire in %d months. (1st plural)", "This document will expire in %d months. (2nd plural)", - "This document will expire in %d months. (3rd plural)" + "This document will expire in %d months. (3rd plural)", + "This document will expire in %d months. (4th plural)", + "This document will expire in %d months. (5th plural)" ], "Please enter the password for this paste:": "Please enter the password for this paste:", "Could not decrypt data (Wrong key?)": "Could not decrypt data (Wrong key?)", diff --git a/i18n/lt.json b/i18n/lt.json index a8c8d96b..6feba7c3 100644 --- a/i18n/lt.json +++ b/i18n/lt.json @@ -9,9 +9,11 @@ "%s requires configuration section [%s] to be present in configuration file.": "%s reikalauja, kad konfigūracijos faile būtų [%s] konfigūracijos sekcija.", "Please wait %d seconds between each post.": [ "Tarp kiekvieno įrašo palaukite %d sekundę.", - "Tarp kiekvieno įrašo palaukite %d sekundes.", + "Tarp kiekvieno įrašo palaukite %d sekundės.", "Tarp kiekvieno įrašo palaukite %d sekundžių.", - "Tarp kiekvieno įrašo palaukite %d sekundę." + "Tarp kiekvieno įrašo palaukite %d sekundžių.", + "Tarp kiekvieno įrašo palaukite %d sekundžių.", + "Tarp kiekvieno įrašo palaukite %d sekundžių." ], "Paste is limited to %s of encrypted data.": "Įdėjimas yra apribotas iki %s šifruotų duomenų.", "Invalid data.": "Neteisingi duomenys.", @@ -35,42 +37,56 @@ "Discussion": "Diskusija", "Toggle navigation": "Perjungti naršymą", "%d seconds": [ + "%d sekundę", "%d sekundės", "%d sekundžių", "%d sekundžių", - "%d sekundės" + "%d sekundžių", + "%d sekundžių" ], "%d minutes": [ "%d minutės", "%d minučių", "%d minučių", - "%d minutės" + "%d minučių", + "%d minučių", + "%d minučių" ], "%d hours": [ "%d valandos", "%d valandų", "%d valandų", - "%d valandos" + "%d valandų", + "%d valandų", + "%d valandų" ], "%d days": [ "%d dienos", "%d dienų", "%d dienų", - "%d dienos" + "%d dienų", + "%d dienų", + "%d dienų" ], "%d weeks": [ "%d savaitės", "%d savaičių", "%d savaičių", - "%d savaitės" + "%d savaičių", + "%d savaičių", + "%d savaičių" ], "%d months": [ "%d mėnesio", "%d mėnesių", "%d mėnesių", - "%d mėnesio" + "%d mėnesių", + "%d mėnesių", + "%d mėnesių" ], "%d years": [ + "%d metų", + "%d metų", "%d metų", "%d metų", "%d metų", @@ -82,31 +98,41 @@ "Šis dokumentas nustos galioti po %d sekundės.", "Šis dokumentas nustos galioti po %d sekundžių.", "Šis dokumentas nustos galioti po %d sekundžių.", - "Šis dokumentas nustos galioti po %d sekundės." + "Šis dokumentas nustos galioti po %d sekundžių.", + "Šis dokumentas nustos galioti po %d sekundžių.", + "Šis dokumentas nustos galioti po %d sekundžių." ], "This document will expire in %d minutes.": [ "Šis dokumentas nustos galioti po %d minutės.", "Šis dokumentas nustos galioti po %d minučių.", "Šis dokumentas nustos galioti po %d minučių.", - "Šis dokumentas nustos galioti po %d minutės." + "Šis dokumentas nustos galioti po %d minučių.", + "Šis dokumentas nustos galioti po %d minučių.", + "Šis dokumentas nustos galioti po %d minučių." ], "This document will expire in %d hours.": [ "Šis dokumentas nustos galioti po %d valandos.", "Šis dokumentas nustos galioti po %d valandų.", "Šis dokumentas nustos galioti po %d valandų.", - "Šis dokumentas nustos galioti po %d valandos." + "Šis dokumentas nustos galioti po %d valandų.", + "Šis dokumentas nustos galioti po %d valandų.", + "Šis dokumentas nustos galioti po %d valandų." ], "This document will expire in %d days.": [ "Šis dokumentas nustos galioti po %d dienos.", "Šis dokumentas nustos galioti po %d dienų.", "Šis dokumentas nustos galioti po %d dienų.", - "Šis dokumentas nustos galioti po %d dienos." + "Šis dokumentas nustos galioti po %d dienų.", + "Šis dokumentas nustos galioti po %d dienų.", + "Šis dokumentas nustos galioti po %d dienų." ], "This document will expire in %d months.": [ "Šis dokumentas nustos galioti po %d mėnesio.", "Šis dokumentas nustos galioti po %d mėnesių.", "Šis dokumentas nustos galioti po %d mėnesių.", - "Šis dokumentas nustos galioti po %d mėnesio." + "Šis dokumentas nustos galioti po %d mėnesių.", + "Šis dokumentas nustos galioti po %d mėnesių.", + "Šis dokumentas nustos galioti po %d mėnesių." ], "Please enter the password for this paste:": "Įveskite šio įdėjimo slaptažodį:", "Could not decrypt data (Wrong key?)": "Nepavyko iššifruoti duomenų (Neteisingas raktas?)", diff --git a/i18n/nl.json b/i18n/nl.json index 0c18589a..13bac777 100644 --- a/i18n/nl.json +++ b/i18n/nl.json @@ -11,12 +11,14 @@ "Alstublieft %d second wachten tussen elk bericht.", "Alstublieft %d seconden wachten tussen elk bericht.", "Alstublieft %d seconden wachten tussen elk bericht.", + "Alstublieft %d seconden wachten tussen elk bericht.", + "Alstublieft %d seconden wachten tussen elk bericht.", "Alstublieft %d seconden wachten tussen elk bericht." ], "Paste is limited to %s of encrypted data.": "Paste is beperkt tot %s aan versleutelde gegevens.", "Invalid data.": "Ongeldige gegevens.", "You are unlucky. Try again.": "Helaas. Probeer het nog eens.", - "Error saving comment. Sorry.": "Fout bij het opslaan van het commentaar. Sorry", + "Error saving comment. Sorry.": "Fout bij het opslaan van het commentaar. Sorry.", "Error saving paste. Sorry.": "Fout bij het opslaan van de paste. Sorry.", "Invalid paste ID.": "Ongeldige ID.", "Paste is not of burn-after-reading type.": "Paste is geen 'vernietig na lezen' type.", @@ -37,44 +39,58 @@ "%d seconds": [ "%d seconde", "%d seconden", - "%d seconds (2nd plural)", - "%d seconds (3rd plural)" + "%d seconden", + "%d seconden", + "%d seconden", + "%d seconden" ], "%d minutes": [ "%d minuut", "%d minuten", - "%d minutes (2nd plural)", - "%d minutes (3rd plural)" + "%d minuten", + "%d minuten", + "%d minuten", + "%d minuten" ], "%d hours": [ "%d uur", "%d uren", - "%d hours (2nd plural)", - "%d hours (3rd plural)" + "%d uren", + "%d uren", + "%d uren", + "%d uren" ], "%d days": [ "%d dag", "%d dagen", - "%d days (2nd plural)", - "%d days (3rd plural)" + "%d dagen", + "%d dagen", + "%d dagen", + "%d dagen" ], "%d weeks": [ "%d week", "%d weken", - "%d weeks (2nd plural)", - "%d weeks (3rd plural)" + "%d weken", + "%d weken", + "%d weken", + "%d weken" ], "%d months": [ "%d maand", "%d maanden", - "%d months (2nd plural)", - "%d months (3rd plural)" + "%d maanden", + "%d maanden", + "%d maanden", + "%d maanden" ], "%d years": [ "%d jaar", "%d jaren", - "%d years (2nd plural)", - "%d years (3rd plural)" + "%d jaren", + "%d jaren", + "%d jaren", + "%d jaren" ], "Never": "Nooit", "Note: This is a test service: Data may be deleted anytime. Kittens will die if you abuse this service.": "Opmerking: Dit is een testservice: Gegevens kunnen op elk gegeven moment verwijderd worden. Katten zullen doodgaan als je misbruikt maakt van deze service.", @@ -82,30 +98,40 @@ "Dit document verloopt over %d seconde.", "Dit document verloopt over %d seconden.", "Dit document verloopt over %d seconden.", + "Dit document verloopt over %d seconden.", + "Dit document verloopt over %d seconden.", "Dit document verloopt over %d seconden." ], "This document will expire in %d minutes.": [ "Dit document verloopt over %d minuut.", "Dit document verloopt over %d minuten.", "Dit document verloopt over %d minuten.", + "Dit document verloopt over %d minuten.", + "Dit document verloopt over %d minuten.", "Dit document verloopt over %d minuten." ], "This document will expire in %d hours.": [ "Dit document verloopt over %d uur.", "Dit document verloopt over %d uren.", "Dit document verloopt over %d uren.", + "Dit document verloopt over %d uren.", + "Dit document verloopt over %d uren.", "Dit document verloopt over %d uren." ], "This document will expire in %d days.": [ "Dit document verloopt over %d dag.", "Dit document verloopt over %d dagen.", "Dit document verloopt over %d dagen.", + "Dit document verloopt over %d dagen.", + "Dit document verloopt over %d dagen.", "Dit document verloopt over %d dagen." ], "This document will expire in %d months.": [ "Dit document verloopt over %d maand.", "Dit document verloopt over %d maanden.", "Dit document verloopt over %d maanden.", + "Dit document verloopt over %d maanden.", + "Dit document verloopt over %d maanden.", "Dit document verloopt over %d maanden." ], "Please enter the password for this paste:": "Voer het wachtwoord in voor deze paste:", @@ -162,7 +188,7 @@ "Loading…": "Laden…", "Decrypting paste…": "Paste decoderen…", "Preparing new paste…": "Nieuwe paste voorbereiden…", - "In case this message never disappears please have a look at this FAQ for information to troubleshoot.": "In het geval dat dit bericht nooit verdwijnt, kijkt dan eens naar veelgestelde vragen voor informatie over het oplossen van problemen .", + "In case this message never disappears please have a look at this FAQ for information to troubleshoot.": "In het geval dat dit bericht nooit verdwijnt, kijkt dan eens naar veelgestelde vragen voor informatie over het oplossen van problemen.", "+++ no paste text +++": "+++ geen paste tekst +++", "Could not get paste data: %s": "Kon geen paste data verkrijgen: %s", "QR code": "QR-code", diff --git a/i18n/no.json b/i18n/no.json index 251487e0..a7ef825b 100644 --- a/i18n/no.json +++ b/i18n/no.json @@ -11,6 +11,8 @@ "Vennligst vent %d sekund mellom hvert innlegg.", "Vennligst vent %d sekunder mellom hvert innlegg.", "Vennligst vent %d sekunder mellom hvert innlegg.", + "Vennligst vent %d sekunder mellom hvert innlegg.", + "Vennligst vent %d sekunder mellom hvert innlegg.", "Vennligst vent %d sekunder mellom hvert innlegg." ], "Paste is limited to %s of encrypted data.": "Innlegg er begrenset til %s av kryptert data.", @@ -38,39 +40,53 @@ "%d sekund", "%d sekunder", "%d sekunder", + "%d sekunder", + "%d sekunder", "%d sekunder" ], "%d minutes": [ "%d minutt", "%d minutter", "%d minutter", + "%d minutter", + "%d minutter", "%d minutter" ], "%d hours": [ "%d time", "%d timer", "%d timer", + "%d timer", + "%d timer", "%d timer" ], "%d days": [ "%d dag", "%d dager", "%d dager", + "%d dager", + "%d dager", "%d dager" ], "%d weeks": [ "%d uke", "%d uker", "%d uker", + "%d uker", + "%d uker", "%d uker" ], "%d months": [ "%d måned", "%d måneder", "%d måneder", + "%d måneder", + "%d måneder", "%d måneder" ], "%d years": [ + "%d år", + "%d år", "%d år", "%d år", "%d år", @@ -82,30 +98,40 @@ "Dette dokumentet vil utløpe om %d sekund.", "Dette dokumentet vil utløpe om %d sekunder.", "Dette dokumentet vil utløpe om %d sekunder.", + "Dette dokumentet vil utløpe om %d sekunder.", + "Dette dokumentet vil utløpe om %d sekunder.", "Dette dokumentet vil utløpe om %d sekunder." ], "This document will expire in %d minutes.": [ "Dette dokumentet vil utløpe om %d minutt.", "Dette dokumentet vil utløpe om %d minutter.", "Dette dokumentet vil utløpe om %d minutter.", + "Dette dokumentet vil utløpe om %d minutter.", + "Dette dokumentet vil utløpe om %d minutter.", "Dette dokumentet vil utløpe om %d minutter." ], "This document will expire in %d hours.": [ "Dette dokumentet vil utløpe om %d time.", "Dette dokumentet vil utløpe om %d timer.", "Dette dokumentet vil utløpe om %d timer.", + "Dette dokumentet vil utløpe om %d timer.", + "Dette dokumentet vil utløpe om %d timer.", "Dette dokumentet vil utløpe om %d timer." ], "This document will expire in %d days.": [ "Dette dokumentet vil utløpe om %d dag.", "Dette dokumentet vil utløpe om %d dager.", "Dette dokumentet vil utløpe om %d dager.", + "Dette dokumentet vil utløpe om %d dager.", + "Dette dokumentet vil utløpe om %d dager.", "Dette dokumentet vil utløpe om %d dager." ], "This document will expire in %d months.": [ "Dette dokumentet vil utløpe om %d måned.", "Dette dokumentet vil utløpe om %d måneder.", "Dette dokumentet vil utløpe om %d måneder.", + "Dette dokumentet vil utløpe om %d måneder.", + "Dette dokumentet vil utløpe om %d måneder.", "Dette dokumentet vil utløpe om %d måneder." ], "Please enter the password for this paste:": "Vennligst skriv inn passordet for dette innlegget:", diff --git a/i18n/oc.json b/i18n/oc.json index 82cdef9a..b2df467d 100644 --- a/i18n/oc.json +++ b/i18n/oc.json @@ -11,6 +11,8 @@ "Mercés d'esperar %d segonda entre cada publicacion.", "Mercés d'esperar %d segondas entre cada publicacion.", "Mercés d'esperar %d segondas entre cada publicacion.", + "Mercés d'esperar %d segondas entre cada publicacion.", + "Mercés d'esperar %d segondas entre cada publicacion.", "Mercés d'esperar %d segondas entre cada publicacion." ], "Paste is limited to %s of encrypted data.": "Lo tèxte es limitat a %s de donadas chifradas.", @@ -38,42 +40,56 @@ "%d segonda", "%d segondas", "%d segondas", + "%d segondas", + "%d segondas", "%d segondas" ], "%d minutes": [ "%d minuta", "%d minutas", "%d minutas", + "%d minutas", + "%d minutas", "%d minutas" ], "%d hours": [ "%d ora", "%d oras", "%d oras", + "%d oras", + "%d oras", "%d oras" ], "%d days": [ "%d jorn", "%d jorns", "%d jorns", + "%d jorns", + "%d jorns", "%d jorns" ], "%d weeks": [ "%d setmana", "%d setmanas", "%d setmanas", + "%d setmanas", + "%d setmanas", "%d setmanas" ], "%d months": [ "%d mes", "%d meses", "%d meses", + "%d meses", + "%d meses", "%d meses" ], "%d years": [ "%d an", "%d ans", "%d ans", + "%d ans", + "%d ans", "%d ans" ], "Never": "Jamai", @@ -82,30 +98,40 @@ "Aqueste document expirarà d’aquí %d segonda.", "Aqueste document expirarà d’aquí %d segondas.", "Aqueste document expirarà d’aquí %d segondas.", + "Aqueste document expirarà d’aquí %d segondas.", + "Aqueste document expirarà d’aquí %d segondas.", "Aqueste document expirarà d’aquí %d segondas." ], "This document will expire in %d minutes.": [ "Aqueste document expirarà d’aquí %d minuta.", "Aqueste document expirarà d’aquí %d minutas.", "Aqueste document expirarà d’aquí %d minutas.", + "Aqueste document expirarà d’aquí %d minutas.", + "Aqueste document expirarà d’aquí %d minutas.", "Aqueste document expirarà d’aquí %d minutas." ], "This document will expire in %d hours.": [ "Aqueste document expirarà d’aquí %d ora.", "Aqueste document expirarà d’aquí %d oras.", "Aqueste document expirarà d’aquí %d oras.", + "Aqueste document expirarà d’aquí %d oras.", + "Aqueste document expirarà d’aquí %d oras.", "Aqueste document expirarà d’aquí %d oras." ], "This document will expire in %d days.": [ "Aqueste document expirarà d’aquí %d jorn.", "Aqueste document expirarà d’aquí %d jorns.", "Aqueste document expirarà d’aquí %d jorns.", + "Aqueste document expirarà d’aquí %d jorns.", + "Aqueste document expirarà d’aquí %d jorns.", "Aqueste document expirarà d’aquí %d jorns." ], "This document will expire in %d months.": [ "Aqueste document expirarà d’aquí %d mes.", "Aqueste document expirarà d’aquí %d meses.", "Aqueste document expirarà d’aquí %d meses.", + "Aqueste document expirarà d’aquí %d meses.", + "Aqueste document expirarà d’aquí %d meses.", "Aqueste document expirarà d’aquí %d meses." ], "Please enter the password for this paste:": "Picatz lo senhal per aqueste tèxte :", diff --git a/i18n/pl.json b/i18n/pl.json index 933e67c7..e3558ab7 100644 --- a/i18n/pl.json +++ b/i18n/pl.json @@ -11,6 +11,8 @@ "Poczekaj %d sekundę pomiędzy każdą wklejką.", "Poczekaj %d sekund pomiędzy każdą wklejką.", "Poczekaj %d sekund pomiędzy każdą wklejką.", + "Poczekaj %d sekund pomiędzy każdą wklejką.", + "Poczekaj %d sekund pomiędzy każdą wklejką.", "Poczekaj %d sekund pomiędzy każdą wklejką." ], "Paste is limited to %s of encrypted data.": "Wklejka jest limitowana do %s zaszyfrowanych danych.", @@ -35,12 +37,16 @@ "Discussion": "Dyskusja", "Toggle navigation": "Przełącz nawigację", "%d seconds": [ + "%d second", + "%d second", "%d second", "%d second", "%d second", "%d second" ], "%d minutes": [ + "%d minut", + "%d minut", "%d minut", "%d minut", "%d minut", @@ -50,27 +56,37 @@ "%d godzina", "%d godzina", "%d godzinę", + "%d godzinę", + "%d godzinę", "%d godzinę" ], "%d days": [ + "%d dzień", + "%d dzień", "%d dzień", "%d dzień", "%d dzień", "%d dzień" ], "%d weeks": [ + "%d tydzień", + "%d tydzień", "%d tydzień", "%d tydzień", "%d tydzień", "%d tydzień" ], "%d months": [ + "%d miesiąc", + "%d miesiąc", "%d miesiąc", "%d miesiąc", "%d miesiąc", "%d miesiąc" ], "%d years": [ + "%d rok", + "%d rok", "%d rok", "%d rok", "%d rok", @@ -82,30 +98,40 @@ "Ten dokument wygaśnie za %d sekundę.", "Ten dokument wygaśnie za %d sekund.", "Ten dokument wygaśnie za %d sekund.", + "Ten dokument wygaśnie za %d sekund.", + "Ten dokument wygaśnie za %d sekund.", "Ten dokument wygaśnie za %d sekund." ], "This document will expire in %d minutes.": [ "Ten dokument wygaśnie za %d minutę.", "Ten dokument wygaśnie za %d minut.", "Ten dokument wygaśnie za %d minut.", + "Ten dokument wygaśnie za %d minut.", + "Ten dokument wygaśnie za %d minut.", "Ten dokument wygaśnie za %d minut." ], "This document will expire in %d hours.": [ "Ten dokument wygaśnie za godzinę.", "Ten dokument wygaśnie za %d godzin.", "Ten dokument wygaśnie za %d godzin.", + "Ten dokument wygaśnie za %d godzin.", + "Ten dokument wygaśnie za %d godzin.", "Ten dokument wygaśnie za %d godzin." ], "This document will expire in %d days.": [ "Ten dokument wygaśnie za %d dzień.", "Ten dokument wygaśnie za %d dni.", "Ten dokument wygaśnie za %d dni.", + "Ten dokument wygaśnie za %d dni.", + "Ten dokument wygaśnie za %d dni.", "Ten dokument wygaśnie za %d dni." ], "This document will expire in %d months.": [ "Ten dokument wygaśnie za miesiąc.", "Ten dokument wygaśnie za %d miesięcy.", "Ten dokument wygaśnie za %d miesięcy.", + "Ten dokument wygaśnie za %d miesięcy.", + "Ten dokument wygaśnie za %d miesięcy.", "Ten dokument wygaśnie za %d miesięcy." ], "Please enter the password for this paste:": "Wpisz hasło dla tej wklejki:", diff --git a/i18n/pt.json b/i18n/pt.json index 6d890a13..c3beaae0 100644 --- a/i18n/pt.json +++ b/i18n/pt.json @@ -11,6 +11,8 @@ "Por favor espere %d segundo entre cada publicação.", "Por favor espere %d segundos entre cada publicação.", "Por favor espere %d segundos entre cada publicação.", + "Por favor espere %d segundos entre cada publicação.", + "Por favor espere %d segundos entre cada publicação.", "Por favor espere %d segundos entre cada publicação." ], "Paste is limited to %s of encrypted data.": "A cópia está limitada a %s de dados cifrados.", @@ -38,42 +40,56 @@ "%d segundo", "%d segundos", "%d segundos", + "%d segundos", + "%d segundos", "%d segundos" ], "%d minutes": [ "%d minuto", "%d minutos", "%d minutos", + "%d minutos", + "%d minutos", "%d minutos" ], "%d hours": [ "%d hora", "%d horas", - "%d horas (2° plural)", + "%d horas", + "%d horas", + "%d horas", "%d horas" ], "%d days": [ "%d dia", "%d dias", "%d dias", + "%d dias", + "%d dias", "%d dias" ], "%d weeks": [ "%d semana", "%d semanas", "%d semanas", + "%d semanas", + "%d semanas", "%d semanas" ], "%d months": [ "%d mês", "%d meses", "%d meses", + "%d meses", + "%d meses", "%d meses" ], "%d years": [ "%d ano", "%d anos", "%d anos", + "%d anos", + "%d anos", "%d anos" ], "Never": "Nunca", @@ -82,30 +98,40 @@ "Este documento irá expirar em um segundo.", "Este documento irá expirar em %d segundos.", "Este documento irá expirar em %d segundos.", + "Este documento irá expirar em %d segundos.", + "Este documento irá expirar em %d segundos.", "Este documento irá expirar em %d segundos." ], "This document will expire in %d minutes.": [ "Este documento irá expirar em um minuto.", "Este documento irá expirar em %d minutos.", "Este documento irá expirar em %d minutos.", + "Este documento irá expirar em %d minutos.", + "Este documento irá expirar em %d minutos.", "Este documento irá expirar em %d minutos." ], "This document will expire in %d hours.": [ "Este documento irá expirar em uma hora.", "Este documento irá expirar em %d horas.", "Este documento irá expirar em %d horas.", + "Este documento irá expirar em %d horas.", + "Este documento irá expirar em %d horas.", "Este documento irá expirar em %d horas." ], "This document will expire in %d days.": [ "Este documento irá expirar em um dia.", "Este documento irá expirar em %d dias.", "Este documento irá expirar em %d dias.", + "Este documento irá expirar em %d dias.", + "Este documento irá expirar em %d dias.", "Este documento irá expirar em %d dias." ], "This document will expire in %d months.": [ "Este documento irá expirar em um mês.", "Este documento irá expirar em %d meses.", "Este documento irá expirar em %d meses.", + "Este documento irá expirar em %d meses.", + "Este documento irá expirar em %d meses.", "Este documento irá expirar em %d meses." ], "Please enter the password for this paste:": "Por favor, digite a senha para essa cópia:", @@ -185,9 +211,9 @@ "Encrypted note on %s": "Nota criptografada no %s", "Visit this link to see the note. Giving the URL to anyone allows them to access the note, too.": "Visite esse link para ver a nota. Dar a URL para qualquer um permite que eles também acessem a nota.", "URL shortener may expose your decrypt key in URL.": "URL shortener may expose your decrypt key in URL.", - "Save paste": "Save paste", - "Your IP is not authorized to create pastes.": "Your IP is not authorized to create pastes.", - "Trying to shorten a URL that isn't pointing at our instance.": "Trying to shorten a URL that isn't pointing at our instance.", + "Save paste": "Salvar cópia", + "Your IP is not authorized to create pastes.": "Seu IP não está autorizado a criar cópias.", + "Trying to shorten a URL that isn't pointing at our instance.": "Tentando encurtar uma URL que não aponta para a nossa instância.", "Error calling YOURLS. Probably a configuration issue, like wrong or missing \"apiurl\" or \"signature\".": "Error calling YOURLS. Probably a configuration issue, like wrong or missing \"apiurl\" or \"signature\".", "Error parsing YOURLS response.": "Error parsing YOURLS response." } diff --git a/i18n/ru.json b/i18n/ru.json index 1c708196..eac11182 100644 --- a/i18n/ru.json +++ b/i18n/ru.json @@ -11,6 +11,8 @@ "Пожалуйста, ожидайте %d секунду между каждыми записями.", "Пожалуйста, ожидайте %d секунды между каждыми записями.", "Пожалуйста, ожидайте %d секунд между каждыми записями.", + "Пожалуйста, ожидайте %d секунд между каждыми записями.", + "Пожалуйста, ожидайте %d секунд между каждыми записями.", "Пожалуйста, ожидайте %d секунд между каждыми записями." ], "Paste is limited to %s of encrypted data.": "Размер записи ограничен %s зашифрованных данных.", @@ -38,42 +40,56 @@ "%d секунду", "%d секунды", "%d секунд", + "%d секунд", + "%d секунд", "%d секунд" ], "%d minutes": [ "%d минуту", "%d минуты", "%d минут", + "%d минут", + "%d минут", "%d минут" ], "%d hours": [ "%d час", "%d часа", "%d часов", + "%d часов", + "%d часов", "%d часов" ], "%d days": [ "%d день", "%d дня", "%d дней", + "%d дней", + "%d дней", "%d дней" ], "%d weeks": [ "%d неделю", "%d недели", "%d недель", + "%d недель", + "%d недель", "%d недель" ], "%d months": [ "%d месяц", "%d месяца", "%d месяцев", + "%d месяцев", + "%d месяцев", "%d месяцев" ], "%d years": [ "%d год", "%d года", "%d лет", + "%d лет", + "%d лет", "%d лет" ], "Never": "Никогда", @@ -82,30 +98,40 @@ "Документ будет удален через %d секунду.", "Документ будет удален через %d секунды.", "Документ будет удален через %d секунд.", + "Документ будет удален через %d секунд.", + "Документ будет удален через %d секунд.", "Документ будет удален через %d секунд." ], "This document will expire in %d minutes.": [ "Документ будет удален через %d минуту.", "Документ будет удален через %d минуты.", "Документ будет удален через %d минут.", + "Документ будет удален через %d минут.", + "Документ будет удален через %d минут.", "Документ будет удален через %d минут." ], "This document will expire in %d hours.": [ "Документ будет удален через %d час.", "Документ будет удален через %d часа.", "Документ будет удален через %d часов.", + "Документ будет удален через %d часов.", + "Документ будет удален через %d часов.", "Документ будет удален через %d часов." ], "This document will expire in %d days.": [ "Документ будет удален через %d день.", "Документ будет удален через %d дня.", "Документ будет удален через %d дней.", + "Документ будет удален через %d дней.", + "Документ будет удален через %d дней.", "Документ будет удален через %d дней." ], "This document will expire in %d months.": [ "Документ будет удален через %d месяц.", "Документ будет удален через %d месяца.", "Документ будет удален через %d месяцев.", + "Документ будет удален через %d месяцев.", + "Документ будет удален через %d месяцев.", "Документ будет удален через %d месяцев." ], "Please enter the password for this paste:": "Пожалуйста, введите пароль от записи:", diff --git a/i18n/sk.json b/i18n/sk.json index e23d2957..e438b2bd 100644 --- a/i18n/sk.json +++ b/i18n/sk.json @@ -8,6 +8,8 @@ "%s requires php %s or above to work. Sorry.": "%s vyžaduje php %s alebo vyššie. Prepáčte.", "%s requires configuration section [%s] to be present in configuration file.": "%s vyžaduje, aby bola v konfiguračnom súbore prítomná sekcia [%s].", "Please wait %d seconds between each post.": [ + "Počet sekúnd do ďalšieho príspevku: %d", + "Počet sekúnd do ďalšieho príspevku: %d", "Počet sekúnd do ďalšieho príspevku: %d", "Počet sekúnd do ďalšieho príspevku: %d", "Počet sekúnd do ďalšieho príspevku: %d", @@ -38,42 +40,56 @@ "%d sekunda", "%d sekundy", "%d sekúnd", + "%d sekúnd", + "%d sekúnd", "%d sekúnd" ], "%d minutes": [ "%d minúta", "%d minúty", "%d minút", + "%d minút", + "%d minút", "%d minút" ], "%d hours": [ "%d hodina", "%d hodiny", "%d hodín", + "%d hodín", + "%d hodín", "%d hodín" ], "%d days": [ "%d deň", "%d dni", "%d dní", + "%d dní", + "%d dní", "%d dní" ], "%d weeks": [ "%d týždeň", "%d týždne", "%d týždňov", + "%d týždňov", + "%d týždňov", "%d týždňov" ], "%d months": [ "%d mesiac", "%d mesiace", "%d mesiacov", + "%d mesiacov", + "%d mesiacov", "%d mesiacov" ], "%d years": [ "%d rok", "%d roky", "%d rokov", + "%d rokov", + "%d rokov", "%d rokov" ], "Never": "Nikdy", @@ -82,30 +98,40 @@ "Platnosť tohto dokumentu vyprší o %d sekundu.", "Platnosť tohto dokumentu vyprší o %d sekundy.", "Platnosť tohto dokumentu vyprší o %d sekúnd.", + "Platnosť tohto dokumentu vyprší o %d sekúnd.", + "Platnosť tohto dokumentu vyprší o %d sekúnd.", "Platnosť tohto dokumentu vyprší o %d sekúnd." ], "This document will expire in %d minutes.": [ "Platnosť tohto dokumentu vyprší o %d minútu.", "Platnosť tohto dokumentu vyprší o %d minúty.", "Platnosť tohto dokumentu vyprší o %d minút.", + "Platnosť tohto dokumentu vyprší o %d minút.", + "Platnosť tohto dokumentu vyprší o %d minút.", "Platnosť tohto dokumentu vyprší o %d minút." ], "This document will expire in %d hours.": [ "Platnosť tohto dokumentu vyprší o %d hodinu.", "Platnosť tohto dokumentu vyprší o %d hodiny.", "Platnosť tohto dokumentu vyprší o %d hodín.", + "Platnosť tohto dokumentu vyprší o %d hodín.", + "Platnosť tohto dokumentu vyprší o %d hodín.", "Platnosť tohto dokumentu vyprší o %d hodín." ], "This document will expire in %d days.": [ "Platnosť tohto dokumentu vyprší o %d deň.", "Platnosť tohto dokumentu vyprší o %d dni.", "Platnosť tohto dokumentu vyprší o %d dní.", + "Platnosť tohto dokumentu vyprší o %d dní.", + "Platnosť tohto dokumentu vyprší o %d dní.", "Platnosť tohto dokumentu vyprší o %d dní." ], "This document will expire in %d months.": [ "Platnosť tohto dokumentu vyprší o %d mesiac.", "Platnosť tohto dokumentu vyprší o %d mesiace.", "Platnosť tohto dokumentu vyprší o %d mesiacov.", + "Platnosť tohto dokumentu vyprší o %d mesiacov.", + "Platnosť tohto dokumentu vyprší o %d mesiacov.", "Platnosť tohto dokumentu vyprší o %d mesiacov." ], "Please enter the password for this paste:": "Zadajte prosím heslo:", diff --git a/i18n/sl.json b/i18n/sl.json index 099f98d5..0bd06030 100644 --- a/i18n/sl.json +++ b/i18n/sl.json @@ -11,6 +11,8 @@ "Prosim počakaj vsaj %d sekundo pred vsako naslednjo objavo.", "Prosim počakaj vsaj %d sekundi pred vsako naslednjo objavo.", "Prosim počakaj vsaj %d sekunde pred vsako naslednjo objavo.", + "Prosim počakaj vsaj %d sekund pred vsako naslednjo objavo.", + "Prosim počakaj vsaj %d sekund pred vsako naslednjo objavo.", "Prosim počakaj vsaj %d sekund pred vsako naslednjo objavo." ], "Paste is limited to %s of encrypted data.": "Velikost prilepka je omejena na %s zakodiranih podatkov.", @@ -38,42 +40,56 @@ "%d sekunda", "%d sekundi", "%d sekunde", + "%d sekund", + "%d sekund", "%d sekund" ], "%d minutes": [ "%d minuta", "%d minuti", "%d minute", + "%d minut", + "%d minut", "%d minut" ], "%d hours": [ "%d ura", "%d uri", "%d ure", + "%d ur", + "%d ur", "%d ur" ], "%d days": [ "%d dan", "%d dneva", "%d dnevi", + "%d dni", + "%d dni", "%d dni" ], "%d weeks": [ "%d teden", "%d tedna", "%d tedni", + "%d tednov", + "%d tednov", "%d tednov" ], "%d months": [ "%d mesec", "%d meseca", "%d meseci", + "%d mesecev", + "%d mesecev", "%d mesecev" ], "%d years": [ "%d leto", "%d leti", "%d leta", + "%d let", + "%d let", "%d let" ], "Never": "Nikoli", @@ -82,30 +98,40 @@ "Ta dokument bo potekel čez %d sekundo.", "Ta dokument bo potekel čez %d sekundi.", "Ta dokument bo potekel čez %d sekunde.", + "Ta dokument bo potekel čez %d sekund.", + "Ta dokument bo potekel čez %d sekund.", "Ta dokument bo potekel čez %d sekund." ], "This document will expire in %d minutes.": [ "Ta dokument bo potekel čez %d minuto.", "Ta dokument bo potekel čez %d minuti.", "Ta dokument bo potekel čez %d minute.", + "Ta dokument bo potekel čez %d minut.", + "Ta dokument bo potekel čez %d minut.", "Ta dokument bo potekel čez %d minut." ], "This document will expire in %d hours.": [ "Ta dokument bo potekel čez %d uro.", "Ta dokument bo potekel čez %d uri.", "Ta dokument bo potekel čez %d ure.", + "Ta dokument bo potekel čez %d ur.", + "Ta dokument bo potekel čez %d ur.", "Ta dokument bo potekel čez %d ur." ], "This document will expire in %d days.": [ "Ta dokument bo potekel čez %d dan.", "Ta dokument bo potekel čez %d dni.", "Ta dokument bo potekel čez %d dni.", + "Ta dokument bo potekel čez %d dni.", + "Ta dokument bo potekel čez %d dni.", "Ta dokument bo potekel čez %d dni." ], "This document will expire in %d months.": [ "Ta dokument bo potekel čez %d mesec.", "Ta dokument bo potekel čez %d meseca.", "Ta dokument bo potekel čez %d mesece.", + "Ta dokument bo potekel čez %d mesecev.", + "Ta dokument bo potekel čez %d mesecev.", "Ta dokument bo potekel čez %d mesecev." ], "Please enter the password for this paste:": "Prosim vnesi geslo tega prilepka:", diff --git a/i18n/sv.json b/i18n/sv.json index 87ee2a02..3997ade0 100644 --- a/i18n/sv.json +++ b/i18n/sv.json @@ -11,7 +11,9 @@ "Please wait %d second between each post. (singular)", "Please wait %d seconds between each post. (1st plural)", "Please wait %d seconds between each post. (2nd plural)", - "Please wait %d seconds between each post. (3rd plural)" + "Please wait %d seconds between each post. (3rd plural)", + "Please wait %d seconds between each post. (4th plural)", + "Please wait %d seconds between each post. (5th plural)" ], "Paste is limited to %s of encrypted data.": "Paste is limited to %s of encrypted data.", "Invalid data.": "Invalid data.", @@ -38,43 +40,57 @@ "%d second (singular)", "%d seconds (1st plural)", "%d seconds (2nd plural)", - "%d seconds (3rd plural)" + "%d seconds (3rd plural)", + "%d seconds (4th plural)", + "%d seconds (5th plural)" ], "%d minutes": [ "%d minute (singular)", "%d minutes (1st plural)", "%d minutes (2nd plural)", - "%d minutes (3rd plural)" + "%d minutes (3rd plural)", + "%d minutes (4th plural)", + "%d minutes (5th plural)" ], "%d hours": [ "%d hour (singular)", "%d hours (1st plural)", "%d hours (2nd plural)", - "%d hours (3rd plural)" + "%d hours (3rd plural)", + "%d hours (4th plural)", + "%d hours (5th plural)" ], "%d days": [ "%d day (singular)", "%d days (1st plural)", "%d days (2nd plural)", - "%d days (3rd plural)" + "%d days (3rd plural)", + "%d days (4th plural)", + "%d days (5th plural)" ], "%d weeks": [ "%d week (singular)", "%d weeks (1st plural)", "%d weeks (2nd plural)", - "%d weeks (3rd plural)" + "%d weeks (3rd plural)", + "%d weeks (4th plural)", + "%d weeks (5th plural)" ], "%d months": [ "%d month (singular)", "%d months (1st plural)", "%d months (2nd plural)", - "%d months (3rd plural)" + "%d months (3rd plural)", + "%d months (4th plural)", + "%d months (5th plural)" ], "%d years": [ "%d year (singular)", "%d years (1st plural)", "%d years (2nd plural)", - "%d years (3rd plural)" + "%d years (3rd plural)", + "%d years (4th plural)", + "%d years (5th plural)" ], "Never": "Never", "Note: This is a test service: Data may be deleted anytime. Kittens will die if you abuse this service.": "Note: This is a test service: Data may be deleted anytime. Kittens will die if you abuse this service.", @@ -82,31 +98,41 @@ "This document will expire in %d second. (singular)", "This document will expire in %d seconds. (1st plural)", "This document will expire in %d seconds. (2nd plural)", - "This document will expire in %d seconds. (3rd plural)" + "This document will expire in %d seconds. (3rd plural)", + "This document will expire in %d seconds. (4th plural)", + "This document will expire in %d seconds. (5th plural)" ], "This document will expire in %d minutes.": [ "This document will expire in %d minute. (singular)", "This document will expire in %d minutes. (1st plural)", "This document will expire in %d minutes. (2nd plural)", - "This document will expire in %d minutes. (3rd plural)" + "This document will expire in %d minutes. (3rd plural)", + "This document will expire in %d minutes. (4th plural)", + "This document will expire in %d minutes. (5th plural)" ], "This document will expire in %d hours.": [ "This document will expire in %d hour. (singular)", "This document will expire in %d hours. (1st plural)", "This document will expire in %d hours. (2nd plural)", - "This document will expire in %d hours. (3rd plural)" + "This document will expire in %d hours. (3rd plural)", + "This document will expire in %d hours. (4th plural)", + "This document will expire in %d hours. (5th plural)" ], "This document will expire in %d days.": [ "This document will expire in %d day. (singular)", "This document will expire in %d days. (1st plural)", "This document will expire in %d days. (2nd plural)", - "This document will expire in %d days. (3rd plural)" + "This document will expire in %d days. (3rd plural)", + "This document will expire in %d days. (4th plural)", + "This document will expire in %d days. (5th plural)" ], "This document will expire in %d months.": [ "This document will expire in %d month. (singular)", "This document will expire in %d months. (1st plural)", "This document will expire in %d months. (2nd plural)", - "This document will expire in %d months. (3rd plural)" + "This document will expire in %d months. (3rd plural)", + "This document will expire in %d months. (4th plural)", + "This document will expire in %d months. (5th plural)" ], "Please enter the password for this paste:": "Please enter the password for this paste:", "Could not decrypt data (Wrong key?)": "Could not decrypt data (Wrong key?)", diff --git a/i18n/th.json b/i18n/th.json index 67baede4..75902af5 100644 --- a/i18n/th.json +++ b/i18n/th.json @@ -8,6 +8,8 @@ "%s requires php %s or above to work. Sorry.": "ขออภัย %s ต้องใช้ PHP %s ขึ้นไปจึงจะใช้งานได้", "%s requires configuration section [%s] to be present in configuration file.": "%s จำเป็นต้องตั้งค่าตัวแปร [%s] ในไฟล์กำหนดค่า", "Please wait %d seconds between each post.": [ + "กรุณาเว้นระยะเวลาการส่งข้อมูลอย่างน้อย %d วินาที", + "กรุณาเว้นระยะเวลาการส่งข้อมูลอย่างน้อย %d วินาที", "กรุณาเว้นระยะเวลาการส่งข้อมูลอย่างน้อย %d วินาที", "กรุณาเว้นระยะเวลาการส่งข้อมูลอย่างน้อย %d วินาที", "กรุณาเว้นระยะเวลาการส่งข้อมูลอย่างน้อย %d วินาที", @@ -35,42 +37,56 @@ "Discussion": "ความคิดเห็น", "Toggle navigation": "สลับเปิดปิดการนำทาง", "%d seconds": [ + "%d วินาที", + "%d วินาที", "%d วินาที", "%d วินาที", "%d วินาที", "%d วินาที" ], "%d minutes": [ + "%d นาที", + "%d นาที", "%d นาที", "%d นาที", "%d นาที", "%d นาที" ], "%d hours": [ + "%d ชั่วโมง", + "%d ชั่วโมง", "%d ชั่วโมง", "%d ชั่วโมง", "%d ชั่วโมง", "%d ชั่วโมง" ], "%d days": [ + "%d วัน", + "%d วัน", "%d วัน", "%d วัน", "%d วัน", "%d วัน" ], "%d weeks": [ + "%d สัปดาห์", + "%d สัปดาห์", "%d สัปดาห์", "%d สัปดาห์", "%d สัปดาห์", "%d สัปดาห์" ], "%d months": [ + "%d เดือน", + "%d เดือน", "%d เดือน", "%d เดือน", "%d เดือน", "%d เดือน" ], "%d years": [ + "%d ปี", + "%d ปี", "%d ปี", "%d ปี", "%d ปี", @@ -79,30 +95,40 @@ "Never": "ไม่หมดอายุ", "Note: This is a test service: Data may be deleted anytime. Kittens will die if you abuse this service.": "โปรดทราบ: เว็บไซต์นี้เป็นการให้บริการสำหรับทดสอบเท่านั้น ข้อมูลอาจถูกลบได้ตลอดเวลา หากคุณใช้บริการนี้ในทางที่ผิดอาจจะทำให้ข้อมูลของคุณสูญหายอย่างถาวรได้", "This document will expire in %d seconds.": [ + "เอกสารนี้จะหมดอายุใน %d วินาที", + "เอกสารนี้จะหมดอายุใน %d วินาที", "เอกสารนี้จะหมดอายุใน %d วินาที", "เอกสารนี้จะหมดอายุใน %d วินาที", "เอกสารนี้จะหมดอายุใน %d วินาที", "เอกสารนี้จะหมดอายุใน %d วินาที" ], "This document will expire in %d minutes.": [ + "เอกสารนี้จะหมดอายุใน %d นาที", + "เอกสารนี้จะหมดอายุใน %d นาที", "เอกสารนี้จะหมดอายุใน %d นาที", "เอกสารนี้จะหมดอายุใน %d นาที", "เอกสารนี้จะหมดอายุใน %d นาที", "เอกสารนี้จะหมดอายุใน %d นาที" ], "This document will expire in %d hours.": [ + "เอกสารนี้จะหมดอายุใน %d ชั่วโมง", + "เอกสารนี้จะหมดอายุใน %d ชั่วโมง", "เอกสารนี้จะหมดอายุใน %d ชั่วโมง", "เอกสารนี้จะหมดอายุใน %d ชั่วโมง", "เอกสารนี้จะหมดอายุใน %d ชั่วโมง", "เอกสารนี้จะหมดอายุใน %d ชั่วโมง" ], "This document will expire in %d days.": [ + "เอกสารนี้จะหมดอายุใน %d วัน", + "เอกสารนี้จะหมดอายุใน %d วัน", "เอกสารนี้จะหมดอายุใน %d วัน", "เอกสารนี้จะหมดอายุใน %d วัน", "เอกสารนี้จะหมดอายุใน %d วัน", "เอกสารนี้จะหมดอายุใน %d วัน" ], "This document will expire in %d months.": [ + "เอกสารนี้จะหมดอายุใน %d เดือน", + "เอกสารนี้จะหมดอายุใน %d เดือน", "เอกสารนี้จะหมดอายุใน %d เดือน", "เอกสารนี้จะหมดอายุใน %d เดือน", "เอกสารนี้จะหมดอายุใน %d เดือน", diff --git a/i18n/tr.json b/i18n/tr.json index 79a52da3..8c29d344 100644 --- a/i18n/tr.json +++ b/i18n/tr.json @@ -8,6 +8,8 @@ "%s requires php %s or above to work. Sorry.": "%s PHP %s veya daha üstünü gerektirir.", "%s requires configuration section [%s] to be present in configuration file.": "%s konfigürasyon bölümünün [%s] bulunmasını gerektir.", "Please wait %d seconds between each post.": [ + "Lütfen paylaşımlar arasında %d saniye bekleyiniz.", + "Lütfen paylaşımlar arasında %d saniye bekleyiniz.", "Lütfen paylaşımlar arasında %d saniye bekleyiniz.", "Lütfen paylaşımlar arasında %d saniye bekleyiniz.", "Lütfen paylaşımlar arasında %d saniye bekleyiniz.", @@ -35,24 +37,32 @@ "Discussion": "Tartışma", "Toggle navigation": "Gezinmeyi değiştir", "%d seconds": [ + "%d saniye", + "%d saniye", "%d saniye", "%d saniye", "%d saniye", "%d saniye" ], "%d minutes": [ + "%d dakika", + "%d dakika", "%d dakika", "%d dakika", "%d dakika", "%d dakika" ], "%d hours": [ + "%d saat", + "%d saat", "%d saat", "%d saat", "%d saat", "%d saat" ], "%d days": [ + "%d gün", + "%d gün", "%d gün", "%d gün", "%d gün", @@ -62,15 +72,21 @@ "%d hafta", "%d haftalar", "%d hafta", + "%d hafta", + "%d hafta", "%d hafta" ], "%d months": [ + "%d ay", + "%d ay", "%d ay", "%d ay", "%d ay", "%d ay" ], "%d years": [ + "%d yıl", + "%d yıl", "%d yıl", "%d yıl", "%d yıl", @@ -79,30 +95,40 @@ "Never": "Asla", "Note: This is a test service: Data may be deleted anytime. Kittens will die if you abuse this service.": "Note: This is a test service: Data may be deleted anytime. Kittens will die if you abuse this service.", "This document will expire in %d seconds.": [ + "Bu belge %d saniyede silinecektir.", + "Bu belge %d saniyede silinecektir.", "Bu belge %d saniyede silinecektir.", "Bu belge %d saniyede silinecektir.", "Bu belge %d saniyede silinecektir.", "Bu belge %d saniyede silinecektir." ], "This document will expire in %d minutes.": [ + "Bu belge %d dakikada silinecektir.", + "Bu belge %d dakikada silinecektir.", "Bu belge %d dakikada silinecektir.", "Bu belge %d dakikada silinecektir.", "Bu belge %d dakikada silinecektir.", "Bu belge %d dakikada silinecektir." ], "This document will expire in %d hours.": [ + "Bu belge %d saatte silinecektir.", + "Bu belge %d saatte silinecektir.", "Bu belge %d saatte silinecektir.", "Bu belge %d saatte silinecektir.", "Bu belge %d saatte silinecektir.", "Bu belge %d saatte silinecektir." ], "This document will expire in %d days.": [ + "Bu belge %d günde silinecektir.", + "Bu belge %d günde silinecektir.", "Bu belge %d günde silinecektir.", "Bu belge %d günde silinecektir.", "Bu belge %d günde silinecektir.", "Bu belge %d günde silinecektir." ], "This document will expire in %d months.": [ + "Bu belge %d ayda silinecektir.", + "Bu belge %d ayda silinecektir.", "Bu belge %d ayda silinecektir.", "Bu belge %d ayda silinecektir.", "Bu belge %d ayda silinecektir.", diff --git a/i18n/uk.json b/i18n/uk.json index 946dea4a..e94ab08e 100644 --- a/i18n/uk.json +++ b/i18n/uk.json @@ -11,6 +11,8 @@ "Будь ласка, зачекайте %d секунду між створеннями.", "Будь ласка, зачекайте %d секунди між створеннями.", "Будь ласка, зачекайте %d секунд між створеннями.", + "Будь ласка, зачекайте %d секунд між створеннями.", + "Будь ласка, зачекайте %d секунд між створеннями.", "Будь ласка, зачекайте %d секунд між створеннями." ], "Paste is limited to %s of encrypted data.": "Розмір допису обмежений %s зашифрованих даних.", @@ -38,42 +40,56 @@ "%d секунду", "%d секунди", "%d секунд", + "%d секунд", + "%d секунд", "%d секунд" ], "%d minutes": [ "%d хвилину", "%d хвилини", "%d хвилин", + "%d хвилин", + "%d хвилин", "%d хвилин" ], "%d hours": [ "%d годину", "%d години", "%d годин", + "%d годин", + "%d годин", "%d годин" ], "%d days": [ "%d день", "%d дні", "%d днів", + "%d днів", + "%d днів", "%d днів" ], "%d weeks": [ "%d тиждень", "%d тижні", "%d тижнів", + "%d тижнів", + "%d тижнів", "%d тижнів" ], "%d months": [ "%d місяць", "%d місяці", "%d місяців", + "%d місяців", + "%d місяців", "%d місяців" ], "%d years": [ "%d рік", "%d роки", "%d років", + "%d років", + "%d років", "%d років" ], "Never": "Ніколи", @@ -82,30 +98,40 @@ "Документ буде вилучений через %d секунду.", "Документ буде вилучений через %d секунди.", "Документ буде вилучений через %d секунд.", + "Документ буде вилучений через %d секунд.", + "Документ буде вилучений через %d секунд.", "Документ буде вилучений через %d секунд." ], "This document will expire in %d minutes.": [ "Документ буде вилучений через %d хвилину.", "Документ буде вилучений через %d хвилини.", "Документ буде вилучений через %d хвилин.", + "Документ буде вилучений через %d хвилин.", + "Документ буде вилучений через %d хвилин.", "Документ буде вилучений через %d хвилин." ], "This document will expire in %d hours.": [ "Документ буде вилучений через %d годину.", "Документ буде вилучений через %d години.", "Документ буде вилучений через %d годин.", + "Документ буде вилучений через %d годин.", + "Документ буде вилучений через %d годин.", "Документ буде вилучений через %d годин." ], "This document will expire in %d days.": [ "Документ буде вилучений через %d день.", "Документ буде вилучений через %d дні.", "Документ буде вилучений через %d днів.", + "Документ буде вилучений через %d днів.", + "Документ буде вилучений через %d днів.", "Документ буде вилучений через %d днів." ], "This document will expire in %d months.": [ "Документ буде вилучений через %d місяць.", "Документ буде вилучений через %d місяці.", "Документ буде вилучений через %d місяців.", + "Документ буде вилучений через %d місяців.", + "Документ буде вилучений через %d місяців.", "Документ буде вилучений через %d місяців." ], "Please enter the password for this paste:": "Будь ласка, введіть пароль від допису:", diff --git a/i18n/zh.json b/i18n/zh.json index e5e60a52..307fdb67 100644 --- a/i18n/zh.json +++ b/i18n/zh.json @@ -8,6 +8,8 @@ "%s requires php %s or above to work. Sorry.": "抱歉,%s 需要 PHP %s 及以上版本才能运行。", "%s requires configuration section [%s] to be present in configuration file.": "%s 需要设置配置文件中的 [%s] 部分。", "Please wait %d seconds between each post.": [ + "每 %d 秒只能粘贴一次。", + "每 %d 秒只能粘贴一次。", "每 %d 秒只能粘贴一次。", "每 %d 秒只能粘贴一次。", "每 %d 秒只能粘贴一次。", @@ -35,6 +37,8 @@ "Discussion": "讨论", "Toggle navigation": "切换导航栏", "%d seconds": [ + "%d 秒", + "%d 秒", "%d 秒", "%d 秒", "%d 秒", @@ -44,33 +48,45 @@ "%d 分钟", "%d 分钟", "%d 秒", + "%d 秒", + "%d 秒", "%d 秒" ], "%d hours": [ + "%d 小时", + "%d 小时", "%d 小时", "%d 小时", "%d 小时", "%d 小时" ], "%d days": [ + "%d 天", + "%d 天", "%d 天", "%d 天", "%d 天", "%d 天" ], "%d weeks": [ + "%d 周", + "%d 周", "%d 周", "%d 周", "%d 周", "%d 周" ], "%d months": [ + "%d 个月", + "%d 个月", "%d 个月", "%d 个月", "%d 个月", "%d 个月" ], "%d years": [ + "%d 年", + "%d 年", "%d 年", "%d 年", "%d 年", @@ -82,30 +98,40 @@ "这份文档将在一秒后过期。", "这份文档将在 %d 秒后过期。", "这份文档将在 %d 秒后过期。", + "这份文档将在 %d 秒后过期。", + "这份文档将在 %d 秒后过期。", "这份文档将在 %d 秒后过期。" ], "This document will expire in %d minutes.": [ "这份文档将在一分钟后过期。", "这份文档将在 %d 分钟后过期。", "这份文档将在 %d 分钟后过期。", + "这份文档将在 %d 分钟后过期。", + "这份文档将在 %d 分钟后过期。", "这份文档将在 %d 分钟后过期。" ], "This document will expire in %d hours.": [ "这份文档将在一小时后过期。", "这份文档将在 %d 小时后过期。", "这份文档将在 %d 小时后过期。", + "这份文档将在 %d 小时后过期。", + "这份文档将在 %d 小时后过期。", "这份文档将在 %d 小时后过期。" ], "This document will expire in %d days.": [ "这份文档将在一天后过期。", "这份文档将在 %d 天后过期。", "这份文档将在 %d 天后过期。", + "这份文档将在 %d 天后过期。", + "这份文档将在 %d 天后过期。", "这份文档将在 %d 天后过期。" ], "This document will expire in %d months.": [ "这份文档将在一个月后过期。", "这份文档将在 %d 个月后过期。", "这份文档将在 %d 个月后过期。", + "这份文档将在 %d 个月后过期。", + "这份文档将在 %d 个月后过期。", "这份文档将在 %d 个月后过期。" ], "Please enter the password for this paste:": "请输入这份粘贴内容的密码:", @@ -187,7 +213,7 @@ "URL shortener may expose your decrypt key in URL.": "短链接服务可能会暴露您在 URL 中的解密密钥。", "Save paste": "保存内容", "Your IP is not authorized to create pastes.": "您的 IP 无权创建粘贴。", - "Trying to shorten a URL that isn't pointing at our instance.": "Trying to shorten a URL that isn't pointing at our instance.", - "Error calling YOURLS. Probably a configuration issue, like wrong or missing \"apiurl\" or \"signature\".": "Error calling YOURLS. Probably a configuration issue, like wrong or missing \"apiurl\" or \"signature\".", - "Error parsing YOURLS response.": "Error parsing YOURLS response." + "Trying to shorten a URL that isn't pointing at our instance.": "尝试缩短一个不指向我们实例的URL。", + "Error calling YOURLS. Probably a configuration issue, like wrong or missing \"apiurl\" or \"signature\".": "调用 YOURLS 时出错。可能是配置问题,例如“apiurl”或“signature”错误或缺失。", + "Error parsing YOURLS response.": "解析 YOURLS 响应时出错。" } diff --git a/index.php b/index.php index 7a7a3d0e..70e5b0d8 100644 --- a/index.php +++ b/index.php @@ -7,7 +7,7 @@ * @link https://github.com/PrivateBin/PrivateBin * @copyright 2012 Sébastien SAUVAGE (sebsauvage.net) * @license https://www.opensource.org/licenses/zlib-license.php The zlib/libpng License - * @version 1.5.1 + * @version 1.5.2 */ // change this, if your php files and data is outside of your webservers document root diff --git a/js/common.js b/js/common.js index 0d1b6738..6f4c9f38 100644 --- a/js/common.js +++ b/js/common.js @@ -10,14 +10,14 @@ global.fs = require('fs'); global.WebCrypto = require('@peculiar/webcrypto').Crypto; // application libraries to test -global.$ = global.jQuery = require('./jquery-3.6.1'); +global.$ = global.jQuery = require('./jquery-3.7.0'); global.RawDeflate = require('./rawinflate-0.3').RawDeflate; global.zlib = require('./zlib-1.2.13').zlib; require('./prettify'); global.prettyPrint = window.PR.prettyPrint; global.prettyPrintOne = window.PR.prettyPrintOne; global.showdown = require('./showdown-2.1.0'); -global.DOMPurify = require('./purify-2.4.6'); +global.DOMPurify = require('./purify-3.0.4'); global.baseX = require('./base-x-4.0.0').baseX; global.Legacy = require('./legacy').Legacy; require('./bootstrap-3.4.1'); diff --git a/js/jquery-3.6.1.js b/js/jquery-3.6.1.js deleted file mode 100644 index 2c69bc90..00000000 --- a/js/jquery-3.6.1.js +++ /dev/null @@ -1,2 +0,0 @@ -/*! jQuery v3.6.1 | (c) OpenJS Foundation and other contributors | jquery.org/license */ -!function(e,t){"use strict";"object"==typeof module&&"object"==typeof module.exports?module.exports=e.document?t(e,!0):function(e){if(!e.document)throw new Error("jQuery requires a window with a document");return t(e)}:t(e)}("undefined"!=typeof window?window:this,function(C,e){"use strict";var t=[],r=Object.getPrototypeOf,s=t.slice,g=t.flat?function(e){return t.flat.call(e)}:function(e){return t.concat.apply([],e)},u=t.push,i=t.indexOf,n={},o=n.toString,y=n.hasOwnProperty,a=y.toString,l=a.call(Object),v={},m=function(e){return"function"==typeof e&&"number"!=typeof e.nodeType&&"function"!=typeof e.item},x=function(e){return null!=e&&e===e.window},E=C.document,c={type:!0,src:!0,nonce:!0,noModule:!0};function b(e,t,n){var r,i,o=(n=n||E).createElement("script");if(o.text=e,t)for(r in c)(i=t[r]||t.getAttribute&&t.getAttribute(r))&&o.setAttribute(r,i);n.head.appendChild(o).parentNode.removeChild(o)}function w(e){return null==e?e+"":"object"==typeof e||"function"==typeof e?n[o.call(e)]||"object":typeof e}var f="3.6.1",S=function(e,t){return new S.fn.init(e,t)};function p(e){var t=!!e&&"length"in e&&e.length,n=w(e);return!m(e)&&!x(e)&&("array"===n||0===t||"number"==typeof t&&0+~]|"+M+")"+M+"*"),U=new RegExp(M+"|>"),X=new RegExp(F),V=new RegExp("^"+I+"$"),G={ID:new RegExp("^#("+I+")"),CLASS:new RegExp("^\\.("+I+")"),TAG:new RegExp("^("+I+"|[*])"),ATTR:new RegExp("^"+W),PSEUDO:new RegExp("^"+F),CHILD:new RegExp("^:(only|first|last|nth|nth-last)-(child|of-type)(?:\\("+M+"*(even|odd|(([+-]|)(\\d*)n|)"+M+"*(?:([+-]|)"+M+"*(\\d+)|))"+M+"*\\)|)","i"),bool:new RegExp("^(?:"+R+")$","i"),needsContext:new RegExp("^"+M+"*[>+~]|:(even|odd|eq|gt|lt|nth|first|last)(?:\\("+M+"*((?:-\\d)?\\d*)"+M+"*\\)|)(?=[^-]|$)","i")},Y=/HTML$/i,Q=/^(?:input|select|textarea|button)$/i,J=/^h\d$/i,K=/^[^{]+\{\s*\[native \w/,Z=/^(?:#([\w-]+)|(\w+)|\.([\w-]+))$/,ee=/[+~]/,te=new RegExp("\\\\[\\da-fA-F]{1,6}"+M+"?|\\\\([^\\r\\n\\f])","g"),ne=function(e,t){var n="0x"+e.slice(1)-65536;return t||(n<0?String.fromCharCode(n+65536):String.fromCharCode(n>>10|55296,1023&n|56320))},re=/([\0-\x1f\x7f]|^-?\d)|^-$|[^\0-\x1f\x7f-\uFFFF\w-]/g,ie=function(e,t){return t?"\0"===e?"\ufffd":e.slice(0,-1)+"\\"+e.charCodeAt(e.length-1).toString(16)+" ":"\\"+e},oe=function(){T()},ae=be(function(e){return!0===e.disabled&&"fieldset"===e.nodeName.toLowerCase()},{dir:"parentNode",next:"legend"});try{H.apply(t=O.call(p.childNodes),p.childNodes),t[p.childNodes.length].nodeType}catch(e){H={apply:t.length?function(e,t){L.apply(e,O.call(t))}:function(e,t){var n=e.length,r=0;while(e[n++]=t[r++]);e.length=n-1}}}function se(t,e,n,r){var i,o,a,s,u,l,c,f=e&&e.ownerDocument,p=e?e.nodeType:9;if(n=n||[],"string"!=typeof t||!t||1!==p&&9!==p&&11!==p)return n;if(!r&&(T(e),e=e||C,E)){if(11!==p&&(u=Z.exec(t)))if(i=u[1]){if(9===p){if(!(a=e.getElementById(i)))return n;if(a.id===i)return n.push(a),n}else if(f&&(a=f.getElementById(i))&&v(e,a)&&a.id===i)return n.push(a),n}else{if(u[2])return H.apply(n,e.getElementsByTagName(t)),n;if((i=u[3])&&d.getElementsByClassName&&e.getElementsByClassName)return H.apply(n,e.getElementsByClassName(i)),n}if(d.qsa&&!N[t+" "]&&(!y||!y.test(t))&&(1!==p||"object"!==e.nodeName.toLowerCase())){if(c=t,f=e,1===p&&(U.test(t)||z.test(t))){(f=ee.test(t)&&ve(e.parentNode)||e)===e&&d.scope||((s=e.getAttribute("id"))?s=s.replace(re,ie):e.setAttribute("id",s=S)),o=(l=h(t)).length;while(o--)l[o]=(s?"#"+s:":scope")+" "+xe(l[o]);c=l.join(",")}try{return H.apply(n,f.querySelectorAll(c)),n}catch(e){N(t,!0)}finally{s===S&&e.removeAttribute("id")}}}return g(t.replace(B,"$1"),e,n,r)}function ue(){var r=[];return function e(t,n){return r.push(t+" ")>b.cacheLength&&delete e[r.shift()],e[t+" "]=n}}function le(e){return e[S]=!0,e}function ce(e){var t=C.createElement("fieldset");try{return!!e(t)}catch(e){return!1}finally{t.parentNode&&t.parentNode.removeChild(t),t=null}}function fe(e,t){var n=e.split("|"),r=n.length;while(r--)b.attrHandle[n[r]]=t}function pe(e,t){var n=t&&e,r=n&&1===e.nodeType&&1===t.nodeType&&e.sourceIndex-t.sourceIndex;if(r)return r;if(n)while(n=n.nextSibling)if(n===t)return-1;return e?1:-1}function de(t){return function(e){return"input"===e.nodeName.toLowerCase()&&e.type===t}}function he(n){return function(e){var t=e.nodeName.toLowerCase();return("input"===t||"button"===t)&&e.type===n}}function ge(t){return function(e){return"form"in e?e.parentNode&&!1===e.disabled?"label"in e?"label"in e.parentNode?e.parentNode.disabled===t:e.disabled===t:e.isDisabled===t||e.isDisabled!==!t&&ae(e)===t:e.disabled===t:"label"in e&&e.disabled===t}}function ye(a){return le(function(o){return o=+o,le(function(e,t){var n,r=a([],e.length,o),i=r.length;while(i--)e[n=r[i]]&&(e[n]=!(t[n]=e[n]))})})}function ve(e){return e&&"undefined"!=typeof e.getElementsByTagName&&e}for(e in d=se.support={},i=se.isXML=function(e){var t=e&&e.namespaceURI,n=e&&(e.ownerDocument||e).documentElement;return!Y.test(t||n&&n.nodeName||"HTML")},T=se.setDocument=function(e){var t,n,r=e?e.ownerDocument||e:p;return r!=C&&9===r.nodeType&&r.documentElement&&(a=(C=r).documentElement,E=!i(C),p!=C&&(n=C.defaultView)&&n.top!==n&&(n.addEventListener?n.addEventListener("unload",oe,!1):n.attachEvent&&n.attachEvent("onunload",oe)),d.scope=ce(function(e){return a.appendChild(e).appendChild(C.createElement("div")),"undefined"!=typeof e.querySelectorAll&&!e.querySelectorAll(":scope fieldset div").length}),d.attributes=ce(function(e){return e.className="i",!e.getAttribute("className")}),d.getElementsByTagName=ce(function(e){return e.appendChild(C.createComment("")),!e.getElementsByTagName("*").length}),d.getElementsByClassName=K.test(C.getElementsByClassName),d.getById=ce(function(e){return a.appendChild(e).id=S,!C.getElementsByName||!C.getElementsByName(S).length}),d.getById?(b.filter.ID=function(e){var t=e.replace(te,ne);return function(e){return e.getAttribute("id")===t}},b.find.ID=function(e,t){if("undefined"!=typeof t.getElementById&&E){var n=t.getElementById(e);return n?[n]:[]}}):(b.filter.ID=function(e){var n=e.replace(te,ne);return function(e){var t="undefined"!=typeof e.getAttributeNode&&e.getAttributeNode("id");return t&&t.value===n}},b.find.ID=function(e,t){if("undefined"!=typeof t.getElementById&&E){var n,r,i,o=t.getElementById(e);if(o){if((n=o.getAttributeNode("id"))&&n.value===e)return[o];i=t.getElementsByName(e),r=0;while(o=i[r++])if((n=o.getAttributeNode("id"))&&n.value===e)return[o]}return[]}}),b.find.TAG=d.getElementsByTagName?function(e,t){return"undefined"!=typeof t.getElementsByTagName?t.getElementsByTagName(e):d.qsa?t.querySelectorAll(e):void 0}:function(e,t){var n,r=[],i=0,o=t.getElementsByTagName(e);if("*"===e){while(n=o[i++])1===n.nodeType&&r.push(n);return r}return o},b.find.CLASS=d.getElementsByClassName&&function(e,t){if("undefined"!=typeof t.getElementsByClassName&&E)return t.getElementsByClassName(e)},s=[],y=[],(d.qsa=K.test(C.querySelectorAll))&&(ce(function(e){var t;a.appendChild(e).innerHTML="",e.querySelectorAll("[msallowcapture^='']").length&&y.push("[*^$]="+M+"*(?:''|\"\")"),e.querySelectorAll("[selected]").length||y.push("\\["+M+"*(?:value|"+R+")"),e.querySelectorAll("[id~="+S+"-]").length||y.push("~="),(t=C.createElement("input")).setAttribute("name",""),e.appendChild(t),e.querySelectorAll("[name='']").length||y.push("\\["+M+"*name"+M+"*="+M+"*(?:''|\"\")"),e.querySelectorAll(":checked").length||y.push(":checked"),e.querySelectorAll("a#"+S+"+*").length||y.push(".#.+[+~]"),e.querySelectorAll("\\\f"),y.push("[\\r\\n\\f]")}),ce(function(e){e.innerHTML="";var t=C.createElement("input");t.setAttribute("type","hidden"),e.appendChild(t).setAttribute("name","D"),e.querySelectorAll("[name=d]").length&&y.push("name"+M+"*[*^$|!~]?="),2!==e.querySelectorAll(":enabled").length&&y.push(":enabled",":disabled"),a.appendChild(e).disabled=!0,2!==e.querySelectorAll(":disabled").length&&y.push(":enabled",":disabled"),e.querySelectorAll("*,:x"),y.push(",.*:")})),(d.matchesSelector=K.test(c=a.matches||a.webkitMatchesSelector||a.mozMatchesSelector||a.oMatchesSelector||a.msMatchesSelector))&&ce(function(e){d.disconnectedMatch=c.call(e,"*"),c.call(e,"[s!='']:x"),s.push("!=",F)}),y=y.length&&new RegExp(y.join("|")),s=s.length&&new RegExp(s.join("|")),t=K.test(a.compareDocumentPosition),v=t||K.test(a.contains)?function(e,t){var n=9===e.nodeType?e.documentElement:e,r=t&&t.parentNode;return e===r||!(!r||1!==r.nodeType||!(n.contains?n.contains(r):e.compareDocumentPosition&&16&e.compareDocumentPosition(r)))}:function(e,t){if(t)while(t=t.parentNode)if(t===e)return!0;return!1},j=t?function(e,t){if(e===t)return l=!0,0;var n=!e.compareDocumentPosition-!t.compareDocumentPosition;return n||(1&(n=(e.ownerDocument||e)==(t.ownerDocument||t)?e.compareDocumentPosition(t):1)||!d.sortDetached&&t.compareDocumentPosition(e)===n?e==C||e.ownerDocument==p&&v(p,e)?-1:t==C||t.ownerDocument==p&&v(p,t)?1:u?P(u,e)-P(u,t):0:4&n?-1:1)}:function(e,t){if(e===t)return l=!0,0;var n,r=0,i=e.parentNode,o=t.parentNode,a=[e],s=[t];if(!i||!o)return e==C?-1:t==C?1:i?-1:o?1:u?P(u,e)-P(u,t):0;if(i===o)return pe(e,t);n=e;while(n=n.parentNode)a.unshift(n);n=t;while(n=n.parentNode)s.unshift(n);while(a[r]===s[r])r++;return r?pe(a[r],s[r]):a[r]==p?-1:s[r]==p?1:0}),C},se.matches=function(e,t){return se(e,null,null,t)},se.matchesSelector=function(e,t){if(T(e),d.matchesSelector&&E&&!N[t+" "]&&(!s||!s.test(t))&&(!y||!y.test(t)))try{var n=c.call(e,t);if(n||d.disconnectedMatch||e.document&&11!==e.document.nodeType)return n}catch(e){N(t,!0)}return 0":{dir:"parentNode",first:!0}," ":{dir:"parentNode"},"+":{dir:"previousSibling",first:!0},"~":{dir:"previousSibling"}},preFilter:{ATTR:function(e){return e[1]=e[1].replace(te,ne),e[3]=(e[3]||e[4]||e[5]||"").replace(te,ne),"~="===e[2]&&(e[3]=" "+e[3]+" "),e.slice(0,4)},CHILD:function(e){return e[1]=e[1].toLowerCase(),"nth"===e[1].slice(0,3)?(e[3]||se.error(e[0]),e[4]=+(e[4]?e[5]+(e[6]||1):2*("even"===e[3]||"odd"===e[3])),e[5]=+(e[7]+e[8]||"odd"===e[3])):e[3]&&se.error(e[0]),e},PSEUDO:function(e){var t,n=!e[6]&&e[2];return G.CHILD.test(e[0])?null:(e[3]?e[2]=e[4]||e[5]||"":n&&X.test(n)&&(t=h(n,!0))&&(t=n.indexOf(")",n.length-t)-n.length)&&(e[0]=e[0].slice(0,t),e[2]=n.slice(0,t)),e.slice(0,3))}},filter:{TAG:function(e){var t=e.replace(te,ne).toLowerCase();return"*"===e?function(){return!0}:function(e){return e.nodeName&&e.nodeName.toLowerCase()===t}},CLASS:function(e){var t=m[e+" "];return t||(t=new RegExp("(^|"+M+")"+e+"("+M+"|$)"))&&m(e,function(e){return t.test("string"==typeof e.className&&e.className||"undefined"!=typeof e.getAttribute&&e.getAttribute("class")||"")})},ATTR:function(n,r,i){return function(e){var t=se.attr(e,n);return null==t?"!="===r:!r||(t+="","="===r?t===i:"!="===r?t!==i:"^="===r?i&&0===t.indexOf(i):"*="===r?i&&-1:\x20\t\r\n\f]*)[\x20\t\r\n\f]*\/?>(?:<\/\1>|)$/i;function j(e,n,r){return m(n)?S.grep(e,function(e,t){return!!n.call(e,t,e)!==r}):n.nodeType?S.grep(e,function(e){return e===n!==r}):"string"!=typeof n?S.grep(e,function(e){return-1)[^>]*|#([\w-]+))$/;(S.fn.init=function(e,t,n){var r,i;if(!e)return this;if(n=n||D,"string"==typeof e){if(!(r="<"===e[0]&&">"===e[e.length-1]&&3<=e.length?[null,e,null]:q.exec(e))||!r[1]&&t)return!t||t.jquery?(t||n).find(e):this.constructor(t).find(e);if(r[1]){if(t=t instanceof S?t[0]:t,S.merge(this,S.parseHTML(r[1],t&&t.nodeType?t.ownerDocument||t:E,!0)),N.test(r[1])&&S.isPlainObject(t))for(r in t)m(this[r])?this[r](t[r]):this.attr(r,t[r]);return this}return(i=E.getElementById(r[2]))&&(this[0]=i,this.length=1),this}return e.nodeType?(this[0]=e,this.length=1,this):m(e)?void 0!==n.ready?n.ready(e):e(S):S.makeArray(e,this)}).prototype=S.fn,D=S(E);var L=/^(?:parents|prev(?:Until|All))/,H={children:!0,contents:!0,next:!0,prev:!0};function O(e,t){while((e=e[t])&&1!==e.nodeType);return e}S.fn.extend({has:function(e){var t=S(e,this),n=t.length;return this.filter(function(){for(var e=0;e\x20\t\r\n\f]*)/i,he=/^$|^module$|\/(?:java|ecma)script/i;ce=E.createDocumentFragment().appendChild(E.createElement("div")),(fe=E.createElement("input")).setAttribute("type","radio"),fe.setAttribute("checked","checked"),fe.setAttribute("name","t"),ce.appendChild(fe),v.checkClone=ce.cloneNode(!0).cloneNode(!0).lastChild.checked,ce.innerHTML="",v.noCloneChecked=!!ce.cloneNode(!0).lastChild.defaultValue,ce.innerHTML="",v.option=!!ce.lastChild;var ge={thead:[1,"","
"],col:[2,"","
"],tr:[2,"","
"],td:[3,"","
"],_default:[0,"",""]};function ye(e,t){var n;return n="undefined"!=typeof e.getElementsByTagName?e.getElementsByTagName(t||"*"):"undefined"!=typeof e.querySelectorAll?e.querySelectorAll(t||"*"):[],void 0===t||t&&A(e,t)?S.merge([e],n):n}function ve(e,t){for(var n=0,r=e.length;n",""]);var me=/<|&#?\w+;/;function xe(e,t,n,r,i){for(var o,a,s,u,l,c,f=t.createDocumentFragment(),p=[],d=0,h=e.length;d\s*$/g;function je(e,t){return A(e,"table")&&A(11!==t.nodeType?t:t.firstChild,"tr")&&S(e).children("tbody")[0]||e}function De(e){return e.type=(null!==e.getAttribute("type"))+"/"+e.type,e}function qe(e){return"true/"===(e.type||"").slice(0,5)?e.type=e.type.slice(5):e.removeAttribute("type"),e}function Le(e,t){var n,r,i,o,a,s;if(1===t.nodeType){if(Y.hasData(e)&&(s=Y.get(e).events))for(i in Y.remove(t,"handle events"),s)for(n=0,r=s[i].length;n").attr(n.scriptAttrs||{}).prop({charset:n.scriptCharset,src:n.url}).on("load error",i=function(e){r.remove(),i=null,e&&t("error"===e.type?404:200,e.type)}),E.head.appendChild(r[0])},abort:function(){i&&i()}}});var Ut,Xt=[],Vt=/(=)\?(?=&|$)|\?\?/;S.ajaxSetup({jsonp:"callback",jsonpCallback:function(){var e=Xt.pop()||S.expando+"_"+Ct.guid++;return this[e]=!0,e}}),S.ajaxPrefilter("json jsonp",function(e,t,n){var r,i,o,a=!1!==e.jsonp&&(Vt.test(e.url)?"url":"string"==typeof e.data&&0===(e.contentType||"").indexOf("application/x-www-form-urlencoded")&&Vt.test(e.data)&&"data");if(a||"jsonp"===e.dataTypes[0])return r=e.jsonpCallback=m(e.jsonpCallback)?e.jsonpCallback():e.jsonpCallback,a?e[a]=e[a].replace(Vt,"$1"+r):!1!==e.jsonp&&(e.url+=(Et.test(e.url)?"&":"?")+e.jsonp+"="+r),e.converters["script json"]=function(){return o||S.error(r+" was not called"),o[0]},e.dataTypes[0]="json",i=C[r],C[r]=function(){o=arguments},n.always(function(){void 0===i?S(C).removeProp(r):C[r]=i,e[r]&&(e.jsonpCallback=t.jsonpCallback,Xt.push(r)),o&&m(i)&&i(o[0]),o=i=void 0}),"script"}),v.createHTMLDocument=((Ut=E.implementation.createHTMLDocument("").body).innerHTML="
",2===Ut.childNodes.length),S.parseHTML=function(e,t,n){return"string"!=typeof e?[]:("boolean"==typeof t&&(n=t,t=!1),t||(v.createHTMLDocument?((r=(t=E.implementation.createHTMLDocument("")).createElement("base")).href=E.location.href,t.head.appendChild(r)):t=E),o=!n&&[],(i=N.exec(e))?[t.createElement(i[1])]:(i=xe([e],t,o),o&&o.length&&S(o).remove(),S.merge([],i.childNodes)));var r,i,o},S.fn.load=function(e,t,n){var r,i,o,a=this,s=e.indexOf(" ");return-1").append(S.parseHTML(e)).find(r):e)}).always(n&&function(e,t){a.each(function(){n.apply(this,o||[e.responseText,t,e])})}),this},S.expr.pseudos.animated=function(t){return S.grep(S.timers,function(e){return t===e.elem}).length},S.offset={setOffset:function(e,t,n){var r,i,o,a,s,u,l=S.css(e,"position"),c=S(e),f={};"static"===l&&(e.style.position="relative"),s=c.offset(),o=S.css(e,"top"),u=S.css(e,"left"),("absolute"===l||"fixed"===l)&&-1<(o+u).indexOf("auto")?(a=(r=c.position()).top,i=r.left):(a=parseFloat(o)||0,i=parseFloat(u)||0),m(t)&&(t=t.call(e,n,S.extend({},s))),null!=t.top&&(f.top=t.top-s.top+a),null!=t.left&&(f.left=t.left-s.left+i),"using"in t?t.using.call(e,f):c.css(f)}},S.fn.extend({offset:function(t){if(arguments.length)return void 0===t?this:this.each(function(e){S.offset.setOffset(this,t,e)});var e,n,r=this[0];return r?r.getClientRects().length?(e=r.getBoundingClientRect(),n=r.ownerDocument.defaultView,{top:e.top+n.pageYOffset,left:e.left+n.pageXOffset}):{top:0,left:0}:void 0},position:function(){if(this[0]){var e,t,n,r=this[0],i={top:0,left:0};if("fixed"===S.css(r,"position"))t=r.getBoundingClientRect();else{t=this.offset(),n=r.ownerDocument,e=r.offsetParent||n.documentElement;while(e&&(e===n.body||e===n.documentElement)&&"static"===S.css(e,"position"))e=e.parentNode;e&&e!==r&&1===e.nodeType&&((i=S(e).offset()).top+=S.css(e,"borderTopWidth",!0),i.left+=S.css(e,"borderLeftWidth",!0))}return{top:t.top-i.top-S.css(r,"marginTop",!0),left:t.left-i.left-S.css(r,"marginLeft",!0)}}},offsetParent:function(){return this.map(function(){var e=this.offsetParent;while(e&&"static"===S.css(e,"position"))e=e.offsetParent;return e||re})}}),S.each({scrollLeft:"pageXOffset",scrollTop:"pageYOffset"},function(t,i){var o="pageYOffset"===i;S.fn[t]=function(e){return B(this,function(e,t,n){var r;if(x(e)?r=e:9===e.nodeType&&(r=e.defaultView),void 0===n)return r?r[i]:e[t];r?r.scrollTo(o?r.pageXOffset:n,o?n:r.pageYOffset):e[t]=n},t,e,arguments.length)}}),S.each(["top","left"],function(e,n){S.cssHooks[n]=_e(v.pixelPosition,function(e,t){if(t)return t=Be(e,n),Pe.test(t)?S(e).position()[n]+"px":t})}),S.each({Height:"height",Width:"width"},function(a,s){S.each({padding:"inner"+a,content:s,"":"outer"+a},function(r,o){S.fn[o]=function(e,t){var n=arguments.length&&(r||"boolean"!=typeof e),i=r||(!0===e||!0===t?"margin":"border");return B(this,function(e,t,n){var r;return x(e)?0===o.indexOf("outer")?e["inner"+a]:e.document.documentElement["client"+a]:9===e.nodeType?(r=e.documentElement,Math.max(e.body["scroll"+a],r["scroll"+a],e.body["offset"+a],r["offset"+a],r["client"+a])):void 0===n?S.css(e,t,i):S.style(e,t,n,i)},s,n?e:void 0,n)}})}),S.each(["ajaxStart","ajaxStop","ajaxComplete","ajaxError","ajaxSuccess","ajaxSend"],function(e,t){S.fn[t]=function(e){return this.on(t,e)}}),S.fn.extend({bind:function(e,t,n){return this.on(e,null,t,n)},unbind:function(e,t){return this.off(e,null,t)},delegate:function(e,t,n,r){return this.on(t,e,n,r)},undelegate:function(e,t,n){return 1===arguments.length?this.off(e,"**"):this.off(t,e||"**",n)},hover:function(e,t){return this.mouseenter(e).mouseleave(t||e)}}),S.each("blur focus focusin focusout resize scroll click dblclick mousedown mouseup mousemove mouseover mouseout mouseenter mouseleave change select submit keydown keypress keyup contextmenu".split(" "),function(e,n){S.fn[n]=function(e,t){return 0+~]|"+ge+")"+ge+"*"),x=new RegExp(ge+"|>"),j=new RegExp(g),A=new RegExp("^"+t+"$"),D={ID:new RegExp("^#("+t+")"),CLASS:new RegExp("^\\.("+t+")"),TAG:new RegExp("^("+t+"|[*])"),ATTR:new RegExp("^"+p),PSEUDO:new RegExp("^"+g),CHILD:new RegExp("^:(only|first|last|nth|nth-last)-(child|of-type)(?:\\("+ge+"*(even|odd|(([+-]|)(\\d*)n|)"+ge+"*(?:([+-]|)"+ge+"*(\\d+)|))"+ge+"*\\)|)","i"),bool:new RegExp("^(?:"+f+")$","i"),needsContext:new RegExp("^"+ge+"*[>+~]|:(even|odd|eq|gt|lt|nth|first|last)(?:\\("+ge+"*((?:-\\d)?\\d*)"+ge+"*\\)|)(?=[^-]|$)","i")},N=/^(?:input|select|textarea|button)$/i,q=/^h\d$/i,L=/^(?:#([\w-]+)|(\w+)|\.([\w-]+))$/,H=/[+~]/,O=new RegExp("\\\\[\\da-fA-F]{1,6}"+ge+"?|\\\\([^\\r\\n\\f])","g"),P=function(e,t){var n="0x"+e.slice(1)-65536;return t||(n<0?String.fromCharCode(n+65536):String.fromCharCode(n>>10|55296,1023&n|56320))},R=function(){V()},M=J(function(e){return!0===e.disabled&&fe(e,"fieldset")},{dir:"parentNode",next:"legend"});try{k.apply(oe=ae.call(ye.childNodes),ye.childNodes),oe[ye.childNodes.length].nodeType}catch(e){k={apply:function(e,t){me.apply(e,ae.call(t))},call:function(e){me.apply(e,ae.call(arguments,1))}}}function I(t,e,n,r){var i,o,a,s,u,l,c,f=e&&e.ownerDocument,p=e?e.nodeType:9;if(n=n||[],"string"!=typeof t||!t||1!==p&&9!==p&&11!==p)return n;if(!r&&(V(e),e=e||T,C)){if(11!==p&&(u=L.exec(t)))if(i=u[1]){if(9===p){if(!(a=e.getElementById(i)))return n;if(a.id===i)return k.call(n,a),n}else if(f&&(a=f.getElementById(i))&&I.contains(e,a)&&a.id===i)return k.call(n,a),n}else{if(u[2])return k.apply(n,e.getElementsByTagName(t)),n;if((i=u[3])&&e.getElementsByClassName)return k.apply(n,e.getElementsByClassName(i)),n}if(!(h[t+" "]||d&&d.test(t))){if(c=t,f=e,1===p&&(x.test(t)||m.test(t))){(f=H.test(t)&&z(e.parentNode)||e)==e&&le.scope||((s=e.getAttribute("id"))?s=ce.escapeSelector(s):e.setAttribute("id",s=S)),o=(l=Y(t)).length;while(o--)l[o]=(s?"#"+s:":scope")+" "+Q(l[o]);c=l.join(",")}try{return k.apply(n,f.querySelectorAll(c)),n}catch(e){h(t,!0)}finally{s===S&&e.removeAttribute("id")}}}return re(t.replace(ve,"$1"),e,n,r)}function W(){var r=[];return function e(t,n){return r.push(t+" ")>b.cacheLength&&delete e[r.shift()],e[t+" "]=n}}function F(e){return e[S]=!0,e}function $(e){var t=T.createElement("fieldset");try{return!!e(t)}catch(e){return!1}finally{t.parentNode&&t.parentNode.removeChild(t),t=null}}function B(t){return function(e){return fe(e,"input")&&e.type===t}}function _(t){return function(e){return(fe(e,"input")||fe(e,"button"))&&e.type===t}}function X(t){return function(e){return"form"in e?e.parentNode&&!1===e.disabled?"label"in e?"label"in e.parentNode?e.parentNode.disabled===t:e.disabled===t:e.isDisabled===t||e.isDisabled!==!t&&M(e)===t:e.disabled===t:"label"in e&&e.disabled===t}}function U(a){return F(function(o){return o=+o,F(function(e,t){var n,r=a([],e.length,o),i=r.length;while(i--)e[n=r[i]]&&(e[n]=!(t[n]=e[n]))})})}function z(e){return e&&"undefined"!=typeof e.getElementsByTagName&&e}function V(e){var t,n=e?e.ownerDocument||e:ye;return n!=T&&9===n.nodeType&&n.documentElement&&(r=(T=n).documentElement,C=!ce.isXMLDoc(T),i=r.matches||r.webkitMatchesSelector||r.msMatchesSelector,ye!=T&&(t=T.defaultView)&&t.top!==t&&t.addEventListener("unload",R),le.getById=$(function(e){return r.appendChild(e).id=ce.expando,!T.getElementsByName||!T.getElementsByName(ce.expando).length}),le.disconnectedMatch=$(function(e){return i.call(e,"*")}),le.scope=$(function(){return T.querySelectorAll(":scope")}),le.cssHas=$(function(){try{return T.querySelector(":has(*,:jqfake)"),!1}catch(e){return!0}}),le.getById?(b.filter.ID=function(e){var t=e.replace(O,P);return function(e){return e.getAttribute("id")===t}},b.find.ID=function(e,t){if("undefined"!=typeof t.getElementById&&C){var n=t.getElementById(e);return n?[n]:[]}}):(b.filter.ID=function(e){var n=e.replace(O,P);return function(e){var t="undefined"!=typeof e.getAttributeNode&&e.getAttributeNode("id");return t&&t.value===n}},b.find.ID=function(e,t){if("undefined"!=typeof t.getElementById&&C){var n,r,i,o=t.getElementById(e);if(o){if((n=o.getAttributeNode("id"))&&n.value===e)return[o];i=t.getElementsByName(e),r=0;while(o=i[r++])if((n=o.getAttributeNode("id"))&&n.value===e)return[o]}return[]}}),b.find.TAG=function(e,t){return"undefined"!=typeof t.getElementsByTagName?t.getElementsByTagName(e):t.querySelectorAll(e)},b.find.CLASS=function(e,t){if("undefined"!=typeof t.getElementsByClassName&&C)return t.getElementsByClassName(e)},d=[],$(function(e){var t;r.appendChild(e).innerHTML="",e.querySelectorAll("[selected]").length||d.push("\\["+ge+"*(?:value|"+f+")"),e.querySelectorAll("[id~="+S+"-]").length||d.push("~="),e.querySelectorAll("a#"+S+"+*").length||d.push(".#.+[+~]"),e.querySelectorAll(":checked").length||d.push(":checked"),(t=T.createElement("input")).setAttribute("type","hidden"),e.appendChild(t).setAttribute("name","D"),r.appendChild(e).disabled=!0,2!==e.querySelectorAll(":disabled").length&&d.push(":enabled",":disabled"),(t=T.createElement("input")).setAttribute("name",""),e.appendChild(t),e.querySelectorAll("[name='']").length||d.push("\\["+ge+"*name"+ge+"*="+ge+"*(?:''|\"\")")}),le.cssHas||d.push(":has"),d=d.length&&new RegExp(d.join("|")),l=function(e,t){if(e===t)return a=!0,0;var n=!e.compareDocumentPosition-!t.compareDocumentPosition;return n||(1&(n=(e.ownerDocument||e)==(t.ownerDocument||t)?e.compareDocumentPosition(t):1)||!le.sortDetached&&t.compareDocumentPosition(e)===n?e===T||e.ownerDocument==ye&&I.contains(ye,e)?-1:t===T||t.ownerDocument==ye&&I.contains(ye,t)?1:o?se.call(o,e)-se.call(o,t):0:4&n?-1:1)}),T}for(e in I.matches=function(e,t){return I(e,null,null,t)},I.matchesSelector=function(e,t){if(V(e),C&&!h[t+" "]&&(!d||!d.test(t)))try{var n=i.call(e,t);if(n||le.disconnectedMatch||e.document&&11!==e.document.nodeType)return n}catch(e){h(t,!0)}return 0":{dir:"parentNode",first:!0}," ":{dir:"parentNode"},"+":{dir:"previousSibling",first:!0},"~":{dir:"previousSibling"}},preFilter:{ATTR:function(e){return e[1]=e[1].replace(O,P),e[3]=(e[3]||e[4]||e[5]||"").replace(O,P),"~="===e[2]&&(e[3]=" "+e[3]+" "),e.slice(0,4)},CHILD:function(e){return e[1]=e[1].toLowerCase(),"nth"===e[1].slice(0,3)?(e[3]||I.error(e[0]),e[4]=+(e[4]?e[5]+(e[6]||1):2*("even"===e[3]||"odd"===e[3])),e[5]=+(e[7]+e[8]||"odd"===e[3])):e[3]&&I.error(e[0]),e},PSEUDO:function(e){var t,n=!e[6]&&e[2];return D.CHILD.test(e[0])?null:(e[3]?e[2]=e[4]||e[5]||"":n&&j.test(n)&&(t=Y(n,!0))&&(t=n.indexOf(")",n.length-t)-n.length)&&(e[0]=e[0].slice(0,t),e[2]=n.slice(0,t)),e.slice(0,3))}},filter:{TAG:function(e){var t=e.replace(O,P).toLowerCase();return"*"===e?function(){return!0}:function(e){return fe(e,t)}},CLASS:function(e){var t=s[e+" "];return t||(t=new RegExp("(^|"+ge+")"+e+"("+ge+"|$)"))&&s(e,function(e){return t.test("string"==typeof e.className&&e.className||"undefined"!=typeof e.getAttribute&&e.getAttribute("class")||"")})},ATTR:function(n,r,i){return function(e){var t=I.attr(e,n);return null==t?"!="===r:!r||(t+="","="===r?t===i:"!="===r?t!==i:"^="===r?i&&0===t.indexOf(i):"*="===r?i&&-1:\x20\t\r\n\f]*)[\x20\t\r\n\f]*\/?>(?:<\/\1>|)$/i;function T(e,n,r){return v(n)?ce.grep(e,function(e,t){return!!n.call(e,t,e)!==r}):n.nodeType?ce.grep(e,function(e){return e===n!==r}):"string"!=typeof n?ce.grep(e,function(e){return-1)[^>]*|#([\w-]+))$/;(ce.fn.init=function(e,t,n){var r,i;if(!e)return this;if(n=n||k,"string"==typeof e){if(!(r="<"===e[0]&&">"===e[e.length-1]&&3<=e.length?[null,e,null]:S.exec(e))||!r[1]&&t)return!t||t.jquery?(t||n).find(e):this.constructor(t).find(e);if(r[1]){if(t=t instanceof ce?t[0]:t,ce.merge(this,ce.parseHTML(r[1],t&&t.nodeType?t.ownerDocument||t:C,!0)),w.test(r[1])&&ce.isPlainObject(t))for(r in t)v(this[r])?this[r](t[r]):this.attr(r,t[r]);return this}return(i=C.getElementById(r[2]))&&(this[0]=i,this.length=1),this}return e.nodeType?(this[0]=e,this.length=1,this):v(e)?void 0!==n.ready?n.ready(e):e(ce):ce.makeArray(e,this)}).prototype=ce.fn,k=ce(C);var E=/^(?:parents|prev(?:Until|All))/,j={children:!0,contents:!0,next:!0,prev:!0};function A(e,t){while((e=e[t])&&1!==e.nodeType);return e}ce.fn.extend({has:function(e){var t=ce(e,this),n=t.length;return this.filter(function(){for(var e=0;e\x20\t\r\n\f]*)/i,Ce=/^$|^module$|\/(?:java|ecma)script/i;xe=C.createDocumentFragment().appendChild(C.createElement("div")),(be=C.createElement("input")).setAttribute("type","radio"),be.setAttribute("checked","checked"),be.setAttribute("name","t"),xe.appendChild(be),le.checkClone=xe.cloneNode(!0).cloneNode(!0).lastChild.checked,xe.innerHTML="",le.noCloneChecked=!!xe.cloneNode(!0).lastChild.defaultValue,xe.innerHTML="",le.option=!!xe.lastChild;var ke={thead:[1,"","
"],col:[2,"","
"],tr:[2,"","
"],td:[3,"","
"],_default:[0,"",""]};function Se(e,t){var n;return n="undefined"!=typeof e.getElementsByTagName?e.getElementsByTagName(t||"*"):"undefined"!=typeof e.querySelectorAll?e.querySelectorAll(t||"*"):[],void 0===t||t&&fe(e,t)?ce.merge([e],n):n}function Ee(e,t){for(var n=0,r=e.length;n",""]);var je=/<|&#?\w+;/;function Ae(e,t,n,r,i){for(var o,a,s,u,l,c,f=t.createDocumentFragment(),p=[],d=0,h=e.length;d\s*$/g;function Me(e,t){return fe(e,"table")&&fe(11!==t.nodeType?t:t.firstChild,"tr")&&ce(e).children("tbody")[0]||e}function Ie(e){return e.type=(null!==e.getAttribute("type"))+"/"+e.type,e}function We(e){return"true/"===(e.type||"").slice(0,5)?e.type=e.type.slice(5):e.removeAttribute("type"),e}function Fe(e,t){var n,r,i,o,a,s;if(1===t.nodeType){if(_.hasData(e)&&(s=_.get(e).events))for(i in _.remove(t,"handle events"),s)for(n=0,r=s[i].length;n").attr(n.scriptAttrs||{}).prop({charset:n.scriptCharset,src:n.url}).on("load error",i=function(e){r.remove(),i=null,e&&t("error"===e.type?404:200,e.type)}),C.head.appendChild(r[0])},abort:function(){i&&i()}}});var Jt,Kt=[],Zt=/(=)\?(?=&|$)|\?\?/;ce.ajaxSetup({jsonp:"callback",jsonpCallback:function(){var e=Kt.pop()||ce.expando+"_"+jt.guid++;return this[e]=!0,e}}),ce.ajaxPrefilter("json jsonp",function(e,t,n){var r,i,o,a=!1!==e.jsonp&&(Zt.test(e.url)?"url":"string"==typeof e.data&&0===(e.contentType||"").indexOf("application/x-www-form-urlencoded")&&Zt.test(e.data)&&"data");if(a||"jsonp"===e.dataTypes[0])return r=e.jsonpCallback=v(e.jsonpCallback)?e.jsonpCallback():e.jsonpCallback,a?e[a]=e[a].replace(Zt,"$1"+r):!1!==e.jsonp&&(e.url+=(At.test(e.url)?"&":"?")+e.jsonp+"="+r),e.converters["script json"]=function(){return o||ce.error(r+" was not called"),o[0]},e.dataTypes[0]="json",i=ie[r],ie[r]=function(){o=arguments},n.always(function(){void 0===i?ce(ie).removeProp(r):ie[r]=i,e[r]&&(e.jsonpCallback=t.jsonpCallback,Kt.push(r)),o&&v(i)&&i(o[0]),o=i=void 0}),"script"}),le.createHTMLDocument=((Jt=C.implementation.createHTMLDocument("").body).innerHTML="
",2===Jt.childNodes.length),ce.parseHTML=function(e,t,n){return"string"!=typeof e?[]:("boolean"==typeof t&&(n=t,t=!1),t||(le.createHTMLDocument?((r=(t=C.implementation.createHTMLDocument("")).createElement("base")).href=C.location.href,t.head.appendChild(r)):t=C),o=!n&&[],(i=w.exec(e))?[t.createElement(i[1])]:(i=Ae([e],t,o),o&&o.length&&ce(o).remove(),ce.merge([],i.childNodes)));var r,i,o},ce.fn.load=function(e,t,n){var r,i,o,a=this,s=e.indexOf(" ");return-1").append(ce.parseHTML(e)).find(r):e)}).always(n&&function(e,t){a.each(function(){n.apply(this,o||[e.responseText,t,e])})}),this},ce.expr.pseudos.animated=function(t){return ce.grep(ce.timers,function(e){return t===e.elem}).length},ce.offset={setOffset:function(e,t,n){var r,i,o,a,s,u,l=ce.css(e,"position"),c=ce(e),f={};"static"===l&&(e.style.position="relative"),s=c.offset(),o=ce.css(e,"top"),u=ce.css(e,"left"),("absolute"===l||"fixed"===l)&&-1<(o+u).indexOf("auto")?(a=(r=c.position()).top,i=r.left):(a=parseFloat(o)||0,i=parseFloat(u)||0),v(t)&&(t=t.call(e,n,ce.extend({},s))),null!=t.top&&(f.top=t.top-s.top+a),null!=t.left&&(f.left=t.left-s.left+i),"using"in t?t.using.call(e,f):c.css(f)}},ce.fn.extend({offset:function(t){if(arguments.length)return void 0===t?this:this.each(function(e){ce.offset.setOffset(this,t,e)});var e,n,r=this[0];return r?r.getClientRects().length?(e=r.getBoundingClientRect(),n=r.ownerDocument.defaultView,{top:e.top+n.pageYOffset,left:e.left+n.pageXOffset}):{top:0,left:0}:void 0},position:function(){if(this[0]){var e,t,n,r=this[0],i={top:0,left:0};if("fixed"===ce.css(r,"position"))t=r.getBoundingClientRect();else{t=this.offset(),n=r.ownerDocument,e=r.offsetParent||n.documentElement;while(e&&(e===n.body||e===n.documentElement)&&"static"===ce.css(e,"position"))e=e.parentNode;e&&e!==r&&1===e.nodeType&&((i=ce(e).offset()).top+=ce.css(e,"borderTopWidth",!0),i.left+=ce.css(e,"borderLeftWidth",!0))}return{top:t.top-i.top-ce.css(r,"marginTop",!0),left:t.left-i.left-ce.css(r,"marginLeft",!0)}}},offsetParent:function(){return this.map(function(){var e=this.offsetParent;while(e&&"static"===ce.css(e,"position"))e=e.offsetParent;return e||J})}}),ce.each({scrollLeft:"pageXOffset",scrollTop:"pageYOffset"},function(t,i){var o="pageYOffset"===i;ce.fn[t]=function(e){return R(this,function(e,t,n){var r;if(y(e)?r=e:9===e.nodeType&&(r=e.defaultView),void 0===n)return r?r[i]:e[t];r?r.scrollTo(o?r.pageXOffset:n,o?n:r.pageYOffset):e[t]=n},t,e,arguments.length)}}),ce.each(["top","left"],function(e,n){ce.cssHooks[n]=Ye(le.pixelPosition,function(e,t){if(t)return t=Ge(e,n),_e.test(t)?ce(e).position()[n]+"px":t})}),ce.each({Height:"height",Width:"width"},function(a,s){ce.each({padding:"inner"+a,content:s,"":"outer"+a},function(r,o){ce.fn[o]=function(e,t){var n=arguments.length&&(r||"boolean"!=typeof e),i=r||(!0===e||!0===t?"margin":"border");return R(this,function(e,t,n){var r;return y(e)?0===o.indexOf("outer")?e["inner"+a]:e.document.documentElement["client"+a]:9===e.nodeType?(r=e.documentElement,Math.max(e.body["scroll"+a],r["scroll"+a],e.body["offset"+a],r["offset"+a],r["client"+a])):void 0===n?ce.css(e,t,i):ce.style(e,t,n,i)},s,n?e:void 0,n)}})}),ce.each(["ajaxStart","ajaxStop","ajaxComplete","ajaxError","ajaxSuccess","ajaxSend"],function(e,t){ce.fn[t]=function(e){return this.on(t,e)}}),ce.fn.extend({bind:function(e,t,n){return this.on(e,null,t,n)},unbind:function(e,t){return this.off(e,null,t)},delegate:function(e,t,n,r){return this.on(t,e,n,r)},undelegate:function(e,t,n){return 1===arguments.length?this.off(e,"**"):this.off(t,e||"**",n)},hover:function(e,t){return this.mouseenter(e).mouseleave(t||e)}}),ce.each("blur focus focusin focusout resize scroll click dblclick mousedown mouseup mousemove mouseover mouseout mouseenter mouseleave change select submit keydown keypress keyup contextmenu".split(" "),function(e,n){ce.fn[n]=function(e,t){return 0=0.10.0" @@ -1770,9 +1770,9 @@ } }, "word-wrap": { - "version": "1.2.3", - "resolved": "https://registry.npmjs.org/word-wrap/-/word-wrap-1.2.3.tgz", - "integrity": "sha512-Hz/mrNwitNRh/HUAtM/VT/5VH+ygD6DV7mYKZAtHOrbs8U7lvPS6xf7EJKMF0uW1KJCl0H701g3ZGus+muE5vQ==", + "version": "1.2.4", + "resolved": "https://registry.npmjs.org/word-wrap/-/word-wrap-1.2.4.tgz", + "integrity": "sha512-2V81OA4ugVo5pRo46hAoD2ivUJx8jXmWXfUkY4KFNw0hEptvN0QfH3K4nHiwzGeKl5rFKedV48QVoqYavy4YpA==", "dev": true }, "xml-name-validator": { diff --git a/js/package.json b/js/package.json index 746584bb..79b3c429 100644 --- a/js/package.json +++ b/js/package.json @@ -1,6 +1,6 @@ { "name": "privatebin", - "version": "1.5.1", + "version": "1.5.2", "description": "PrivateBin is a minimalist, open source online pastebin where the server has zero knowledge of pasted data. Data is encrypted/decrypted in the browser using 256 bit AES in Galois Counter mode (GCM).", "main": "privatebin.js", "directories": { diff --git a/js/privatebin.js b/js/privatebin.js index a3756f21..bad47cd5 100644 --- a/js/privatebin.js +++ b/js/privatebin.js @@ -6,7 +6,7 @@ * @see {@link https://github.com/PrivateBin/PrivateBin} * @copyright 2012 Sébastien SAUVAGE ({@link http://sebsauvage.net}) * @license {@link https://www.opensource.org/licenses/zlib-license.php The zlib/libpng License} - * @version 1.5.1 + * @version 1.5.2 * @name PrivateBin * @namespace */ @@ -627,7 +627,7 @@ jQuery.PrivateBin = (function($, RawDeflate) { * @prop {string[]} * @readonly */ - const supportedLanguages = ['bg', 'ca', 'co', 'cs', 'de', 'el', 'es', 'et', 'fi', 'fr', 'he', 'hu', 'id', 'it', 'jbo', 'lt', 'no', 'nl', 'pl', 'pt', 'oc', 'ru', 'sk', 'sl', 'th', 'tr', 'uk', 'zh']; + const supportedLanguages = ['ar', 'bg', 'ca', 'co', 'cs', 'de', 'el', 'es', 'et', 'fi', 'fr', 'he', 'hu', 'id', 'it', 'ja', 'jbo', 'lt', 'no', 'nl', 'pl', 'pt', 'oc', 'ru', 'sk', 'sl', 'th', 'tr', 'uk', 'zh']; /** * built in language @@ -802,6 +802,8 @@ jQuery.PrivateBin = (function($, RawDeflate) { me.getPluralForm = function(n) { switch (language) { + case 'ar': + return n === 0 ? 0 : (n === 1 ? 1 : (n === 2 ? 2 : (n % 100 >= 3 && n % 100 <= 10 ? 3 : (n % 100 >= 11 ? 4 : 5)))); case 'cs': case 'sk': return n === 1 ? 0 : (n >= 2 && n <= 4 ? 1 : 2); @@ -814,6 +816,7 @@ jQuery.PrivateBin = (function($, RawDeflate) { case 'he': return n === 1 ? 0 : (n === 2 ? 1 : ((n < 0 || n > 10) && (n % 10 === 0) ? 2 : 3)); case 'id': + case 'ja': case 'jbo': case 'th': return 0; @@ -3649,7 +3652,7 @@ jQuery.PrivateBin = (function($, RawDeflate) { */ function changeBurnAfterReading() { - if ($burnAfterReading.is(':checked')) { + if (me.getBurnAfterReading()) { $openDiscussionOption.addClass('buttondisabled'); $openDiscussion.prop('checked', false); @@ -3669,7 +3672,7 @@ jQuery.PrivateBin = (function($, RawDeflate) { */ function changeOpenDiscussion() { - if ($openDiscussion.is(':checked')) { + if (me.getOpenDiscussion()) { $burnAfterReadingOption.addClass('buttondisabled'); $burnAfterReading.prop('checked', false); @@ -4319,7 +4322,7 @@ jQuery.PrivateBin = (function($, RawDeflate) { */ me.getBurnAfterReading = function() { - return $burnAfterReading.is(':checked'); + return $burnAfterReading.prop('checked'); }; /** @@ -4331,7 +4334,7 @@ jQuery.PrivateBin = (function($, RawDeflate) { */ me.getOpenDiscussion = function() { - return $openDiscussion.is(':checked'); + return $openDiscussion.prop('checked'); }; /** diff --git a/js/purify-2.4.6.js b/js/purify-2.4.6.js deleted file mode 100644 index f45a176b..00000000 --- a/js/purify-2.4.6.js +++ /dev/null @@ -1,2 +0,0 @@ -/*! @license DOMPurify 2.4.1 | (c) Cure53 and other contributors | Released under the Apache license 2.0 and Mozilla Public License 2.0 | github.com/cure53/DOMPurify/blob/2.4.1/LICENSE */ -!function(e,t){"object"==typeof exports&&"undefined"!=typeof module?module.exports=t():"function"==typeof define&&define.amd?define(t):(e="undefined"!=typeof globalThis?globalThis:e||self).DOMPurify=t()}(this,(function(){"use strict";function e(t){return e="function"==typeof Symbol&&"symbol"==typeof Symbol.iterator?function(e){return typeof e}:function(e){return e&&"function"==typeof Symbol&&e.constructor===Symbol&&e!==Symbol.prototype?"symbol":typeof e},e(t)}function t(e,n){return t=Object.setPrototypeOf||function(e,t){return e.__proto__=t,e},t(e,n)}function n(){if("undefined"==typeof Reflect||!Reflect.construct)return!1;if(Reflect.construct.sham)return!1;if("function"==typeof Proxy)return!0;try{return Boolean.prototype.valueOf.call(Reflect.construct(Boolean,[],(function(){}))),!0}catch(e){return!1}}function r(e,o,a){return r=n()?Reflect.construct:function(e,n,r){var o=[null];o.push.apply(o,n);var a=new(Function.bind.apply(e,o));return r&&t(a,r.prototype),a},r.apply(null,arguments)}function o(e){return function(e){if(Array.isArray(e))return a(e)}(e)||function(e){if("undefined"!=typeof Symbol&&null!=e[Symbol.iterator]||null!=e["@@iterator"])return Array.from(e)}(e)||function(e,t){if(!e)return;if("string"==typeof e)return a(e,t);var n=Object.prototype.toString.call(e).slice(8,-1);"Object"===n&&e.constructor&&(n=e.constructor.name);if("Map"===n||"Set"===n)return Array.from(e);if("Arguments"===n||/^(?:Ui|I)nt(?:8|16|32)(?:Clamped)?Array$/.test(n))return a(e,t)}(e)||function(){throw new TypeError("Invalid attempt to spread non-iterable instance.\nIn order to be iterable, non-array objects must have a [Symbol.iterator]() method.")}()}function a(e,t){(null==t||t>e.length)&&(t=e.length);for(var n=0,r=new Array(t);n1?n-1:0),o=1;o/gm),Y=f(/\${[\w\W]*}/gm),$=f(/^data-[\-\w.\u00B7-\uFFFF]/),K=f(/^aria-[\-\w]+$/),V=f(/^(?:(?:(?:f|ht)tps?|mailto|tel|callto|cid|xmpp):|[^a-z]|[a-z+.\-]+(?:[^a-z+.\-:]|$))/i),X=f(/^(?:\w+script|data):/i),Z=f(/[\u0000-\u0020\u00A0\u1680\u180E\u2000-\u2029\u205F\u3000]/g),J=f(/^html$/i),Q=function(){return"undefined"==typeof window?null:window},ee=function(t,n){if("object"!==e(t)||"function"!=typeof t.createPolicy)return null;var r=null,o="data-tt-policy-suffix";n.currentScript&&n.currentScript.hasAttribute(o)&&(r=n.currentScript.getAttribute(o));var a="dompurify"+(r?"#"+r:"");try{return t.createPolicy(a,{createHTML:function(e){return e},createScriptURL:function(e){return e}})}catch(e){return console.warn("TrustedTypes policy "+a+" could not be created."),null}};var te=function t(){var n=arguments.length>0&&void 0!==arguments[0]?arguments[0]:Q(),r=function(e){return t(e)};if(r.version="2.4.1",r.removed=[],!n||!n.document||9!==n.document.nodeType)return r.isSupported=!1,r;var a=n.document,i=n.document,l=n.DocumentFragment,c=n.HTMLTemplateElement,u=n.Node,s=n.Element,f=n.NodeFilter,p=n.NamedNodeMap,d=void 0===p?n.NamedNodeMap||n.MozNamedAttrMap:p,h=n.HTMLFormElement,g=n.DOMParser,y=n.trustedTypes,O=s.prototype,te=R(O,"cloneNode"),ne=R(O,"nextSibling"),re=R(O,"childNodes"),oe=R(O,"parentNode");if("function"==typeof c){var ae=i.createElement("template");ae.content&&ae.content.ownerDocument&&(i=ae.content.ownerDocument)}var ie=ee(y,a),le=ie?ie.createHTML(""):"",ce=i,ue=ce.implementation,se=ce.createNodeIterator,me=ce.createDocumentFragment,fe=ce.getElementsByTagName,pe=a.importNode,de={};try{de=L(i).documentMode?i.documentMode:{}}catch(e){}var he={};r.isSupported="function"==typeof oe&&ue&&void 0!==ue.createHTMLDocument&&9!==de;var ge,ye,be=W,ve=q,Te=Y,Ne=$,Ae=K,Ee=X,we=Z,Se=V,xe=null,_e=D({},[].concat(o(M),o(C),o(I),o(U),o(z))),ke=null,Oe=D({},[].concat(o(P),o(j),o(B),o(G))),De=Object.seal(Object.create(null,{tagNameCheck:{writable:!0,configurable:!1,enumerable:!0,value:null},attributeNameCheck:{writable:!0,configurable:!1,enumerable:!0,value:null},allowCustomizedBuiltInElements:{writable:!0,configurable:!1,enumerable:!0,value:!1}})),Le=null,Re=null,Me=!0,Ce=!0,Ie=!1,Fe=!1,Ue=!1,He=!1,ze=!1,Pe=!1,je=!1,Be=!1,Ge=!0,We=!1,qe="user-content-",Ye=!0,$e=!1,Ke={},Ve=null,Xe=D({},["annotation-xml","audio","colgroup","desc","foreignobject","head","iframe","math","mi","mn","mo","ms","mtext","noembed","noframes","noscript","plaintext","script","style","svg","template","thead","title","video","xmp"]),Ze=null,Je=D({},["audio","video","img","source","image","track"]),Qe=null,et=D({},["alt","class","for","id","label","name","pattern","placeholder","role","summary","title","value","style","xmlns"]),tt="http://www.w3.org/1998/Math/MathML",nt="http://www.w3.org/2000/svg",rt="http://www.w3.org/1999/xhtml",ot=rt,at=!1,it=null,lt=D({},[tt,nt,rt],A),ct=["application/xhtml+xml","text/html"],ut="text/html",st=null,mt=i.createElement("form"),ft=function(e){return e instanceof RegExp||e instanceof Function},pt=function(t){st&&st===t||(t&&"object"===e(t)||(t={}),t=L(t),ge=ge=-1===ct.indexOf(t.PARSER_MEDIA_TYPE)?ut:t.PARSER_MEDIA_TYPE,ye="application/xhtml+xml"===ge?A:N,xe="ALLOWED_TAGS"in t?D({},t.ALLOWED_TAGS,ye):_e,ke="ALLOWED_ATTR"in t?D({},t.ALLOWED_ATTR,ye):Oe,it="ALLOWED_NAMESPACES"in t?D({},t.ALLOWED_NAMESPACES,A):lt,Qe="ADD_URI_SAFE_ATTR"in t?D(L(et),t.ADD_URI_SAFE_ATTR,ye):et,Ze="ADD_DATA_URI_TAGS"in t?D(L(Je),t.ADD_DATA_URI_TAGS,ye):Je,Ve="FORBID_CONTENTS"in t?D({},t.FORBID_CONTENTS,ye):Xe,Le="FORBID_TAGS"in t?D({},t.FORBID_TAGS,ye):{},Re="FORBID_ATTR"in t?D({},t.FORBID_ATTR,ye):{},Ke="USE_PROFILES"in t&&t.USE_PROFILES,Me=!1!==t.ALLOW_ARIA_ATTR,Ce=!1!==t.ALLOW_DATA_ATTR,Ie=t.ALLOW_UNKNOWN_PROTOCOLS||!1,Fe=t.SAFE_FOR_TEMPLATES||!1,Ue=t.WHOLE_DOCUMENT||!1,Pe=t.RETURN_DOM||!1,je=t.RETURN_DOM_FRAGMENT||!1,Be=t.RETURN_TRUSTED_TYPE||!1,ze=t.FORCE_BODY||!1,Ge=!1!==t.SANITIZE_DOM,We=t.SANITIZE_NAMED_PROPS||!1,Ye=!1!==t.KEEP_CONTENT,$e=t.IN_PLACE||!1,Se=t.ALLOWED_URI_REGEXP||Se,ot=t.NAMESPACE||rt,t.CUSTOM_ELEMENT_HANDLING&&ft(t.CUSTOM_ELEMENT_HANDLING.tagNameCheck)&&(De.tagNameCheck=t.CUSTOM_ELEMENT_HANDLING.tagNameCheck),t.CUSTOM_ELEMENT_HANDLING&&ft(t.CUSTOM_ELEMENT_HANDLING.attributeNameCheck)&&(De.attributeNameCheck=t.CUSTOM_ELEMENT_HANDLING.attributeNameCheck),t.CUSTOM_ELEMENT_HANDLING&&"boolean"==typeof t.CUSTOM_ELEMENT_HANDLING.allowCustomizedBuiltInElements&&(De.allowCustomizedBuiltInElements=t.CUSTOM_ELEMENT_HANDLING.allowCustomizedBuiltInElements),Fe&&(Ce=!1),je&&(Pe=!0),Ke&&(xe=D({},o(z)),ke=[],!0===Ke.html&&(D(xe,M),D(ke,P)),!0===Ke.svg&&(D(xe,C),D(ke,j),D(ke,G)),!0===Ke.svgFilters&&(D(xe,I),D(ke,j),D(ke,G)),!0===Ke.mathMl&&(D(xe,U),D(ke,B),D(ke,G))),t.ADD_TAGS&&(xe===_e&&(xe=L(xe)),D(xe,t.ADD_TAGS,ye)),t.ADD_ATTR&&(ke===Oe&&(ke=L(ke)),D(ke,t.ADD_ATTR,ye)),t.ADD_URI_SAFE_ATTR&&D(Qe,t.ADD_URI_SAFE_ATTR,ye),t.FORBID_CONTENTS&&(Ve===Xe&&(Ve=L(Ve)),D(Ve,t.FORBID_CONTENTS,ye)),Ye&&(xe["#text"]=!0),Ue&&D(xe,["html","head","body"]),xe.table&&(D(xe,["tbody"]),delete Le.tbody),m&&m(t),st=t)},dt=D({},["mi","mo","mn","ms","mtext"]),ht=D({},["foreignobject","desc","title","annotation-xml"]),gt=D({},["title","style","font","a","script"]),yt=D({},C);D(yt,I),D(yt,F);var bt=D({},U);D(bt,H);var vt=function(e){var t=oe(e);t&&t.tagName||(t={namespaceURI:ot,tagName:"template"});var n=N(e.tagName),r=N(t.tagName);return!!it[e.namespaceURI]&&(e.namespaceURI===nt?t.namespaceURI===rt?"svg"===n:t.namespaceURI===tt?"svg"===n&&("annotation-xml"===r||dt[r]):Boolean(yt[n]):e.namespaceURI===tt?t.namespaceURI===rt?"math"===n:t.namespaceURI===nt?"math"===n&&ht[r]:Boolean(bt[n]):e.namespaceURI===rt?!(t.namespaceURI===nt&&!ht[r])&&(!(t.namespaceURI===tt&&!dt[r])&&(!bt[n]&&(gt[n]||!yt[n]))):!("application/xhtml+xml"!==ge||!it[e.namespaceURI]))},Tt=function(e){T(r.removed,{element:e});try{e.parentNode.removeChild(e)}catch(t){try{e.outerHTML=le}catch(t){e.remove()}}},Nt=function(e,t){try{T(r.removed,{attribute:t.getAttributeNode(e),from:t})}catch(e){T(r.removed,{attribute:null,from:t})}if(t.removeAttribute(e),"is"===e&&!ke[e])if(Pe||je)try{Tt(t)}catch(e){}else try{t.setAttribute(e,"")}catch(e){}},At=function(e){var t,n;if(ze)e=""+e;else{var r=E(e,/^[\r\n\t ]+/);n=r&&r[0]}"application/xhtml+xml"===ge&&ot===rt&&(e=''+e+"");var o=ie?ie.createHTML(e):e;if(ot===rt)try{t=(new g).parseFromString(o,ge)}catch(e){}if(!t||!t.documentElement){t=ue.createDocument(ot,"template",null);try{t.documentElement.innerHTML=at?"":o}catch(e){}}var a=t.body||t.documentElement;return e&&n&&a.insertBefore(i.createTextNode(n),a.childNodes[0]||null),ot===rt?fe.call(t,Ue?"html":"body")[0]:Ue?t.documentElement:a},Et=function(e){return se.call(e.ownerDocument||e,e,f.SHOW_ELEMENT|f.SHOW_COMMENT|f.SHOW_TEXT,null,!1)},wt=function(e){return e instanceof h&&("string"!=typeof e.nodeName||"string"!=typeof e.textContent||"function"!=typeof e.removeChild||!(e.attributes instanceof d)||"function"!=typeof e.removeAttribute||"function"!=typeof e.setAttribute||"string"!=typeof e.namespaceURI||"function"!=typeof e.insertBefore||"function"!=typeof e.hasChildNodes)},St=function(t){return"object"===e(u)?t instanceof u:t&&"object"===e(t)&&"number"==typeof t.nodeType&&"string"==typeof t.nodeName},xt=function(e,t,n){he[e]&&b(he[e],(function(e){e.call(r,t,n,st)}))},_t=function(e){var t;if(xt("beforeSanitizeElements",e,null),wt(e))return Tt(e),!0;if(_(/[\u0080-\uFFFF]/,e.nodeName))return Tt(e),!0;var n=ye(e.nodeName);if(xt("uponSanitizeElement",e,{tagName:n,allowedTags:xe}),e.hasChildNodes()&&!St(e.firstElementChild)&&(!St(e.content)||!St(e.content.firstElementChild))&&_(/<[/\w]/g,e.innerHTML)&&_(/<[/\w]/g,e.textContent))return Tt(e),!0;if("select"===n&&_(/